pkger/pkging/pkgtest/pkgtest.go

93 lines
1.6 KiB
Go
Raw Normal View History

2019-11-01 23:08:10 +03:00
package pkgtest
import (
2019-10-31 00:15:49 +03:00
"fmt"
2019-10-31 00:32:47 +03:00
"os"
2019-10-30 23:39:05 +03:00
"testing"
"github.com/markbates/pkger/here"
"github.com/markbates/pkger/pkging"
2019-10-30 23:39:05 +03:00
"github.com/stretchr/testify/require"
)
2019-10-30 23:39:05 +03:00
type AllFn func(ref *Ref) (pkging.Pkger, error)
func All(t *testing.T, fn AllFn) {
2019-10-30 23:39:05 +03:00
r := require.New(t)
type tf func(*testing.T, *Ref, pkging.Pkger)
2019-10-30 23:39:05 +03:00
tests := map[string]tf{
2019-10-31 00:32:47 +03:00
"Create": CreateTest,
"Current": CurrentTest,
2019-11-01 00:20:15 +03:00
"HTTP": HTTPTest,
2019-10-31 00:32:47 +03:00
"Info": InfoTest,
"MkdirAll": MkdirAllTest,
2019-11-01 00:20:15 +03:00
"Open": OpenTest,
2019-10-31 00:32:47 +03:00
"Remove": RemoveTest,
"RemoveAll": RemoveAllTest,
2019-11-01 00:20:15 +03:00
"Stat": StatTest,
2019-10-31 00:32:47 +03:00
"Walk": WalkTest,
2019-10-30 23:39:05 +03:00
}
ref, err := NewRef()
r.NoError(err)
2019-11-01 00:20:15 +03:00
defer os.RemoveAll(ref.Dir)
2019-10-31 00:15:49 +03:00
pkg, err := fn(ref)
r.NoError(err)
2019-10-30 23:39:05 +03:00
for n, tt := range tests {
2019-10-31 00:15:49 +03:00
t.Run(fmt.Sprintf("%T/%s", pkg, n), func(st *testing.T) {
st.Parallel()
2019-11-01 00:20:15 +03:00
r := require.New(st)
ref, err := NewRef()
r.NoError(err)
2019-11-01 00:20:15 +03:00
defer os.RemoveAll(ref.Dir)
2019-10-30 23:39:05 +03:00
pkg, err := fn(ref)
r.NoError(err)
tt(st, ref, pkg)
2019-10-30 23:39:05 +03:00
})
}
}
2019-10-31 00:32:47 +03:00
2019-11-01 22:53:54 +03:00
func CmpFileInfo(t *testing.T, a os.FileInfo, b os.FileInfo) {
2019-10-31 00:32:47 +03:00
t.Helper()
2019-10-31 00:32:47 +03:00
r := require.New(t)
r.Equal(a.IsDir(), b.IsDir())
r.Equal(a.Name(), b.Name())
r.NotZero(b.ModTime())
if a.IsDir() {
r.True(b.Mode().IsDir(), b.Mode().String())
return
}
r.True(b.Mode().IsRegular(), b.Mode().String())
}
func cmpHereInfo(t *testing.T, a here.Info, b here.Info) {
t.Helper()
r := require.New(t)
r.NotZero(a)
r.NotZero(b)
r.Equal(a.ImportPath, b.ImportPath)
r.Equal(a.Name, b.Name)
am := a.Module
bm := b.Module
r.Equal(am.Path, bm.Path)
r.Equal(am.Main, bm.Main)
r.Equal(am.GoVersion, bm.GoVersion)
2019-10-31 00:32:47 +03:00
}