diff --git a/server/main.go b/server/main.go index 0e3c726..da6a1fd 100644 --- a/server/main.go +++ b/server/main.go @@ -117,11 +117,9 @@ func (s *Server) Start(p *cli.Context) (err error) { e.GET("/ws", s.projects) go e.Start(string(s.Settings.Server.Host) + ":" + strconv.Itoa(s.Settings.Server.Port)) - if s.Open { - _, err = Open("http://" + string(s.Settings.Server.Host) + ":" + strconv.Itoa(s.Settings.Server.Port)) - if err != nil { - return err - } + _, err = s.OpenURL("http://" + string(s.Settings.Server.Host) + ":" + strconv.Itoa(s.Settings.Server.Port)) + if err != nil { + return err } } return nil diff --git a/server/main_test.go b/server/main_test.go new file mode 100644 index 0000000..a5cc025 --- /dev/null +++ b/server/main_test.go @@ -0,0 +1,48 @@ +package server + +import ( + "testing" + "github.com/tockins/realize/settings" + "net/http" +) + +func TestServer_Start(t *testing.T) { + s := settings.Settings{ + Server: settings.Server{ + Status: true, + Open: false, + Host: "localhost", + Port: 5000, + }, + } + server := Server{ + Settings: &s, + } + err := server.Start(nil) + host := "http://localhost:5000/" + urls := []string{ + host, + host+"ws", + host+"assets/js/all.min.js", + host+"assets/css/app.css", + host+"app/components/settings/index.html", + host+"app/components/project/index.html", + host+"app/components/project/index.html", + host+"app/components/index.html", + host+"assets/img/svg/ic_settings_black_24px.svg", + host+"assets/img/svg/ic_fullscreen_black_24px.svg", + host+"assets/img/svg/ic_add_black_24px.svg", + host+"assets/img/svg/ic_keyboard_backspace_black_24px.svg", + host+"assets/img/svg/ic_error_black_48px.svg", + host+"assets/img/svg/ic_remove_black_24px.svg", + host+"assets/img/svg/logo.svg", + host+"assets/img/favicon-32x32.png", + host+"assets/img/svg/ic_swap_vertical_circle_black_48px.svg", + } + for _, elm := range urls { + _, err = http.Get(elm) + if err != nil { + t.Fatal(err) + } + } +} diff --git a/server/open.go b/server/open.go index 25a436c..57cc62f 100644 --- a/server/open.go +++ b/server/open.go @@ -21,17 +21,17 @@ func init() { } // Open a url in the default browser -func Open(url string) (io.Writer, error) { - goos := runtime.GOOS - open, err := cmd[goos] - if !err { - return nil, fmt.Errorf("operating system %q is not supported", goos) +func (s *Server) OpenURL(url string) (io.Writer, error) { + if s.Open { + open, err := cmd[runtime.GOOS] + if !err { + return nil, fmt.Errorf("operating system %q is not supported", runtime.GOOS) + } + cmd := exec.Command(open, url) + cmd.Stderr = &stderr + if err := cmd.Run(); err != nil { + return cmd.Stderr, err + } } - cmd := exec.Command(open, url) - cmd.Stderr = &stderr - if err := cmd.Run(); err != nil { - return cmd.Stderr, err - } - return nil, nil } diff --git a/server/open_test.go b/server/open_test.go new file mode 100644 index 0000000..bb582da --- /dev/null +++ b/server/open_test.go @@ -0,0 +1,28 @@ +package server + +import ( + "testing" + //"fmt" + "fmt" + "github.com/tockins/realize/settings" +) + +func TestOpen(t *testing.T) { + config := settings.Settings{ + Server: settings.Server{ + Open: true, + }, + } + s := Server{ + Settings: &config, + } + url := "open_test" + out, err := s.OpenURL(url) + if err == nil { + t.Fatal("Unexpected, invalid url", url, err) + } + output := fmt.Sprint(out) + if output == "" { + t.Fatal("Unexpected, invalid url", url, output) + } +}