提交 056b4464 编写于 作者: J Jesse Glick

[FIXED JENKINS-26519] Accept Windows text file quasi-symlinks for build numbers.

上级 876d492b
...@@ -63,6 +63,9 @@ Upcoming changes</a> ...@@ -63,6 +63,9 @@ Upcoming changes</a>
<div id="rc" style="display:none;"><!--=BEGIN=--> <div id="rc" style="display:none;"><!--=BEGIN=-->
<h3><a name=v1.598>What's new in 1.598</a> <!--=DATE=--></h3> <h3><a name=v1.598>What's new in 1.598</a> <!--=DATE=--></h3>
<ul class=image> <ul class=image>
<li class='major bug'>
Build format change migrator in 1.597 did not work on some Windows systems.
(<a href="https://issues.jenkins-ci.org/browse/JENKINS-26519">issue 26519</a>)
<li class=bug> <li class=bug>
FutureImpl does not cancel its start future. FutureImpl does not cancel its start future.
(<a href="https://issues.jenkins-ci.org/browse/JENKINS-25514">issue 25514</a>) (<a href="https://issues.jenkins-ci.org/browse/JENKINS-25514">issue 25514</a>)
......
...@@ -199,7 +199,9 @@ public final class RunIdMigrator { ...@@ -199,7 +199,9 @@ public final class RunIdMigrator {
String name = kid.getName(); String name = kid.getName();
try { try {
String link = Util.resolveSymlink(kid); String link = Util.resolveSymlink(kid);
if (link == null) { if (link == null && name.matches("\\d+") && kid.isFile()) { // legacy Windows format
link = FileUtils.readFileToString(kid);
} else if (link == null) {
continue; continue;
} }
try { try {
......
...@@ -28,7 +28,6 @@ import hudson.Util; ...@@ -28,7 +28,6 @@ import hudson.Util;
import hudson.util.StreamTaskListener; import hudson.util.StreamTaskListener;
import java.io.File; import java.io.File;
import java.nio.charset.Charset; import java.nio.charset.Charset;
import java.util.Date;
import java.util.Map; import java.util.Map;
import java.util.TimeZone; import java.util.TimeZone;
import java.util.TreeMap; import java.util.TreeMap;
...@@ -42,6 +41,7 @@ import org.junit.Before; ...@@ -42,6 +41,7 @@ import org.junit.Before;
import org.junit.BeforeClass; import org.junit.BeforeClass;
import org.junit.Rule; import org.junit.Rule;
import org.junit.rules.TemporaryFolder; import org.junit.rules.TemporaryFolder;
import org.jvnet.hudson.test.Issue;
public class RunIdMigratorTest { public class RunIdMigratorTest {
...@@ -117,6 +117,18 @@ public class RunIdMigratorTest { ...@@ -117,6 +117,18 @@ public class RunIdMigratorTest {
assertEquals("{1=→2014-01-02_03-04-05, 2014-01-02_03-04-05={build.xml='<?xml version='1.0' encoding='UTF-8'?>\n<run>\n <stuff>ok</stuff>\n <number>1</number>\n <otherstuff>ok</otherstuff>\n</run>'}}", summarize()); assertEquals("{1=→2014-01-02_03-04-05, 2014-01-02_03-04-05={build.xml='<?xml version='1.0' encoding='UTF-8'?>\n<run>\n <stuff>ok</stuff>\n <number>1</number>\n <otherstuff>ok</otherstuff>\n</run>'}}", summarize());
} }
@Issue("JENKINS-26519")
@Test public void windowsQuasiLinks() throws Exception {
write("2014-01-02_03-04-05/build.xml", "<?xml version='1.0' encoding='UTF-8'?>\n<run>\n <stuff>ok</stuff>\n <number>99</number>\n <otherstuff>ok</otherstuff>\n</run>");
write("99", "2014-01-02_03-04-05");
write("lastFailedBuild", "-1");
write("lastSuccessfulBuild", "99");
assertEquals("{2014-01-02_03-04-05={build.xml='<?xml version='1.0' encoding='UTF-8'?>\n<run>\n <stuff>ok</stuff>\n <number>99</number>\n <otherstuff>ok</otherstuff>\n</run>'}, 99='2014-01-02_03-04-05', lastFailedBuild='-1', lastSuccessfulBuild='99'}", summarize());
assertTrue(migrator.migrate(dir, null));
assertEquals("{99={build.xml='<?xml version='1.0' encoding='UTF-8'?>\n<run>\n <stuff>ok</stuff>\n <id>2014-01-02_03-04-05</id>\n <timestamp>1388649845000</timestamp>\n <otherstuff>ok</otherstuff>\n</run>'}, lastFailedBuild='-1', lastSuccessfulBuild='99', legacyIds='2014-01-02_03-04-05 99\n'}", summarize());
assertEquals(99, migrator.findNumber("2014-01-02_03-04-05"));
}
// TODO test sane recovery from various error conditions // TODO test sane recovery from various error conditions
private void write(String file, String text) throws Exception { private void write(String file, String text) throws Exception {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册