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}