Skip to content

Commit

Permalink
Add basic tests for patch formatting
Browse files Browse the repository at this point in the history
For now, assert that we produce exactly the same output as the original
parsed input. I think these tests would ideally assert that the
re-parsed value is the same, but it's kind of annoying to compare File
objects without adding an external dependency.
  • Loading branch information
bluekeyes committed Aug 10, 2024
1 parent fe252ed commit 35d61a0
Show file tree
Hide file tree
Showing 9 changed files with 125 additions and 0 deletions.
33 changes: 33 additions & 0 deletions gitdiff/gitdiff_string_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package gitdiff

import (
"os"
"testing"
)

func TestFile_String(t *testing.T) {
sources := []string{
"testdata/string/delete.patch",
"testdata/string/mode.patch",
"testdata/string/modify.patch",
"testdata/string/new.patch",
"testdata/string/new_empty.patch",
"testdata/string/new_mode.patch",
"testdata/string/rename.patch",
"testdata/string/rename_modify.patch",
}

for _, src := range sources {
b, err := os.ReadFile(src)
if err != nil {
t.Fatalf("failed to read %s: %v", src, err)
}

original := assertParseSingleFile(t, src, b)

Check failure on line 26 in gitdiff/gitdiff_string_test.go

View workflow job for this annotation

GitHub Actions / Verify

undefined: assertParseSingleFile
str := original.String()

if string(b) != str {
t.Errorf("%s: incorrect patch\nexpected: %q\n actual: %q\n", src, string(b), str)
}
}
}
16 changes: 16 additions & 0 deletions gitdiff/testdata/string/delete.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
diff --git a/file.txt b/file.txt
deleted file mode 100644
index c9e9e05..0000000
--- a/file.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-one
-two
-three
-four
-five
-six
-seven
-eight
-nine
-ten
3 changes: 3 additions & 0 deletions gitdiff/testdata/string/mode.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
diff --git a/file.txt b/file.txt
old mode 100644
new mode 100755
16 changes: 16 additions & 0 deletions gitdiff/testdata/string/modify.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
diff --git a/file.txt b/file.txt
index c9e9e05..7d5fdc6 100644
--- a/file.txt
+++ b/file.txt
@@ -3,8 +3,10 @@ two
three
four
five
-six
+six six six six six six
seven
eight
nine
ten
+eleven
+twelve
16 changes: 16 additions & 0 deletions gitdiff/testdata/string/new.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
diff --git a/file.txt b/file.txt
new file mode 100644
index 0000000..c9e9e05
--- /dev/null
+++ b/file.txt
@@ -0,0 +1,10 @@
+one
+two
+three
+four
+five
+six
+seven
+eight
+nine
+ten
3 changes: 3 additions & 0 deletions gitdiff/testdata/string/new_empty.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
diff --git a/file.txt b/file.txt
new file mode 100644
index 0000000..e69de29
16 changes: 16 additions & 0 deletions gitdiff/testdata/string/new_mode.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
diff --git a/file.sh b/file.sh
new file mode 100755
index 0000000..c9e9e05
--- /dev/null
+++ b/file.sh
@@ -0,0 +1,10 @@
+one
+two
+three
+four
+five
+six
+seven
+eight
+nine
+ten
4 changes: 4 additions & 0 deletions gitdiff/testdata/string/rename.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
diff --git a/file.txt b/numbers.txt
similarity index 100%
rename from file.txt
rename to numbers.txt
18 changes: 18 additions & 0 deletions gitdiff/testdata/string/rename_modify.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
diff --git a/file.txt b/numbers.txt
similarity index 77%
rename from file.txt
rename to numbers.txt
index c9e9e05..a6b31d6 100644
--- a/file.txt
+++ b/numbers.txt
@@ -3,8 +3,9 @@ two
three
four
five
-six
+ six
seven
eight
nine
ten
+eleven

0 comments on commit 35d61a0

Please sign in to comment.