diff --git a/src/app/FakeLib/Git/FileStatus.fs b/src/app/FakeLib/Git/FileStatus.fs index afe5462ee02..c521cab4d25 100644 --- a/src/app/FakeLib/Git/FileStatus.fs +++ b/src/app/FakeLib/Git/FileStatus.fs @@ -9,17 +9,23 @@ open System.IO /// A type which represents a file status in git. type FileStatus = | Added -| Modified +| Copied | Deleted +| Modified +| Renamed +| TypeChange with - static member Parse = function + static member Parse = function | "A" -> Added - | "M" -> Modified + | c when c.StartsWith "C" -> Copied | "D" -> Deleted + | m when m.StartsWith "M" -> Modified + | r when r.StartsWith "R" -> Renamed + | "T" -> TypeChange | s -> failwithf "Unknown file status %s" s /// Gets the changed files between the given revisions -let getChangedFiles repositoryDir revision1 revision2 = +let getChangedFiles repositoryDir revision1 revision2 = checkRevisionExists repositoryDir revision1 if revision2 <> "" then checkRevisionExists repositoryDir revision2 diff --git a/src/test/Test.Git/FileStatusSpecs.cs b/src/test/Test.Git/FileStatusSpecs.cs new file mode 100644 index 00000000000..a0a743ec054 --- /dev/null +++ b/src/test/Test.Git/FileStatusSpecs.cs @@ -0,0 +1,28 @@ +using Machine.Specifications; +using static Fake.Git.FileStatus; + +namespace Test.Git +{ + public class when_getting_file_status + { + It should_be_able_to_get_modified_files = + () => FileStatus + .Parse.Invoke("M") + .ShouldEqual(FileStatus.Modified); + + It should_be_able_to_get_rewritten_files = + () => FileStatus + .Parse.Invoke("M42") + .ShouldEqual(FileStatus.Modified); + + It should_be_able_to_get_renamed_files = + () => FileStatus + .Parse.Invoke("R100") + .ShouldEqual(FileStatus.Renamed); + + It should_be_able_to_get_probably_renamed_files = + () => FileStatus + .Parse.Invoke("R75") + .ShouldEqual(FileStatus.Renamed); + } +} \ No newline at end of file diff --git a/src/test/Test.Git/Test.Git.csproj b/src/test/Test.Git/Test.Git.csproj index c2f13d716d2..1140814fb62 100644 --- a/src/test/Test.Git/Test.Git.csproj +++ b/src/test/Test.Git/Test.Git.csproj @@ -42,6 +42,7 @@ +