示例#1
0
        public void ParseCountObjectsMissingImportantFields()
        {
            const string countObjects = @"count: 123
garbage: 4
";

            Assert.Throws <KeyNotFoundException>(() => GitParsing.ParseCountObjects(countObjects));
        }
示例#2
0
        public void ParseCountObjectsEmpty()
        {
            const string countObjects = "";

            var result = GitParsing.ParseCountObjects(countObjects);

            Assert.Null(result);
        }
示例#3
0
        public void ParseFormatList()
        {
            const string archiveFormatList = "tar\ntgz\ntar.gz\nzip\n";

            var expected = new[] { "tar", "tgz", "tar.gz", "zip" };
            var actual   = GitParsing.ParseArchiveFormatList(archiveFormatList);

            Assert.Equal(expected, actual);
        }
示例#4
0
        public void ParseEmptyStatus()
        {
            const string status = "";

            var expected = new List <GitFileStatus>();
            var results  = GitParsing.ParseStatus(status);

            Assert.Equal(expected, results);
        }
示例#5
0
        public void ParseSimpleStatus()
        {
            const string status = "?? file.txt\0";

            var expected = new List <GitFileStatus>()
            {
                (GitChangeType.Untracked, GitChangeType.Untracked, Path : "file.txt", null)
            };
            var results = GitParsing.ParseStatus(status);

            Assert.Equal(expected, results);
        }
示例#6
0
        public void ParseRenameStatus()
        {
            const string status = "R  newfile.txt\0file.txt\0?? file2.txt\0?? file3.txt\0";

            var expected = new List <GitFileStatus>()
            {
                (GitChangeType.Renamed, GitChangeType.Unmodified, Path : "file.txt", OriginalPath : "newfile.txt"),
                (GitChangeType.Untracked, GitChangeType.Untracked, Path : "file2.txt", OriginalPath : null),
                (GitChangeType.Untracked, GitChangeType.Untracked, Path : "file3.txt", OriginalPath : null),
            };
            var results = GitParsing.ParseStatus(status);

            Assert.Equal(expected, results);
        }
示例#7
0
        public void ParseCountObjectsMissingFields()
        {
            const string countObjects = @"count: 123
size: 1099511627776
garbage: 4
size-garbage: 2199023255552
";

            var expected = new GitObjectCount(count: 123,
                                              size: 1099511627776,
                                              garbage: 4,
                                              garbageSize: 2199023255552);
            var result = GitParsing.ParseCountObjects(countObjects);

            Assert.Equal(expected, result);
        }
示例#8
0
        public void ParseNoParentCommit()
        {
            const string GIT_OUTPUT_NO_PARENTS = "52c293a05038d865604c2284aa8698bd087915a1 \n"
                                                 + "1234567\n"
                                                 + "[email protected]\n"
                                                 + "\n"
                                                 + "This is a commit message.";

            var expected = new GitCommit("52c293a05038d865604c2284aa8698bd087915a1",
                                         "This is a commit message.",
                                         Array.Empty <string>(),
                                         Array.Empty <string>(),
                                         "*****@*****.**",
                                         DateTimeOffset.FromUnixTimeSeconds(1234567));
            var actual = GitParsing.ParseCommit(GIT_OUTPUT_NO_PARENTS);

            Assert.StrictEqual(expected, actual);
        }
示例#9
0
        public void ParseMultipleRefCommit()
        {
            const string GIT_OUTPUT_MULTIPLE_REFS = "1e1c799a41204d17181d98403dd4f581b369aea9 restore1, restore2, restore3, restore4\n"
                                                    + "1234567\n"
                                                    + "[email protected]\n"
                                                    + "8e5a374372b8393906c7e380dbb09349c5385554 df27d8c75b129ab9b178b386077da2822101b217\n"
                                                    + "This is a commit message.";

            var expected = new GitCommit("1e1c799a41204d17181d98403dd4f581b369aea9",
                                         "This is a commit message.",
                                         new[] { "8e5a374372b8393906c7e380dbb09349c5385554", "df27d8c75b129ab9b178b386077da2822101b217" },
                                         new[] { "restore1", "restore2", "restore3", "restore4" },
                                         "*****@*****.**",
                                         DateTimeOffset.FromUnixTimeSeconds(1234567));
            var actual = GitParsing.ParseCommit(GIT_OUTPUT_MULTIPLE_REFS);

            Assert.StrictEqual(expected, actual);
        }
