Beispiel #1
0
        public void GetRepositoryUrl_Agnostic2(string originUrl, string expectedUrl)
        {
            var repo = new TestRepository(workingDir: s_root, commitSha: "1111111111111111111111111111111111111111",
                                          remotes: new[] { new TestRemote("origin", originUrl) });

            Assert.Equal(expectedUrl, GitOperations.GetRepositoryUrl(repo));
        }
Beispiel #2
0
        public void GetRepositoryUrl_Unix(string originUrl, string expectedUrl)
        {
            var repo = new TestRepository(workingDir: "/usr/src/a/b", commitSha: "1111111111111111111111111111111111111111",
                                          remotes: new[] { new TestRemote("origin", originUrl) });

            Assert.Equal(expectedUrl, GitOperations.GetRepositoryUrl(repo));
        }
Beispiel #3
0
        public void GetRepositoryUrl_NoRemotes()
        {
            var repo = new TestRepository(workingDir: s_root, commitSha: "1111111111111111111111111111111111111111");

            var warnings = new List <KeyValuePair <string, object[]> >();

            Assert.Null(GitOperations.GetRepositoryUrl(repo, (message, args) => warnings.Add(KVP(message, args))));
            AssertEx.Equal(new[] { Resources.RepositoryHasNoRemote }, warnings.Select(InspectDiagnostic));
        }
Beispiel #4
0
        private void ValidateGetRepositoryUrl(string workingDir, string actualUrl, string expectedUrl)
        {
            var testRemote = new TestRemote("origin", actualUrl);

            var repo = new TestRepository(workingDir, commitSha: "1111111111111111111111111111111111111111",
                                          remotes: new[] { testRemote });

            var expectedWarnings = (expectedUrl != null) ?
                                   Array.Empty <string>() :
                                   new[] { string.Format(Resources.InvalidRepositoryRemoteUrl, testRemote.Name, testRemote.Url) };

            var warnings = new List <KeyValuePair <string, object[]> >();

            Assert.Equal(expectedUrl, GitOperations.GetRepositoryUrl(repo, (message, args) => warnings.Add(KVP(message, args))));
            AssertEx.Equal(expectedWarnings, warnings.Select(InspectDiagnostic));
        }
Beispiel #5
0
        public void GetRepositoryUrl_NoRemotes()
        {
            var repo = new TestRepository(workingDir: s_root, commitSha: "1111111111111111111111111111111111111111");

            Assert.Null(GitOperations.GetRepositoryUrl(repo));
        }
Beispiel #6
0
        public void MinimalGitData()
        {
            using var temp = new TempRoot();
            var repoDir = temp.CreateDirectory();

            var gitDir = repoDir.CreateDirectory(".git");

            gitDir.CreateFile("HEAD").WriteAllText("1111111111111111111111111111111111111111");
            gitDir.CreateFile("config").WriteAllText(@"
[remote ""origin""]
url=http://github.com/test-org/test-repo
[submodule ""my submodule""]
url=https://github.com/test-org/test-sub
");
            gitDir.CreateDirectory("objects");
            gitDir.CreateDirectory("refs");
            repoDir.CreateFile(".gitignore").WriteAllText("ignore_this_*");

            // submodule:
            var gitModules = repoDir.CreateFile(".gitmodules").WriteAllText(@"
[submodule ""my submodule""]
  path = sub
  url = xyz
");

            var subDir = repoDir.CreateDirectory("sub");

            subDir.CreateFile(".git").WriteAllText("gitdir: ../.git/modules/sub");
            subDir.CreateFile(".gitignore").WriteAllText("ignore_in_submodule_*");

            var gitDirSub = gitDir.CreateDirectory("modules").CreateDirectory("sub");

            gitDirSub.CreateFile("HEAD").WriteAllText("2222222222222222222222222222222222222222");
            gitDirSub.CreateDirectory("objects");
            gitDirSub.CreateDirectory("refs");

            var repository = GitRepository.OpenRepository(repoDir.Path, GitEnvironment.Empty) !;

            Assert.Equal("http://github.com/test-org/test-repo", GitOperations.GetRepositoryUrl(repository, remoteName: null));
            Assert.Equal("1111111111111111111111111111111111111111", repository.GetHeadCommitSha());

            var warnings    = new List <(string, object?[])>();
            var sourceRoots = GitOperations.GetSourceRoots(repository, remoteName: null, (message, args) => warnings.Add((message, args)));

            AssertEx.Equal(new[]
            {
                $@"'{repoDir.Path}{s}' SourceControl='git' RevisionId='1111111111111111111111111111111111111111' ScmRepositoryUrl='http://github.com/test-org/test-repo'",
                $@"'{repoDir.Path}{s}sub{s}' SourceControl='git' RevisionId='2222222222222222222222222222222222222222' NestedRoot='sub/' ContainingRoot='{repoDir.Path}{s}' ScmRepositoryUrl='https://github.com/test-org/test-sub'",
            }, sourceRoots.Select(TestUtilities.InspectSourceRoot));

            AssertEx.Equal(new string[0], warnings.Select(TestUtilities.InspectDiagnostic));

            var files = new[]
            {
                new MockItem(@"ignore_this_a"),
                new MockItem(@"b"),
                new MockItem(@"ignore_this_c"),
                new MockItem(@"sub\ignore_in_submodule_d"),
            };

            var untrackedFiles = GitOperations.GetUntrackedFiles(repository, files, repoDir.Path);

            AssertEx.Equal(new[]
            {
                "ignore_this_a",
                "ignore_this_c",
                MockItem.AdjustSeparators(@"sub\ignore_in_submodule_d"),
            }, untrackedFiles.Select(item => item.ItemSpec));
        }