diff --git a/core/src/main/java/hudson/tasks/test/TestObject.java b/core/src/main/java/hudson/tasks/test/TestObject.java index 14a228124ecd2d299b2cf0cab734d111aece9387..4df98e0e8b5fbcaf951e7f07d79797e3ce0bb674 100644 --- a/core/src/main/java/hudson/tasks/test/TestObject.java +++ b/core/src/main/java/hudson/tasks/test/TestObject.java @@ -365,7 +365,7 @@ public abstract class TestObject extends hudson.tasks.junit.TestObject { */ public static String safe(String s) { // this still seems to be a bit faster than a single replace with regexp - return s.replace('/', '_').replace('\\', '_').replace(':', '_').replace('?', '_').replace('#', '_'); + return s.replace('/', '_').replace('\\', '_').replace(':', '_').replace('?', '_').replace('#', '_').replace('%', '_'); // Note: we probably should some helpers like Commons URIEscapeUtils here to escape all invalid URL chars, but then we // still would have to escape /, ? and so on diff --git a/core/src/test/java/hudson/tasks/test/TestObjectTest.java b/core/src/test/java/hudson/tasks/test/TestObjectTest.java index 2bf414e5f77db710ec1947f9c76b9a66f7875363..f48cf6d5e7587225ec9f92a629e303d17cebf676 100644 --- a/core/src/test/java/hudson/tasks/test/TestObjectTest.java +++ b/core/src/test/java/hudson/tasks/test/TestObjectTest.java @@ -11,7 +11,7 @@ public class TestObjectTest { @Test public void testSafe() { - String name = "Foo#approve! is called by approve_on_foo?xyz/\\:"; + String name = "Foo#approve! is called by approve_on_foo?xyz/\\: 50%"; String encoded = TestObject.safe(name); Assert.assertFalse(encoded.contains("#")); @@ -19,6 +19,7 @@ public class TestObjectTest { Assert.assertFalse(encoded.contains("\\")); Assert.assertFalse(encoded.contains("/")); Assert.assertFalse(encoded.contains(":")); + Assert.assertFalse(encoded.contains("%")); } @Test public void uniquifyName() {