1 package httpdir 2 3 import ( 4 "io/fs" 5 "testing" 6 "time" 7 ) 8 9 func TestDir(t *testing.T) { 10 d := New(time.Now()) 11 err := d.Mkdir("/dir", time.Now(), true) 12 if err != nil { 13 t.Errorf("unexpected error: %s", err) 14 return 15 } 16 err = d.Mkdir("/dir2", time.Now(), false) 17 if err != nil { 18 t.Errorf("unexpected error: %s", err) 19 return 20 } 21 _, err = d.Open("/dir") 22 if err != nil { 23 t.Errorf("unexpected error: %s", err) 24 return 25 } 26 _, err = d.Open("/dir2") 27 if err != fs.ErrPermission { 28 t.Errorf("expecting permission error, got %q", err) 29 } 30 err = d.Create("/dir3/test/hello", FileString("Hello, World!", time.Now())) 31 if err != nil { 32 t.Errorf("unexpected error: %s", err) 33 return 34 } 35 f, err := d.Open("/dir3/test/hello") 36 if err != nil { 37 t.Errorf("unexpected error: %s", err) 38 return 39 } 40 stat, err := f.Stat() 41 if err != nil { 42 t.Errorf("unexpected error: %s", err) 43 return 44 } 45 if stat.Name() != "hello" { 46 t.Errorf("expecting name \"hello\", got %q", stat.Name()) 47 } 48 data := make([]byte, 20) 49 n, err := f.Read(data) 50 if err != nil { 51 t.Errorf("unexpected error: %s", err) 52 return 53 } 54 if n != 13 { 55 t.Errorf("expecting to read 13 bytes, read %d", n) 56 } 57 if string(data[:n]) != "Hello, World!" { 58 t.Errorf("expecting string \"Hello, World!\", got %q", data[:n]) 59 } 60 err = d.Remove("/dir3/test/hello") 61 if err != nil { 62 t.Errorf("unexpected error: %s", err) 63 } 64 if len(d.d.contents["dir3"].(dir).contents["test"].(dir).contents) != 0 { 65 t.Errorf("did not delete '/dir3/test/hello'") 66 return 67 } 68 err = d.Remove("/dir3") 69 if err != nil { 70 t.Errorf("unexpected error: %s", err) 71 } 72 if len(d.d.contents) != 2 { // dir && dir2 remain 73 t.Errorf("did not delete '/dir3'") 74 } 75 } 76