PageRenderTime 42ms CodeModel.GetById 18ms RepoModel.GetById 1ms app.codeStats 0ms

/src/test/java/com/atlassian/bamboo/plugin/dotnet/nant/NantTaskTypeTest.java

https://bitbucket.org/atlassian/bamboo-dotnet-plugin/
Java | 115 lines | 98 code | 15 blank | 2 comment | 0 complexity | c99da24279ac7b8b88632d6e9588c42d MD5 | raw file
Possible License(s): BSD-3-Clause
  1. package com.atlassian.bamboo.plugin.dotnet.nant;
  2. import com.atlassian.bamboo.process.EnvironmentVariableAccessor;
  3. import com.atlassian.bamboo.process.ProcessService;
  4. import com.atlassian.bamboo.task.RuntimeTaskContext;
  5. import com.atlassian.bamboo.task.TaskContext;
  6. import com.atlassian.bamboo.task.TaskContextImpl;
  7. import com.atlassian.bamboo.task.TaskExecutionContext;
  8. import com.atlassian.bamboo.task.TaskRootDirectorySelector;
  9. import com.atlassian.bamboo.task.runtime.RuntimeTaskDefinition;
  10. import com.atlassian.bamboo.v2.build.CommonContext;
  11. import com.atlassian.bamboo.v2.build.agent.capability.CapabilityContext;
  12. import com.atlassian.bamboo.v2.build.agent.capability.CapabilityImpl;
  13. import com.atlassian.bamboo.v2.build.agent.capability.ReadOnlyCapabilitySet;
  14. import com.google.common.collect.ImmutableMap;
  15. import org.apache.commons.lang3.StringUtils;
  16. import org.apache.commons.lang3.SystemUtils;
  17. import org.jetbrains.annotations.NotNull;
  18. import org.junit.Before;
  19. import org.junit.Rule;
  20. import org.junit.Test;
  21. import org.mockito.InjectMocks;
  22. import org.mockito.Mock;
  23. import org.mockito.junit.MockitoJUnit;
  24. import org.mockito.junit.MockitoRule;
  25. import java.io.File;
  26. import java.util.Arrays;
  27. import java.util.Map;
  28. import static org.hamcrest.Matchers.is;
  29. import static org.junit.Assert.assertEquals;
  30. import static org.junit.Assume.assumeThat;
  31. import static org.mockito.Mockito.mock;
  32. import static org.mockito.Mockito.when;
  33. public class NantTaskTypeTest
  34. {
  35. @Rule public final MockitoRule mockitoRule = MockitoJUnit.rule();
  36. @Mock private CapabilityContext mockCapabilityContext;
  37. @Mock private EnvironmentVariableAccessor mockEnvironmentVariableAccessor;
  38. @Mock private ProcessService mockProcessService;
  39. @Mock private ReadOnlyCapabilitySet mockCapabilitySet;
  40. @InjectMocks private NantTaskType taskType;
  41. @Before
  42. public void setUp() throws Exception
  43. {
  44. when(mockCapabilityContext.getCapabilitySet()).thenReturn(mockCapabilitySet);
  45. }
  46. @Test
  47. public void testGetExecutableFile() throws Exception
  48. {
  49. assumeThat(SystemUtils.IS_OS_WINDOWS, is(true));
  50. assertGetExecutableFile(
  51. StringUtils.join(
  52. Arrays.asList("d:\\bamboo-agent4-home\\xml-data\\build-dir\\BUILDDEPLOY-NANTTEMPLATE-JOB1", ".\\tools\\nant", "bin", NantTaskType.EXECUTABLE_NAME),
  53. File.separator
  54. ),
  55. "d:\\bamboo-agent4-home\\xml-data\\build-dir\\BUILDDEPLOY-NANTTEMPLATE-JOB1", ".\\tools\\nant"
  56. );
  57. assertGetExecutableFile(
  58. StringUtils.join(
  59. Arrays.asList("\\\\build-basis-w2k3-01\\e$\\bamboo-agent4-home\\xml-data\\build-dir\\BUILDDEPLOY-NANTTEMPLATE-JOB1", ".\\tools\\nant", "bin", NantTaskType.EXECUTABLE_NAME),
  60. File.separator
  61. ),
  62. "\\\\build-basis-w2k3-01\\e$\\bamboo-agent4-home\\xml-data\\build-dir\\BUILDDEPLOY-NANTTEMPLATE-JOB1", ".\\tools\\nant"
  63. );
  64. assertGetExecutableFile(
  65. StringUtils.join(
  66. Arrays.asList("d:\\tools\\nant", "bin", NantTaskType.EXECUTABLE_NAME),
  67. File.separator
  68. ),
  69. "d:\\bamboo-agent4-home\\xml-data\\build-dir\\BUILDDEPLOY-NANTTEMPLATE-JOB1", "d:\\tools\\nant"
  70. );
  71. assertGetExecutableFile(
  72. StringUtils.join(
  73. Arrays.asList("d:\\tools\\nant", "bin", NantTaskType.EXECUTABLE_NAME),
  74. File.separator
  75. ),
  76. "\\\\build-basis-w2k3-01\\e$\\bamboo-agent4-home\\xml-data\\build-dir\\BUILDDEPLOY-NANTTEMPLATE-JOB1", "d:\\tools\\nant"
  77. );
  78. }
  79. private void assertGetExecutableFile(@NotNull String expectedPath, @NotNull String rootDirectory, @NotNull String grailsExecutablePath) throws Exception
  80. {
  81. final String nantLabel = "Nant";
  82. final String capabilityKey = NantTaskType.NANT_CAPABILITY_PREFIX + "." + nantLabel;
  83. when(mockCapabilitySet.getCapability(capabilityKey)).thenReturn(new CapabilityImpl(capabilityKey, grailsExecutablePath));
  84. Map<String, String> substitutedConfiguration = ImmutableMap.of(
  85. NantTaskType.LABEL, nantLabel
  86. );
  87. final TaskExecutionContext taskExecutionContext = mock(TaskExecutionContext.class);
  88. final CommonContext commonContext = mock(CommonContext.class);
  89. when(commonContext.getRuntimeTaskContext()).thenReturn(mock(RuntimeTaskContext.class));
  90. when(taskExecutionContext.getCommonContext()).thenReturn(commonContext);
  91. final RuntimeTaskDefinition taskDefinition = mock(RuntimeTaskDefinition.class);
  92. when(taskDefinition.getRootDirectorySelector()).thenReturn(TaskRootDirectorySelector.DEFAULT);
  93. TaskContext taskContext = new TaskContextImpl(substitutedConfiguration, taskExecutionContext, taskDefinition);
  94. when(taskContext.getRootDirectory()).thenReturn(new File(rootDirectory));
  95. //
  96. File actualFile = taskType.getExecutableFile(taskContext);
  97. assertEquals(expectedPath, actualFile.getPath());
  98. }
  99. //this.runtimeTaskContext = taskExecutionContext.getCommonContext().getRuntimeTaskContext().getRuntimeContextForTask(taskDefinition);
  100. }