all repos

clerk @ 66c8addf7fe749a6335a2639010c7d501bb5ca71

missing tooling for ledger/hledger
1 files changed, 44 insertions(+), 6 deletions(-)
improve golden tests helper
Author: Oleksandr Smirnov olexsmir@gmail.com
Committed at: 2026-06-04 13:05:42 +0300
Authored at: 2026-06-02 14:03:23 +0300
Change ID: nyxvlypopmykxskzolvqzrlvqrupxwup
Parent: 8e80bf9
M internal/testutil/golden/golden.go
···
        8
        8
         	"testing"

      
        9
        9
         )

      
        10
        10
         

      
        11
        
        -var update = flag.Bool("update", false, "update golden files")

      
        
        11
        +var update = flag.Bool("golden.update", false, "update golden files")

      
        
        12
        +

      
        
        13
        +// Load reads testdata/<name>.input. Fails the test if the file is missing.

      
        
        14
        +func Load(t testing.TB, name string) []byte {

      
        
        15
        +	t.Helper()

      
        
        16
        +	path := filepath.Join("testdata", name+".input")

      
        
        17
        +	data, err := os.ReadFile(path)

      
        
        18
        +	if err != nil {

      
        
        19
        +		t.Fatalf("reading input file %s: %v", path, err)

      
        
        20
        +	}

      
        
        21
        +	return data

      
        
        22
        +}

      
        12
        23
         

      
        13
        
        -func Assert(t *testing.T, got string) {

      
        
        24
        +func AssertInput(t testing.TB, got string, name string) {

      
        
        25
        +	t.Helper()

      
        
        26
        +

      
        
        27
        +	path := filepath.Join("testdata", name+".golden")

      
        
        28
        +	if *update {

      
        
        29
        +		if err := os.MkdirAll(filepath.Dir(path), 0o755); err != nil {

      
        
        30
        +			t.Fatalf("creating testdata dir: %v", err)

      
        
        31
        +		}

      
        
        32
        +		if err := os.WriteFile(path, []byte(got), 0o644); err != nil {

      
        
        33
        +			t.Fatalf("writing golden file: %v", err)

      
        
        34
        +		}

      
        
        35
        +		return

      
        
        36
        +	}

      
        
        37
        +

      
        
        38
        +	golden, err := os.ReadFile(path)

      
        
        39
        +	if os.IsNotExist(err) {

      
        
        40
        +		t.Fatalf("no golden file %s, run with -golden.update:\n%s", path, got)

      
        
        41
        +	}

      
        
        42
        +	if err != nil {

      
        
        43
        +		t.Fatalf("reading golden file: %v", err)

      
        
        44
        +	}

      
        
        45
        +

      
        
        46
        +	if string(golden) != got {

      
        
        47
        +		t.Fatalf("golden mismatch for %s\nwant:\n%s\ngot:\n%s", path, string(golden), got)

      
        
        48
        +	}

      
        
        49
        +}

      
        
        50
        +

      
        
        51
        +func Assert(t testing.TB, got string) {

      
        14
        52
         	t.Helper()

      
        15
        53
         

      
        16
        54
         	name := strings.NewReplacer("/", "__", " ", "_").Replace(t.Name())

      
        17
        
        -	name = strings.TrimLeft(name, "Test")

      
        
        55
        +	name = strings.TrimPrefix(name, "Test")

      
        18
        56
         	path := filepath.Join("testdata", "golden", name+".golden")

      
        19
        57
         

      
        20
        58
         	if *update {

      
        21
        59
         		if err := os.MkdirAll(filepath.Dir(path), 0o755); err != nil {

      
        22
        60
         			t.Fatalf("creating golden dir: %v", err)

      
        23
        61
         		}

      
        24
        
        -		t.Logf("Saving golden file in %s", got)

      
        
        62
        +		t.Logf("updated golden file: %s", path)

      
        25
        63
         		if err := os.WriteFile(path, []byte(got), 0o644); err != nil {

      
        26
        64
         			t.Fatalf("writing golden file: %v", err)

      
        27
        65
         		}

      ···
        30
        68
         

      
        31
        69
         	golden, err := os.ReadFile(path)

      
        32
        70
         	if os.IsNotExist(err) {

      
        33
        
        -		t.Fatalf("no golden file, run with -update:\n%s", got)

      
        
        71
        +		t.Fatalf("no golden file %s, run with -golden.update:\n%s", path, got)

      
        34
        72
         	}

      
        35
        73
         	if err != nil {

      
        36
        74
         		t.Fatalf("reading golden file: %v", err)

      
        37
        75
         	}

      
        38
        76
         

      
        39
        77
         	if string(golden) != got {

      
        40
        
        -		t.Fatalf("golden mismatch\nwant:\n%s\ngot:\n%s", string(golden), got)

      
        
        78
        +		t.Fatalf("golden mismatch for %s\nwant:\n%s\ngot:\n%s", path, string(golden), got)

      
        41
        79
         	}

      
        42
        80
         }