diff options
Diffstat (limited to 'org.eclipse.jgit.junit/src')
3 files changed, 55 insertions, 25 deletions
diff --git a/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/LocalDiskRepositoryTestCase.java b/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/LocalDiskRepositoryTestCase.java index b5348f9980..bb5f9efb8f 100644 --- a/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/LocalDiskRepositoryTestCase.java +++ b/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/LocalDiskRepositoryTestCase.java @@ -51,7 +51,6 @@ import static org.junit.Assert.fail; import java.io.File; import java.io.IOException; import java.util.*; -import java.util.concurrent.TimeUnit; import org.eclipse.jgit.dircache.DirCache; import org.eclipse.jgit.dircache.DirCacheEntry; @@ -92,11 +91,12 @@ public abstract class LocalDiskRepositoryTestCase { /** A fake (but stable) identity for committer fields in the test. */ protected PersonIdent committer; + /** A {@link SystemReader} used to coordinate time, envars, etc. */ + protected MockSystemReader mockSystemReader; + private final List<Repository> toClose = new ArrayList<Repository>(); private File tmp; - private MockSystemReader mockSystemReader; - @Before public void setUp() throws Exception { tmp = File.createTempFile("jgit_test_", "_tmp"); @@ -171,9 +171,8 @@ public abstract class LocalDiskRepositoryTestCase { /** Increment the {@link #author} and {@link #committer} times. */ protected void tick() { - final long delta = TimeUnit.MILLISECONDS.convert(5 * 60, - TimeUnit.SECONDS); - final long now = author.getWhen().getTime() + delta; + mockSystemReader.tick(5 * 60); + final long now = mockSystemReader.getCurrentTime(); final int tz = mockSystemReader.getTimezone(now); author = new PersonIdent(author, now, tz); @@ -278,11 +277,10 @@ public abstract class LocalDiskRepositoryTestCase { throws IllegalStateException, IOException { DirCache dc = repo.readDirCache(); StringBuilder sb = new StringBuilder(); - TreeSet<Long> timeStamps = null; + TreeSet<Long> timeStamps = new TreeSet<Long>(); // iterate once over the dircache just to collect all time stamps if (0 != (includedOptions & MOD_TIME)) { - timeStamps = new TreeSet<Long>(); for (int i=0; i<dc.getEntryCount(); ++i) timeStamps.add(Long.valueOf(dc.getEntry(i).getLastModified())); } diff --git a/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/MockSystemReader.java b/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/MockSystemReader.java index d24dd44fff..03a2b1a584 100644 --- a/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/MockSystemReader.java +++ b/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/MockSystemReader.java @@ -62,6 +62,9 @@ import org.eclipse.jgit.storage.file.FileBasedConfig; import org.eclipse.jgit.util.FS; import org.eclipse.jgit.util.SystemReader; +/** + * Mock {@link SystemReader} for tests. + */ public class MockSystemReader extends SystemReader { private final class MockConfig extends FileBasedConfig { private MockConfig(File cfgLocation, FS fs) { @@ -79,6 +82,8 @@ public class MockSystemReader extends SystemReader { } } + long now = 1250379778668L; // Sat Aug 15 20:12:58 GMT-03:30 2009 + final Map<String, String> values = new HashMap<String, String>(); FileBasedConfig userGitConfig; @@ -138,7 +143,17 @@ public class MockSystemReader extends SystemReader { @Override public long getCurrentTime() { - return 1250379778668L; // Sat Aug 15 20:12:58 GMT-03:30 2009 + return now; + } + + /** + * Adjusts the current time in seconds. + * + * @param secDelta + * number of seconds to add to the current time. + */ + public void tick(final int secDelta) { + now += secDelta * 1000L; } @Override diff --git a/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/TestRepository.java b/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/TestRepository.java index 925a6b0216..98e29d7083 100644 --- a/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/TestRepository.java +++ b/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/TestRepository.java @@ -138,7 +138,7 @@ public class TestRepository<R extends Repository> { private final ObjectInserter inserter; - private long now; + private final MockSystemReader mockSystemReader; /** * Wrap a repository with test building tools. @@ -148,7 +148,7 @@ public class TestRepository<R extends Repository> { * @throws IOException */ public TestRepository(R db) throws IOException { - this(db, new RevWalk(db)); + this(db, new RevWalk(db), new MockSystemReader()); } /** @@ -161,11 +161,28 @@ public class TestRepository<R extends Repository> { * @throws IOException */ public TestRepository(R db, RevWalk rw) throws IOException { + this(db, rw, new MockSystemReader()); + } + + /** + * Wrap a repository with test building tools. + * + * @param db + * the test repository to write into. + * @param rw + * the RevObject pool to use for object lookup. + * @param reader + * the MockSystemReader to use for clock and other system + * operations. + * @throws IOException + */ + public TestRepository(R db, RevWalk rw, MockSystemReader reader) + throws IOException { this.db = db; this.git = Git.wrap(db); this.pool = rw; this.inserter = db.newObjectInserter(); - this.now = 1236977987000L; + this.mockSystemReader = reader; } /** @return the repository this helper class operates against. */ @@ -186,14 +203,14 @@ public class TestRepository<R extends Repository> { return git; } - /** @return current time adjusted by {@link #tick(int)}. */ - public Date getClock() { - return new Date(now); + /** @return current date. */ + public Date getDate() { + return new Date(mockSystemReader.getCurrentTime()); } /** @return timezone used for default identities. */ public TimeZone getTimeZone() { - return defaultCommitter.getTimeZone(); + return mockSystemReader.getTimeZone(); } /** @@ -203,18 +220,18 @@ public class TestRepository<R extends Repository> { * number of seconds to add to the current time. */ public void tick(final int secDelta) { - now += secDelta * 1000L; + mockSystemReader.tick(secDelta); } /** - * Set the author and committer using {@link #getClock()}. + * Set the author and committer using {@link #getDate()}. * * @param c * the commit builder to store. */ public void setAuthorAndCommitter(org.eclipse.jgit.lib.CommitBuilder c) { - c.setAuthor(new PersonIdent(defaultAuthor, new Date(now))); - c.setCommitter(new PersonIdent(defaultCommitter, new Date(now))); + c.setAuthor(new PersonIdent(defaultAuthor, getDate())); + c.setCommitter(new PersonIdent(defaultCommitter, getDate())); } /** @@ -392,8 +409,8 @@ public class TestRepository<R extends Repository> { c = new org.eclipse.jgit.lib.CommitBuilder(); c.setTreeId(tree); c.setParentIds(parents); - c.setAuthor(new PersonIdent(defaultAuthor, new Date(now))); - c.setCommitter(new PersonIdent(defaultCommitter, new Date(now))); + c.setAuthor(new PersonIdent(defaultAuthor, getDate())); + c.setCommitter(new PersonIdent(defaultCommitter, getDate())); c.setMessage(""); ObjectId id; try (ObjectInserter ins = inserter) { @@ -428,7 +445,7 @@ public class TestRepository<R extends Repository> { final TagBuilder t = new TagBuilder(); t.setObjectId(dst); t.setTag(name); - t.setTagger(new PersonIdent(defaultCommitter, new Date(now))); + t.setTagger(new PersonIdent(defaultCommitter, getDate())); t.setMessage(""); ObjectId id; try (ObjectInserter ins = inserter) { @@ -663,7 +680,7 @@ public class TestRepository<R extends Repository> { b.setParentId(head); b.setTreeId(merger.getResultTreeId()); b.setAuthor(commit.getAuthorIdent()); - b.setCommitter(new PersonIdent(defaultCommitter, new Date(now))); + b.setCommitter(new PersonIdent(defaultCommitter, getDate())); b.setMessage(commit.getFullMessage()); ObjectId result; try (ObjectInserter ins = inserter) { @@ -1100,7 +1117,7 @@ public class TestRepository<R extends Repository> { c.setAuthor(author); if (committer != null) { if (updateCommitterTime) - committer = new PersonIdent(committer, new Date(now)); + committer = new PersonIdent(committer, getDate()); c.setCommitter(committer); } |