github.com/falafeljan/pkger@v0.18.0/pkging/pkgtest/pkgtest.go (about) 1 package pkgtest 2 3 import ( 4 "fmt" 5 "os" 6 "testing" 7 8 "github.com/markbates/pkger/here" 9 "github.com/markbates/pkger/pkging" 10 "github.com/stretchr/testify/require" 11 ) 12 13 type AllFn func(ref *Ref) (pkging.Pkger, error) 14 15 func All(t *testing.T, fn AllFn) { 16 r := require.New(t) 17 18 type tf func(*testing.T, *Ref, pkging.Pkger) 19 20 tests := map[string]tf{ 21 "Create": CreateTest, 22 "Current": CurrentTest, 23 "HTTP": HTTPTest, 24 "Info": InfoTest, 25 "MkdirAll": MkdirAllTest, 26 "Open": OpenTest, 27 "Remove": RemoveTest, 28 "RemoveAll": RemoveAllTest, 29 "Stat": StatTest, 30 "Walk": WalkTest, 31 } 32 33 ref, err := NewRef() 34 r.NoError(err) 35 defer os.RemoveAll(ref.Dir) 36 37 pkg, err := fn(ref) 38 r.NoError(err) 39 40 for n, tt := range tests { 41 t.Run(fmt.Sprintf("%T/%s", pkg, n), func(st *testing.T) { 42 st.Parallel() 43 44 r := require.New(st) 45 46 ref, err := NewRef() 47 r.NoError(err) 48 defer os.RemoveAll(ref.Dir) 49 50 pkg, err := fn(ref) 51 r.NoError(err) 52 53 tt(st, ref, pkg) 54 }) 55 } 56 57 } 58 59 func CmpFileInfo(t *testing.T, a os.FileInfo, b os.FileInfo) { 60 t.Helper() 61 62 r := require.New(t) 63 r.Equal(a.IsDir(), b.IsDir()) 64 r.Equal(a.Name(), b.Name()) 65 r.NotZero(b.ModTime()) 66 67 if a.IsDir() { 68 r.True(b.Mode().IsDir(), b.Mode().String()) 69 return 70 } 71 72 r.True(b.Mode().IsRegular(), b.Mode().String()) 73 } 74 75 func cmpHereInfo(t *testing.T, a here.Info, b here.Info) { 76 t.Helper() 77 78 r := require.New(t) 79 80 r.NotZero(a) 81 r.NotZero(b) 82 83 r.Equal(a.ImportPath, b.ImportPath) 84 r.Equal(a.Name, b.Name) 85 86 am := a.Module 87 bm := b.Module 88 89 r.Equal(am.Path, bm.Path) 90 r.Equal(am.Main, bm.Main) 91 r.Equal(am.GoVersion, bm.GoVersion) 92 }