golang.org/x/build@v0.0.0-20240506185731-218518f32b70/perfdata/fs/local/local_test.go (about) 1 // Copyright 2017 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package local 6 7 import ( 8 "context" 9 "os" 10 "path/filepath" 11 "testing" 12 13 "golang.org/x/build/internal/diff" 14 ) 15 16 func TestNewWriter(t *testing.T) { 17 ctx := context.Background() 18 19 dir, err := os.MkdirTemp("", "local_test") 20 if err != nil { 21 t.Fatalf("TempDir = %v", err) 22 } 23 defer os.RemoveAll(dir) 24 25 fs := NewFS(dir) 26 27 w, err := fs.NewWriter(ctx, "dir/file", map[string]string{"key": "value", "key2": "value2"}) 28 if err != nil { 29 t.Fatalf("NewWriter = %v", err) 30 } 31 32 want := "hello world" 33 34 if _, err := w.Write([]byte(want)); err != nil { 35 t.Fatalf("Write = %v", err) 36 } 37 38 if err := w.Close(); err != nil { 39 t.Fatalf("Close = %v", err) 40 } 41 42 have, err := os.ReadFile(filepath.Join(dir, "dir/file")) 43 if err != nil { 44 t.Fatalf("ReadFile = %v", err) 45 } 46 if d := diff.Diff("have", have, "want", []byte(want)); d != nil { 47 t.Errorf("file contents differ:\n%s", d) 48 } 49 }