Mercurial > hg > mercurial
changeset 569:7ca3303cfc9e Faradi-7.1.x
Fix NPE during mirrors cleanup
author | Dmitry Neverov <dmitry.neverov@jetbrains.com> |
---|---|
date | Mon, 18 Mar 2013 12:05:23 +0400 |
parents | 844fc8f99c29 |
children | 57b85306c377 |
files | mercurial-agent/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/AgentMirrorCleaner.java mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/AgentMirrorCleanerTest.java |
diffstat | 2 files changed, 28 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial-agent/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/AgentMirrorCleaner.java Wed Mar 06 16:56:57 2013 +0400 +++ b/mercurial-agent/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/AgentMirrorCleaner.java Mon Mar 18 12:05:23 2013 +0400 @@ -50,6 +50,8 @@ Set<String> repositories = new HashSet<String>(); for (VcsRootEntry entry : context.getRunningBuild().getVcsRootEntries()) { VcsRoot root = entry.getVcsRoot(); + if (!isHgRoot(root)) + continue; HgVcsRoot hgRoot = new HgVcsRoot(root); AuthSettings auth = hgRoot.getAuthSettings(); ourLog.debug("Repository " + auth.getRepositoryUrlWithHiddenPassword(hgRoot.getRepository()) + @@ -58,4 +60,8 @@ } return repositories; } + + private boolean isHgRoot(@NotNull VcsRoot root) { + return Constants.VCS_NAME.equals(root.getVcsName()); + } }
--- a/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/AgentMirrorCleanerTest.java Wed Mar 06 16:56:57 2013 +0400 +++ b/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/AgentMirrorCleanerTest.java Mon Mar 18 12:05:23 2013 +0400 @@ -3,10 +3,10 @@ import com.intellij.openapi.diagnostic.Logger; import jetbrains.buildServer.TempFiles; import jetbrains.buildServer.agent.*; -import jetbrains.buildServer.buildTriggers.vcs.mercurial.command.CommandSettings; import jetbrains.buildServer.buildTriggers.vcs.mercurial.command.TestCommandSettingsFactory; import jetbrains.buildServer.log.Log4jFactory; import jetbrains.buildServer.vcs.*; +import jetbrains.buildServer.vcs.impl.VcsRootImpl; import org.jetbrains.annotations.NotNull; import org.jmock.Expectations; import org.jmock.Mockery; @@ -109,6 +109,27 @@ } + public void no_errors_for_non_mercurial_roots() throws Exception { + final File repo1 = myTempFiles.createTempDir(); + copyRepository(new File("mercurial-tests/testData/rep1"), repo1); + final VcsRoot root1 = vcsRoot().withUrl(repo1.getAbsolutePath()).build(); + + final VcsRoot nonHgRoot = new VcsRootImpl(20, "some.vcs"); + + final DirectoryCleanersProviderContext ctx = myContext.mock(DirectoryCleanersProviderContext.class); + myContext.checking(new Expectations(){{ + AgentRunningBuild build = myContext.mock(AgentRunningBuild.class, "build" + myBuildCounter++); + allowing(build).getVcsRootEntries(); will(returnValue(asList(new VcsRootEntry(root1, CheckoutRules.DEFAULT), + new VcsRootEntry(nonHgRoot, CheckoutRules.DEFAULT)))); + allowing(ctx).getRunningBuild(); will(returnValue(build)); + }}); + + final DirectoryCleanersRegistry registry = myContext.mock(DirectoryCleanersRegistry.class); + myCleaner.registerDirectoryCleaners(ctx, registry); + myContext.assertIsSatisfied(); + } + + private void doUpdate(@NotNull VcsRoot vcsRoot, @NotNull String toVersion, @NotNull File workDir) throws VcsException { final AgentRunningBuild build = myContext.mock(AgentRunningBuild.class, "build" + myBuildCounter++); myContext.checking(new Expectations() {{