using System.Collections.Generic; using System.Linq; using LibGit2Sharp.Core.Compat; using LibGit2Sharp.Tests.TestHelpers; using Xunit; using Xunit.Extensions; namespace LibGit2Sharp.Tests { public class NetworkFixture : BaseFixture { [Theory] [InlineData("http://github.com/libgit2/TestGitRepository")] [InlineData("https://github.com/libgit2/TestGitRepository")] [InlineData("git://github.com/libgit2/TestGitRepository.git")] public void CanListRemoteReferences(string url) { string remoteName = "testRemote"; var scd = BuildSelfCleaningDirectory(); using (var repo = Repository.Init(scd.RootedDirectoryPath)) { Remote remote = repo.Network.Remotes.Add(remoteName, url); IEnumerable references = repo.Network.ListReferences(remote); List> actualRefs = references. Select(directRef => new Tuple(directRef.CanonicalName, directRef.TargetIdentifier)).ToList(); Assert.Equal(ExpectedRemoteRefs.Count, actualRefs.Count); for (int i = 0; i < ExpectedRemoteRefs.Count; i++) { Assert.Equal(ExpectedRemoteRefs[i].Item2, actualRefs[i].Item2); Assert.Equal(ExpectedRemoteRefs[i].Item1, actualRefs[i].Item1); } } } [Fact] public void CanListRemoteReferenceObjects() { string url = "http://github.com/libgit2/TestGitRepository"; string remoteName = "origin"; var scd = BuildSelfCleaningDirectory(); using (Repository repo = Repository.Clone(url, scd.RootedDirectoryPath)) { Remote remote = repo.Network.Remotes[remoteName]; IEnumerable references = repo.Network.ListReferences(remote); List> actualRefs = new List>(); foreach(DirectReference reference in references) { Assert.NotNull(reference.CanonicalName); Assert.NotNull(reference.Target); actualRefs.Add(new Tuple(reference.CanonicalName, reference.Target.Id.Sha)); } Assert.Equal(ExpectedRemoteRefs.Count, actualRefs.Count); for (int i = 0; i < ExpectedRemoteRefs.Count; i++) { Assert.Equal(ExpectedRemoteRefs[i].Item1, actualRefs[i].Item1); Assert.Equal(ExpectedRemoteRefs[i].Item2, actualRefs[i].Item2); } } } /* * git ls-remote http://github.com/libgit2/TestGitRepository * 49322bb17d3acc9146f98c97d078513228bbf3c0 HEAD * 0966a434eb1a025db6b71485ab63a3bfbea520b6 refs/heads/first-merge * 49322bb17d3acc9146f98c97d078513228bbf3c0 refs/heads/master * 42e4e7c5e507e113ebbb7801b16b52cf867b7ce1 refs/heads/no-parent * d96c4e80345534eccee5ac7b07fc7603b56124cb refs/tags/annotated_tag * c070ad8c08840c8116da865b2d65593a6bb9cd2a refs/tags/annotated_tag^{} * 55a1a760df4b86a02094a904dfa511deb5655905 refs/tags/blob * 8f50ba15d49353813cc6e20298002c0d17b0a9ee refs/tags/commit_tree * 6e0c7bdb9b4ed93212491ee778ca1c65047cab4e refs/tags/nearly-dangling */ /// /// Expected references on http://github.com/libgit2/TestGitRepository /// private static List> ExpectedRemoteRefs = new List>() { new Tuple("HEAD", "49322bb17d3acc9146f98c97d078513228bbf3c0"), new Tuple("refs/heads/first-merge", "0966a434eb1a025db6b71485ab63a3bfbea520b6"), new Tuple("refs/heads/master", "49322bb17d3acc9146f98c97d078513228bbf3c0"), new Tuple("refs/heads/no-parent", "42e4e7c5e507e113ebbb7801b16b52cf867b7ce1"), new Tuple("refs/tags/annotated_tag", "d96c4e80345534eccee5ac7b07fc7603b56124cb"), new Tuple("refs/tags/annotated_tag^{}", "c070ad8c08840c8116da865b2d65593a6bb9cd2a"), new Tuple("refs/tags/blob", "55a1a760df4b86a02094a904dfa511deb5655905"), new Tuple("refs/tags/commit_tree", "8f50ba15d49353813cc6e20298002c0d17b0a9ee"), new Tuple("refs/tags/nearly-dangling", "6e0c7bdb9b4ed93212491ee778ca1c65047cab4e"), }; } }