mirror of
				https://github.com/caddyserver/caddy.git
				synced 2025-11-03 19:17:29 -05:00 
			
		
		
		
	Merge pull request #300 from PatelNDipen/master
startup/shutdown: test file Also modified NewTestController to include a value for OncePerServerBlock
This commit is contained in:
		
						commit
						96c7c2768c
					
				@ -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()
 | 
			
		||||
		},
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										58
									
								
								config/setup/startupshutdown_test.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								config/setup/startupshutdown_test.go
									
									
									
									
									
										Normal file
									
								
							@ -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)
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user