PageRenderTime 44ms CodeModel.GetById 19ms RepoModel.GetById 0ms app.codeStats 0ms

/src/main/java/com/atlassian/bamboo/plugin/dotnet/tests/mstest/MSTestRunnerConfigurator.java

https://bitbucket.org/atlassian/bamboo-dotnet-plugin/
Java | 121 lines | 101 code | 15 blank | 5 comment | 9 complexity | 46390ca87bccf89affc2cd804e159690 MD5 | raw file
Possible License(s): BSD-3-Clause
  1. package com.atlassian.bamboo.plugin.dotnet.tests.mstest;
  2. import com.atlassian.bamboo.build.Job;
  3. import com.atlassian.bamboo.collections.ActionParametersMap;
  4. import com.atlassian.bamboo.plugin.dotnet.support.AbstractDotNetTaskConfigurator;
  5. import com.atlassian.bamboo.plugin.dotnet.visualstudio.VisualStudioTaskType;
  6. import com.atlassian.bamboo.task.BuildTaskRequirementSupport;
  7. import com.atlassian.bamboo.task.TaskDefinition;
  8. import com.atlassian.bamboo.task.TaskTestResultsSupport;
  9. import com.atlassian.bamboo.utils.error.ErrorCollection;
  10. import com.atlassian.bamboo.v2.build.agent.capability.Requirement;
  11. import com.google.common.collect.Sets;
  12. import org.apache.commons.lang3.StringUtils;
  13. import org.apache.log4j.Logger;
  14. import org.jetbrains.annotations.NotNull;
  15. import org.jetbrains.annotations.Nullable;
  16. import java.util.Map;
  17. import java.util.Set;
  18. public class MSTestRunnerConfigurator extends AbstractDotNetTaskConfigurator implements BuildTaskRequirementSupport, TaskTestResultsSupport
  19. {
  20. @SuppressWarnings("UnusedDeclaration")
  21. private static final Logger log = Logger.getLogger(MSTestRunnerConfigurator.class);
  22. // ------------------------------------------------------------------------------------------------------- Constants
  23. private static final Set<String> FIELDS_TO_COPY = Sets.newHashSet(
  24. MSTestRunnerTaskType.LABEL,
  25. MSTestRunnerTaskType.CONTAINER,
  26. MSTestRunnerTaskType.RUN_CONFIG,
  27. MSTestRunnerTaskType.RESULTS_FILE,
  28. MSTestRunnerTaskType.TEST_METADATA,
  29. MSTestRunnerTaskType.ENVIRONMENT
  30. );
  31. private static final String DEFAULT_TEST_FILE = "testresults.trx";
  32. // ------------------------------------------------------------------------------------------------- Type Properties
  33. // ---------------------------------------------------------------------------------------------------- Dependencies
  34. // ---------------------------------------------------------------------------------------------------- Constructors
  35. // ----------------------------------------------------------------------------------------------- Interface Methods
  36. @Override
  37. public void validate(@NotNull final ActionParametersMap params, @NotNull final ErrorCollection errorCollection)
  38. {
  39. final String label = params.getString(MSTestRunnerTaskType.LABEL);
  40. if (StringUtils.isEmpty(label))
  41. {
  42. errorCollection.addError(MSTestRunnerTaskType.LABEL, textProvider.getText("mstest.label.error"));
  43. }
  44. final String container = params.getString(MSTestRunnerTaskType.CONTAINER);
  45. final String testMetadata = params.getString(MSTestRunnerTaskType.TEST_METADATA);
  46. if (StringUtils.isNotEmpty(container) && StringUtils.isNotEmpty(testMetadata))
  47. {
  48. errorCollection.addError(MSTestRunnerTaskType.TEST_METADATA, textProvider.getText("mstest.has.both.testMetadata.container"));
  49. errorCollection.addError(MSTestRunnerTaskType.CONTAINER, textProvider.getText("mstest.has.both.testMetadata.container"));
  50. }
  51. else if (StringUtils.isEmpty(container) && StringUtils.isEmpty(testMetadata))
  52. {
  53. errorCollection.addError(MSTestRunnerTaskType.TEST_METADATA, textProvider.getText("mstest.has.neither.testMetadata.container"));
  54. errorCollection.addError(MSTestRunnerTaskType.CONTAINER, textProvider.getText("mstest.has.neither.testMetadata.container"));
  55. }
  56. final String resultsFile = params.getString(MSTestRunnerTaskType.RESULTS_FILE);
  57. if (StringUtils.isEmpty(resultsFile))
  58. {
  59. errorCollection.addError(MSTestRunnerTaskType.RESULTS_FILE, textProvider.getText("mstest.resultsFile.error"));
  60. }
  61. if (StringUtils.isNotBlank(resultsFile) && !resultsFile.endsWith(".trx"))
  62. {
  63. errorCollection.addError(MSTestRunnerTaskType.RESULTS_FILE, textProvider.getText("mstest.resultsFile.missingExtension"));
  64. }
  65. }
  66. @Override
  67. public void populateContextForCreate(@NotNull final Map<String, Object> context)
  68. {
  69. super.populateContextForCreate(context);
  70. context.put(MSTestRunnerTaskType.RESULTS_FILE, DEFAULT_TEST_FILE);
  71. }
  72. @Override
  73. public void populateContextForView(@NotNull final Map<String, Object> context, @NotNull final TaskDefinition taskDefinition)
  74. {
  75. super.populateContextForView(context, taskDefinition);
  76. taskConfiguratorHelper.populateContextWithConfiguration(context, taskDefinition, FIELDS_TO_COPY);
  77. }
  78. @Override
  79. public void populateContextForEdit(@NotNull final Map<String, Object> context, @NotNull final TaskDefinition taskDefinition)
  80. {
  81. super.populateContextForEdit(context, taskDefinition);
  82. taskConfiguratorHelper.populateContextWithConfiguration(context, taskDefinition, FIELDS_TO_COPY);
  83. }
  84. @NotNull
  85. @Override
  86. public Map<String, String> generateTaskConfigMap(@NotNull final ActionParametersMap params, @Nullable final TaskDefinition previousTaskDefinition)
  87. {
  88. final Map<String, String> map = super.generateTaskConfigMap(params, previousTaskDefinition);
  89. taskConfiguratorHelper.populateTaskConfigMapWithActionParameters(map, params, FIELDS_TO_COPY);
  90. return map;
  91. }
  92. @NotNull
  93. @Override
  94. public Set<Requirement> calculateRequirements(@NotNull final TaskDefinition taskDefinition, @NotNull final Job job)
  95. {
  96. Set<Requirement> requirements = Sets.newHashSet();
  97. taskConfiguratorHelper.addSystemRequirementFromConfiguration(requirements, taskDefinition,
  98. MSTestRunnerTaskType.LABEL, VisualStudioTaskType.VS_CAPABILITY_PREFIX);
  99. return requirements;
  100. }
  101. @Override
  102. public boolean taskProducesTestResults(@NotNull TaskDefinition taskDefinition)
  103. {
  104. return true;
  105. }
  106. }