summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorMatt Holt <[email protected]>2015-10-31 10:39:41 -0600
committerMatt Holt <[email protected]>2015-10-31 10:39:41 -0600
commit96c7c2768c74b6d3c5e05b1f782de1b804264a6a (patch)
tree19b7f6ee3376dc8f84b7362b53a1f9f95e78e3bc
parent6a3207627147057989538c2faae060202b18ead5 (diff)
parent78d857a374350edc275bcf47df040a24b3ec53ff (diff)
downloadcaddy-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.go3
-rw-r--r--config/setup/startupshutdown_test.go58
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)
+ }
+
+ }
+}