mirror of
				https://github.com/caddyserver/caddy.git
				synced 2025-11-04 03:27:23 -05:00 
			
		
		
		
	Most of the Windows test failures are due to the path separator not being "/". The general approach I took here was to keep paths in "URL form" (ie using "/" separators) as much as possible, and only convert to native paths when we attempt to open a file. This will allow the most consistency between different host OS. For example, data structures that store paths still store them with "/" delimiters. Functions that accepted paths as input and return them as outputs still use "/". There are still a few test failures that need to be sorted out. - config/setup/TestRoot (I hear this has already been fixed by someone else) - middleware/basicauth/TestBrowseTemplate and middleware/templates/Test (a line endings issue that I'm still working through)
		
			
				
	
	
		
			51 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package setup
 | 
						|
 | 
						|
import (
 | 
						|
	"fmt"
 | 
						|
	"net/http"
 | 
						|
	"strings"
 | 
						|
 | 
						|
	"github.com/mholt/caddy/config/parse"
 | 
						|
	"github.com/mholt/caddy/middleware"
 | 
						|
	"github.com/mholt/caddy/server"
 | 
						|
)
 | 
						|
 | 
						|
// Controller is given to the setup function of middlewares which
 | 
						|
// gives them access to be able to read tokens and set config.
 | 
						|
type Controller struct {
 | 
						|
	*server.Config
 | 
						|
	parse.Dispenser
 | 
						|
}
 | 
						|
 | 
						|
// NewTestController creates a new *Controller for
 | 
						|
// the input specified, with a filename of "Testfile"
 | 
						|
//
 | 
						|
// Used primarily for testing but needs to be exported so
 | 
						|
// add-ons can use this as a convenience.
 | 
						|
func NewTestController(input string) *Controller {
 | 
						|
	return &Controller{
 | 
						|
		Config: &server.Config{
 | 
						|
			Root: ".",
 | 
						|
		},
 | 
						|
		Dispenser: parse.NewDispenser("Testfile", strings.NewReader(input)),
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
// EmptyNext is a no-op function that can be passed into
 | 
						|
// middleware.Middleware functions so that the assignment
 | 
						|
// to the Next field of the Handler can be tested.
 | 
						|
//
 | 
						|
// Used primarily for testing but needs to be exported so
 | 
						|
// add-ons can use this as a convenience.
 | 
						|
var EmptyNext = middleware.HandlerFunc(func(w http.ResponseWriter, r *http.Request) (int, error) {
 | 
						|
	return 0, nil
 | 
						|
})
 | 
						|
 | 
						|
// SameNext does a pointer comparison between next1 and next2.
 | 
						|
//
 | 
						|
// Used primarily for testing but needs to be exported so
 | 
						|
// add-ons can use this as a convenience.
 | 
						|
func SameNext(next1, next2 middleware.Handler) bool {
 | 
						|
	return fmt.Sprintf("%v", next1) == fmt.Sprintf("%v", next2)
 | 
						|
}
 |