PageRenderTime 43ms CodeModel.GetById 20ms RepoModel.GetById 0ms app.codeStats 0ms

/src/test/java/com/atlassian/bamboo/plugin/dotnet/visualstudio/VisualStudioTaskTypeTest.java

https://bitbucket.org/lmeyer/bamboo-dotnet-plugin
Java | 133 lines | 108 code | 22 blank | 3 comment | 0 complexity | 78ff7be767d8763bd378806096725fe7 MD5 | raw file
Possible License(s): BSD-3-Clause
  1. package com.atlassian.bamboo.plugin.dotnet.visualstudio;
  2. import com.atlassian.bamboo.build.fileserver.BuildDirectoryManager;
  3. import com.atlassian.bamboo.build.logger.BuildLogger;
  4. import com.atlassian.bamboo.build.logger.LogInterceptorStack;
  5. import com.atlassian.bamboo.configuration.ConfigurationMap;
  6. import com.atlassian.bamboo.configuration.ConfigurationMapImpl;
  7. import com.atlassian.bamboo.process.EnvironmentVariableAccessor;
  8. import com.atlassian.bamboo.process.ExternalProcessBuilder;
  9. import com.atlassian.bamboo.process.ProcessService;
  10. import com.atlassian.bamboo.task.CommonTaskContext;
  11. import com.atlassian.bamboo.task.TaskContext;
  12. import com.atlassian.bamboo.v2.build.BuildContext;
  13. import com.atlassian.bamboo.v2.build.CurrentBuildResult;
  14. import com.atlassian.bamboo.v2.build.agent.capability.Capability;
  15. import com.atlassian.bamboo.v2.build.agent.capability.CapabilityContext;
  16. import com.atlassian.bamboo.v2.build.agent.capability.ReadOnlyCapabilitySet;
  17. import com.atlassian.utils.process.ExternalProcess;
  18. import com.atlassian.utils.process.ProcessHandler;
  19. import com.google.common.base.Joiner;
  20. import com.google.common.collect.Maps;
  21. import org.junit.Before;
  22. import org.junit.Rule;
  23. import org.junit.Test;
  24. import org.junit.rules.TemporaryFolder;
  25. import org.junit.runner.RunWith;
  26. import org.mockito.ArgumentCaptor;
  27. import org.mockito.Captor;
  28. import org.mockito.InjectMocks;
  29. import org.mockito.Mock;
  30. import org.mockito.runners.MockitoJUnitRunner;
  31. import java.io.File;
  32. import static com.atlassian.bamboo.testutils.spring.SpringTestHelper.mockSpringComponent;
  33. import static org.hamcrest.MatcherAssert.assertThat;
  34. import static org.hamcrest.Matchers.contains;
  35. import static org.mockito.Matchers.any;
  36. import static org.mockito.Matchers.eq;
  37. import static org.mockito.Mockito.mock;
  38. import static org.mockito.Mockito.verify;
  39. import static org.mockito.Mockito.when;
  40. @RunWith(MockitoJUnitRunner.class)
  41. public class VisualStudioTaskTypeTest
  42. {
  43. @Rule public TemporaryFolder tmpFolder = new TemporaryFolder();
  44. @Mock private BuildDirectoryManager buildDirectoryManager;
  45. @Mock private ProcessService processService;
  46. @Mock private EnvironmentVariableAccessor environmentVariableAccessor;
  47. @Mock private CapabilityContext capabilityContext;
  48. @Mock private BuildContext buildContext;
  49. @Mock private BuildLogger buildLogger;
  50. @Mock private CurrentBuildResult currentBuildResult;
  51. @Mock private ExternalProcess externalProcess;
  52. @Mock private ProcessHandler processHandler;
  53. @Mock private ReadOnlyCapabilitySet readOnlyCapabilitySet;
  54. @Mock private TaskContext taskContext;
  55. @Captor private ArgumentCaptor<ExternalProcessBuilder> externalProcessBuilderCaptor;
  56. @InjectMocks private VisualStudioTaskType task;
  57. private File applicationHomeDirectory;
  58. private File taskWorkingDirectory;
  59. private final static Joiner DOT_JOINER = Joiner.on(".");
  60. private final static Joiner FILE_JOINER = Joiner.on(File.separator);
  61. @Before
  62. public void setUp() throws Exception
  63. {
  64. applicationHomeDirectory = tmpFolder.newFolder("application-home");
  65. taskWorkingDirectory = tmpFolder.newFolder("task-working-directory");
  66. mockSpringComponent("buildDirectoryManager", buildDirectoryManager);
  67. when(buildDirectoryManager.getApplicationHome()).thenReturn(applicationHomeDirectory);
  68. when(buildContext.getBuildResult()).thenReturn(currentBuildResult);
  69. //when(buildContext.getCurrentResult()).thenReturn(currentBuildResult);
  70. when(buildLogger.getInterceptorStack()).thenReturn(mock(LogInterceptorStack.class));
  71. when(capabilityContext.getCapabilitySet()).thenReturn(readOnlyCapabilitySet);
  72. when(processHandler.getExitCode()).thenReturn(0);
  73. when(externalProcess.getHandler()).thenReturn(processHandler);
  74. when(processService.executeExternalProcess(any(CommonTaskContext.class), any(ExternalProcessBuilder.class)))
  75. .thenReturn(externalProcess);
  76. when(taskContext.getBuildContext()).thenReturn(buildContext);
  77. when(taskContext.getBuildLogger()).thenReturn(buildLogger);
  78. when(taskContext.getWorkingDirectory()).thenReturn(taskWorkingDirectory);
  79. }
  80. @Test
  81. public void testExecute() throws Exception
  82. {
  83. final File visualStudioHome = tmpFolder.newFolder("VisualStudioFakeHome", "Common7", "IDE");
  84. final String label = "label";
  85. final String environment = "x86";
  86. final String solution = "solution.sln";
  87. final String options = "/build \"Release Unicode|x86\" \"Release|x86\"";
  88. final String vsCapabilityKey = DOT_JOINER.join(VisualStudioTaskType.VS_CAPABILITY_PREFIX, label);
  89. final Capability vsCapability = mock(Capability.class);
  90. when(vsCapability.getValue()).thenReturn(visualStudioHome.getAbsolutePath());
  91. when(readOnlyCapabilitySet.getCapability(vsCapabilityKey)).thenReturn(vsCapability);
  92. final ConfigurationMap configurationMap = new ConfigurationMapImpl(Maps.<String, String>newHashMap());
  93. configurationMap.put(VisualStudioTaskType.LABEL, label);
  94. configurationMap.put(VisualStudioTaskType.SOLUTION, solution);
  95. configurationMap.put(VisualStudioTaskType.OPTIONS, options);
  96. configurationMap.put(VisualStudioTaskType.VS_ENVIRONMENT, environment);
  97. when(taskContext.getConfigurationMap()).thenReturn(configurationMap);
  98. // execute
  99. task.execute(taskContext);
  100. // verify
  101. verify(processService).executeExternalProcess(eq(taskContext), externalProcessBuilderCaptor.capture());
  102. assertThat(externalProcessBuilderCaptor.getValue().getCommand(), contains(
  103. FILE_JOINER.join(applicationHomeDirectory.getAbsolutePath(), "DotNetSupport", "devenvrunner.bat"),
  104. taskWorkingDirectory.getAbsolutePath(),
  105. visualStudioHome.getParentFile().getParentFile().getAbsolutePath(),
  106. environment,
  107. solution,
  108. "/build", "\"Release Unicode|x86\"", "\"Release|x86\""
  109. ));
  110. }
  111. }