Parse Change.Ids out of meta refs

This allows visible meta refs in VisibleRefFilter.

Change-Id: Ia7a0a0027109a85204882c8a69b03292a29ece92
This commit is contained in:
Dave Borowitz
2014-08-01 13:11:11 -07:00
parent 5742f019bb
commit 4d76ee9521
4 changed files with 25 additions and 10 deletions

View File

@@ -136,11 +136,11 @@ public final class Change {
return null; return null;
} }
int ce = nextNonDigit(ref, cs); int ce = nextNonDigit(ref, cs);
int patchSetId = PatchSet.Id.fromRef(ref, ce); if (ref.substring(ce).equals(RefNames.META_SUFFIX)
if (patchSetId < 0) { || PatchSet.Id.fromRef(ref, ce) >= 0) {
return null; return new Change.Id(Integer.parseInt(ref.substring(cs, ce)));
} }
return new Change.Id(Integer.parseInt(ref.substring(cs, ce))); return null;
} }
static int startIndex(String ref) { static int startIndex(String ref) {

View File

@@ -45,6 +45,9 @@ public class RefNames {
*/ */
public static final String REFS_CACHE_AUTOMERGE = "refs/cache-automerge/"; public static final String REFS_CACHE_AUTOMERGE = "refs/cache-automerge/";
/** Suffix of a meta ref in the notedb. */
public static final String META_SUFFIX = "/meta";
public static String refsUsers(Account.Id accountId) { public static String refsUsers(Account.Id accountId) {
StringBuilder r = new StringBuilder(); StringBuilder r = new StringBuilder();
r.append(REFS_USER); r.append(REFS_USER);

View File

@@ -21,16 +21,18 @@ import org.junit.Test;
public class ChangeTest { public class ChangeTest {
@Test @Test
public void parseRefNames() { public void parseInvalidRefNames() {
assertRef(1, "refs/changes/01/1/1");
assertRef(1234, "refs/changes/34/1234/56");
// Not even close.
assertNotRef(null); assertNotRef(null);
assertNotRef(""); assertNotRef("");
assertNotRef("01/1/1"); assertNotRef("01/1/1");
assertNotRef("HEAD"); assertNotRef("HEAD");
assertNotRef("refs/tags/v1"); assertNotRef("refs/tags/v1");
}
@Test
public void parsePatchSetRefNames() {
assertRef(1, "refs/changes/01/1/1");
assertRef(1234, "refs/changes/34/1234/56");
// Invalid characters. // Invalid characters.
assertNotRef("refs/changes/0x/1/1"); assertNotRef("refs/changes/0x/1/1");
@@ -60,6 +62,16 @@ public class ChangeTest {
assertNotRef("refs/changes/34/1234foo"); assertNotRef("refs/changes/34/1234foo");
} }
@Test
public void parseChangeMetaRefNames() {
assertRef(1, "refs/changes/01/1/meta");
assertRef(1234, "refs/changes/34/1234/meta");
assertNotRef("refs/changes/01/1/met");
assertNotRef("refs/changes/01/1/META");
assertNotRef("refs/changes/01/1/1/meta");
}
private static void assertRef(int changeId, String refName) { private static void assertRef(int changeId, String refName) {
assertEquals(new Change.Id(changeId), Change.Id.fromRef(refName)); assertEquals(new Change.Id(changeId), Change.Id.fromRef(refName));
} }

View File

@@ -39,7 +39,7 @@ public class ChangeNoteUtil {
r.append(m); r.append(m);
r.append('/'); r.append('/');
r.append(n); r.append(n);
r.append("/meta"); r.append(RefNames.META_SUFFIX);
return r.toString(); return r.toString();
} }