From 3666920fb71af152a07cd6c9d062f69ce091d2db Mon Sep 17 00:00:00 2001 From: Hajime Hoshi Date: Sat, 8 Feb 2025 19:01:53 +0900 Subject: [PATCH] internal/shaderlister: bug fix: wrong shader hash Updates #3157 --- internal/shaderlister/main.go | 2 +- internal/shaderlister/shaderlister_test.go | 16 +++++++++++++--- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/internal/shaderlister/main.go b/internal/shaderlister/main.go index f60ba0bf4..02f7079cf 100644 --- a/internal/shaderlister/main.go +++ b/internal/shaderlister/main.go @@ -128,7 +128,7 @@ func xmain() error { // Add source hashes. for i := range shaders[origN:] { - shader := &shaders[i] + shader := &shaders[origN+i] hash, err := graphics.CalcSourceHash([]byte(shader.Source)) if err != nil { visitErr = err diff --git a/internal/shaderlister/shaderlister_test.go b/internal/shaderlister/shaderlister_test.go index 1e1480ff7..67065c134 100644 --- a/internal/shaderlister/shaderlister_test.go +++ b/internal/shaderlister/shaderlister_test.go @@ -22,6 +22,8 @@ import ( "slices" "strings" "testing" + + "github.com/hajimehoshi/ebiten/v2/internal/graphics" ) func hasGoCommand() bool { @@ -46,9 +48,10 @@ func TestRun(t *testing.T) { } type shader struct { - Package string - File string - Source string + Package string + File string + Source string + SourceHash string } var shaders []shader if err := json.Unmarshal(out, &shaders); err != nil { @@ -70,6 +73,13 @@ func TestRun(t *testing.T) { if s.File == "" { t.Errorf("s.File is empty: %v", s) } + hash, err := graphics.CalcSourceHash([]byte(s.Source)) + if err != nil { + t.Fatal(err) + } + if got, want := s.SourceHash, hash.String(); got != want { + t.Errorf("s.SourceHash: got: %q, want: %q", got, want) + } if got, want := s.Source, fmt.Sprintf("shader %d", i+1); got != want { t.Errorf("s.Source: got: %q, want: %q", got, want) }