/* * Copyright (C) 2021, kylezhao and others. * * This program and the accompanying materials are made available under the * terms of the Eclipse Distribution License v. 1.0 which is available at * https://www.eclipse.org/org/documents/edl-v10.php. * * SPDX-License-Identifier: BSD-3-Clause */ package org.eclipse.jgit.pgm; import static org.junit.Assert.assertEquals; import java.util.ArrayList; import java.util.List; import org.eclipse.jgit.api.Git; import org.eclipse.jgit.lib.CLIRepositoryTestCase; import org.eclipse.jgit.revwalk.RevCommit; import org.junit.Before; import org.junit.Test; public class RevListTest extends CLIRepositoryTestCase { private Git git; @Override @Before public void setUp() throws Exception { super.setUp(); git = new Git(db); } @Test public void testWithParentsFlag() throws Exception { List commits = createCommitsForParentsFlag(git); String result = toString( execute("git rev-list HEAD --parents -- Test.txt")); String expect = toString( commits.get(3).name() + ' ' + commits.get(1).name(), commits.get(1).name()); assertEquals(expect, result); } @Test public void testWithoutParentsFlag() throws Exception { List commits = createCommitsForParentsFlag(git); String result = toString(execute("git rev-list HEAD -- Test.txt")); String expect = toString(commits.get(3).name(), commits.get(1).name()); assertEquals(expect, result); } private List createCommitsForParentsFlag(Git repo) throws Exception { List commits = new ArrayList<>(); writeTrashFile("Test1.txt", "Hello world"); repo.add().addFilepattern("Test1.txt").call(); commits.add(repo.commit().setMessage("commit#0").call()); writeTrashFile("Test.txt", "Hello world!"); repo.add().addFilepattern("Test.txt").call(); commits.add(repo.commit().setMessage("commit#1").call()); writeTrashFile("Test1.txt", "Hello world!!"); repo.add().addFilepattern("Test1.txt").call(); commits.add(repo.commit().setMessage("commit#2").call()); writeTrashFile("Test.txt", "Hello world!!!"); repo.add().addFilepattern("Test.txt").call(); commits.add(repo.commit().setMessage("commit#3").call()); return commits; } }