示例#10
0
        public void ParseMultipleParentCommit()
        {
            const string GIT_OUTPUT_MULTIPLE_PARENTS = "52c293a05038d865604c2284aa8698bd087915a1 \n"
                                                       + "1234567\n"
                                                       + "[email protected]\n"
                                                       + "8e5a374372b8393906c7e380dbb09349c5385554 df27d8c75b129ab9b178b386077da2822101b217\n"
                                                       + "This is a commit message.";

            var expected = new GitCommit("52c293a05038d865604c2284aa8698bd087915a1",
                                         "This is a commit message.",
                                         new[] { "8e5a374372b8393906c7e380dbb09349c5385554", "df27d8c75b129ab9b178b386077da2822101b217" },
                                         Array.Empty <string>(),
                                         "*****@*****.**",
                                         DateTimeOffset.FromUnixTimeSeconds(1234567));
            var actual = GitParsing.ParseCommit(GIT_OUTPUT_MULTIPLE_PARENTS);

            Assert.StrictEqual(expected, actual);
        }
示例#11
0
        public void ParseSingleRefCommit()
        {
            const string GIT_OUTPUT_SINGLE_REF = "d01ec56a830e10afe94d0fce6e61e9837eef381b somebranchname123\n"
                                                 + "1234567\n"
                                                 + "[email protected]\n"
                                                 + "8e5a374372b8393906c7e380dbb09349c5385554\n"
                                                 + "This is a commit message.";

            var expected = new GitCommit("d01ec56a830e10afe94d0fce6e61e9837eef381b",
                                         "This is a commit message.",
                                         new[] { "8e5a374372b8393906c7e380dbb09349c5385554" },
                                         new[] { "somebranchname123" },
                                         "*****@*****.**",
                                         DateTimeOffset.FromUnixTimeSeconds(1234567));
            var actual = GitParsing.ParseCommit(GIT_OUTPUT_SINGLE_REF);

            Assert.StrictEqual(expected, actual);
        }
示例#12
0
        public void ParseSingleParentCommit()
        {
            const string GIT_OUTPUT_SINGLE_PARENT = "52c293a05038d865604c2284aa8698bd087915a1 \n"
                                                    + "1234567\n"
                                                    + "[email protected]\n"
                                                    + "8e5a374372b8393906c7e380dbb09349c5385554\n"
                                                    + "This is a commit message.";

            var expected = new GitCommit("52c293a05038d865604c2284aa8698bd087915a1",
                                         "This is a commit message.",
                                         new[] { "8e5a374372b8393906c7e380dbb09349c5385554" },
                                         Array.Empty <string>(),
                                         "*****@*****.**",
                                         DateTimeOffset.FromUnixTimeSeconds(1234567));
            var actual = GitParsing.ParseCommit(GIT_OUTPUT_SINGLE_PARENT);

            Assert.StrictEqual(expected, actual);
        }
示例#13
0
        public void ParseCountObjects()
        {
            const string countObjects = @"count: 123
size: 1099511627776
in-pack: 1
packs: 2
size-pack: 4398046511104
prune-packable: 3
garbage: 4
size-garbage: 2199023255552
";

            var expected = new GitObjectCount(count: 123, size: 1099511627776, inPack: 1, packs: 2,
                                              packSize: 4398046511104, prunePackable: 3, garbage: 4,
                                              garbageSize: 2199023255552);
            var result = GitParsing.ParseCountObjects(countObjects);

            Assert.Equal(expected, result);
        }
示例#14
0
        public void FileStatusLooksLikePorcelain()
        {
            const string status = "A  newfile.txt\0"
                                  + "R  oldfile.txt\0renamedfile.txt\0"
                                  + "D  deletedfile.txt\0"
                                  + "?? untrackedfile.txt\0";

            var expected = new List <GitFileStatus>()
            {
                (GitChangeType.Added, GitChangeType.Unmodified, Path : "newfile.txt", OriginalPath : null),
                (GitChangeType.Renamed, GitChangeType.Unmodified, Path : "renamedfile.txt", OriginalPath : "oldfile.txt"),
                (GitChangeType.Deleted, GitChangeType.Unmodified, Path : "deletedfile.txt", OriginalPath : null),
                (GitChangeType.Untracked, GitChangeType.Untracked, Path : "untrackedfile.txt", OriginalPath : null),
            };
            var results = GitParsing.ParseStatus(status).ToList();

            Assert.Equal(expected, results);

            Assert.Equal("A  newfile.txt", results[0].ToString());
            Assert.Equal("R  oldfile.txt -> renamedfile.txt", results[1].ToString());
            Assert.Equal("D  deletedfile.txt", results[2].ToString());
            Assert.Equal("?? untrackedfile.txt", results[3].ToString());
        }
示例#15
0
        public void ParseVersion()
        {
            var result = GitParsing.ParseVersion("git version 2.18.0.windows.1");

            Assert.Equal("2.18.0.windows.1", result);
        }