From 1d4c088edcab60d1c1bb3397ce0f19b72bba5970 Mon Sep 17 00:00:00 2001 From: Micheal Wilkinson Date: Thu, 19 Mar 2026 14:40:08 +0000 Subject: [PATCH] test(cli): add parser coverage for kong refactor --- internal/homesick/cli/cli_test.go | 62 +++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 internal/homesick/cli/cli_test.go diff --git a/internal/homesick/cli/cli_test.go b/internal/homesick/cli/cli_test.go new file mode 100644 index 0000000..cd97a4e --- /dev/null +++ b/internal/homesick/cli/cli_test.go @@ -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()) +} \ No newline at end of file