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  }