github.com/DaAlbrecht/cf-cli@v0.0.0-20231128151943-1fe19bb400b9/util/configv3/config_windows_test.go (about)

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