From efcd02de37b99fc9dea08ee0beac97597a6966cb Mon Sep 17 00:00:00 2001 From: NotZippy Date: Thu, 4 May 2017 16:29:21 -0700 Subject: [PATCH] Modified harness to bootstrap using the go engine. Skeleton app updated to use new request code --- harness/harness.go | 10 ++++++---- harness/reflect.go | 12 ++++++++++++ revel/run.go | 7 ++++++- revel/skeleton/app/init.go | 7 +++---- 4 files changed, 27 insertions(+), 9 deletions(-) diff --git a/harness/harness.go b/harness/harness.go index ccb877e..85ef53f 100644 --- a/harness/harness.go +++ b/harness/harness.go @@ -47,10 +47,12 @@ type Harness struct { proxy *httputil.ReverseProxy } -func renderError(w http.ResponseWriter, r *http.Request, err error) { - req, resp := revel.NewRequest(r), revel.NewResponse(w) - c := revel.NewController(req, resp) - c.RenderError(err).Apply(req, resp) +func renderError(iw http.ResponseWriter, ir *http.Request, err error) { + context := revel.NewGOContext(nil) + context.Request.SetRequest(ir) + context.Response.SetResponse(iw) + c := revel.NewController(context) + c.RenderError(err).Apply(c.Request, c.Response) } // ServeHTTP handles all requests. diff --git a/harness/reflect.go b/harness/reflect.go index 77d6007..24e0e94 100644 --- a/harness/reflect.go +++ b/harness/reflect.go @@ -160,8 +160,20 @@ func ProcessSource(roots []string) (*SourceInfo, *revel.Error) { return nil } + // Ignore packages that end with _test + for i := range pkgs { + if len(i) > 6 { + if string(i[len(i)-5:]) == "_test" { + delete(pkgs, i) + } + } + } + // There should be only one package in this directory. if len(pkgs) > 1 { + for i := range pkgs { + println("Found package ", i) + } log.Println("Most unexpected! Multiple packages in a single directory:", pkgs) } diff --git a/revel/run.go b/revel/run.go index a043e3b..4240502 100644 --- a/revel/run.go +++ b/revel/run.go @@ -89,7 +89,12 @@ func parseRunArgs(args []string) *RunArgs { // 1. revel run [import-path] // 2. revel run [port] // 3. revel run [run-mode] - if _, err := build.Import(args[0], "", build.FindOnly); err == nil { + _, err := build.Import(args[0], "", build.FindOnly) + if err != nil { + revel.WARN.Printf("Unable to run using an import path, assuming import path is working directory %s %s", args[0], err.Error()) + } + println("Trying to build with", args[0], err) + if err == nil { // 1st arg is the import path inputArgs.ImportPath = args[0] } else if port, err := strconv.Atoi(args[0]); err == nil { diff --git a/revel/skeleton/app/init.go b/revel/skeleton/app/init.go index 74767e9..2eaa06e 100644 --- a/revel/skeleton/app/init.go +++ b/revel/skeleton/app/init.go @@ -29,7 +29,6 @@ func init() { revel.ActionInvoker, // Invoke the action. } - // register startup functions with OnAppStart // revel.DevMode and revel.RunMode only work inside of OnAppStart. See Example Startup Script // ( order dependent ) @@ -43,9 +42,9 @@ func init() { // should probably also have a filter for CSRF // not sure if it can go in the same filter or not var HeaderFilter = func(c *revel.Controller, fc []revel.Filter) { - c.Response.Out.Header().Add("X-Frame-Options", "SAMEORIGIN") - c.Response.Out.Header().Add("X-XSS-Protection", "1; mode=block") - c.Response.Out.Header().Add("X-Content-Type-Options", "nosniff") + c.Response.SetHttpHeader("X-Frame-Options", "SAMEORIGIN") + c.Response.SetHttpHeader("X-XSS-Protection", "1; mode=block") + c.Response.SetHttpHeader("X-Content-Type-Options", "nosniff") fc[0](c, fc[1:]) // Execute the next filter stage. }