main
util_test.go
Eric Bower
·
2026-02-25
1package patchbin
2
3import (
4 "fmt"
5 "io"
6 "os"
7 "strings"
8 "testing"
9)
10
11func TestParsePatchsetWithCover(t *testing.T) {
12 file, err := os.Open("fixtures/with-cover.patch")
13 defer func() {
14 _ = file.Close()
15 }()
16 if err != nil {
17 t.Fatal(err.Error())
18 }
19 actual, err := ParsePatchset(file)
20 if err != nil {
21 t.Fatal(err.Error())
22 }
23 expected := []*Patch{
24 {Title: "Add torch deps"},
25 {Title: "feat: lets build an rnn"},
26 {Title: "chore: add torch to requirements"},
27 }
28 if len(actual) != len(expected) {
29 t.Fatalf("patches not same length (expected:%d, actual:%d)\n", len(expected), len(actual))
30 }
31 for idx, act := range actual {
32 exp := expected[idx]
33 if exp.Title != act.Title {
34 t.Fatalf("title does not match expected (expected:%s, actual:%s)", exp.Title, act.Title)
35 }
36 }
37}
38
39func TestParsePatchsetEmptyInput(t *testing.T) {
40 _, err := ParsePatchset(strings.NewReader(""))
41 if err == nil {
42 t.Fatal("expected error for empty patchset input, got nil")
43 }
44}
45
46func TestParsePatchsetWhitespaceOnlyInput(t *testing.T) {
47 _, err := ParsePatchset(strings.NewReader(" \n\n\t\n"))
48 if err == nil {
49 t.Fatal("expected error for whitespace-only patchset input, got nil")
50 }
51}
52
53func TestParsePatchsetGarbageInput(t *testing.T) {
54 _, err := ParsePatchset(strings.NewReader("this is not a patch\njust some random text\n"))
55 if err == nil {
56 t.Fatal("expected error for garbage patchset input, got nil")
57 }
58}
59
60func TestPatchToDiff(t *testing.T) {
61 file, err := os.Open("fixtures/single.patch")
62 defer func() {
63 _ = file.Close()
64 }()
65 if err != nil {
66 t.Fatal(err.Error())
67 }
68
69 fileExp, err := os.Open("fixtures/single.diff")
70 defer func() {
71 _ = file.Close()
72 }()
73 if err != nil {
74 t.Fatal(err.Error())
75 }
76
77 actual, err := patchToDiff(file)
78 if err != nil {
79 t.Fatal(err.Error())
80 }
81
82 by, err := io.ReadAll(fileExp)
83 if err != nil {
84 t.Fatal("cannot read expected file")
85 }
86
87 if actual != string(by) {
88 fmt.Println(actual)
89 t.Fatal("diff does not match expected")
90 }
91}