RefSpec: reject refs ending in '/'
We had a case in Gerrits superproject subscriptions where 'refs/heads/' was configured with the intention to mean 'refs/heads/*'. The first expression lacks the '*', which is why it is not considered a wildcard but it was considered valid and so was not found early to be a typo. Refs are not allowed to end with '/' anyway, so add a check for that. Change-Id: I3ffdd9002146382acafb4fbc310a64af4cc1b7a9 Signed-off-by: Stefan Beller <sbeller@google.com>
This commit is contained in:
parent
e9e2f7e6b5
commit
1556ca740b
|
@ -408,6 +408,16 @@ public void testWildcardAtStart() {
|
|||
assertEquals("foo/head", c.getSource());
|
||||
}
|
||||
|
||||
@Test(expected = IllegalArgumentException.class)
|
||||
public void invalidWhenSourceEndsWithSlash() {
|
||||
assertNotNull(new RefSpec("refs/heads/"));
|
||||
}
|
||||
|
||||
@Test(expected = IllegalArgumentException.class)
|
||||
public void invalidWhenDestinationEndsWithSlash() {
|
||||
assertNotNull(new RefSpec("refs/heads/master:refs/heads/"));
|
||||
}
|
||||
|
||||
@Test(expected = IllegalArgumentException.class)
|
||||
public void invalidWhenSourceOnlyAndWildcard() {
|
||||
assertNotNull(new RefSpec("refs/heads/*"));
|
||||
|
|
|
@ -453,6 +453,8 @@ private static boolean isValid(final String s) {
|
|||
return false;
|
||||
if (s.contains("//")) //$NON-NLS-1$
|
||||
return false;
|
||||
if (s.endsWith("/")) //$NON-NLS-1$
|
||||
return false;
|
||||
int i = s.indexOf('*');
|
||||
if (i != -1) {
|
||||
if (s.indexOf('*', i + 1) > i)
|
||||
|
|
Loading…
Reference in New Issue