diff --git a/core/src/main/java/jenkins/model/RunIdMigrator.java b/core/src/main/java/jenkins/model/RunIdMigrator.java index 4666a5fb8655f146814ab6cf9ac284ba23646a34..88dc17b90026101b0a75a3abdca21bd1b8bab760 100644 --- a/core/src/main/java/jenkins/model/RunIdMigrator.java +++ b/core/src/main/java/jenkins/model/RunIdMigrator.java @@ -350,6 +350,12 @@ public final class RunIdMigrator { return; } for (File job : jobDirs) { + + if (job.getName().equals("builds")) { + // Might be maven modules, matrix builds, etc. which are direct children of job + unmigrateBuildsDir(job); + } + File[] kids = job.listFiles(); if (kids == null) { continue; @@ -361,7 +367,8 @@ public final class RunIdMigrator { if (kid.getName().equals("builds")) { unmigrateBuildsDir(kid); } else { - // Might be jobs, modules, promotions, etc.; we assume an ItemGroup.getRootDirFor implementation returns grandchildren. + // Might be jobs, modules, promotions, etc.; we assume an ItemGroup.getRootDirFor implementation + // returns grandchildren, unmigrateJobsDir(job) call above handles children. unmigrateJobsDir(kid); } } diff --git a/core/src/test/java/jenkins/model/RunIdMigratorTest.java b/core/src/test/java/jenkins/model/RunIdMigratorTest.java index fb9805db779d2ea24e2f7e53b1040cf222875e35..4b890ac50a6d5b8de3d23dbf5678eeb7f3e19037 100644 --- a/core/src/test/java/jenkins/model/RunIdMigratorTest.java +++ b/core/src/test/java/jenkins/model/RunIdMigratorTest.java @@ -128,6 +128,26 @@ public class RunIdMigratorTest { assertEquals("{1=→2014-01-02_03-04-05, 2014-01-02_03-04-05={build.xml='\n\n ok\n 1\n ok\n'}}", summarize()); } + @Test public void reverseMatrixAfterNewBuilds() throws Exception { + File root = dir; + dir = new File(dir, "jobs/someproject/Environment=prod/builds"); + write("1/build.xml", "\n\n ok\n 1388649845000\n ok\n"); + write("legacyIds", ""); + assertEquals("{1={build.xml='\n\n ok\n 1388649845000\n ok\n'}, legacyIds=''}", summarize()); + RunIdMigrator.main(root.getAbsolutePath()); + assertEquals("{1=→2014-01-02_03-04-05, 2014-01-02_03-04-05={build.xml='\n\n ok\n 1\n ok\n'}}", summarize()); + } + + @Test public void reverseMavenAfterNewBuilds() throws Exception { + File root = dir; + dir = new File(dir, "jobs/someproject/test$test/builds"); + write("1/build.xml", "\n\n ok\n 1388649845000\n ok\n"); + write("legacyIds", ""); + assertEquals("{1={build.xml='\n\n ok\n 1388649845000\n ok\n'}, legacyIds=''}", summarize()); + RunIdMigrator.main(root.getAbsolutePath()); + assertEquals("{1=→2014-01-02_03-04-05, 2014-01-02_03-04-05={build.xml='\n\n ok\n 1\n ok\n'}}", summarize()); + } + // TODO test sane recovery from various error conditions private void write(String file, String text) throws Exception {