Skip to content

Commit f32a1ed

Browse files
committed
Test: job name with blanks
Add two more test cases for adding/deleting/renaming a job with blanks in the name. Ignored because of maven-scm bug SCM-772.[1] [1] https://issues.apache.org/jira/browse/SCM-772
1 parent 91897e8 commit f32a1ed

File tree

6 files changed

+180
-0
lines changed

6 files changed

+180
-0
lines changed

src/test/java/hudson/plugins/scm_sync_configuration/repository/HudsonExtensionsTest.java

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import org.codehaus.plexus.util.FileUtils;
2020
import org.junit.Before;
21+
import org.junit.Ignore;
2122
import org.junit.Test;
2223
import org.mockito.Mockito;
2324
import org.springframework.core.io.ClassPathResource;
@@ -312,6 +313,102 @@ public void testJobNameStartingWithDash() throws Exception {
312313
assertStatusManagerIsOk();
313314
}
314315

316+
@Test
317+
@Ignore // Fails with git
318+
public void testJobNameWithBlanks() throws Exception {
319+
createSCMMock();
320+
sscBusiness.synchronizeAllConfigs(ScmSyncConfigurationPlugin.AVAILABLE_STRATEGIES);
321+
322+
File jobDirectory = new File(getCurrentHudsonRootDirectory(), "jobs/new fake Job/" );
323+
File configFile = new File(jobDirectory, "config.xml");
324+
jobDirectory.mkdir();
325+
FileUtils.copyFile(new ClassPathResource("expected-scm-hierarchies/HudsonExtensionsTest.testAddJobNameWithBlanks/jobs/new fake Job/config.xml").getFile(), configFile);
326+
327+
// Creating fake new job
328+
Item mockedItem = Mockito.mock(Job.class);
329+
when(mockedItem.getName()).thenReturn("new fake Job");
330+
when(mockedItem.getRootDir()).thenReturn(jobDirectory);
331+
332+
sscItemListener.onCreated(mockedItem);
333+
334+
verifyCurrentScmContentMatchesHierarchy("expected-scm-hierarchies/InitRepositoryTest.shouldSynchronizeHudsonFiles/");
335+
336+
sscConfigurationSaveableListener.onChange(mockedItem, new XmlFile(configFile));
337+
338+
verifyCurrentScmContentMatchesHierarchy("expected-scm-hierarchies/HudsonExtensionsTest.testAddJobNameWithBlanks/");
339+
340+
assertStatusManagerIsOk();
341+
342+
// Now delete it again
343+
assertTrue("Config file deletion", configFile.delete());
344+
assertTrue("Job dir deletion", jobDirectory.delete());
345+
346+
sscItemListener.onDeleted(mockedItem);
347+
348+
verifyCurrentScmContentMatchesHierarchy("hudsonRootBaseTemplate/");
349+
350+
assertStatusManagerIsOk();
351+
}
352+
353+
@Test
354+
@Ignore // Fails with git
355+
public void testJobRenameWithBlanksAndDash() throws Exception {
356+
createSCMMock();
357+
sscBusiness.synchronizeAllConfigs(ScmSyncConfigurationPlugin.AVAILABLE_STRATEGIES);
358+
359+
File jobDirectory = new File(getCurrentHudsonRootDirectory(), "jobs/-newFakeJob/" );
360+
File configFile = new File(jobDirectory, "config.xml");
361+
jobDirectory.mkdir();
362+
FileUtils.copyFile(new ClassPathResource("expected-scm-hierarchies/HudsonExtensionsTest.testAddJobNameStartingWithDash/jobs/-newFakeJob/config.xml").getFile(), configFile);
363+
364+
// Creating fake new job
365+
Item mockedItem = Mockito.mock(Job.class);
366+
when(mockedItem.getName()).thenReturn("-newFakeJob");
367+
when(mockedItem.getRootDir()).thenReturn(jobDirectory);
368+
369+
sscItemListener.onCreated(mockedItem);
370+
371+
verifyCurrentScmContentMatchesHierarchy("expected-scm-hierarchies/InitRepositoryTest.shouldSynchronizeHudsonFiles/");
372+
373+
sscConfigurationSaveableListener.onChange(mockedItem, new XmlFile(configFile));
374+
375+
verifyCurrentScmContentMatchesHierarchy("expected-scm-hierarchies/HudsonExtensionsTest.testAddJobNameStartingWithDash/");
376+
377+
assertStatusManagerIsOk();
378+
379+
// Now fake a rename
380+
assertTrue("Config file deletion", configFile.delete());
381+
assertTrue("Job dir deletion", jobDirectory.delete());
382+
jobDirectory = new File(getCurrentHudsonRootDirectory(), "jobs/new fake Job/" );
383+
configFile = new File(jobDirectory, "config.xml");
384+
jobDirectory.mkdir();
385+
FileUtils.copyFile(new ClassPathResource("expected-scm-hierarchies/HudsonExtensionsTest.testAddJobNameWithBlanks/jobs/new fake Job/config.xml").getFile(), configFile);
386+
387+
Item mockedRenamedItem = Mockito.mock(Job.class);
388+
when(mockedRenamedItem.getName()).thenReturn("new fake Job");
389+
when(mockedRenamedItem.getRootDir()).thenReturn(jobDirectory);
390+
391+
sscItemListener.onLocationChanged(mockedRenamedItem, "-newFakeJob", "new fake Job");
392+
393+
verifyCurrentScmContentMatchesHierarchy("expected-scm-hierarchies/HudsonExtensionsTest.testAddJobNameWithBlanks/");
394+
395+
assertStatusManagerIsOk();
396+
397+
// And while we're at it: let's rename it back
398+
assertTrue("Config file deletion", configFile.delete());
399+
assertTrue("Job dir deletion", jobDirectory.delete());
400+
jobDirectory = new File(getCurrentHudsonRootDirectory(), "jobs/-newFakeJob/" );
401+
configFile = new File(jobDirectory, "config.xml");
402+
jobDirectory.mkdir();
403+
FileUtils.copyFile(new ClassPathResource("expected-scm-hierarchies/HudsonExtensionsTest.testAddJobNameStartingWithDash/jobs/-newFakeJob/config.xml").getFile(), configFile);
404+
405+
sscItemListener.onLocationChanged(mockedItem, "new fake Job", "-newFakeJob");
406+
407+
verifyCurrentScmContentMatchesHierarchy("expected-scm-hierarchies/HudsonExtensionsTest.testAddJobNameStartingWithDash/");
408+
409+
assertStatusManagerIsOk();
410+
}
411+
315412
@Test
316413
public void shouldFileWhichHaveToBeInSCM() throws Throwable {
317414
// IMPORTANT NOTE :
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
<?xml version='1.0' encoding='UTF-8'?>
2+
<hudson>
3+
<version>1.339</version>
4+
<numExecutors>2</numExecutors>
5+
<mode>NORMAL</mode>
6+
<useSecurity>true</useSecurity>
7+
<authorizationStrategy class="hudson.security.FullControlOnceLoggedInAuthorizationStrategy"/>
8+
<securityRealm class="hudson.security.HudsonPrivateSecurityRealm">
9+
<disableSignup>true</disableSignup>
10+
</securityRealm>
11+
<systemMessage>Welcome !</systemMessage>
12+
<jdks />
13+
<clouds/>
14+
<slaves/>
15+
<quietPeriod>5</quietPeriod>
16+
<scmCheckoutRetryCount>0</scmCheckoutRetryCount>
17+
<views>
18+
<hudson.model.AllView>
19+
<owner class="hudson" reference="../../.."/>
20+
<name>All</name>
21+
<filterExecutors>false</filterExecutors>
22+
<filterQueue>false</filterQueue>
23+
</hudson.model.AllView>
24+
</views>
25+
<primaryView>All</primaryView>
26+
<slaveAgentPort>0</slaveAgentPort>
27+
<label></label>
28+
<nodeProperties/>
29+
<globalNodeProperties/>
30+
<disabledAdministrativeMonitors/>
31+
</hudson>
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<?xml version='1.0' encoding='UTF-8'?>
2+
<hudson.tasks.Shell_-DescriptorImpl>
3+
<helpRedirect/>
4+
<shell>/bin/bash</shell>
5+
</hudson.tasks.Shell_-DescriptorImpl>
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<?xml version='1.0' encoding='UTF-8'?>
2+
<maven2-moduleset>
3+
<actions/>
4+
<description></description>
5+
<keepDependencies>false</keepDependencies>
6+
<properties/>
7+
<scm class="hudson.scm.NullSCM"/>
8+
<canRoam>true</canRoam>
9+
<disabled>false</disabled>
10+
<blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>
11+
<triggers class="vector"/>
12+
<concurrentBuild>false</concurrentBuild>
13+
<aggregatorStyleBuild>true</aggregatorStyleBuild>
14+
<incrementalBuild>false</incrementalBuild>
15+
<usePrivateRepository>false</usePrivateRepository>
16+
<ignoreUpstremChanges>false</ignoreUpstremChanges>
17+
<archivingDisabled>false</archivingDisabled>
18+
<reporters/>
19+
<publishers/>
20+
<buildWrappers/>
21+
</maven2-moduleset>
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<?xml version='1.0' encoding='UTF-8'?>
2+
<maven2-moduleset>
3+
<actions/>
4+
<description></description>
5+
<keepDependencies>false</keepDependencies>
6+
<properties/>
7+
<scm class="hudson.scm.NullSCM"/>
8+
<canRoam>true</canRoam>
9+
<disabled>true</disabled>
10+
<blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>
11+
<triggers class="vector"/>
12+
<concurrentBuild>false</concurrentBuild>
13+
<aggregatorStyleBuild>true</aggregatorStyleBuild>
14+
<incrementalBuild>false</incrementalBuild>
15+
<usePrivateRepository>true</usePrivateRepository>
16+
<ignoreUpstremChanges>false</ignoreUpstremChanges>
17+
<archivingDisabled>false</archivingDisabled>
18+
<reporters/>
19+
<publishers/>
20+
<buildWrappers/>
21+
</maven2-moduleset>
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<?xml version='1.0' encoding='UTF-8'?>
2+
<hudson.plugins.scm__sync__configuration.ScmSyncConfigurationPlugin version="1">
3+
<scmRepositoryUrl>scm:svn:https://myrepo/synchronizedDirectory/</scmRepositoryUrl>
4+
<scm class="hudson.plugins.scm_sync_configuration.scms.ScmSyncSubversionSCM"/>
5+
</hudson.plugins.scm__sync__configuration.ScmSyncConfigurationPlugin>

0 commit comments

Comments
 (0)