package jenkins.model; import static org.mockito.Mockito.times; import static org.mockito.Mockito.when; import static org.powermock.api.mockito.PowerMockito.verifyStatic; import hudson.EnvVars; import hudson.model.Computer; import hudson.model.Job; import hudson.model.TaskListener; import java.io.File; import java.io.IOException; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.jvnet.hudson.test.Issue; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.powermock.api.mockito.PowerMockito; import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.junit4.PowerMockRunner; @RunWith(PowerMockRunner.class) public class CoreEnvironmentContributorTest { CoreEnvironmentContributor instance; @Mock Job job; @Mock TaskListener listener; @Mock Jenkins jenkins; @Before public void setUp() throws Exception { MockitoAnnotations.initMocks(this); instance = new CoreEnvironmentContributor(); } @Issue("JENKINS-19307") @Test @PrepareForTest(fullyQualifiedNames={"hudson.model.Computer", "jenkins.model.Jenkins"}) public void buildEnvironmentForJobShouldntUseCurrentComputer() throws IOException, InterruptedException { PowerMockito.mockStatic(Computer.class); PowerMockito.mockStatic(Jenkins.class); PowerMockito.when(Jenkins.getInstance()).thenReturn(jenkins); when(jenkins.getRootDir()).thenReturn(new File(".")); EnvVars env = new EnvVars(); instance.buildEnvironmentFor(job, env, listener); // currentComputer shouldn't be called since it relates to a running build, // which is not the case for calls of this method (e.g. polling) verifyStatic(times(0)); Computer.currentComputer(); } }