diff options
author | Tor Norbye <tnorbye@google.com> | 2014-09-18 13:38:58 -0700 |
---|---|---|
committer | Tor Norbye <tnorbye@google.com> | 2014-09-18 13:38:58 -0700 |
commit | b5fb31ef6a38f19404859755dbd2e345215b97bf (patch) | |
tree | e8787c45e494dfcc558faf0f75956f8785c39b94 /plugins/git4idea/tests/git4idea/log/GitLogProviderTest.java | |
parent | e222a9e1e66670a56e926a6b0f3e10231eeeb1fb (diff) | |
parent | e782c57d74000722f9db4c9426317410520670c6 (diff) | |
download | idea-b5fb31ef6a38f19404859755dbd2e345215b97bf.tar.gz |
Merge remote-tracking branch 'aosp/upstream-master' into merge
Conflicts:
.idea/libraries/asm_tools.xml
.idea/libraries/bouncy_castle.xml
.idea/libraries/builder_model.xml
.idea/libraries/commons_compress.xml
.idea/libraries/easymock_tools.xml
.idea/libraries/freemarker_2_3_20.xml
.idea/libraries/guava_tools.xml
.idea/libraries/kxml2.xml
.idea/libraries/lombok_ast.xml
.idea/libraries/mockito.xml
.idea/modules.xml
.idea/vcs.xml
build/scripts/layouts.gant
updater/src/com/intellij/updater/Runner.java
Change-Id: I8e1c173e00cd76c855b8a98543b0a0edfdd99d12
Diffstat (limited to 'plugins/git4idea/tests/git4idea/log/GitLogProviderTest.java')
-rw-r--r-- | plugins/git4idea/tests/git4idea/log/GitLogProviderTest.java | 54 |
1 files changed, 43 insertions, 11 deletions
diff --git a/plugins/git4idea/tests/git4idea/log/GitLogProviderTest.java b/plugins/git4idea/tests/git4idea/log/GitLogProviderTest.java index 0bb67671622b..313852f118b0 100644 --- a/plugins/git4idea/tests/git4idea/log/GitLogProviderTest.java +++ b/plugins/git4idea/tests/git4idea/log/GitLogProviderTest.java @@ -15,13 +15,13 @@ */ package git4idea.log; +import com.intellij.openapi.components.ServiceManager; import com.intellij.openapi.extensions.Extensions; import com.intellij.openapi.util.Condition; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vcs.VcsException; import com.intellij.util.ArrayUtil; import com.intellij.util.CollectConsumer; -import com.intellij.util.Consumer; import com.intellij.util.Function; import com.intellij.util.containers.ContainerUtil; import com.intellij.vcs.log.*; @@ -40,7 +40,8 @@ import static git4idea.test.GitExecutor.*; public class GitLogProviderTest extends GitSingleRepoTest { - @NotNull private GitLogProvider myLogProvider; + private GitLogProvider myLogProvider; + private VcsLogObjectsFactory myObjectsFactory; public void setUp() throws Exception { super.setUp(); @@ -53,6 +54,7 @@ public class GitLogProviderTest extends GitSingleRepoTest { }); assertEquals("Incorrect number of GitLogProviders", 1, providers.size()); myLogProvider = (GitLogProvider)providers.get(0); + myObjectsFactory = ServiceManager.getService(myProject, VcsLogObjectsFactory.class); } public void tearDown() throws Exception { @@ -64,21 +66,51 @@ public class GitLogProviderTest extends GitSingleRepoTest { List<VcsCommitMetadata> expectedLogWithoutTaggedBranch = log(); createTaggedBranch(); - Set<VcsRef> noRefs = Collections.emptySet(); - List<? extends VcsCommitMetadata> block = myLogProvider.readFirstBlock(myProjectRoot, new RequirementsImpl(1000, false, noRefs, noRefs)); - assertOrderedEquals(block, expectedLogWithoutTaggedBranch); + VcsLogProvider.DetailedLogData block = myLogProvider.readFirstBlock(myProjectRoot,new RequirementsImpl(1000, false, Collections.<VcsRef>emptySet())); + assertOrderedEquals(block.getCommits(), expectedLogWithoutTaggedBranch); } public void test_refresh_with_new_tagged_branch() throws VcsException { prepareSomeHistory(); - Set<VcsRef> prevRefs = ContainerUtil.newHashSet(myLogProvider.readAllRefs(myProjectRoot)); + Set<VcsRef> prevRefs = readAllRefs(); createTaggedBranch(); - Set<VcsRef> newRefs = ContainerUtil.newHashSet(myLogProvider.readAllRefs(myProjectRoot)); List<VcsCommitMetadata> expectedLog = log(); - List<? extends VcsCommitMetadata> block = myLogProvider.readFirstBlock(myProjectRoot, - new RequirementsImpl(1000, true, prevRefs, newRefs)); - assertSameElements(block, expectedLog); + VcsLogProvider.DetailedLogData block = myLogProvider.readFirstBlock(myProjectRoot, new RequirementsImpl(1000, true, prevRefs)); + assertSameElements(block.getCommits(), expectedLog); + } + + public void test_refresh_when_new_tag_moved() throws VcsException { + prepareSomeHistory(); + Set<VcsRef> prevRefs = readAllRefs(); + git("tag -f ATAG"); + + List<VcsCommitMetadata> expectedLog = log(); + Set<VcsRef> refs = readAllRefs(); + VcsLogProvider.DetailedLogData block = myLogProvider.readFirstBlock(myProjectRoot, new RequirementsImpl(1000, true, prevRefs)); + assertSameElements(block.getCommits(), expectedLog); + assertSameElements(block.getRefs(), refs); + } + + public void test_new_tag_on_old_commit() throws VcsException { + prepareSomeHistory(); + Set<VcsRef> prevRefs = readAllRefs(); + List<VcsCommitMetadata> log = log(); + String firstCommit = log.get(log.size() - 1).getId().asString(); + git("tag NEW_TAG " + firstCommit); + + Set<VcsRef> refs = readAllRefs(); + VcsLogProvider.DetailedLogData block = myLogProvider.readFirstBlock(myProjectRoot, new RequirementsImpl(1000, true, prevRefs)); + assertSameElements(block.getRefs(), refs); + } + + private Set<VcsRef> readAllRefs() { + String[] refs = StringUtil.splitByLines(git("log --branches --tags --no-walk --format=%H%d --decorate=full")); + Set<VcsRef> result = ContainerUtil.newHashSet(); + for (String ref : refs) { + result.addAll(new RefParser(myObjectsFactory).parseCommitRefs(ref, myProjectRoot)); + } + return result; } public void test_all_log_with_tagged_branch() throws VcsException { @@ -87,7 +119,7 @@ public class GitLogProviderTest extends GitSingleRepoTest { List<VcsCommitMetadata> expectedLog = log(); List<TimedVcsCommit> collector = ContainerUtil.newArrayList(); //noinspection unchecked - myLogProvider.readAllHashes(myProjectRoot, Consumer.EMPTY_CONSUMER, new CollectConsumer<TimedVcsCommit>(collector)); + myLogProvider.readAllHashes(myProjectRoot, new CollectConsumer<TimedVcsCommit>(collector)); assertOrderedEquals(expectedLog, collector); } |