pkger/pkging/pkgutil/stuff_test.go

118 lines
2.1 KiB
Go

package pkgutil
import (
"bytes"
"os"
"testing"
"github.com/markbates/pkger/parser"
"github.com/markbates/pkger/pkging/mem"
"github.com/markbates/pkger/pkging/pkgtest"
"github.com/markbates/pkger/pkging/stdos"
"github.com/stretchr/testify/require"
)
func Test_Stuff(t *testing.T) {
r := require.New(t)
ref, err := pkgtest.NewRef()
r.NoError(err)
defer os.RemoveAll(ref.Dir)
disk, err := stdos.New(ref.Info)
r.NoError(err)
infos, err := pkgtest.LoadFiles("/", ref, disk)
r.NoError(err)
r.Len(infos, 34)
decls, err := parser.Parse(ref.Info)
r.NoError(err)
r.Len(decls, 10)
files, err := decls.Files()
r.NoError(err)
for _, f := range files {
if f.Path.Pkg == ref.Module.Path {
r.Equal("app", f.Path.Pkg)
} else {
r.NotEqual("app", f.Path.Pkg)
}
}
r.Len(files, 23)
bb := &bytes.Buffer{}
err = Stuff(bb, ref.Info, decls)
r.NoError(err)
pkg, err := mem.UnmarshalEmbed(bb.Bytes())
r.NoError(err)
pkgtest.CurrentTest(t, ref, pkg)
pkgtest.InfoTest(t, ref, pkg)
pkgtest.OpenTest(t, ref, pkg)
pkgtest.WalkTest(t, ref, pkg)
_, err = pkg.Stat("/go.mod")
r.NoError(err)
_, err = pkg.Stat("/public/index.html")
r.NoError(err)
}
func Test_Stuff_With_GoMod_Without_GoFiles(t *testing.T) {
r := require.New(t)
ref, err := pkgtest.NewRefOnlyMod()
r.NoError(err)
defer os.RemoveAll(ref.Dir)
disk, err := stdos.New(ref.Info)
r.NoError(err)
infos, err := pkgtest.LoadFiles("/", ref, disk)
r.NoError(err)
r.Len(infos, 19)
decls, err := parser.Parse(ref.Info)
r.NoError(err)
r.Len(decls, 1)
files, err := decls.Files()
r.NoError(err)
for _, f := range files {
if f.Path.Pkg == ref.Module.Path {
r.Equal("app", f.Path.Pkg)
} else {
r.NotEqual("app", f.Path.Pkg)
}
}
r.Len(files, 4)
bb := &bytes.Buffer{}
err = Stuff(bb, ref.Info, decls)
r.NoError(err)
pkg, err := mem.UnmarshalEmbed(bb.Bytes())
r.NoError(err)
pkgtest.CurrentTest(t, ref, pkg)
pkgtest.InfoTest(t, ref, pkg)
pkgtest.OpenTest(t, ref, pkg)
pkgtest.WalkTest(t, ref, pkg)
_, err = pkg.Stat("/go.mod")
r.NoError(err)
_, err = pkg.Stat("/public/index.html")
r.NoError(err)
}