Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/libgit2sharp.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarius Ungureanu <marius.ungureanu@xamarin.com>2014-06-02 23:16:17 +0400
committerMarius Ungureanu <marius.ungureanu@xamarin.com>2014-06-06 19:29:41 +0400
commite1b6166af04a346baac90c809ea79b7b753586b1 (patch)
tree789c2d219c30e03ebad3d78936285d0117362dcc /LibGit2Sharp.Tests
parent05e6633d998176a2afddfc4814bf47564976ef26 (diff)
Introduce RemoteCollection.Rename.
Diffstat (limited to 'LibGit2Sharp.Tests')
-rw-r--r--LibGit2Sharp.Tests/RemoteFixture.cs90
1 files changed, 90 insertions, 0 deletions
diff --git a/LibGit2Sharp.Tests/RemoteFixture.cs b/LibGit2Sharp.Tests/RemoteFixture.cs
index b3321349..87e3bc0f 100644
--- a/LibGit2Sharp.Tests/RemoteFixture.cs
+++ b/LibGit2Sharp.Tests/RemoteFixture.cs
@@ -214,5 +214,95 @@ namespace LibGit2Sharp.Tests
repo.Network.Remotes.Remove("i_dont_exist");
}
}
+
+ [Fact]
+ public void CanRenameExistingRemote()
+ {
+ var path = CloneStandardTestRepo();
+ using (var repo = new Repository(path))
+ {
+ Assert.NotNull(repo.Network.Remotes["origin"]);
+ Assert.Null(repo.Network.Remotes["renamed"]);
+ Assert.NotEmpty(repo.Refs.FromGlob("refs/remotes/origin/*"));
+ Assert.Empty(repo.Refs.FromGlob("refs/remotes/renamed/*"));
+
+ repo.Network.Remotes.Rename("origin", "renamed", problem => Assert.True(false));
+ Assert.Null(repo.Network.Remotes["origin"]);
+ Assert.Empty(repo.Refs.FromGlob("refs/remotes/origin/*"));
+
+ Assert.NotNull(repo.Network.Remotes["renamed"]);
+ Assert.NotEmpty(repo.Refs.FromGlob("refs/remotes/renamed/*"));
+ }
+ }
+
+ [Fact]
+ public void CanRenameNonExistingRemote()
+ {
+ using (var repo = new Repository(StandardTestRepoPath))
+ {
+ Assert.Null(repo.Network.Remotes["i_dont_exist"]);
+
+ repo.Network.Remotes.Rename("i_dont_exist", "i_dont_either", problem => Assert.True(false));
+ Assert.Null(repo.Network.Remotes["i_dont_either"]);
+ }
+ }
+
+ [Fact]
+ public void ReportsRemotesWithNonDefaultRefSpecs()
+ {
+ var path = CloneStandardTestRepo();
+ using (var repo = new Repository(path))
+ {
+ Assert.NotNull(repo.Network.Remotes["origin"]);
+
+ repo.Network.Remotes.Update(
+ repo.Network.Remotes["origin"],
+ r => r.FetchRefSpecs = new[] { "+refs/heads/*:refs/remotes/upstream/*" });
+
+ repo.Network.Remotes.Rename("origin", "nondefault", problem => Assert.Equal("+refs/heads/*:refs/remotes/upstream/*", problem));
+
+ Assert.NotEmpty(repo.Refs.FromGlob("refs/remotes/nondefault/*"));
+ Assert.Empty(repo.Refs.FromGlob("refs/remotes/upstream/*"));
+
+ Assert.Null(repo.Network.Remotes["origin"]);
+ Assert.NotNull(repo.Network.Remotes["nondefault"]);
+ }
+ }
+
+ [Fact]
+ public void DoesNotReportRemotesWithAlreadyExistingRefSpec()
+ {
+ var path = CloneStandardTestRepo();
+ using (var repo = new Repository(path))
+ {
+ Assert.NotNull(repo.Network.Remotes["origin"]);
+
+ repo.Refs.Add("refs/remotes/renamed/master", "32eab9cb1f450b5fe7ab663462b77d7f4b703344");
+
+ repo.Network.Remotes.Rename("origin", "renamed", problem => Assert.True(false));
+
+ Assert.NotEmpty(repo.Refs.FromGlob("refs/remotes/renamed/*"));
+ Assert.Empty(repo.Refs.FromGlob("refs/remotes/origin/*"));
+
+ Assert.Null(repo.Network.Remotes["origin"]);
+ Assert.NotNull(repo.Network.Remotes["renamed"]);
+ }
+ }
+
+ [Fact]
+ public void CanNotRenameWhenRemoteWithSameNameExists()
+ {
+ const string name = "upstream";
+ const string url = "https://github.com/libgit2/libgit2sharp.git";
+
+ var path = CloneStandardTestRepo();
+ using (var repo = new Repository(path))
+ {
+ Assert.NotNull(repo.Network.Remotes["origin"]);
+ repo.Network.Remotes.Add(name, url);
+
+ Assert.Throws<NameConflictException>(() => repo.Network.Remotes.Rename("origin", "upstream"));
+ }
+ }
}
}