pkger/parser/parser_test.go

82 lines
1.5 KiB
Go

package parser
import (
"os"
"os/exec"
"path/filepath"
"strings"
"testing"
"github.com/markbates/pkger/here"
"github.com/markbates/pkger/pkging/pkgtest"
"github.com/markbates/pkger/pkging/stdos"
"github.com/stretchr/testify/require"
)
func Test_Parser_Ref(t *testing.T) {
defer func() {
c := exec.Command("go", "mod", "tidy", "-v")
c.Run()
}()
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)
_, err = pkgtest.LoadFiles("/", ref, disk)
r.NoError(err)
res, err := Parse(ref.Info)
r.NoError(err)
files, err := res.Files()
r.NoError(err)
r.Len(files, 23)
for _, f := range files {
if f.Path.Pkg == ref.Module.Path {
r.True(strings.HasPrefix(f.Abs, ref.Dir), "%q %q", f.Abs, ref.Dir)
} else {
r.False(strings.HasPrefix(f.Abs, ref.Dir), "%q %q", f.Abs, ref.Dir)
}
}
}
func Test_Parser_Example_HTTP(t *testing.T) {
r := require.New(t)
cur, err := here.Current()
r.NoError(err)
pwd, err := os.Getwd()
r.NoError(err)
defer os.Chdir(pwd)
root := filepath.Join(cur.Dir, "examples", "http", "pkger")
r.NoError(os.Chdir(root))
defer func() {
c := exec.Command("go", "mod", "tidy", "-v")
c.Run()
}()
her, err := here.Dir(".")
r.NoError(err)
res, err := Parse(her)
r.NoError(err)
files, err := res.Files()
r.NoError(err)
r.Len(files, 5)
for _, f := range files {
r.True(strings.HasPrefix(f.Abs, her.Dir), "%q %q", f.Abs, her.Dir)
r.True(strings.HasPrefix(f.Path.Name, "/public"), "%q %q", f.Path.Name, "/public")
}
}