From af42d2a54a6a3f4f33079b6380f83b03d96d77fe Mon Sep 17 00:00:00 2001 From: makpoc Date: Fri, 9 Oct 2015 18:20:28 +0300 Subject: [PATCH 1/2] Add tests for root.go --- config/setup/root_test.go | 99 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 config/setup/root_test.go diff --git a/config/setup/root_test.go b/config/setup/root_test.go new file mode 100644 index 000000000..7394d689f --- /dev/null +++ b/config/setup/root_test.go @@ -0,0 +1,99 @@ +package setup + +import ( + "fmt" + "io/ioutil" + "os" + "path/filepath" + "strings" + "testing" +) + +func TestRoot(t *testing.T) { + + // Predefined error substrings + parseErrContent := "Parse error:" + unableToAccessErroContent := "Unable to access root path" + + existingDirPath, err := getTempDirPath() + if err != nil { + t.Errorf("BeforeTest: Failed to find an existing directory for testing! Error was: %v", err) + } + + nonExistingDir := filepath.Join(existingDirPath, "highly_unlikely_to_exist_dir") + + existingFile, err := ioutil.TempFile("", "root_test") + if err != nil { + t.Errorf("BeforeTest: Failed to create temp file for testing! Error was: %v", err) + } + defer os.Remove(existingFile.Name()) + + unaccessiblePath := filepath.Join(existingFile.Name(), "some_name") + + tests := []struct { + input string + shouldErr bool + expectedRoot string // expected root, set to the controller. Empty for negative cases. + expectedErrContent string // substring from the expected error. Empty for positive cases. + }{ + // positive + { + fmt.Sprintf(`root %s`, nonExistingDir), false, nonExistingDir, "", + }, + { + fmt.Sprintf(`root %s`, existingDirPath), false, existingDirPath, "", + }, + // negative + { + `root `, true, "", parseErrContent, + }, + { + fmt.Sprintf(`root %s`, unaccessiblePath), true, "", unableToAccessErroContent, + }, + { + fmt.Sprintf(`root { + %s + }`, existingDirPath), true, "", parseErrContent, + }, + } + + for i, test := range tests { + c := NewTestController(test.input) + mid, err := Root(c) + if test.shouldErr && err == nil { + t.Errorf("Test %d: Expected error but found nil for input %s", i, test.input) + } + + if err != nil { + if !test.shouldErr { + t.Errorf("Test %d: Expected no error but found one for input %s. Error was: %v", i, test.input, err) + } + + if !strings.Contains(err.Error(), test.expectedErrContent) { + t.Errorf("Test %d: Expected error to contain: %v, found error: %v, input: %s", i, test.expectedErrContent, err, test.input) + } + } + + // the Root method always returns a nil middleware + if mid != nil { + t.Errorf("Middware, returned from Root() was not nil: %v", mid) + } + + // check c.Root only if we are in a positive test. + if !test.shouldErr && test.expectedRoot != c.Root { + t.Errorf("Root not correctly set for input %s. Expected: %s, actual: %s", test.input, test.expectedRoot, c.Root) + } + } +} + +// getTempDirPath returnes the path to the system temp directory. If it does not exists - an error is returned. +func getTempDirPath() (string, error) { + tempDir := os.TempDir() + + _, err := os.Stat(tempDir) + if err != nil { + return "", err + } + + return tempDir, nil +} From e66aa25fcec95e9676f7b360c8a8b46a951d5f43 Mon Sep 17 00:00:00 2001 From: Makpoc Date: Sat, 10 Oct 2015 04:15:25 +0300 Subject: [PATCH 2/2] Fail the test if the configuration fails. --- config/setup/root_test.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/config/setup/root_test.go b/config/setup/root_test.go index 7394d689f..f34e05d2b 100644 --- a/config/setup/root_test.go +++ b/config/setup/root_test.go @@ -13,18 +13,18 @@ func TestRoot(t *testing.T) { // Predefined error substrings parseErrContent := "Parse error:" - unableToAccessErroContent := "Unable to access root path" + unableToAccessErrContent := "Unable to access root path" existingDirPath, err := getTempDirPath() if err != nil { - t.Errorf("BeforeTest: Failed to find an existing directory for testing! Error was: %v", err) + t.Fatalf("BeforeTest: Failed to find an existing directory for testing! Error was: %v", err) } nonExistingDir := filepath.Join(existingDirPath, "highly_unlikely_to_exist_dir") existingFile, err := ioutil.TempFile("", "root_test") if err != nil { - t.Errorf("BeforeTest: Failed to create temp file for testing! Error was: %v", err) + t.Fatalf("BeforeTest: Failed to create temp file for testing! Error was: %v", err) } defer os.Remove(existingFile.Name()) @@ -48,7 +48,7 @@ func TestRoot(t *testing.T) { `root `, true, "", parseErrContent, }, { - fmt.Sprintf(`root %s`, unaccessiblePath), true, "", unableToAccessErroContent, + fmt.Sprintf(`root %s`, unaccessiblePath), true, "", unableToAccessErrContent, }, { fmt.Sprintf(`root {