mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-09 15:05:44 +01:00
Fix initial mirror sync if empty (#1842)
Fixes an error, when the initial synchronization of a git mirror had no branches.
This commit is contained in:
@@ -82,6 +82,7 @@ import static org.mockito.Mockito.when;
|
||||
import static sonia.scm.repository.api.MirrorCommandResult.ResultType.FAILED;
|
||||
import static sonia.scm.repository.api.MirrorCommandResult.ResultType.OK;
|
||||
import static sonia.scm.repository.api.MirrorCommandResult.ResultType.REJECTED_UPDATES;
|
||||
import static sonia.scm.repository.spi.GitMirrorCommand.RefType.BRANCH;
|
||||
|
||||
public class GitMirrorCommandTest extends AbstractGitCommandTestBase {
|
||||
|
||||
@@ -164,6 +165,58 @@ public class GitMirrorCommandTest extends AbstractGitCommandTestBase {
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldAcceptEmptyInitialMirror() throws IOException, GitAPIException {
|
||||
MirrorCommandResult result = callMirrorCommand(repositoryDirectory.getAbsolutePath(), c -> {
|
||||
c.setFilter(new MirrorFilter() {
|
||||
@Override
|
||||
public Filter getFilter(FilterContext context) {
|
||||
return new Filter() {
|
||||
@Override
|
||||
public Result acceptBranch(BranchUpdate branch) {
|
||||
return Result.reject("nothing accepted");
|
||||
}
|
||||
|
||||
@Override
|
||||
public Result acceptTag(TagUpdate tag) {
|
||||
return Result.reject("nothing accepted");
|
||||
}
|
||||
};
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
assertThat(result.getResult()).isEqualTo(REJECTED_UPDATES);
|
||||
assertThat(result.getLog()).contains("Branches:")
|
||||
.contains("- 000000000..fcd0ef183 master (nothing accepted)")
|
||||
.contains("- 000000000..3f76a12f0 test-branch (nothing accepted)")
|
||||
.contains("Tags:")
|
||||
.contains("- 000000000..86a6645ec test-tag (nothing accepted)");
|
||||
|
||||
try (Git createdMirror = Git.open(clone)) {
|
||||
assertThat(createdMirror.branchList().call()).isEmpty();
|
||||
assertThat(createdMirror.tagList().call()).isEmpty();
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldAcceptOnlyTagInInitialMirror() {
|
||||
assertThrows(IllegalStateException.class, () ->
|
||||
callMirrorCommand(repositoryDirectory.getAbsolutePath(), c -> {
|
||||
c.setFilter(new MirrorFilter() {
|
||||
@Override
|
||||
public Filter getFilter(FilterContext context) {
|
||||
return new Filter() {
|
||||
@Override
|
||||
public Result acceptBranch(BranchUpdate branch) {
|
||||
return Result.reject("nothing accepted");
|
||||
}
|
||||
};
|
||||
}
|
||||
});
|
||||
}));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldFilterMasterBranchWhenFilteredOnInitialMirror() throws IOException, GitAPIException {
|
||||
MirrorCommandResult result = callMirrorCommand(repositoryDirectory.getAbsolutePath(), c -> {
|
||||
@@ -356,7 +409,8 @@ public class GitMirrorCommandTest extends AbstractGitCommandTestBase {
|
||||
assertThat(result.getResult()).isEqualTo(REJECTED_UPDATES);
|
||||
assertThat(result.getLog()).containsExactly(
|
||||
"Branches:",
|
||||
"- 000000000..fcd0ef183 added-branch (rejected due to filter)"
|
||||
"- 000000000..fcd0ef183 added-branch (rejected due to filter)",
|
||||
"No effective changes detected"
|
||||
);
|
||||
|
||||
try (Git updatedMirror = Git.open(clone)) {
|
||||
@@ -378,7 +432,8 @@ public class GitMirrorCommandTest extends AbstractGitCommandTestBase {
|
||||
assertThat(result.getResult()).isEqualTo(REJECTED_UPDATES);
|
||||
assertThat(result.getLog()).containsExactly(
|
||||
"Branches:",
|
||||
"- 3f76a12f0..9e93d8631 test-branch (rejected due to filter)"
|
||||
"- 3f76a12f0..9e93d8631 test-branch (rejected due to filter)",
|
||||
"No effective changes detected"
|
||||
);
|
||||
|
||||
try (Git updatedMirror = Git.open(clone)) {
|
||||
@@ -400,7 +455,8 @@ public class GitMirrorCommandTest extends AbstractGitCommandTestBase {
|
||||
assertThat(result.getResult()).isEqualTo(REJECTED_UPDATES);
|
||||
assertThat(result.getLog()).containsExactly(
|
||||
"Branches:",
|
||||
"- 3f76a12f0..000000000 test-branch (rejected due to filter)"
|
||||
"- 3f76a12f0..000000000 test-branch (rejected due to filter)",
|
||||
"No effective changes detected"
|
||||
);
|
||||
|
||||
try (Git updatedMirror = Git.open(clone)) {
|
||||
@@ -423,7 +479,8 @@ public class GitMirrorCommandTest extends AbstractGitCommandTestBase {
|
||||
assertThat(result.getResult()).isEqualTo(REJECTED_UPDATES);
|
||||
assertThat(result.getLog()).containsExactly(
|
||||
"Tags:",
|
||||
"- 000000000..9e93d8631 added-tag (rejected due to filter)"
|
||||
"- 000000000..9e93d8631 added-tag (rejected due to filter)",
|
||||
"No effective changes detected"
|
||||
);
|
||||
|
||||
try (Git updatedMirror = Git.open(clone)) {
|
||||
@@ -446,7 +503,8 @@ public class GitMirrorCommandTest extends AbstractGitCommandTestBase {
|
||||
assertThat(result.getResult()).isEqualTo(REJECTED_UPDATES);
|
||||
assertThat(result.getLog()).containsExactly(
|
||||
"Tags:",
|
||||
"- 86a6645ec..9e93d8631 test-tag (rejected due to filter)"
|
||||
"- 86a6645ec..9e93d8631 test-tag (rejected due to filter)",
|
||||
"No effective changes detected"
|
||||
);
|
||||
|
||||
try (Git updatedMirror = Git.open(clone)) {
|
||||
@@ -468,7 +526,8 @@ public class GitMirrorCommandTest extends AbstractGitCommandTestBase {
|
||||
assertThat(result.getResult()).isEqualTo(REJECTED_UPDATES);
|
||||
assertThat(result.getLog()).containsExactly(
|
||||
"Tags:",
|
||||
"- 86a6645ec..000000000 test-tag (rejected due to filter)"
|
||||
"- 86a6645ec..000000000 test-tag (rejected due to filter)",
|
||||
"No effective changes detected"
|
||||
);
|
||||
|
||||
try (Git updatedMirror = Git.open(clone)) {
|
||||
@@ -490,7 +549,8 @@ public class GitMirrorCommandTest extends AbstractGitCommandTestBase {
|
||||
assertThat(result.getResult()).isEqualTo(REJECTED_UPDATES);
|
||||
assertThat(result.getLog()).containsExactly(
|
||||
"Tags:",
|
||||
"- 86a6645ec..000000000 test-tag (thou shalt not pass)"
|
||||
"- 86a6645ec..000000000 test-tag (thou shalt not pass)",
|
||||
"No effective changes detected"
|
||||
);
|
||||
}
|
||||
|
||||
@@ -508,7 +568,8 @@ public class GitMirrorCommandTest extends AbstractGitCommandTestBase {
|
||||
assertThat(result.getLog()).containsExactly(
|
||||
"! got error checking filter for update: this tag creates an exception",
|
||||
"Tags:",
|
||||
"- 86a6645ec..000000000 test-tag (exception in filter)"
|
||||
"- 86a6645ec..000000000 test-tag (exception in filter)",
|
||||
"No effective changes detected"
|
||||
);
|
||||
}
|
||||
|
||||
@@ -777,10 +838,10 @@ public class GitMirrorCommandTest extends AbstractGitCommandTestBase {
|
||||
GitMirrorCommand.DefaultBranchSelector selector =
|
||||
new GitMirrorCommand.DefaultBranchSelector("master", emptyList());
|
||||
|
||||
selector.accepted("master");
|
||||
selector.accepted("something");
|
||||
selector.accepted(BRANCH, "master");
|
||||
selector.accepted(BRANCH, "something");
|
||||
|
||||
assertThat(selector.newDefault()).isEmpty();
|
||||
assertThat(selector.newDefaultBranch()).isEmpty();
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -788,10 +849,10 @@ public class GitMirrorCommandTest extends AbstractGitCommandTestBase {
|
||||
GitMirrorCommand.DefaultBranchSelector selector =
|
||||
new GitMirrorCommand.DefaultBranchSelector("master", BRANCHES);
|
||||
|
||||
selector.accepted("new");
|
||||
selector.deleted("two");
|
||||
selector.accepted(BRANCH, "new");
|
||||
selector.deleted(BRANCH, "two");
|
||||
|
||||
assertThat(selector.newDefault()).isEmpty();
|
||||
assertThat(selector.newDefaultBranch()).isEmpty();
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -799,9 +860,9 @@ public class GitMirrorCommandTest extends AbstractGitCommandTestBase {
|
||||
GitMirrorCommand.DefaultBranchSelector selector =
|
||||
new GitMirrorCommand.DefaultBranchSelector("master", BRANCHES);
|
||||
|
||||
selector.deleted("master");
|
||||
selector.deleted(BRANCH, "master");
|
||||
|
||||
assertThat(selector.newDefault()).get().isIn("one", "two", "three");
|
||||
assertThat(selector.newDefaultBranch()).get().isIn("one", "two", "three");
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -809,11 +870,11 @@ public class GitMirrorCommandTest extends AbstractGitCommandTestBase {
|
||||
GitMirrorCommand.DefaultBranchSelector selector =
|
||||
new GitMirrorCommand.DefaultBranchSelector("master", BRANCHES);
|
||||
|
||||
selector.deleted("master");
|
||||
selector.deleted("one");
|
||||
selector.deleted("three");
|
||||
selector.deleted(BRANCH, "master");
|
||||
selector.deleted(BRANCH, "one");
|
||||
selector.deleted(BRANCH, "three");
|
||||
|
||||
assertThat(selector.newDefault()).get().isEqualTo("two");
|
||||
assertThat(selector.newDefaultBranch()).get().isEqualTo("two");
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -821,11 +882,11 @@ public class GitMirrorCommandTest extends AbstractGitCommandTestBase {
|
||||
GitMirrorCommand.DefaultBranchSelector selector =
|
||||
new GitMirrorCommand.DefaultBranchSelector("master", BRANCHES);
|
||||
|
||||
selector.deleted("master");
|
||||
selector.deleted("one");
|
||||
selector.deleted("three");
|
||||
selector.deleted(BRANCH, "master");
|
||||
selector.deleted(BRANCH, "one");
|
||||
selector.deleted(BRANCH, "three");
|
||||
|
||||
assertThat(selector.newDefault()).get().isEqualTo("two");
|
||||
assertThat(selector.newDefaultBranch()).get().isEqualTo("two");
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -833,13 +894,13 @@ public class GitMirrorCommandTest extends AbstractGitCommandTestBase {
|
||||
GitMirrorCommand.DefaultBranchSelector selector =
|
||||
new GitMirrorCommand.DefaultBranchSelector("master", BRANCHES);
|
||||
|
||||
selector.deleted("master");
|
||||
selector.deleted("one");
|
||||
selector.deleted("two");
|
||||
selector.accepted("new");
|
||||
selector.deleted("three");
|
||||
selector.deleted(BRANCH, "master");
|
||||
selector.deleted(BRANCH, "one");
|
||||
selector.deleted(BRANCH, "two");
|
||||
selector.accepted(BRANCH, "new");
|
||||
selector.deleted(BRANCH, "three");
|
||||
|
||||
assertThrows(IllegalStateException.class, selector::newDefault);
|
||||
assertThrows(IllegalStateException.class, selector::newDefaultBranch);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -847,10 +908,10 @@ public class GitMirrorCommandTest extends AbstractGitCommandTestBase {
|
||||
GitMirrorCommand.DefaultBranchSelector selector =
|
||||
new GitMirrorCommand.DefaultBranchSelector("master", emptyList());
|
||||
|
||||
selector.accepted("main");
|
||||
selector.deleted("master");
|
||||
selector.accepted(BRANCH, "main");
|
||||
selector.deleted(BRANCH, "master");
|
||||
|
||||
assertThat(selector.newDefault()).get().isEqualTo("main");
|
||||
assertThat(selector.newDefaultBranch()).get().isEqualTo("main");
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -858,9 +919,9 @@ public class GitMirrorCommandTest extends AbstractGitCommandTestBase {
|
||||
GitMirrorCommand.DefaultBranchSelector selector =
|
||||
new GitMirrorCommand.DefaultBranchSelector("master", emptyList());
|
||||
|
||||
selector.accepted("main");
|
||||
selector.accepted(BRANCH, "main");
|
||||
|
||||
assertThat(selector.newDefault()).get().isEqualTo("main");
|
||||
assertThat(selector.newDefaultBranch()).get().isEqualTo("main");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user