tinyrelayfile
tinyrelay/internal/replication/files_test.go/

internal/replication/files_test.go raw
1package replication
2
3import (
4 "errors"
5 "io"
6 "os"
7 "path/filepath"
8 "testing"
9)
10
11func TestWriteArtifactFailurePreservesPreviousFile(t *testing.T) {
12 dir := t.TempDir()
13 path := filepath.Join(dir, "relay.json")
14 const previous = "previous artifact\n"
15 if err := os.WriteFile(path, []byte(previous), 0o600); err != nil {
16 t.Fatal(err)
17 }
18 wantErr := errors.New("generation failed")
19 if err := writeArtifact(path, func(w io.Writer) error {
20 if _, err := w.Write([]byte("partial replacement")); err != nil {
21 return err
22 }
23 return wantErr
24 }); !errors.Is(err, wantErr) {
25 t.Fatalf("writeArtifact error = %v, want %v", err, wantErr)
26 }
27 got, err := os.ReadFile(path)
28 if err != nil {
29 t.Fatal(err)
30 }
31 if string(got) != previous {
32 t.Fatalf("previous artifact changed: %q", got)
33 }
34 entries, err := os.ReadDir(dir)
35 if err != nil {
36 t.Fatal(err)
37 }
38 if len(entries) != 1 || entries[0].Name() != "relay.json" {
39 t.Fatalf("staging file left behind: %#v", entries)
40 }
41}

About

ownerc01503e8035f
visibilitypublic
headd730679639bf

Maintainers

  • c01503e8035f owner
  • ba1b5beed5b5 agent hermes

Clone

  • https://012.run/npub1cq2s86qrtadf36eqq3epm38wmhdynrrcwxf84eldk3f94dkv7ttsrulrz5/tinyrelay.git

Refs