1
2
3
4
5 package embedtest_test
6
7 import (
8 "embed"
9 "os"
10 "testing"
11 )
12
13 var (
14 global2 = global
15 concurrency2 = concurrency
16 glass2 = glass
17 sbig2 = sbig
18 bbig2 = bbig
19 )
20
21
22 var global embed.FS
23
24
25 var concurrency string
26
27
28 var glass []byte
29
30
31 var sbig string
32
33
34 var bbig []byte
35
36 func testFiles(t *testing.T, f embed.FS, name, data string) {
37 t.Helper()
38 d, err := f.ReadFile(name)
39 if err != nil {
40 t.Error(err)
41 return
42 }
43 if string(d) != data {
44 t.Errorf("read %v = %q, want %q", name, d, data)
45 }
46 }
47
48 func testString(t *testing.T, s, name, data string) {
49 t.Helper()
50 if s != data {
51 t.Errorf("%v = %q, want %q", name, s, data)
52 }
53 }
54
55 func TestXGlobal(t *testing.T) {
56 testFiles(t, global, "testdata/hello.txt", "hello, world\n")
57 testString(t, concurrency, "concurrency", "Concurrency is not parallelism.\n")
58 testString(t, string(glass), "glass", "I can eat glass and it doesn't hurt me.\n")
59 testString(t, concurrency2, "concurrency2", "Concurrency is not parallelism.\n")
60 testString(t, string(glass2), "glass2", "I can eat glass and it doesn't hurt me.\n")
61
62 big, err := os.ReadFile("testdata/ascii.txt")
63 if err != nil {
64 t.Fatal(err)
65 }
66 testString(t, sbig, "sbig", string(big))
67 testString(t, sbig2, "sbig2", string(big))
68 testString(t, string(bbig), "bbig", string(big))
69 testString(t, string(bbig2), "bbig", string(big))
70
71 if t.Failed() {
72 return
73 }
74
75
76
77 old := glass[0]
78 glass[0]++
79 if glass2[0] != glass[0] {
80 t.Fatalf("glass and glass2 do not share storage")
81 }
82 glass[0] = old
83
84
85
86 old = bbig[0]
87 bbig[0]++
88 if bbig2[0] != bbig[0] {
89 t.Fatalf("bbig and bbig2 do not share storage")
90 }
91 bbig[0] = old
92 }
93
View as plain text