use of com.google.copybara.DestinationEffect in project copybara by google.
the class GerritDestinationTest method gerritSubmit_alreadySubmittable.
@Test
public void gerritSubmit_alreadySubmittable() throws Exception {
options.gerrit.gerritChangeId = null;
fetch = "master";
writeFile(workdir, "file", "some content");
url = BASE_URL + "/foo/bar";
repoGitDir = gitUtil.mockRemoteRepo("user:SECRET@copybara-not-real.com/foo/bar").getGitDir();
gitUtil.mockApi(eq("GET"), startsWith(BASE_URL + "/changes/"), mockResponse("[" + "{" + " change_id : \"Iaaaaaaaaaabbbbbbbbbbccccccccccdddddddddd\"," + " status : \"NEW\"," + " submittable : true" + "}]"));
AtomicBoolean submitCalled = new AtomicBoolean(false);
gitUtil.mockApi(eq("POST"), matches(BASE_URL + "/changes/.*/revisions/.*/review"), mockResponseWithStatus("Change should not be voted on", 500));
gitUtil.mockApi(eq("POST"), matches(BASE_URL + "/changes/.*/submit"), mockResponseAndValidateRequest("{" + " change_id : \"Iaaaaaaaaaabbbbbbbbbbccccccccccdddddddddd\"," + " status : \"submitted\"" + "}", new MockRequestAssertion("Always true with side-effect", s -> {
submitCalled.set(true);
return true;
})));
options.setForce(true);
DummyRevision originRef = new DummyRevision("origin_ref");
GerritDestination destination = destination("submit = True", "gerrit_submit = True");
Glob glob = Glob.createGlob(ImmutableList.of("**"), excludedDestinationPaths);
WriterContext writerContext = new WriterContext("GerritDestinationTest", "test", false, originRef, Glob.ALL_FILES.roots());
List<DestinationEffect> result = destination.newWriter(writerContext).write(TransformResults.of(workdir, originRef).withSummary("Test message").withIdentity(originRef.asString()), glob, console);
assertThat(submitCalled.get()).isTrue();
assertThat(result).hasSize(1);
assertThat(result.get(0).getErrors()).isEmpty();
}
use of com.google.copybara.DestinationEffect in project copybara by google.
the class GerritDestinationTest method testDisableNotifications.
@Test
public void testDisableNotifications() throws Exception {
pushToRefsFor = "master";
fetch = "master";
options.setForce(true);
Path workTree = Files.createTempDirectory("populate");
GitRepository repo = repo().withWorkTree(workTree);
writeFile(workTree, "file.txt", "some content");
repo.add().all().run();
repo.simpleCommand("commit", "-m", "Some commit");
writeFile(workdir, "file.txt", "new content");
DummyRevision originRef = new DummyRevision("origin_ref");
WriterContext writerContext = new WriterContext("GerritDestination", "TEST", false, new DummyRevision("test"), Glob.ALL_FILES.roots());
ImmutableList<DestinationEffect> result = destination("submit = False", "notify = 'NONE'").newWriter(writerContext).write(TransformResults.of(workdir, originRef).withIdentity(originRef.asString()), Glob.createGlob(ImmutableList.of("**"), excludedDestinationPaths), console);
assertThat(result).hasSize(1);
assertThatGerritCheckout(repo(), "refs/for/master%notify=NONE,hashtag=copybara_id_origin_ref_commiter@email").containsFile("file.txt", "new content").containsNoMoreFiles();
}
use of com.google.copybara.DestinationEffect in project copybara by google.
the class GitDestinationTest method testChecker.
@Test
public void testChecker() throws Exception {
Writer<GitRevision> writer = firstCommitWriter();
Files.write(workdir.resolve("existing"), "BAD".getBytes(UTF_8));
ImmutableList<DestinationEffect> result = writer.write(TransformResults.of(workdir, new DummyRevision("ref1")), destinationFiles, console);
assertThat(result).hasSize(1);
assertThat(result.get(0).getType()).isEqualTo(Type.CREATED);
options.testingOptions.checker = new DummyChecker(ImmutableSet.of("BAD"));
checker = "testing.dummy_checker()";
final Writer<GitRevision> writer2 = newWriter();
Files.write(workdir.resolve("new_file"), "ok".getBytes(UTF_8));
result = writer2.write(TransformResults.of(workdir, new DummyRevision("ref2")), destinationFiles, console);
assertThat(result).hasSize(1);
assertThat(result.get(0).getErrors()).isEmpty();
assertThat(result.get(0).getType()).isEqualTo(Type.CREATED);
Files.write(workdir.resolve("new_file"), "BAD".getBytes(UTF_8));
CheckerException ex = assertThrows(CheckerException.class, () -> writer2.write(TransformResults.of(workdir, new DummyRevision("ref3")), destinationFiles, console));
assertThat(ex).hasMessageThat().containsMatch("Bad word 'bad' found:.*/new_file:1");
assertThat(ex).hasMessageThat().doesNotContainMatch("Bad word 'bad' found:.*/existing:1");
}
use of com.google.copybara.DestinationEffect in project copybara by google.
the class GitDestinationTest method processWithBaselineAndConfirmation.
private void processWithBaselineAndConfirmation(Writer<GitRevision> writer, Glob destinationFiles, DummyRevision originRef, String baseline, boolean askForConfirmation) throws ValidationException, RepoException, IOException {
TransformResult result = TransformResults.of(workdir, originRef);
if (baseline != null) {
result = result.withBaseline(baseline);
}
if (askForConfirmation) {
result = result.withAskForConfirmation(true);
}
ImmutableList<DestinationEffect> destinationResult = writer.write(result, destinationFiles, console);
assertThat(destinationResult).hasSize(1);
assertThat(destinationResult.get(0).getErrors()).isEmpty();
assertThat(destinationResult.get(0).getType()).isEqualTo(Type.CREATED);
assertThat(destinationResult.get(0).getDestinationRef().getType()).isEqualTo("commit");
assertThat(destinationResult.get(0).getDestinationRef().getId()).matches("[0-9a-f]{40}");
}
use of com.google.copybara.DestinationEffect in project copybara by google.
the class GitHubDestinationTest method testPrToUpdateIngoredForInitHistory.
@Test
public void testPrToUpdateIngoredForInitHistory() throws Exception {
options.workflowOptions.initHistory = true;
addFiles(remote, primaryBranch, "first change", ImmutableMap.<String, String>builder().put("foo.txt", "foo").buildOrThrow());
WriterContext writerContext = new WriterContext("piper_to_github", "test", false, new DummyRevision("origin_ref1"), Glob.ALL_FILES.roots());
writeFile(this.workdir, "test.txt", "some content");
Writer<GitRevision> writer = destinationWithExistingPrBranch("other", "True").newWriter(writerContext);
DummyRevision ref = new DummyRevision("origin_ref1");
TransformResult result = TransformResults.of(workdir, ref);
Changes changes = new Changes(ImmutableList.of(new Change<>(ref, new Author("foo", "foo@foo.com"), "message", ZonedDateTime.now(ZoneOffset.UTC), ImmutableListMultimap.of("my_label", "12345")), new Change<>(ref, new Author("foo", "foo@foo.com"), "message", ZonedDateTime.now(ZoneOffset.UTC), ImmutableListMultimap.of("my_label", "6789"))), ImmutableList.of());
result = result.withChanges(changes);
ImmutableList<DestinationEffect> destinationResult = writer.write(result, destinationFiles, console);
assertThat(destinationResult).hasSize(1);
assertThat(destinationResult.get(0).getErrors()).isEmpty();
assertThat(destinationResult.get(0).getType()).isEqualTo(Type.CREATED);
assertThat(destinationResult.get(0).getDestinationRef().getType()).isEqualTo("commit");
assertThat(destinationResult.get(0).getDestinationRef().getId()).matches("[0-9a-f]{40}");
// This is a migration of two changes (use the same ref because mocks)
verifyNoInteractions(gitUtil.httpTransport());
GitTesting.assertThatCheckout(remote, primaryBranch).containsFile("test.txt", "some content").containsNoMoreFiles();
assertThat(remote.simpleCommand("show-ref").getStdout()).doesNotContain("other");
}
Aggregations