github.com/gobuffalo/buffalo-cli/v2@v2.0.0-alpha.15.0.20200919213536-a7350c8e6799/cli/cmds/build/main_file_test.go (about) 1 package build 2 3 import ( 4 "bytes" 5 "context" 6 "fmt" 7 "os" 8 "path" 9 "path/filepath" 10 "testing" 11 12 "github.com/gobuffalo/buffalo-cli/v2/cli/cmds/build/buildtest" 13 "github.com/gobuffalo/plugins" 14 "github.com/stretchr/testify/require" 15 ) 16 17 func Test_MainFile_Version(t *testing.T) { 18 r := require.New(t) 19 20 bc := &MainFile{} 21 22 ctx := context.Background() 23 24 s, err := bc.Version(ctx, "") 25 r.NoError(err) 26 r.Contains(s, `"time":`) 27 28 fn := func(ctx context.Context, root string) (string, error) { 29 return "v1", nil 30 } 31 32 p := buildtest.Versioner(fn) 33 bc.pluginsFn = func() []plugins.Plugin { 34 return plugins.Plugins{p} 35 } 36 37 s, err = bc.Version(ctx, "") 38 r.NoError(err) 39 r.Contains(s, `"time":`) 40 r.Contains(s, fmt.Sprintf(`"%s":"v1"`, p.PluginName())) 41 } 42 43 func Test_MainFile_generateNewMain(t *testing.T) { 44 r := require.New(t) 45 46 ref := newRef(t, "") 47 defer os.RemoveAll(filepath.Join(ref.Dir, mainBuildFile)) 48 49 fn := func(ctx context.Context, root string) ([]string, error) { 50 return []string{ 51 path.Join(ref.ImportPath, "actions"), 52 }, nil 53 } 54 plugs := plugins.Plugins{ 55 buildtest.Importer(fn), 56 } 57 bc := &MainFile{ 58 pluginsFn: func() []plugins.Plugin { 59 return plugs 60 }, 61 withFallthroughFn: func() bool { return true }, 62 } 63 64 ctx := context.Background() 65 bb := &bytes.Buffer{} 66 err := bc.generateNewMain(ctx, ref, "v1", bb) 67 r.NoError(err) 68 69 out := bb.String() 70 r.Contains(out, `appcli "github.com/markbates/coke/cli"`) 71 r.Contains(out, `_ "github.com/markbates/coke/actions"`) 72 r.Contains(out, `appcli.Buffalo`) 73 r.Contains(out, `originalMain`) 74 } 75 76 func Test_MainFile_generateNewMain_noCli(t *testing.T) { 77 r := require.New(t) 78 79 ref := newRef(t, "") 80 defer os.RemoveAll(filepath.Join(ref.Dir, mainBuildFile)) 81 82 fn := func(ctx context.Context, root string) ([]string, error) { 83 return []string{ 84 path.Join(ref.ImportPath, "actions"), 85 }, nil 86 } 87 plugs := plugins.Plugins{ 88 buildtest.Importer(fn), 89 } 90 bc := &MainFile{ 91 pluginsFn: func() []plugins.Plugin { 92 return plugs 93 }, 94 withFallthroughFn: func() bool { return false }, 95 } 96 97 bb := &bytes.Buffer{} 98 err := bc.generateNewMain(context.Background(), ref, "v1", bb) 99 r.NoError(err) 100 101 out := bb.String() 102 r.NotContains(out, `appcli "github.com/markbates/coke/cli"`) 103 r.NotContains(out, `appcli.Buffalo`) 104 r.Contains(out, `_ "github.com/markbates/coke/actions"`) 105 r.Contains(out, `originalMain`) 106 r.Contains(out, `cb.Main`) 107 }