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  }