Skip to content

Commit c85f4e8

Browse files
committed
OH WINDOWS. PLEASE. STOP BEING STRANGE
1 parent 660a62f commit c85f4e8

File tree

2 files changed

+31
-2
lines changed

2 files changed

+31
-2
lines changed

index/rolodex_file_loader.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -494,7 +494,11 @@ func (l *LocalFS) extractFile(p string) (*LocalFile, error) {
494494
var file fs.File
495495
if config != nil && config.DirFS != nil {
496496
l.logger.Debug("[rolodex file loader]: collecting file from dirFS", "file", extension, "location", abs)
497-
file, _ = config.DirFS.Open(p)
497+
var fileError error
498+
file, fileError = config.DirFS.Open(p)
499+
if fileError != nil {
500+
return nil, fileError
501+
}
498502
} else {
499503
l.logger.Debug("[rolodex file loader]: reading local file from OS", "file", extension, "location", abs)
500504
var fileError error
@@ -503,8 +507,8 @@ func (l *LocalFS) extractFile(p string) (*LocalFile, error) {
503507
if fileError != nil {
504508
return nil, fileError
505509
}
506-
defer file.Close()
507510
}
511+
defer file.Close()
508512

509513
modTime := time.Now()
510514
stat, _ := file.Stat()

index/rolodex_test.go

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2346,6 +2346,21 @@ func TestRolodex_AsRemoteFile_ClosesAdaptedFile(t *testing.T) {
23462346
assert.True(t, file.closed)
23472347
}
23482348

2349+
func TestLocalFS_ExtractFile_ClosesDirFSFile(t *testing.T) {
2350+
lfs, err := NewLocalFSWithConfig(&LocalFSConfig{
2351+
BaseDirectory: "/tmp",
2352+
DirFS: &closeTrackingDirFS{
2353+
file: &closeTrackingFile{testFile: testFile{content: "hello"}},
2354+
},
2355+
})
2356+
assert.NoError(t, err)
2357+
2358+
localFile, extractErr := lfs.extractFile("spec.yaml")
2359+
assert.NoError(t, extractErr)
2360+
assert.NotNil(t, localFile)
2361+
assert.True(t, lfs.fsConfig.DirFS.(*closeTrackingDirFS).file.closed)
2362+
}
2363+
23492364
func TestRolodex_AsFileHelperErrors(t *testing.T) {
23502365
rolo := NewRolodex(CreateOpenAPIIndexConfig())
23512366

@@ -2464,6 +2479,10 @@ type closeTrackingFile struct {
24642479
closed bool
24652480
}
24662481

2482+
type closeTrackingDirFS struct {
2483+
file *closeTrackingFile
2484+
}
2485+
24672486
type errorReadFile struct{}
24682487

24692488
func (e *errorReadFile) Read(_ []byte) (int, error) { return 0, fmt.Errorf("read failed") }
@@ -2494,6 +2513,12 @@ func (tf *closeTrackingFile) Close() error {
24942513
return nil
24952514
}
24962515

2516+
func (f *closeTrackingDirFS) Open(name string) (fs.File, error) {
2517+
f.file.offset = 0
2518+
f.file.closed = false
2519+
return f.file, nil
2520+
}
2521+
24972522
func (tf *testFile) Stat() (fs.FileInfo, error) {
24982523
return &testFileInfo{name: "test.yaml", size: int64(len(tf.content))}, nil
24992524
}

0 commit comments

Comments
 (0)