github.com/gobuffalo/buffalo-cli/v2@v2.0.0-alpha.15.0.20200919213536-a7350c8e6799/cli/cmds/newapp/cmd_test.go (about)

     1  package newapp
     2  
     3  import (
     4  	"context"
     5  	"io/ioutil"
     6  	"os"
     7  	"os/exec"
     8  	"path/filepath"
     9  	"strings"
    10  	"testing"
    11  
    12  	"github.com/gobuffalo/here"
    13  	"github.com/gobuffalo/plugins"
    14  	"github.com/stretchr/testify/require"
    15  )
    16  
    17  func Test_Cmd_Main(t *testing.T) {
    18  	r := require.New(t)
    19  
    20  	info, err := here.Current()
    21  	r.NoError(err)
    22  
    23  	dir := filepath.Join(info.Root, "tmp")
    24  	os.RemoveAll(dir)
    25  	defer os.RemoveAll(dir)
    26  
    27  	cmd := &Cmd{}
    28  	var act []string
    29  	fn := func(ctx context.Context, root string, cmd *exec.Cmd) error {
    30  		act = cmd.Args
    31  		return nil
    32  	}
    33  	cmd.WithPlugins(func() []plugins.Plugin {
    34  		return []plugins.Plugin{
    35  			cmdRunner(fn),
    36  		}
    37  	})
    38  
    39  	pkg := "github.com/markbates/coke"
    40  	name := "coke"
    41  	orig := []string{"-p", "json", "-p", "github.com/other/preset", pkg}
    42  
    43  	err = cmd.Main(context.Background(), dir, orig)
    44  	r.NoError(err)
    45  
    46  	exp := []string{"go", "run", "./cmd/newapp"}
    47  	exp = append(exp, orig[:len(orig)-1]...)
    48  	r.Equal(exp, act)
    49  
    50  	dir = filepath.Join(dir, name)
    51  	mp := filepath.Join(dir, "go.mod")
    52  	_, err = os.Stat(mp)
    53  	r.NoError(err)
    54  
    55  	b, err := ioutil.ReadFile(filepath.Join(dir, "cmd", "newapp", "main.go"))
    56  	r.NoError(err)
    57  
    58  	ba := string(b)
    59  	ba = strings.TrimSpace(ba)
    60  	be := strings.TrimSpace(newappExp)
    61  	r.Equal(be, ba)
    62  }
    63  
    64  const newappExp = `
    65  package main
    66  
    67  import (
    68  	"context"
    69  	"log"
    70  	"os"
    71  
    72  	"github.com/gobuffalo/buffalo-cli/v2/cli/cmds/newapp"
    73  	"github.com/gobuffalo/plugins"
    74  
    75  	json "github.com/gobuffalo/buffalo-cli/v2/cli/cmds/newapp/presets/jsonapp"
    76  	preset "github.com/other/preset"
    77  )
    78  
    79  func main() {
    80  	ctx := context.Background()
    81  	pwd, err := os.Getwd()
    82  	if err != nil {
    83  		log.Fatal(err)
    84  	}
    85  
    86  	var plugs []plugins.Plugin
    87  
    88  	plugs = append(plugs, json.Plugins()...)
    89  	plugs = append(plugs, preset.Plugins()...)
    90  
    91  	args := []string{"-p", "json", "-p", "github.com/other/preset"}
    92  	if err := newapp.Execute(plugs, ctx, pwd, "github.com/markbates/coke", args); err != nil {
    93  		log.Fatal(err)
    94  	}
    95  }
    96  `