Пример #1
0
        public void CanCreateNewBranch()
        {
            var testPath     = CloneTestRepository(_fixture.PopulatedRepositoryPath);
            var wrapper      = new Git.GitWrapper(testPath);
            var branchResult = wrapper.NewBranch("test-branch").Result;

            Assert.True(branchResult.Success);
        }
Пример #2
0
        private string CloneTestRepository(string sourceRepositoryPath, bool bare = false)
        {
            var wrapper   = new Git.GitWrapper();
            var targetId  = _testId + "." + _repoId++;
            var cloneTask = wrapper.Clone(sourceRepositoryPath, targetId, bare);

            Assert.True(cloneTask.Result.Success);
            _tempList.Add(targetId);
            return(targetId);
        }
Пример #3
0
        public void CanCloneFromGithub()
        {
            var wrapper     = new Git.GitWrapper();
            var cloneTask   = wrapper.Clone("https://github.com/kal/semlove.git", _testId);
            var cloneResult = cloneTask.Result;

            Assert.True(cloneResult.Success);
            Assert.True(Directory.Exists(_testId));
            Assert.True(Directory.Exists(Path.Combine(_testId, ".git")));
            Assert.True(File.Exists(Path.Combine(_testId, "README.MD")));
        }
Пример #4
0
        public void CanCloneAnEmptyRepository()
        {
            var wrapper     = new Git.GitWrapper();
            var cloneTask   = wrapper.Clone(_fixture.EmptyRepositoryPath, _testId);
            var cloneResult = cloneTask.Result;

            Assert.True(cloneResult.Success);
            Assert.True(Directory.Exists(_testId));
            Assert.True(Directory.Exists(Path.Combine(_testId, ".git")));
            _tempList.Add(_testId);
        }
Пример #5
0
        public void CanForceDeleteTheBranchYouAreOn()
        {
            var testPath           = CloneTestRepository(_fixture.PopulatedRepositoryPath);
            var wrapper            = new Git.GitWrapper(testPath);
            var createBranchResult = wrapper.NewBranch("test-branch").Result;

            Assert.True(createBranchResult.Success);
            var deleteBranchResult = wrapper.DeleteBranch("test-branch", force: true).Result;

            Assert.False(deleteBranchResult.Success);
        }
Пример #6
0
        public void CanCommitWithOverrideAuthor()
        {
            var testPath = CloneTestRepository(_fixture.EmptyRepositoryPath);

            File.WriteAllLines(Path.Combine(testPath, "new.text"), new[] { "Hello", "World" });
            var wrapper = new Git.GitWrapper(testPath);

            Assert.True(wrapper.AddAll().Result.Success);
            var commitResult = wrapper.Commit("First commit", "Alice Example <*****@*****.**>").Result;

            Assert.True(commitResult.Success);
        }
Пример #7
0
        public void CanPullFromRemoteRepository()
        {
            var remotePath = CloneTestRepository(_fixture.PopulatedRepositoryPath);
            var localPath  = CloneTestRepository(remotePath);

            File.WriteAllLines(Path.Combine(remotePath, "new.txt"), new [] { "Hello", "World" });
            var remoteWrapper = new Git.GitWrapper(remotePath);
            var localWrapper  = new Git.GitWrapper(localPath);

            Assert.True(remoteWrapper.AddAll().Result.Success);
            Assert.True(remoteWrapper.Commit("Added a file").Result.Success);
            Assert.True(localWrapper.Pull().Result.Success);
            Assert.True(File.Exists(Path.Combine(localPath, "new.txt")));
        }
Пример #8
0
        public void CanDeleteBranch()
        {
            var testPath           = CloneTestRepository(_fixture.PopulatedRepositoryPath);
            var wrapper            = new Git.GitWrapper(testPath);
            var createBranchResult = wrapper.NewBranch("test-branch").Result;

            Assert.True(createBranchResult.Success);
            var checkoutResult = wrapper.SetBranch("master").Result;

            Assert.True(checkoutResult.Success);
            var deleteBranchResult = wrapper.DeleteBranch("test-branch").Result;

            Assert.True(deleteBranchResult.Success);
        }
Пример #9
0
        public void StatusReportsNewFile()
        {
            var testPath = CloneTestRepository(_fixture.PopulatedRepositoryPath);
            var testFile = Path.Combine(testPath, "new.txt");

            File.WriteAllLines(testFile, new [] { "Hello", "World" });
            var wrapper = new Git.GitWrapper(testPath);

            Assert.True(wrapper.AddAll().Result.Success);
            var statusResult = wrapper.Status().Result;

            Assert.True(statusResult.Success);
            Assert.Single(statusResult.NewFiles);
            Assert.Equal("new.txt", statusResult.NewFiles[0]);
        }
Пример #10
0
        public void StatusReportsDeletedFile()
        {
            var testPath = CloneTestRepository(_fixture.PopulatedRepositoryPath);
            var testFile = Path.Combine(testPath, "test.txt");

            File.Delete(testFile);
            var wrapper = new Git.GitWrapper(testPath);

            Assert.True(wrapper.AddAll().Result.Success);
            var statusResult = wrapper.Status().Result;

            Assert.True(statusResult.Success);
            Assert.Single(statusResult.DeletedFiles);
            Assert.Equal("test.txt", statusResult.DeletedFiles[0]);
        }
