PageRenderTime 38ms CodeModel.GetById 10ms RepoModel.GetById 0ms app.codeStats 0ms

/src/main/java/com/atlassian/bamboo/plugin/dotnet/tests/nunit/NUnitRunnerConfigurator.java

https://bitbucket.org/atlassian/bamboo-dotnet-plugin/
Java | 120 lines | 99 code | 16 blank | 5 comment | 4 complexity | a8f19d1f889eb3c64d31b2342c14f7f8 MD5 | raw file
Possible License(s): BSD-3-Clause
  1. package com.atlassian.bamboo.plugin.dotnet.tests.nunit;
  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.task.BuildTaskRequirementSupport;
  6. import com.atlassian.bamboo.task.TaskDefinition;
  7. import com.atlassian.bamboo.task.TaskTestResultsSupport;
  8. import com.atlassian.bamboo.utils.error.ErrorCollection;
  9. import com.atlassian.bamboo.v2.build.agent.capability.Requirement;
  10. import com.google.common.collect.Sets;
  11. import org.apache.commons.lang3.StringUtils;
  12. import org.apache.log4j.Logger;
  13. import org.jetbrains.annotations.NotNull;
  14. import org.jetbrains.annotations.Nullable;
  15. import java.util.Map;
  16. import java.util.Set;
  17. /**
  18. * Defines configuration requirements for {@link NUnitRunnerTaskType} tasks. For full details on the features and
  19. * switches supported by the nunit console, see @see <a href="http://www.nunit.org/index.php?p=consoleCommandLine&r=2.4">NUnit's documentation</a>.
  20. */
  21. public class NUnitRunnerConfigurator extends AbstractDotNetTaskConfigurator implements TaskTestResultsSupport, BuildTaskRequirementSupport
  22. {
  23. @SuppressWarnings("UnusedDeclaration")
  24. private static final Logger log = Logger.getLogger(NUnitRunnerConfigurator.class);
  25. private static final String DEFAULT_TEST_FILE = "TestResult.xml";
  26. private static final Set<String> FIELDS_TO_COPY = Sets.newHashSet(
  27. NUnitRunnerTaskType.LABEL,
  28. NUnitRunnerTaskType.TEST_FILES,
  29. NUnitRunnerTaskType.RESULTS_FILE,
  30. NUnitRunnerTaskType.TESTS_TO_RUN,
  31. NUnitRunnerTaskType.INCLUDED_TEST_CATEGORIES,
  32. NUnitRunnerTaskType.EXCLUDED_TEST_CATEGORIES,
  33. NUnitRunnerTaskType.COMMAND_OPTIONS,
  34. NUnitRunnerTaskType.ENVIRONMENT
  35. );
  36. @Override
  37. public void validate(@NotNull ActionParametersMap params, @NotNull ErrorCollection errorCollection)
  38. {
  39. super.validate(params, errorCollection);
  40. final String label = params.getString(NUnitRunnerTaskType.LABEL);
  41. if (StringUtils.isEmpty(label))
  42. {
  43. errorCollection.addError(NUnitRunnerTaskType.LABEL, textProvider.getText("nunit.label.error"));
  44. }
  45. final String testFiles = params.getString(NUnitRunnerTaskType.TEST_FILES);
  46. if (StringUtils.isEmpty(testFiles))
  47. {
  48. errorCollection.addError(NUnitRunnerTaskType.TEST_FILES, textProvider.getText("nunit.testFiles.error"));
  49. }
  50. final String resultsFile = params.getString(NUnitRunnerTaskType.RESULTS_FILE);
  51. if (StringUtils.isNotBlank(resultsFile))
  52. {
  53. if (!resultsFile.endsWith(".xml"))
  54. {
  55. errorCollection.addError(NUnitRunnerTaskType.RESULTS_FILE, textProvider.getText("nunit.resultsFile.incorrectExtension"));
  56. }
  57. }
  58. else
  59. {
  60. errorCollection.addError(NUnitRunnerTaskType.RESULTS_FILE, textProvider.getText("nunit.resultsFile.missing"));
  61. }
  62. }
  63. @Override
  64. public void populateContextForCreate(@NotNull final Map<String, Object> context)
  65. {
  66. // Fill in defaults
  67. super.populateContextForCreate(context);
  68. context.put(NUnitRunnerTaskType.RESULTS_FILE, DEFAULT_TEST_FILE);
  69. }
  70. @Override
  71. public void populateContextForView(@NotNull Map<String, Object> context, @NotNull TaskDefinition taskDefinition)
  72. {
  73. super.populateContextForView(context, taskDefinition);
  74. taskConfiguratorHelper.populateContextWithConfiguration(context, taskDefinition, FIELDS_TO_COPY);
  75. }
  76. @Override
  77. public void populateContextForEdit(@NotNull Map<String, Object> context, @NotNull TaskDefinition taskDefinition)
  78. {
  79. super.populateContextForEdit(context, taskDefinition);
  80. taskConfiguratorHelper.populateContextWithConfiguration(context, taskDefinition, FIELDS_TO_COPY);
  81. }
  82. @NotNull
  83. @Override
  84. public Map<String, String> generateTaskConfigMap(@NotNull ActionParametersMap params, @Nullable TaskDefinition previousTaskDefinition)
  85. {
  86. final Map<String, String> map = super.generateTaskConfigMap(params, previousTaskDefinition);
  87. taskConfiguratorHelper.populateTaskConfigMapWithActionParameters(map, params, FIELDS_TO_COPY);
  88. return map;
  89. }
  90. @Override
  91. public boolean taskProducesTestResults(@NotNull final TaskDefinition taskDefinition)
  92. {
  93. return true;
  94. }
  95. @NotNull
  96. @Override
  97. public Set<Requirement> calculateRequirements(@NotNull final TaskDefinition taskDefinition, @NotNull final Job job)
  98. {
  99. Set<Requirement> requirements = Sets.newHashSet();
  100. taskConfiguratorHelper.addSystemRequirementFromConfiguration(requirements, taskDefinition,
  101. NUnitRunnerTaskType.LABEL, NUnitRunnerTaskType.NUNIT_CAPABILITY_PREFIX);
  102. return requirements;
  103. }
  104. }