Skip to content
Snippets Groups Projects
Commit 94599930 authored by Robin Rosenberg's avatar Robin Rosenberg Committed by Code Review
Browse files

Merge "Relax ObjectChecker to permit missing tagger lines"

parents aa97c6e4 7c82df11
No related branches found
No related tags found
No related merge requests found
/*
* Copyright (C) 2008, Google Inc.
* Copyright (C) 2008-2010, Google Inc.
* Copyright (C) 2008, Shawn O. Pearce <spearce@spearce.org>
* and other copyright owners as documented in the project's IP log.
*
......@@ -868,26 +868,7 @@ public void testInvalidTagNoTagHeader3() {
}
}
public void testInvalidTagNoTagHeader4() {
final StringBuilder b = new StringBuilder();
b.append("object ");
b.append("be9bfa841874ccc9f2ef7c48d0c76226f89b7189");
b.append('\n');
b.append("type commit\n");
b.append("tag foo");
final byte[] data = Constants.encodeASCII(b.toString());
try {
checker.checkTag(data);
fail("incorrectly accepted invalid tag");
} catch (CorruptObjectException e) {
assertEquals("no tagger header", e.getMessage());
}
}
public void testInvalidTagNoTaggerHeader1() {
public void testValidTagHasNoTaggerHeader() throws CorruptObjectException {
final StringBuilder b = new StringBuilder();
b.append("object ");
......@@ -897,13 +878,7 @@ public void testInvalidTagNoTaggerHeader1() {
b.append("type commit\n");
b.append("tag foo\n");
final byte[] data = Constants.encodeASCII(b.toString());
try {
checker.checkTag(data);
fail("incorrectly accepted invalid tag");
} catch (CorruptObjectException e) {
assertEquals("no tagger header", e.getMessage());
}
checker.checkTag(Constants.encodeASCII(b.toString()));
}
public void testInvalidTagInvalidTaggerHeader1() {
......
/*
* Copyright (C) 2008-2009, Google Inc.
* Copyright (C) 2008-2010, Google Inc.
* and other copyright owners as documented in the project's IP log.
*
* This program and the accompanying materials are made available
......@@ -140,6 +140,51 @@ public void testParseAllFields() throws Exception {
assertEquals(taggerEmail, cTagger.getEmailAddress());
}
public void testParseOldStyleNoTagger() throws Exception {
final ObjectId treeId = id("9788669ad918b6fcce64af8882fc9a81cb6aba67");
final String name = "v1.2.3.4.5";
final String message = "test\n" //
+ "\n" //
+ "-----BEGIN PGP SIGNATURE-----\n" //
+ "Version: GnuPG v1.4.1 (GNU/Linux)\n" //
+ "\n" //
+ "iD8DBQBC0b9oF3Y\n" //
+ "-----END PGP SIGNATURE------n";
final StringBuilder body = new StringBuilder();
body.append("object ");
body.append(treeId.name());
body.append("\n");
body.append("type tree\n");
body.append("tag ");
body.append(name);
body.append("\n");
body.append("\n");
body.append(message);
final RevWalk rw = new RevWalk(db);
final RevTag c;
c = new RevTag(id("9473095c4cb2f12aefe1db8a355fe3fafba42f67"));
assertNull(c.getObject());
assertNull(c.getTagName());
c.parseCanonical(rw, body.toString().getBytes("UTF-8"));
assertNotNull(c.getObject());
assertEquals(treeId, c.getObject().getId());
assertSame(rw.lookupTree(treeId), c.getObject());
assertNotNull(c.getTagName());
assertEquals(name, c.getTagName());
assertEquals("test", c.getShortMessage());
assertEquals(message, c.getFullMessage());
assertNull(c.getTaggerIdent());
}
private RevTag create(final String msg) throws Exception {
final StringBuilder b = new StringBuilder();
b.append("object 9788669ad918b6fcce64af8882fc9a81cb6aba67\n");
......
/*
* Copyright (C) 2008, Google Inc.
* Copyright (C) 2008-2010, Google Inc.
* Copyright (C) 2008, Shawn O. Pearce <spearce@spearce.org>
* and other copyright owners as documented in the project's IP log.
*
......@@ -217,10 +217,10 @@ public void checkTag(final byte[] raw) throws CorruptObjectException {
throw new CorruptObjectException("no tag header");
ptr = nextLF(raw, ptr);
if ((ptr = match(raw, ptr, tagger)) < 0)
throw new CorruptObjectException("no tagger header");
if ((ptr = personIdent(raw, ptr)) < 0 || raw[ptr++] != '\n')
throw new CorruptObjectException("invalid tagger");
if ((ptr = match(raw, ptr, tagger)) > 0) {
if ((ptr = personIdent(raw, ptr)) < 0 || raw[ptr++] != '\n')
throw new CorruptObjectException("invalid tagger");
}
}
private static int lastPathChar(final int mode) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment