//go:build withsidecar package sidecarassets import ( "bytes" "crypto/sha256" "encoding/hex" "os" "path/filepath" "testing" ) func TestEmbeddedNonZero(t *testing.T) { if EmbeddedSize() == 0 { t.Errorf("expected embedded JAR to be non-empty") } if IsPlaceholder() { t.Errorf("withsidecar build should not be a placeholder") } } func TestExtract_WritesJARAndChecksum(t *testing.T) { directory := t.TempDir() path, err := Extract(directory) if err != nil { t.Fatal(err) } if path != filepath.Join(directory, "sanderling-sidecar.jar") { t.Errorf("unexpected path: %s", path) } body, err := os.ReadFile(path) if err != nil { t.Fatal(err) } if EmbeddedSize() != len(body) { t.Errorf("size mismatch: embedded=%d, written=%d", EmbeddedSize(), len(body)) } sum := sha256.Sum256(body) if hex.EncodeToString(sum[:]) != EmbeddedSHA256() { t.Errorf("hash mismatch") } checksum, err := os.ReadFile(path + ".sha256") if err != nil { t.Fatal(err) } if string(checksum) != EmbeddedSHA256() { t.Errorf("checksum file content wrong: %q", checksum) } } func TestExtract_ReusesIdenticalFile(t *testing.T) { directory := t.TempDir() path, err := Extract(directory) if err != nil { t.Fatal(err) } sentinel := []byte("SENTINEL-do-not-rewrite") if err := os.WriteFile(path, sentinel, 0o644); err != nil { t.Fatal(err) } if _, err := Extract(directory); err != nil { t.Fatal(err) } after, err := os.ReadFile(path) if err != nil { t.Fatal(err) } if !bytes.Equal(after, sentinel) { t.Errorf("second extract rewrote the existing JAR; reuse branch corrupted on-disk file") } } func TestExtract_RewritesIfChecksumMissing(t *testing.T) { directory := t.TempDir() path, err := Extract(directory) if err != nil { t.Fatal(err) } if err := os.Remove(path + ".sha256"); err != nil { t.Fatal(err) } if _, err := Extract(directory); err != nil { t.Fatal(err) } if _, err := os.Stat(path + ".sha256"); err != nil { t.Errorf("checksum should have been written: %v", err) } }