github.com/mberwanger/updog@v0.0.1/cmd/init_test.go (about) 1 package cmd 2 3 import ( 4 "os" 5 "path/filepath" 6 "testing" 7 8 "github.com/stretchr/testify/require" 9 ) 10 11 func TestInit(t *testing.T) { 12 folder := setupInitTest(t) 13 cmd := newInitCmd().cmd 14 config := "foo.hcl" 15 cmd.SetArgs([]string{"-f", config}) 16 require.NoError(t, cmd.Execute()) 17 require.FileExists(t, filepath.Join(folder, config)) 18 } 19 20 func TestInitFileExists(t *testing.T) { 21 folder := setupInitTest(t) 22 cmd := newInitCmd().cmd 23 path := filepath.Join(folder, "twice.hcl") 24 cmd.SetArgs([]string{"-f", path}) 25 require.NoError(t, cmd.Execute()) 26 require.EqualError(t, cmd.Execute(), "open "+path+": file exists") 27 require.FileExists(t, path) 28 } 29 30 func TestInitFileError(t *testing.T) { 31 folder := setupInitTest(t) 32 cmd := newInitCmd().cmd 33 path := filepath.Join(folder, "nope.hcl") 34 require.NoError(t, os.Chmod(folder, 0o000)) 35 cmd.SetArgs([]string{"-f", path}) 36 require.EqualError(t, cmd.Execute(), "open "+path+": permission denied") 37 } 38 39 func setupInitTest(tb testing.TB) string { 40 tb.Helper() 41 42 folder := tb.TempDir() 43 wd, err := os.Getwd() 44 require.NoError(tb, err) 45 tb.Cleanup(func() { 46 require.NoError(tb, os.Chdir(wd)) 47 }) 48 require.NoError(tb, os.Chdir(folder)) 49 return folder 50 }