(t *testing.T)
| 83 | } |
| 84 | |
| 85 | func TestNewDefaultFS(t *testing.T) { |
| 86 | tempDir := t.TempDir() |
| 87 | filename := filepath.Join(tempDir, "file.txt") |
| 88 | if err := os.WriteFile(filename, []byte("hello"), 0644); err != nil { |
| 89 | t.Fatalf("failed to write file: %v", err) |
| 90 | } |
| 91 | |
| 92 | var testCases = []struct { |
| 93 | name string |
| 94 | givenDir string |
| 95 | whenName string |
| 96 | expectedError string |
| 97 | }{ |
| 98 | { |
| 99 | name: "ok, can open absolute path", |
| 100 | givenDir: tempDir, |
| 101 | whenName: filename, |
| 102 | }, |
| 103 | { |
| 104 | name: "ok, can open path to fs", |
| 105 | givenDir: tempDir, |
| 106 | whenName: "file.txt", |
| 107 | }, |
| 108 | { |
| 109 | name: "nok, can not use ./ in path", |
| 110 | givenDir: tempDir, |
| 111 | whenName: "./file.txt", |
| 112 | expectedError: `open ./file.txt: invalid argument`, |
| 113 | }, |
| 114 | } |
| 115 | for _, tc := range testCases { |
| 116 | t.Run(tc.name, func(t *testing.T) { |
| 117 | myFs := NewDefaultFS(tc.givenDir) |
| 118 | |
| 119 | f, err := myFs.Open(tc.whenName) |
| 120 | if tc.expectedError != "" { |
| 121 | assert.EqualError(t, err, tc.expectedError) |
| 122 | return |
| 123 | } |
| 124 | if err != nil { |
| 125 | t.Fatalf("failed to read file: %v", err) |
| 126 | } |
| 127 | defer f.Close() |
| 128 | |
| 129 | contents, err := io.ReadAll(f) |
| 130 | assert.NoError(t, err) |
| 131 | assert.Equal(t, []byte("hello"), contents) |
| 132 | }) |
| 133 | } |
| 134 | } |
| 135 | |
| 136 | func TestEcho_StaticFS(t *testing.T) { |
| 137 | dotsInFilenameFS := fstest.MapFS{ |
nothing calls this directly
no test coverage detected
searching dependent graphs…