Skip to content

Commit 6f22675

Browse files
committed
Add overall test
1 parent 38031c5 commit 6f22675

File tree

3 files changed

+91
-0
lines changed

3 files changed

+91
-0
lines changed

tarfs/tarfs.go

+2
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ package tarfs
1717
import (
1818
"archive/tar"
1919
"bufio"
20+
"bytes"
2021
"cmp"
2122
"encoding/json"
2223
"errors"
@@ -156,6 +157,7 @@ func (fsys *FS) Open(name string) (fs.File, error) {
156157
fi: root{},
157158
},
158159
fsys: fsys,
160+
sr: io.NewSectionReader(bytes.NewReader(nil), 0, 0),
159161
}, nil
160162
}
161163

tarfs/testdata/gsip.tar.gz

20 KB
Binary file not shown.

targz_test.go

+89
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
package main
2+
3+
import (
4+
"bytes"
5+
"context"
6+
"io"
7+
"io/fs"
8+
"net/http"
9+
"net/http/httptest"
10+
"os"
11+
"testing"
12+
13+
"github.com/jonjohnsonjr/targz/gsip"
14+
"github.com/jonjohnsonjr/targz/ranger"
15+
"github.com/jonjohnsonjr/targz/tarfs"
16+
)
17+
18+
func TestTargz(t *testing.T) {
19+
f, err := os.Open("./tarfs/testdata/gsip.tar")
20+
if err != nil {
21+
t.Fatal(err)
22+
}
23+
defer f.Close()
24+
25+
info, err := f.Stat()
26+
if err != nil {
27+
t.Fatal(err)
28+
}
29+
30+
size := info.Size()
31+
32+
s := httptest.NewServer(http.FileServerFS(os.DirFS("./tarfs/testdata")))
33+
defer s.Close()
34+
35+
uri := s.URL + "/gsip.tar.gz"
36+
37+
t.Logf("uri: %q", uri)
38+
39+
ra := ranger.New(context.Background(), uri, s.Client().Transport)
40+
41+
zr, err := gsip.NewReader(ra, size)
42+
if err != nil {
43+
t.Fatal(err)
44+
}
45+
46+
hfs, err := tarfs.New(zr, size)
47+
if err != nil {
48+
t.Fatal(err)
49+
}
50+
51+
ffs, err := tarfs.New(f, size)
52+
if err != nil {
53+
t.Fatal(err)
54+
}
55+
56+
if err := fs.WalkDir(ffs, ".", func(p string, _ fs.DirEntry, err error) error {
57+
if err != nil {
58+
return err
59+
}
60+
61+
want, err := ffs.Open(p)
62+
if err != nil {
63+
t.Fatal(err)
64+
}
65+
66+
got, err := hfs.Open(p)
67+
if err != nil {
68+
t.Fatal(err)
69+
}
70+
71+
b1, err := io.ReadAll(want)
72+
if err != nil {
73+
t.Fatal(err)
74+
}
75+
76+
b2, err := io.ReadAll(got)
77+
if err != nil {
78+
t.Fatal(err)
79+
}
80+
81+
if !bytes.Equal(b1, b2) {
82+
t.Errorf("mismatched contents: %q", p)
83+
}
84+
85+
return nil
86+
}); err != nil {
87+
t.Fatal(err)
88+
}
89+
}

0 commit comments

Comments
 (0)