gosick #1
62
internal/homesick/cli/cli_test.go
Normal file
62
internal/homesick/cli/cli_test.go
Normal file
@@ -0,0 +1,62 @@
|
||||
package cli_test
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"testing"
|
||||
|
||||
"git.hrafn.xyz/aether/gosick/internal/homesick/cli"
|
||||
"git.hrafn.xyz/aether/gosick/internal/homesick/version"
|
||||
"github.com/stretchr/testify/require"
|
||||
"github.com/stretchr/testify/suite"
|
||||
)
|
||||
|
||||
type CLISuite struct {
|
||||
suite.Suite
|
||||
homeDir string
|
||||
stdout *bytes.Buffer
|
||||
stderr *bytes.Buffer
|
||||
}
|
||||
|
||||
func TestCLISuite(t *testing.T) {
|
||||
suite.Run(t, new(CLISuite))
|
||||
}
|
||||
|
||||
func (s *CLISuite) SetupTest() {
|
||||
s.homeDir = filepath.Join(s.T().TempDir(), "home")
|
||||
require.NoError(s.T(), os.MkdirAll(s.homeDir, 0o755))
|
||||
require.NoError(s.T(), os.Setenv("HOME", s.homeDir))
|
||||
|
||||
s.stdout = &bytes.Buffer{}
|
||||
s.stderr = &bytes.Buffer{}
|
||||
}
|
||||
|
||||
func (s *CLISuite) TestRun_VersionAliases() {
|
||||
for _, args := range [][]string{{"-v"}, {"--version"}, {"version"}} {
|
||||
s.stdout.Reset()
|
||||
s.stderr.Reset()
|
||||
|
||||
exitCode := cli.Run(args, s.stdout, s.stderr)
|
||||
require.Equal(s.T(), 0, exitCode)
|
||||
require.Equal(s.T(), version.String+"\n", s.stdout.String())
|
||||
require.Empty(s.T(), s.stderr.String())
|
||||
}
|
||||
}
|
||||
|
||||
func (s *CLISuite) TestRun_ShowPath_DefaultCastle() {
|
||||
exitCode := cli.Run([]string{"show_path"}, s.stdout, s.stderr)
|
||||
|
||||
require.Equal(s.T(), 0, exitCode)
|
||||
require.Equal(s.T(), filepath.Join(s.homeDir, ".homesick", "repos", "dotfiles")+"\n", s.stdout.String())
|
||||
require.Empty(s.T(), s.stderr.String())
|
||||
}
|
||||
|
||||
func (s *CLISuite) TestRun_CloneSubcommandHelp() {
|
||||
exitCode := cli.Run([]string{"clone", "--help"}, s.stdout, s.stderr)
|
||||
|
||||
require.Equal(s.T(), 0, exitCode)
|
||||
require.Contains(s.T(), s.stdout.String(), "clone")
|
||||
require.Contains(s.T(), s.stdout.String(), "URI")
|
||||
require.Empty(s.T(), s.stderr.String())
|
||||
}
|
||||
Reference in New Issue
Block a user