github.com/liamawhite/cli-with-i18n@v6.32.1-0.20171122084555-dede0a5c3448+incompatible/util/configv3/config_unix_test.go (about)

     1  // +build !windows
     2  
     3  package configv3_test
     4  
     5  import (
     6  	"fmt"
     7  	"os"
     8  	"path/filepath"
     9  
    10  	. "github.com/liamawhite/cli-with-i18n/util/configv3"
    11  
    12  	. "github.com/onsi/ginkgo"
    13  	. "github.com/onsi/ginkgo/extensions/table"
    14  	. "github.com/onsi/gomega"
    15  )
    16  
    17  var _ = Describe("Verbose", func() {
    18  	var homeDir string
    19  
    20  	BeforeEach(func() {
    21  		homeDir = setup()
    22  	})
    23  
    24  	AfterEach(func() {
    25  		teardown(homeDir)
    26  	})
    27  
    28  	DescribeTable("absolute paths",
    29  		func(env string, configTrace string, flag bool, expected bool, location []string) {
    30  			rawConfig := fmt.Sprintf(`{ "Trace":"%s" }`, configTrace)
    31  			setConfig(homeDir, rawConfig)
    32  
    33  			defer os.Unsetenv("CF_TRACE")
    34  			if env == "" {
    35  				Expect(os.Unsetenv("CF_TRACE")).ToNot(HaveOccurred())
    36  			} else {
    37  				Expect(os.Setenv("CF_TRACE", env)).ToNot(HaveOccurred())
    38  			}
    39  
    40  			config, err := LoadConfig(FlagOverride{
    41  				Verbose: flag,
    42  			})
    43  			Expect(err).ToNot(HaveOccurred())
    44  			Expect(config).ToNot(BeNil())
    45  
    46  			verbose, parsedLocation := config.Verbose()
    47  			Expect(verbose).To(Equal(expected))
    48  			Expect(parsedLocation).To(Equal(location))
    49  		},
    50  
    51  		Entry("CF_TRACE true: enables verbose", "true", "", false, true, nil),
    52  		Entry("CF_TRACE true, config trace false: enables verbose", "true", "false", false, true, nil),
    53  		Entry("CF_TRACE true, config trace file path: enables verbose AND logging to file", "true", "/foo/bar", false, true, []string{"/foo/bar"}),
    54  
    55  		Entry("CF_TRACE false: disables verbose", "false", "", false, false, nil),
    56  		Entry("CF_TRACE false, '-v': enables verbose", "false", "", true, true, nil),
    57  		Entry("CF_TRACE false, config trace true: disables verbose", "false", "true", false, false, nil),
    58  		Entry("CF_TRACE false, config trace file path: enables logging to file", "false", "/foo/bar", false, false, []string{"/foo/bar"}),
    59  		Entry("CF_TRACE false, config trace file path, '-v': enables verbose AND logging to file", "false", "/foo/bar", true, true, []string{"/foo/bar"}),
    60  
    61  		Entry("CF_TRACE empty: disables verbose", "", "", false, false, nil),
    62  		Entry("CF_TRACE empty:, '-v': enables verbose", "", "", true, true, nil),
    63  		Entry("CF_TRACE empty, config trace true: enables verbose", "", "true", false, true, nil),
    64  		Entry("CF_TRACE empty, config trace file path: enables logging to file", "", "/foo/bar", false, false, []string{"/foo/bar"}),
    65  		Entry("CF_TRACE empty, config trace file path, '-v': enables verbose AND logging to file", "", "/foo/bar", true, true, []string{"/foo/bar"}),
    66  
    67  		Entry("CF_TRACE filepath: enables logging to file", "/foo/bar", "", false, false, []string{"/foo/bar"}),
    68  		Entry("CF_TRACE filepath, '-v': enables logging to file", "/foo/bar", "", true, true, []string{"/foo/bar"}),
    69  		Entry("CF_TRACE filepath, config trace true: enables verbose AND logging to file", "/foo/bar", "true", false, true, []string{"/foo/bar"}),
    70  		Entry("CF_TRACE filepath, config trace filepath: enables logging to file for BOTH paths", "/foo/bar", "/baz", false, false, []string{"/foo/bar", "/baz"}),
    71  		Entry("CF_TRACE filepath, config trace filepath, '-v': enables verbose AND logging to file for BOTH paths", "/foo/bar", "/baz", true, true, []string{"/foo/bar", "/baz"}),
    72  	)
    73  
    74  	Context("relative paths (cannot be tested in DescribeTable)", func() {
    75  		It("resolves relative paths into absolute paths", func() {
    76  			configTrace := "foo/bar"
    77  
    78  			rawConfig := fmt.Sprintf(`{ "Trace":"%s" }`, configTrace)
    79  			setConfig(homeDir, rawConfig)
    80  
    81  			cfTrace := "foo2/bar2"
    82  			Expect(os.Setenv("CF_TRACE", cfTrace)).ToNot(HaveOccurred())
    83  			defer os.Unsetenv("CF_TRACE")
    84  
    85  			config, err := LoadConfig(FlagOverride{})
    86  			Expect(err).ToNot(HaveOccurred())
    87  			Expect(config).ToNot(BeNil())
    88  
    89  			cwd, err := os.Getwd()
    90  			Expect(err).ToNot(HaveOccurred())
    91  			_, parsedLocation := config.Verbose()
    92  			Expect(parsedLocation).To(Equal([]string{filepath.Join(cwd, cfTrace), filepath.Join(cwd, configTrace)}))
    93  		})
    94  	})
    95  })