github.com/tonkpils/snag@v1.2.1-0.20160221223445-7f8829737a1d/config_test.go (about) 1 package main 2 3 import ( 4 "os" 5 "regexp" 6 "testing" 7 8 "github.com/stretchr/testify/assert" 9 "github.com/stretchr/testify/require" 10 ) 11 12 func TestParseConfig_CliCmds(t *testing.T) { 13 args := []string{"foo", "bar"} 14 cliCmds = argSlice(args) 15 defer func() { cliCmds = nil }() 16 17 c, err := parseConfig() 18 require.NoError(t, err) 19 assert.Equal(t, args, c.Build) 20 } 21 22 func TestParseConfig_NoSnagFile(t *testing.T) { 23 wd, tmpDir := tmpDirectory(t) 24 defer os.RemoveAll(tmpDir) 25 26 chdir(t, tmpDir) 27 defer os.Chdir(wd) 28 29 _, err := parseConfig() 30 require.Error(t, err) 31 assert.Equal(t, `could not find ".snag.yml" in your current directory`, err.Error()) 32 } 33 34 func TestParseConfig_FunkyYml(t *testing.T) { 35 wd, tmpDir := tmpDirectory(t) 36 defer os.RemoveAll(tmpDir) 37 38 chdir(t, tmpDir) 39 defer os.Chdir(wd) 40 41 writeSnagFile(t, "I like to thing I'm yaml") 42 _, err := parseConfig() 43 require.Error(t, err) 44 rx := regexp.MustCompile(`^could not parse snag file: .+`) 45 assert.Regexp(t, rx, err.Error()) 46 } 47 48 func TestParseConfig_ScriptAndBuild(t *testing.T) { 49 wd, tmpDir := tmpDirectory(t) 50 defer os.RemoveAll(tmpDir) 51 52 chdir(t, tmpDir) 53 defer os.Chdir(wd) 54 55 writeSnagFile(t, "verbose: true\nbuild:\n - echo 'hello'\nscript:\n - echo 'hello'") 56 _, err := parseConfig() 57 require.Error(t, err) 58 assert.Equal(t, "cannot use 'script' and 'build' together. The 'script' tag is deprecated, please use 'build' instead.", err.Error()) 59 } 60 61 func TestParseConfig_Script(t *testing.T) { 62 wd, tmpDir := tmpDirectory(t) 63 defer os.RemoveAll(tmpDir) 64 65 chdir(t, tmpDir) 66 defer os.Chdir(wd) 67 68 writeSnagFile(t, "verbose: true\nscript:\n - echo 'hello'") 69 c, err := parseConfig() 70 require.NoError(t, err) 71 assert.Equal(t, []string{"echo 'hello'"}, c.Build) 72 } 73 74 func TestParseConfig_EmptyBuild(t *testing.T) { 75 wd, tmpDir := tmpDirectory(t) 76 defer os.RemoveAll(tmpDir) 77 78 chdir(t, tmpDir) 79 defer os.Chdir(wd) 80 81 writeSnagFile(t, "verbose: true") 82 _, err := parseConfig() 83 require.Error(t, err) 84 assert.Equal(t, "you must specify at least 1 command.", err.Error()) 85 } 86 87 func TestParseConfig_Verbose(t *testing.T) { 88 verbose = true 89 defer func() { verbose = false }() 90 91 wd, tmpDir := tmpDirectory(t) 92 defer os.RemoveAll(tmpDir) 93 94 chdir(t, tmpDir) 95 defer os.Chdir(wd) 96 97 writeSnagFile(t, "build:\n - echo 'hello'") 98 c, err := parseConfig() 99 require.NoError(t, err) 100 assert.True(t, c.Verbose, "verbosity was not set correctly") 101 }