diff options
author | Matt Holt <[email protected]> | 2015-10-31 10:39:41 -0600 |
---|---|---|
committer | Matt Holt <[email protected]> | 2015-10-31 10:39:41 -0600 |
commit | 96c7c2768c74b6d3c5e05b1f782de1b804264a6a (patch) | |
tree | 19b7f6ee3376dc8f84b7362b53a1f9f95e78e3bc | |
parent | 6a3207627147057989538c2faae060202b18ead5 (diff) | |
parent | 78d857a374350edc275bcf47df040a24b3ec53ff (diff) | |
download | caddy-96c7c2768c74b6d3c5e05b1f782de1b804264a6a.tar.gz caddy-96c7c2768c74b6d3c5e05b1f782de1b804264a6a.zip |
Merge pull request #300 from PatelNDipen/master
startup/shutdown: test file
Also modified NewTestController to include a value for OncePerServerBlock
-rw-r--r-- | config/setup/controller.go | 3 | ||||
-rw-r--r-- | config/setup/startupshutdown_test.go | 58 |
2 files changed, 61 insertions, 0 deletions
diff --git a/config/setup/controller.go b/config/setup/controller.go index 04873082b..3890ab447 100644 --- a/config/setup/controller.go +++ b/config/setup/controller.go @@ -58,6 +58,9 @@ func NewTestController(input string) *Controller { Root: ".", }, Dispenser: parse.NewDispenser("Testfile", strings.NewReader(input)), + OncePerServerBlock: func(f func() error) error { + return f() + }, } } diff --git a/config/setup/startupshutdown_test.go b/config/setup/startupshutdown_test.go new file mode 100644 index 000000000..cf07a7e8c --- /dev/null +++ b/config/setup/startupshutdown_test.go @@ -0,0 +1,58 @@ +package setup + +import ( + "os" + "os/exec" + "path/filepath" + "strconv" + "testing" + "time" +) + +// The Startup function's tests are symmetrical to Shutdown tests, +// because the Startup and Shutdown functions share virtually the +// same functionality +func TestStartup(t *testing.T) { + + tempDirPath, err := getTempDirPath() + if err != nil { + t.Fatalf("BeforeTest: Failed to find an existing directory for testing! Error was: %v", err) + } + + testDir := filepath.Join(tempDirPath, "temp_dir_for_testing_startupshutdown.go") + osSenitiveTestDir := filepath.FromSlash(testDir) + + exec.Command("rm", "-r", osSenitiveTestDir).Run() // removes osSenitiveTestDir from the OS's temp directory, if the osSenitiveTestDir already exists + + tests := []struct { + input string + shouldExecutionErr bool + shouldRemoveErr bool + }{ + // test case #0 tests proper functionality blocking commands + {"startup mkdir " + osSenitiveTestDir, false, false}, + + // test case #1 tests proper functionality of non-blocking commands + {"startup mkdir " + osSenitiveTestDir + " &", false, true}, + + // test case #2 tests handling of non-existant commands + {"startup " + strconv.Itoa(int(time.Now().UnixNano())), true, true}, + } + + for i, test := range tests { + c := NewTestController(test.input) + _, err = Startup(c) + if err != nil { + t.Errorf("Expected no errors, got: %v", err) + } + err = c.Startup[0]() + if err != nil && !test.shouldExecutionErr { + t.Errorf("Test %d recieved an error of:\n%v", i, err) + } + err = os.Remove(osSenitiveTestDir) + if err != nil && !test.shouldRemoveErr { + t.Errorf("Test %d recieved an error of:\n%v", i, err) + } + + } +} |