# HG changeset patch # User Dmitry Neverov # Date 1347022249 -14400 # Node ID 6d4ce78234c51285db553a444bd99b9d2a9346f7 # Parent 848c834e3d98198eaa1ff31d2ebb95cc66a00d60 TW-23435 list files should take VCS root branch into account Files were listed for the last pushed commit among all branches. diff -r 848c834e3d98 -r 6d4ce78234c5 mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/HgRepo.java --- a/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/HgRepo.java Fri Sep 07 16:31:58 2012 +0400 +++ b/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/HgRepo.java Fri Sep 07 16:50:49 2012 +0400 @@ -94,10 +94,10 @@ } @NotNull - public List listFiles() throws VcsException { + public List listFiles(@NotNull String revision) throws VcsException { List fileStatuses = status() - .fromRevision("tip") - .toRevision("tip") + .fromRevision(revision) + .toRevision(revision) .hideStatus() .showAllFiles() .call(); diff -r 848c834e3d98 -r 6d4ce78234c5 mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ListFilesSupport.java --- a/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ListFilesSupport.java Fri Sep 07 16:31:58 2012 +0400 +++ b/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ListFilesSupport.java Fri Sep 07 16:50:49 2012 +0400 @@ -44,7 +44,7 @@ HgRepo repo = myVcs.createRepo(root); List result = new ArrayList(); Pattern p = compile(quote(File.separator)); - for (String file : repo.listFiles()) { + for (String file : repo.listFiles(root.getBranchName())) { String canonicalFile = p.matcher(file).replaceAll("/"); if (!canonicalFile.startsWith(dir)) continue; diff -r 848c834e3d98 -r 6d4ce78234c5 mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ListFilesSupportTest.java --- a/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ListFilesSupportTest.java Fri Sep 07 16:31:58 2012 +0400 +++ b/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ListFilesSupportTest.java Fri Sep 07 16:50:49 2012 +0400 @@ -3,7 +3,9 @@ import com.intellij.openapi.diagnostic.Logger; import jetbrains.buildServer.TempFiles; import jetbrains.buildServer.log.Log4jFactory; +import jetbrains.buildServer.util.TestFor; import jetbrains.buildServer.vcs.ListDirectChildrenPolicy; +import jetbrains.buildServer.vcs.VcsException; import jetbrains.buildServer.vcs.VcsFileData; import jetbrains.buildServer.vcs.VcsRoot; import org.jetbrains.annotations.NotNull; @@ -12,10 +14,12 @@ import org.testng.annotations.Test; import java.io.File; +import java.io.IOException; import java.util.Collection; import static jetbrains.buildServer.buildTriggers.vcs.mercurial.Util.copyRepository; import static jetbrains.buildServer.buildTriggers.vcs.mercurial.VcsRootBuilder.vcsRoot; +import static org.testng.AssertJUnit.assertFalse; import static org.testng.AssertJUnit.assertNotNull; import static org.testng.AssertJUnit.assertTrue; @@ -31,6 +35,7 @@ private MercurialVcsSupport myVcs; private VcsRoot myRoot; + private File myRemoteRepoDir; @BeforeMethod protected void setUp() throws Exception { @@ -41,9 +46,9 @@ .build(); myVcs = Util.createMercurialServerSupport(context, myPluginConfig); - File repo = tempFiles.createTempDir(); - copyRepository(new File("mercurial-tests/testData/rep1"), repo); - myRoot = vcsRoot().withUrl(repo.getAbsolutePath()).build(); + myRemoteRepoDir = tempFiles.createTempDir(); + copyRepository(new File("mercurial-tests/testData/rep1"), myRemoteRepoDir); + myRoot = vcsRoot().withUrl(myRemoteRepoDir.getAbsolutePath()).build(); } @@ -72,6 +77,17 @@ assertTrue(files.contains(file("file2.txt"))); } + + @TestFor(issues = "TW-23435") + public void should_take_branch_into_account() throws VcsException, IOException { + ListDirectChildrenPolicy policy = getListFilesPolicy(); + VcsRoot differentBranchRoot = vcsRoot().withUrl(myRemoteRepoDir.getAbsolutePath()).withBranch("test_branch").build(); + Collection files1 = policy.listFiles(myRoot, ""); + Collection files2 = policy.listFiles(differentBranchRoot, ""); + assertFalse("List files doesn't take branch into account", files1.equals(files2)); + } + + @NotNull private ListDirectChildrenPolicy getListFilesPolicy() { ListDirectChildrenPolicy listFilesPolicy = (ListDirectChildrenPolicy) myVcs.getListFilesPolicy();