예제 #1
0
        public void No_Directory()
        {
            var unknownPath = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString());

            var target = new GitService(new RepositoryFacade());

            Assert.Throws <ArgumentException>(() => target.CreateLocalRepositoryModel(unknownPath));
        }
예제 #2
0
        public void NoRemoteUrl()
        {
            using (var temp = new TempDirectory())
            {
                var repositoryFacade = Substitute.For <IRepositoryFacade>();
                var gitService       = new GitService(repositoryFacade);
                var path             = temp.Directory.CreateSubdirectory("repo-name");

                var model = gitService.CreateLocalRepositoryModel(path.FullName);

                Assert.That(model.Name, Is.EqualTo("repo-name"));
            }
        }
예제 #3
0
        public void NoRepository_Same_As_Repository_With_No_CloneUrl()
        {
            using (var temp = new TempDirectory())
            {
                var path   = temp.Directory.FullName;
                var target = new GitService(new RepositoryFacade());

                var model = target.CreateLocalRepositoryModel(path);

                Assert.That(model, Is.Not.Null);
                Assert.That(model.LocalPath, Is.EqualTo(path));
                Assert.That(model.Name, Is.EqualTo(temp.Directory.Name));
            }
        }
예제 #4
0
        public void WithRemoteUrl()
        {
            using (var temp = new TempDirectory())
            {
                var path             = temp.Directory.CreateSubdirectory("repo-name");
                var repository       = CreateRepositoryWithOrigin("https://github.com/user/repo-name");
                var repositoryFacade = CreateRepositoryFacade(path.FullName, repository);
                var gitService       = new GitService(repositoryFacade);

                var model = gitService.CreateLocalRepositoryModel(path.FullName);

                Assert.That(model.Name, Is.EqualTo("repo-name"));
                Assert.That(model.Owner, Is.EqualTo("user"));
            }
        }
예제 #5
0
        public void Check_HasRemotesButNoOrigin(string remoteName, string remoteUrl, bool noOrigin)
        {
            using (var temp = new TempRepository())
            {
                if (remoteName != null)
                {
                    temp.Repository.Network.Remotes.Add(remoteName, remoteUrl);
                }
                var path   = temp.Directory.FullName;
                var target = new GitService(new RepositoryFacade());

                var model = target.CreateLocalRepositoryModel(path);

                Assert.That(model.HasRemotesButNoOrigin, Is.EqualTo(noOrigin));
            }
        }
예제 #6
0
        public void Branch_With_Remote()
        {
            using (var temp = new TempRepository())
            {
                var repository  = temp.Repository;
                var owner       = "owner";
                var remoteName  = "remoteName";
                var remote      = repository.Network.Remotes.Add(remoteName, $"https://github.com/{owner}/VisualStudio");
                var localBranch = repository.Head;
                repository.Branches.Update(temp.Repository.Head,
                                           b => b.Remote         = remote.Name,
                                           b => b.UpstreamBranch = localBranch.CanonicalName);
                var path            = temp.Directory.FullName;
                var target          = new GitService(new RepositoryFacade());
                var localRepository = target.CreateLocalRepositoryModel(path);

                var branch = target.GetBranch(localRepository);

                Assert.That(branch.TrackedRemoteName, Is.EqualTo(remoteName));
            }
        }
예제 #7
0
        public void Master_Branch()
        {
            using (var temp = new TempRepository())
            {
                var signature = new Signature("Me", "*****@*****.**", DateTimeOffset.Now);
                temp.Repository.Commit("First", signature, signature);
                var expectSha = temp.Repository.Head.Tip.Sha;
                var path      = temp.Directory.FullName;
                var target    = new GitService(new RepositoryFacade());

                var localRepository = target.CreateLocalRepositoryModel(path);
                var branch          = target.GetBranch(localRepository);

                Assert.That(branch.Name, Is.EqualTo("master"));
                Assert.That(branch.DisplayName, Is.EqualTo("master"));
                Assert.That(branch.Id, Is.EqualTo("/master")); // We don't know owner
                Assert.That(branch.IsTracking, Is.EqualTo(false));
                Assert.That(branch.TrackedSha, Is.EqualTo(null));
                Assert.That(branch.Sha, Is.EqualTo(expectSha));
            }
        }