summaryrefslogtreecommitdiffhomepage
path: root/config/setup/startupshutdown_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'config/setup/startupshutdown_test.go')
-rw-r--r--config/setup/startupshutdown_test.go58
1 files changed, 58 insertions, 0 deletions
diff --git a/config/setup/startupshutdown_test.go b/config/setup/startupshutdown_test.go
new file mode 100644
index 000000000..d79a000d9
--- /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).Start() // 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)
+ }
+
+ }
+}