Пример #11
0
        public void CanFetchFromRemoteRepository()
        {
            var remotePath = CloneTestRepository(_fixture.PopulatedRepositoryPath);
            var localPath  = CloneTestRepository(remotePath);

            File.WriteAllLines(Path.Combine(remotePath, "new.txt"), new [] { "Hello", "World" });
            var remoteWrapper = new Git.GitWrapper(remotePath);
            var localWrapper  = new Git.GitWrapper(localPath);

            Assert.True(remoteWrapper.AddAll().Result.Success);
            Assert.True(remoteWrapper.Commit("Added a file").Result.Success);
            var fetchResult = localWrapper.Fetch().Result;

            Assert.True(fetchResult.Success);
            Assert.Contains("master", fetchResult.UpdatedBranches);
        }
Пример #12
0
        public void StatusReportsModifiedFile()
        {
            var testPath = CloneTestRepository(_fixture.PopulatedRepositoryPath);
            var testFile = Path.Combine(testPath, "test.txt");
            var lines    = File.ReadAllLines(testFile).ToList();

            lines.RemoveAt(1);
            File.WriteAllLines(testFile, lines);
            var wrapper = new Git.GitWrapper(testPath);

            Assert.True(wrapper.AddAll().Result.Success);
            var statusResult = wrapper.Status().Result;

            Assert.True(statusResult.Success);
            Assert.Single(statusResult.ModifiedFiles);
            Assert.Equal("test.txt", statusResult.ModifiedFiles[0]);
        }
Пример #13
0
        public void LocalDiffReportsLineInserted()
        {
            var testPath = CloneTestRepository(_fixture.PopulatedRepositoryPath);
            var testFile = Path.Combine(testPath, "test.txt");
            var lines    = File.ReadAllLines(testFile).ToList();

            lines.Insert(1, "Inserted Line");
            File.WriteAllLines(testFile, lines);
            var wrapper    = new Git.GitWrapper(testPath);
            var diffResult = wrapper.DiffHead().Result;

            Assert.NotNull(diffResult);
            Assert.NotNull(diffResult.CommandResult);
            Assert.True(diffResult.Success);
            Assert.Single(diffResult.FileDiffs);
            Assert.Single(diffResult.FileDiffs[0].Inserted);
            Assert.Empty(diffResult.FileDiffs[0].Deleted);
            Assert.Equal("Inserted Line", diffResult.FileDiffs[0].Inserted[0]);
        }
Пример #14
0
        public void CanPushToRemoteRepository()
        {
            var remotePath     = CloneTestRepository(_fixture.PopulatedRepositoryPath, true);
            var localPath      = CloneTestRepository(remotePath);
            var localWrapper   = new Git.GitWrapper(localPath);
            var checkoutResult = localWrapper.SetBranch("master").Result;

            Assert.True(checkoutResult.Success);
            File.WriteAllLines(Path.Combine(localPath, "new.txt"), new[] { "Hello", "World" });
            Assert.True(localWrapper.AddAll().Result.Success);
            Assert.True(localWrapper.Commit("Added a file").Result.Success);
            var pushResult = localWrapper.Push().Result;

            Assert.True(pushResult.Success);

            // We can't test for the file existing in the remote repo because it is cloned as a bare repo.
            // So instead make a second clone and check that this gets the file that was pushed from the first one
            var newLocalPath = CloneTestRepository(remotePath);

            Assert.True(File.Exists(Path.Combine(newLocalPath, "new.txt")));
        }
Пример #15
0
        public void LocalDiffReportsNewFileAdded()
        {
            var testPath = CloneTestRepository(_fixture.PopulatedRepositoryPath);
            var newFile  = Path.Combine(testPath, "new.txt");
            var lines    = new[] { "Hello", "World" };

            File.WriteAllLines(newFile, lines);
            var wrapper   = new Git.GitWrapper(testPath);
            var addResult = wrapper.AddAll().Result;

            Assert.True(addResult.Success);
            var diffResult = wrapper.DiffHead().Result;

            Assert.NotNull(diffResult);
            Assert.NotNull(diffResult.CommandResult);
            Assert.True(diffResult.Success);
            Assert.Single(diffResult.FileDiffs);
            Assert.Equal(2, diffResult.FileDiffs[0].Inserted.Count);
            Assert.Empty(diffResult.FileDiffs[0].Deleted);
            Assert.Equal("Hello", diffResult.FileDiffs[0].Inserted[0]);
            Assert.Equal("World", diffResult.FileDiffs[0].Inserted[1]);
        }
Пример #16
0
        public void LocalDiffReportsFileDeleted()
        {
            var testPath = CloneTestRepository(_fixture.PopulatedRepositoryPath);
            var testFile = Path.Combine(testPath, "test.txt");

            File.Delete(testFile);
            var wrapper   = new Git.GitWrapper(testPath);
            var addResult = wrapper.AddAll().Result;

            Assert.True(addResult.Success);
            var diffResult = wrapper.DiffHead().Result;

            Assert.NotNull(diffResult);
            Assert.NotNull(diffResult.CommandResult);
            Assert.True(diffResult.Success);
            Assert.Single(diffResult.FileDiffs);
            Assert.Equal(3, diffResult.FileDiffs[0].Deleted.Count);
            Assert.Empty(diffResult.FileDiffs[0].Inserted);
            Assert.Equal("Line 1", diffResult.FileDiffs[0].Deleted[0]);
            Assert.Equal("Line 2", diffResult.FileDiffs[0].Deleted[1]);
            Assert.Equal("Line 3", diffResult.FileDiffs[0].Deleted[2]);
        }