| 64 | } |
| 65 | |
| 66 | func TestReadFile(t *testing.T) { |
| 67 | fs := afero.NewMemMapFs() |
| 68 | ctx := utils.WithFS(context.Background(), fs) |
| 69 | err := afero.WriteFile(fs, "/tmp/testfile.txt", []byte("hello world"), 0o644) |
| 70 | require.NoError(t, err) |
| 71 | err = afero.WriteFile(fs, "/tmp/emptyfile.txt", []byte{}, 0o644) |
| 72 | require.NoError(t, err) |
| 73 | |
| 74 | tests := []struct { |
| 75 | name string |
| 76 | file string |
| 77 | want string |
| 78 | wantErr bool |
| 79 | errMsg string |
| 80 | }{ |
| 81 | {"valid file", "/tmp/testfile.txt", "hello world", false, ""}, |
| 82 | {"empty file", "/tmp/emptyfile.txt", "", true, "empty"}, |
| 83 | {"missing file", "/tmp/doesnotexist.txt", "", true, "file does not exist"}, |
| 84 | } |
| 85 | |
| 86 | for _, tt := range tests { |
| 87 | t.Run(tt.name, func(t *testing.T) { |
| 88 | got, err := ReadFile(ctx, tt.file) |
| 89 | if tt.wantErr { |
| 90 | assert.Error(t, err) |
| 91 | assert.Contains(t, err.Error(), tt.errMsg) |
| 92 | } else { |
| 93 | assert.NoError(t, err) |
| 94 | assert.Equal(t, tt.want, got) |
| 95 | } |
| 96 | }) |
| 97 | } |
| 98 | } |