2019-11-05 23:04:38 +03:00
|
|
|
package parser
|
2019-08-01 19:03:12 +03:00
|
|
|
|
|
|
|
import (
|
2019-11-21 16:07:00 +03:00
|
|
|
"fmt"
|
2019-11-01 00:20:15 +03:00
|
|
|
"os"
|
2019-11-05 19:52:13 +03:00
|
|
|
"os/exec"
|
2019-10-23 20:19:39 +03:00
|
|
|
"path/filepath"
|
2019-11-01 22:53:54 +03:00
|
|
|
"strings"
|
2019-08-01 19:03:12 +03:00
|
|
|
"testing"
|
|
|
|
|
2019-10-23 20:19:39 +03:00
|
|
|
"github.com/markbates/pkger/here"
|
2019-11-01 23:08:10 +03:00
|
|
|
"github.com/markbates/pkger/pkging/pkgtest"
|
2019-11-01 00:20:15 +03:00
|
|
|
"github.com/markbates/pkger/pkging/stdos"
|
2019-08-01 19:03:12 +03:00
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
)
|
|
|
|
|
2019-10-26 00:11:34 +03:00
|
|
|
func Test_Parser_Ref(t *testing.T) {
|
2019-11-05 19:52:13 +03:00
|
|
|
defer func() {
|
|
|
|
c := exec.Command("go", "mod", "tidy", "-v")
|
|
|
|
c.Run()
|
|
|
|
}()
|
2019-10-26 00:11:34 +03:00
|
|
|
r := require.New(t)
|
|
|
|
|
2019-11-01 23:08:10 +03:00
|
|
|
ref, err := pkgtest.NewRef()
|
2019-10-26 00:11:34 +03:00
|
|
|
r.NoError(err)
|
2019-11-01 00:20:15 +03:00
|
|
|
defer os.RemoveAll(ref.Dir)
|
|
|
|
|
|
|
|
disk, err := stdos.New(ref.Info)
|
|
|
|
r.NoError(err)
|
|
|
|
|
2019-11-01 23:08:10 +03:00
|
|
|
_, err = pkgtest.LoadFiles("/", ref, disk)
|
2019-11-01 00:20:15 +03:00
|
|
|
r.NoError(err)
|
2019-10-26 00:11:34 +03:00
|
|
|
|
2019-11-05 23:04:38 +03:00
|
|
|
res, err := Parse(ref.Info)
|
2019-10-26 00:11:34 +03:00
|
|
|
|
|
|
|
r.NoError(err)
|
|
|
|
|
|
|
|
files, err := res.Files()
|
|
|
|
r.NoError(err)
|
2019-11-21 16:07:00 +03:00
|
|
|
for _, f := range files {
|
|
|
|
fmt.Println(f.Path)
|
|
|
|
}
|
2019-11-12 00:01:05 +03:00
|
|
|
r.Len(files, 25)
|
|
|
|
|
|
|
|
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_Ref_Include(t *testing.T) {
|
|
|
|
defer func() {
|
|
|
|
c := exec.Command("go", "mod", "tidy", "-v")
|
|
|
|
c.Run()
|
|
|
|
}()
|
|
|
|
r := require.New(t)
|
|
|
|
|
|
|
|
here.ClearCache()
|
|
|
|
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)
|
|
|
|
|
2019-11-21 17:02:05 +03:00
|
|
|
res, err := Parse(ref.Info, "github.com/stretchr/testify:/go.mod")
|
2019-11-12 00:01:05 +03:00
|
|
|
|
|
|
|
r.NoError(err)
|
|
|
|
|
|
|
|
files, err := res.Files()
|
|
|
|
r.NoError(err)
|
|
|
|
// t.FailNow()
|
|
|
|
|
|
|
|
l := len(files)
|
|
|
|
r.Equal(26, l)
|
|
|
|
// r.Len(files, 27)
|
2019-11-01 22:53:54 +03:00
|
|
|
|
|
|
|
for _, f := range files {
|
2019-11-05 19:44:15 +03:00
|
|
|
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)
|
|
|
|
}
|
2019-11-01 22:53:54 +03:00
|
|
|
}
|
2019-10-26 00:11:34 +03:00
|
|
|
}
|
|
|
|
|
2019-11-01 22:53:54 +03:00
|
|
|
func Test_Parser_Example_HTTP(t *testing.T) {
|
2019-10-15 23:40:45 +03:00
|
|
|
r := require.New(t)
|
|
|
|
|
2019-11-11 02:22:06 +03:00
|
|
|
here.ClearCache()
|
|
|
|
cur, err := here.Package("github.com/markbates/pkger")
|
2019-10-15 23:40:45 +03:00
|
|
|
r.NoError(err)
|
|
|
|
|
2019-11-01 22:53:54 +03:00
|
|
|
root := filepath.Join(cur.Dir, "examples", "http", "pkger")
|
2019-11-11 02:22:06 +03:00
|
|
|
|
2019-11-05 19:52:13 +03:00
|
|
|
defer func() {
|
|
|
|
c := exec.Command("go", "mod", "tidy", "-v")
|
|
|
|
c.Run()
|
|
|
|
}()
|
2019-10-23 20:19:39 +03:00
|
|
|
|
2019-11-11 02:22:06 +03:00
|
|
|
her, err := here.Dir(root)
|
2019-10-23 20:19:39 +03:00
|
|
|
r.NoError(err)
|
|
|
|
|
2019-11-05 23:04:38 +03:00
|
|
|
res, err := Parse(her)
|
2019-10-23 20:19:39 +03:00
|
|
|
r.NoError(err)
|
|
|
|
|
|
|
|
files, err := res.Files()
|
|
|
|
r.NoError(err)
|
2019-11-01 22:53:54 +03:00
|
|
|
r.Len(files, 5)
|
2019-10-23 20:19:39 +03:00
|
|
|
|
2019-11-01 22:53:54 +03:00
|
|
|
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")
|
2019-10-23 20:19:39 +03:00
|
|
|
}
|
|
|
|
}
|