forked from mirror/pkger
118 lines
2.1 KiB
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)
|
|
}
|