1 package fs_test
2
3 import (
4 "os"
5 "path/filepath"
6 "strings"
7 "testing"
8 "time"
9
10 "gotest.tools/v3/assert"
11 "gotest.tools/v3/fs"
12 )
13
14 func TestFromDir(t *testing.T) {
15 dir := fs.NewDir(t, "test-from-dir", fs.FromDir("testdata/copy-test"))
16 defer dir.Remove()
17
18 expected := fs.Expected(t,
19 fs.WithFile("1", "1\n"),
20 fs.WithDir("a",
21 fs.WithFile("1", "1\n"),
22 fs.WithFile("2", "2\n"),
23 fs.WithDir("b",
24 fs.WithFile("1", "1\n"))))
25
26 assert.Assert(t, fs.Equal(dir.Path(), expected))
27 }
28
29 func TestFromDirSymlink(t *testing.T) {
30 dir := fs.NewDir(t, "test-from-dir", fs.FromDir("testdata/copy-test-with-symlink"))
31 defer dir.Remove()
32
33 link2 := filepath.FromSlash("../2")
34 link3 := filepath.FromSlash("/some/inexistent/link")
35
36 expected := fs.Expected(t,
37 fs.WithFile("1", "1\n"),
38 fs.WithDir("a",
39 fs.WithFile("1", "1\n"),
40 fs.WithFile("2", "2\n"),
41 fs.WithDir("b",
42 fs.WithFile("1", "1\n"),
43 fs.WithSymlink("2", link2),
44 fs.WithSymlink("3", link3),
45 fs.WithSymlink("4", "5"),
46 )))
47
48 assert.Assert(t, fs.Equal(dir.Path(), expected))
49 }
50
51 func TestWithTimestamps(t *testing.T) {
52 stamp := time.Date(2011, 11, 11, 5, 55, 55, 0, time.UTC)
53 tmpFile := fs.NewFile(t, t.Name(), fs.WithTimestamps(stamp, stamp))
54 defer tmpFile.Remove()
55
56 stat, err := os.Stat(tmpFile.Path())
57 assert.NilError(t, err)
58 assert.DeepEqual(t, stat.ModTime(), stamp)
59 }
60
61 func TestApply(t *testing.T) {
62 t.Run("with file", func(t *testing.T) {
63 tmpFile := fs.NewFile(t, "test-update-file", fs.WithContent("contenta"))
64 defer tmpFile.Remove()
65 fs.Apply(t, tmpFile, fs.WithContent("contentb"))
66 content, err := os.ReadFile(tmpFile.Path())
67 assert.NilError(t, err)
68 assert.Equal(t, string(content), "contentb")
69 })
70
71 t.Run("with dir", func(t *testing.T) {
72 tmpDir := fs.NewDir(t, "test-update-dir")
73 defer tmpDir.Remove()
74 fs.Apply(t, tmpDir, fs.WithFile("file1", "contenta"))
75 fs.Apply(t, tmpDir, fs.WithFile("file2", "contentb"))
76 expected := fs.Expected(t,
77 fs.WithFile("file1", "contenta"),
78 fs.WithFile("file2", "contentb"))
79 assert.Assert(t, fs.Equal(tmpDir.Path(), expected))
80 })
81 }
82
83 func TestWithReaderContent(t *testing.T) {
84 content := "this is a test"
85 dir := fs.NewDir(t, t.Name(),
86 fs.WithFile("1", "",
87 fs.WithReaderContent(strings.NewReader(content))),
88 )
89 defer dir.Remove()
90 expected := fs.Expected(t, fs.WithFile("1", content))
91 assert.Assert(t, fs.Equal(dir.Path(), expected))
92 }
93
View as plain text