| /* |
| * Copyright (C) 2013, Chris Aniszczyk <zx@twitter.com> and others. 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 org.eclipse.jgit.api.Git; |
| import org.eclipse.jgit.lib.CLIRepositoryTestCase; |
| import org.eclipse.jgit.lib.Repository; |
| import org.eclipse.jgit.lib.StoredConfig; |
| import org.eclipse.jgit.transport.RemoteConfig; |
| import org.eclipse.jgit.transport.URIish; |
| import org.junit.Before; |
| import org.junit.Test; |
| |
| public class FetchTest extends CLIRepositoryTestCase { |
| private Git git; |
| |
| private Git remoteGit; |
| |
| @Override |
| @Before |
| public void setUp() throws Exception { |
| super.setUp(); |
| git = new Git(db); |
| git.commit().setMessage("initial commit").call(); |
| |
| Repository remoteRepository = createWorkRepository(); |
| addRepoToClose(remoteRepository); |
| remoteGit = new Git(remoteRepository); |
| |
| // setup the first repository to fetch from the second repository |
| final StoredConfig config = db.getConfig(); |
| RemoteConfig remoteConfig = new RemoteConfig(config, "test"); |
| URIish uri = new URIish(remoteRepository.getDirectory().toURI().toURL()); |
| remoteConfig.addURI(uri); |
| remoteConfig.update(config); |
| config.save(); |
| |
| remoteGit.commit().setMessage("initial commit").call(); |
| remoteGit.tag().setName("tag").call(); |
| remoteGit.checkout().setName("other").setCreateBranch(true).call(); |
| remoteGit.commit().setMessage("commit2").call(); |
| remoteGit.tag().setName("foo").call(); |
| } |
| |
| @Test |
| public void testFetchDefault() throws Exception { |
| String[] result = execute("git fetch test refs/heads/master:refs/remotes/origin/master"); |
| assertEquals(" * [new branch] master -> origin/master", |
| result[1]); |
| assertEquals(" * [new tag] tag -> tag", result[2]); |
| } |
| |
| @Test |
| public void testFetchForceUpdate() throws Exception { |
| String[] result = execute( |
| "git fetch test refs/heads/master:refs/remotes/origin/master"); |
| assertEquals(" * [new branch] master -> origin/master", |
| result[1]); |
| assertEquals(" * [new tag] tag -> tag", result[2]); |
| remoteGit.commit().setAmend(true).setMessage("amended").call(); |
| result = execute( |
| "git fetch -f test refs/heads/master:refs/remotes/origin/master"); |
| assertEquals("", result[0]); |
| } |
| |
| @Test |
| public void testFetchNoTags() throws Exception { |
| String[] result = execute("git fetch --no-tags test refs/heads/master:refs/remotes/origin/master"); |
| assertEquals(" * [new branch] master -> origin/master", |
| result[1]); |
| assertEquals("", result[2]); |
| } |
| |
| @Test |
| public void testFetchAllTags() throws Exception { |
| String[] result = execute("git fetch --tags test refs/heads/master:refs/remotes/origin/master"); |
| assertEquals(" * [new branch] master -> origin/master", |
| result[1]); |
| assertEquals(" * [new tag] foo -> foo", result[2]); |
| assertEquals(" * [new tag] tag -> tag", result[3]); |
| } |
| } |