github.com/JarrahG/buffalocli@v0.0.0-20230801092127-b85bfd5d395a/internal/plugins/plugdeps/plugdeps_test.go (about)

     1  package plugdeps
     2  
     3  import (
     4  	"errors"
     5  	"os"
     6  	"path/filepath"
     7  	"testing"
     8  
     9  	"github.com/gobuffalo/meta"
    10  	"github.com/stretchr/testify/require"
    11  )
    12  
    13  var pop = Plugin{
    14  	Binary: "buffalo-pop",
    15  	GoGet:  "github.com/gobuffalo/buffalo-pop/v3@latest",
    16  }
    17  
    18  var heroku = Plugin{
    19  	Binary: "buffalo-heroku",
    20  	GoGet:  "github.com/gobuffalo/buffalo-heroku@latest",
    21  	Commands: []Command{
    22  		{Name: "deploy", Flags: []string{"-v"}},
    23  	},
    24  	Tags: []string{"foo", "bar"},
    25  }
    26  
    27  var local = Plugin{
    28  	Binary: "buffalo-hello.rb",
    29  	Local:  "./plugins/buffalo-hello.rb",
    30  }
    31  
    32  func Test_ConfigPath(t *testing.T) {
    33  	r := require.New(t)
    34  
    35  	x := ConfigPath(meta.App{Root: "foo"})
    36  	r.Equal(x, filepath.Join("foo", "config", "buffalo-plugins.toml"))
    37  }
    38  
    39  func Test_List_Off(t *testing.T) {
    40  	r := require.New(t)
    41  
    42  	app := meta.App{}
    43  	plugs, err := List(app)
    44  	r.Error(err)
    45  	r.True(errors.Is(err, ErrMissingConfig))
    46  	r.Len(plugs.List(), 0)
    47  }
    48  
    49  func Test_List_On(t *testing.T) {
    50  	r := require.New(t)
    51  
    52  	app := meta.New(os.TempDir())
    53  
    54  	p := ConfigPath(app)
    55  	r.NoError(os.MkdirAll(filepath.Dir(p), 0o755))
    56  	f, err := os.Create(p)
    57  	r.NoError(err)
    58  	_, err = f.WriteString(eToml)
    59  	r.NoError(err)
    60  	r.NoError(f.Close())
    61  
    62  	plugs, err := List(app)
    63  	r.NoError(err)
    64  	r.Len(plugs.List(), 3)
    65  }
    66  
    67  const eToml = `[[plugin]]
    68    binary = "buffalo-hello.rb"
    69    local = "./plugins/buffalo-hello.rb"
    70  
    71  [[plugin]]
    72    binary = "buffalo-heroku"
    73    go_get = "github.com/gobuffalo/buffalo-heroku@latest"
    74    tags = ["foo", "bar"]
    75  
    76    [[plugin.command]]
    77      name = "deploy"
    78      flags = ["-v"]
    79  
    80  [[plugin]]
    81    binary = "buffalo-pop"
    82    go_get = "github.com/gobuffalo/buffalo-pop/v3@latest"
    83  `