@@ -13,7 +13,6 @@ import (
1313 "github.com/stretchr/testify/require"
1414)
1515
16-
1716func TestOpen (t * testing.T ) {
1817 t .Parallel ()
1918
@@ -186,8 +185,8 @@ func TestReadDir(t *testing.T) {
186185 {
187186 name : "empty path" ,
188187 path : "" ,
189- fs : testdata . GetTestData () ,
190- want : []string {"testdata" },
188+ fs : & emptyEmbedFS ,
189+ want : []string {},
191190 wantErr : false ,
192191 },
193192 {
@@ -271,14 +270,14 @@ func TestFileSeek(t *testing.T) {
271270 seekWhence int
272271 want string
273272 }{
274- {seekOff : 8 , seekWhence : io .SeekStart , want : "test file" }, // pos now at 17
275- {seekOff : 8 , seekWhence : io .SeekStart , want : "t" }, // pos now at 9
276- {seekOff : 9 , seekWhence : io .SeekStart , want : "est" }, // pos now at 12
277- {seekOff : 1 , seekWhence : io .SeekStart , want : "nother test file" }, // pos now at 17
273+ {seekOff : 8 , seekWhence : io .SeekStart , want : "test file" }, // pos now at 17
274+ {seekOff : 8 , seekWhence : io .SeekStart , want : "t" }, // pos now at 9
275+ {seekOff : 9 , seekWhence : io .SeekStart , want : "est" }, // pos now at 12
276+ {seekOff : 1 , seekWhence : io .SeekStart , want : "nother test file" }, // pos now at 17
278277 {seekOff : 0 , seekWhence : io .SeekStart , want : "Another test file" }, // pos now at 17
279- {seekOff : 0 , seekWhence : io .SeekStart , want : "A" }, // pos now at 1
280- {seekOff : 0 , seekWhence : io .SeekCurrent , want : "n" }, // pos now at 2
281- {seekOff : - 4 , seekWhence : io .SeekEnd , want : "file" }, // pos now at 17
278+ {seekOff : 0 , seekWhence : io .SeekStart , want : "A" }, // pos now at 1
279+ {seekOff : 0 , seekWhence : io .SeekCurrent , want : "n" }, // pos now at 2
280+ {seekOff : - 4 , seekWhence : io .SeekEnd , want : "file" }, // pos now at 17
282281 }
283282
284283 for i , tc := range tests {
@@ -337,9 +336,9 @@ func TestJoin(t *testing.T) {
337336
338337func TestEmbedfs_ComprehensiveOpen (t * testing.T ) {
339338 t .Parallel ()
340-
339+
341340 fs := New (testdata .GetTestData ())
342-
341+
343342 // Test opening existing embedded file with content
344343 f , err := fs .Open ("/testdata/file1.txt" )
345344 require .NoError (t , err )
@@ -349,13 +348,13 @@ func TestEmbedfs_ComprehensiveOpen(t *testing.T) {
349348
350349func TestEmbedfs_ComprehensiveRead (t * testing.T ) {
351350 t .Parallel ()
352-
351+
353352 fs := New (testdata .GetTestData ())
354-
353+
355354 f , err := fs .Open ("/testdata/file1.txt" )
356355 require .NoError (t , err )
357356 defer f .Close ()
358-
357+
359358 // Read the actual content
360359 buf := make ([]byte , 100 )
361360 n , err := f .Read (buf )
@@ -365,14 +364,14 @@ func TestEmbedfs_ComprehensiveRead(t *testing.T) {
365364
366365func TestEmbedfs_NestedFileOperations (t * testing.T ) {
367366 t .Parallel ()
368-
367+
369368 fs := New (testdata .GetTestData ())
370-
369+
371370 // Test nested file read
372371 f , err := fs .Open ("/testdata/subdir/nested.txt" )
373372 require .NoError (t , err )
374373 defer f .Close ()
375-
374+
376375 buf := make ([]byte , 100 )
377376 n , err := f .Read (buf )
378377 require .NoError (t , err )
@@ -381,9 +380,9 @@ func TestEmbedfs_NestedFileOperations(t *testing.T) {
381380
382381func TestEmbedfs_PathNormalization (t * testing.T ) {
383382 t .Parallel ()
384-
383+
385384 fs := New (testdata .GetTestData ())
386-
385+
387386 // Test that our path normalization works across all methods
388387 tests := []struct {
389388 name string
@@ -394,7 +393,7 @@ func TestEmbedfs_PathNormalization(t *testing.T) {
394393 {"nested" , "/testdata/subdir" },
395394 {"deep file" , "/testdata/subdir/nested.txt" },
396395 }
397-
396+
398397 for _ , tt := range tests {
399398 t .Run (tt .name , func (t * testing.T ) {
400399 // All these should work with our path normalization
@@ -428,21 +427,21 @@ func TestFile_ReadAt(t *testing.T) {
428427 {"middle" , 6 , 4 , "from" },
429428 {"end" , 15 , 4 , "dfs!" },
430429 {"full content" , 0 , 19 , "Hello from embedfs!" },
431- {"beyond end" , 100 , 10 , "" }, // Should return EOF
430+ {"beyond end" , 100 , 10 , "" }, // Should return EOF
432431 }
433432
434433 for _ , tt := range tests {
435434 t .Run (tt .name , func (t * testing.T ) {
436435 buf := make ([]byte , tt .length )
437436 n , err := f .ReadAt (buf , tt .offset )
438-
439- if tt .offset >= 19 { // Beyond file size
437+
438+ if tt .offset >= 19 { // Beyond file size
440439 require .Error (t , err )
441440 assert .Equal (t , 0 , n )
442441 } else {
443442 if tt .offset + int64 (tt .length ) > 19 {
444443 // Partial read at end of file
445- require .Error (t , err ) // Should be EOF
444+ require .ErrorIs (t , err , io . EOF )
446445 assert .Greater (t , n , 0 )
447446 assert .Equal (t , tt .want , string (buf [:n ]))
448447 } else {
@@ -472,16 +471,12 @@ func TestFile_Close(t *testing.T) {
472471 err = f .Close ()
473472 require .NoError (t , err )
474473
475- // Test multiple closes (should be safe)
474+ // Multiple closes must not fail.
476475 err = f .Close ()
477476 require .NoError (t , err )
478477
479478 err = f .Close ()
480479 require .NoError (t , err )
481-
482- // Note: embedfs doesn't necessarily fail operations after close
483- // since embed.FS files remain readable. This tests that Close() works
484- // without error, but doesn't enforce post-close failure behavior.
485480}
486481
487482func TestFile_LockUnlock (t * testing.T ) {
@@ -493,14 +488,14 @@ func TestFile_LockUnlock(t *testing.T) {
493488 require .NoError (t , err )
494489 defer f .Close ()
495490
496- // Lock/Unlock should be no-ops that don't error
491+ // Lock/Unlock are no-ops and must not error.
497492 err = f .Lock ()
498493 require .NoError (t , err )
499494
500495 err = f .Unlock ()
501496 require .NoError (t , err )
502497
503- // Multiple lock/unlock sequences should work
498+ // Invalid lock/unlock sequences are not checked.
504499 err = f .Lock ()
505500 require .NoError (t , err )
506501 err = f .Lock ()
0 commit comments