From 5a73043c4e64798c3ed6cde835213a5011ca7e53 Mon Sep 17 00:00:00 2001 From: Mura Li Date: Wed, 18 Jan 2017 20:00:27 +0800 Subject: [PATCH 01/65] Implement '/api/v1/version' --- routers/api/v1/api.go | 1 + routers/api/v1/misc/version.go | 10 ++++++ tests/internal/utils/utils.go | 66 ++++++++++++++++++++++++++++++++++ tests/run.bash | 3 ++ tests/version_test.go | 47 ++++++++++++++++++++++++ 5 files changed, 127 insertions(+) create mode 100644 routers/api/v1/misc/version.go create mode 100644 tests/internal/utils/utils.go create mode 100755 tests/run.bash create mode 100644 tests/version_test.go diff --git a/routers/api/v1/api.go b/routers/api/v1/api.go index 9431dac0172b6..554f48791f649 100644 --- a/routers/api/v1/api.go +++ b/routers/api/v1/api.go @@ -232,6 +232,7 @@ func RegisterRoutes(m *macaron.Macaron) { m.Group("/v1", func() { // Miscellaneous + m.Get("/version", misc.ServerVersion) m.Post("/markdown", bind(api.MarkdownOption{}), misc.Markdown) m.Post("/markdown/raw", misc.MarkdownRaw) diff --git a/routers/api/v1/misc/version.go b/routers/api/v1/misc/version.go new file mode 100644 index 0000000000000..30915f665a17d --- /dev/null +++ b/routers/api/v1/misc/version.go @@ -0,0 +1,10 @@ +package misc + +import ( + "code.gitea.io/gitea/modules/context" + "code.gitea.io/gitea/modules/setting" +) + +func ServerVersion(ctx *context.APIContext) { + ctx.Write([]byte(setting.AppVer)) +} diff --git a/tests/internal/utils/utils.go b/tests/internal/utils/utils.go new file mode 100644 index 0000000000000..99c70383596e8 --- /dev/null +++ b/tests/internal/utils/utils.go @@ -0,0 +1,66 @@ +package utils + +import ( + "errors" + "fmt" + "os" + "os/exec" + "path/filepath" + "syscall" + "time" +) + +type Config struct { + // The executable path of the tested program. + Program string + // Working directory prepared for the tested program. + // If empty, a directory named with random suffixes is picked, and created under the current directory. + // The directory will be removed when the test finishes. + WorkDir string + // Command-line arguments passed to the tested program. + Args []string +} + +// Helper function for setting up a running Gitea server for functional testing and then gracefully terminating it. +func (c *Config) RunTest(testFunc func() error) error { + if c.Program == "" { + return errors.New("Need input file") + } + + workdir := c.WorkDir + if workdir == "" { + workdir = fmt.Sprintf("gitea-%s-%10d", filepath.Base(c.Program), time.Now().UnixNano()) + if err := os.Mkdir(workdir, 0700); err != nil { + return err + } + defer os.Remove(workdir) + } + + fullpath, err := filepath.Abs(c.Program) + if err != nil { + return err + } + + cmd := exec.Command(fullpath, c.Args...) + cmd.Dir = workdir + if err := cmd.Start(); err != nil { + return err + } + + if err := testFunc(); err != nil { + return err + } + + if err := cmd.Process.Signal(syscall.SIGTERM); err != nil { + return err + } + + if err := cmd.Wait(); err != nil { + if err.Error() != "signal: terminated" { + return err + } + } + + fmt.Fprintln(os.Stderr, "Passed") + return nil +} diff --git a/tests/run.bash b/tests/run.bash new file mode 100755 index 0000000000000..528bc8d1727e5 --- /dev/null +++ b/tests/run.bash @@ -0,0 +1,3 @@ +#!/bin/bash -e + +go test -ldflags "-X code.gitea.io/gitea/tests.Version=$(git describe --tags --always | sed 's/-/+/' | sed 's/^v//')" diff --git a/tests/version_test.go b/tests/version_test.go new file mode 100644 index 0000000000000..5739583bf0df9 --- /dev/null +++ b/tests/version_test.go @@ -0,0 +1,47 @@ +package tests + +import ( + "bytes" + "errors" + "fmt" + "io/ioutil" + "log" + "net/http" + "testing" + + "code.gitea.io/gitea/tests/internal/utils" +) + +var Version string + +func TestVersion(t *testing.T) { + conf := utils.Config{ + Program: "../gitea", + WorkDir: "", + Args: []string{"web", "--port", "3001"}, + } + + if err := conf.RunTest(func() error { + for i := 0; i > 10; i++ { + r, err := http.Get("http://:3001/api/v1/version") + if err != nil { + return err + } + } + defer r.Body.Close() + + buf, err := ioutil.ReadAll(r.Body) + if err != nil { + return err + } + + actual := bytes.TrimSpace(buf) + expected := []byte(Version) + if !bytes.Equal(actual, expected) { + return errors.New(fmt.Sprintf("Do not match! (\"%s\" != \"%s\")", string(actual), string(expected))) + } + return nil + }); err != nil { + log.Fatal(err) + } +} From 447b802f9afee4cbdab843b4ac07ad40c549ca75 Mon Sep 17 00:00:00 2001 From: Mura Li Date: Thu, 19 Jan 2017 11:47:41 +0800 Subject: [PATCH 02/65] Cleanup and various fixes --- tests/internal/utils/utils.go | 77 +++++++++++++++++++++++++++-------- tests/version_test.go | 36 +++++++++++++--- 2 files changed, 91 insertions(+), 22 deletions(-) diff --git a/tests/internal/utils/utils.go b/tests/internal/utils/utils.go index 99c70383596e8..8bc6257f9bcc2 100644 --- a/tests/internal/utils/utils.go +++ b/tests/internal/utils/utils.go @@ -3,6 +3,8 @@ package utils import ( "errors" "fmt" + "io" + "log" "os" "os/exec" "path/filepath" @@ -19,48 +21,91 @@ type Config struct { WorkDir string // Command-line arguments passed to the tested program. Args []string + + // Where to redirect the stdout/stderr to. For debugging purposes. + LogFile *os.File +} + +func redirect(cmd *exec.Cmd, f *os.File) error { + stdout, err := cmd.StdoutPipe() + if err != nil { + return err + } + + stderr, err := cmd.StderrPipe() + if err != nil { + return err + } + + go io.Copy(os.Stderr, stdout) + go io.Copy(os.Stdout, stderr) + return nil } // Helper function for setting up a running Gitea server for functional testing and then gracefully terminating it. -func (c *Config) RunTest(testFunc func() error) error { +func (c *Config) RunTest(testFunc func() error) (err error) { if c.Program == "" { return errors.New("Need input file") } + path, err := filepath.Abs(c.Program) + if err != nil { + return err + } + workdir := c.WorkDir if workdir == "" { - workdir = fmt.Sprintf("gitea-%s-%10d", filepath.Base(c.Program), time.Now().UnixNano()) + workdir, err = filepath.Abs(fmt.Sprintf("%s-%10d", filepath.Base(c.Program), time.Now().UnixNano())) + if err != nil { + return err + } if err := os.Mkdir(workdir, 0700); err != nil { return err } - defer os.Remove(workdir) + defer os.RemoveAll(workdir) } - fullpath, err := filepath.Abs(c.Program) - if err != nil { + newpath := filepath.Join(workdir, filepath.Base(path)) + if err := os.Link(path, newpath); err != nil { return err } - cmd := exec.Command(fullpath, c.Args...) + log.Printf("Starting the server: %s args:%s workdir:%s", newpath, c.Args, workdir) + + cmd := exec.Command(newpath, c.Args...) cmd.Dir = workdir - if err := cmd.Start(); err != nil { - return err - } - if err := testFunc(); err != nil { - return err + if c.LogFile != nil { + if err := redirect(cmd, c.LogFile); err != nil { + return err + } } - if err := cmd.Process.Signal(syscall.SIGTERM); err != nil { + if err := cmd.Start(); err != nil { return err } - if err := cmd.Wait(); err != nil { - if err.Error() != "signal: terminated" { - return err + log.Println("Done.") + + defer func() { + if _err := cmd.Process.Signal(syscall.SIGTERM); err != nil { + err = _err + return + } + + if _err := cmd.Wait(); err != nil { + if err.Error() != "signal: terminated" { + err = _err + return + } } + + log.Println("Server exited") + }() + + if err := testFunc(); err != nil { + return err } - fmt.Fprintln(os.Stderr, "Passed") return nil } diff --git a/tests/version_test.go b/tests/version_test.go index 5739583bf0df9..ee58a89d02032 100644 --- a/tests/version_test.go +++ b/tests/version_test.go @@ -7,11 +7,15 @@ import ( "io/ioutil" "log" "net/http" + "os" "testing" + "time" "code.gitea.io/gitea/tests/internal/utils" ) +const RetryLimit = 10 + var Version string func TestVersion(t *testing.T) { @@ -19,15 +23,32 @@ func TestVersion(t *testing.T) { Program: "../gitea", WorkDir: "", Args: []string{"web", "--port", "3001"}, + //LogFile: os.Stderr, + } + + if Version == "" { + log.Fatal("Please specify the version string via '-ldflags -X' for the package") } if err := conf.RunTest(func() error { - for i := 0; i > 10; i++ { - r, err := http.Get("http://:3001/api/v1/version") - if err != nil { - return err + var r *http.Response + var err error + + for i := 0; i < RetryLimit; i++ { + // Give the server some amount of time to warm up. + time.Sleep(500 * time.Millisecond) + + r, err = http.Get("http://:3001/api/v1/version") + if err == nil { + break } + fmt.Fprintf(os.Stderr, "Retry %d\n", i) } + + if err != nil { + return err + } + defer r.Body.Close() buf, err := ioutil.ReadAll(r.Body) @@ -37,11 +58,14 @@ func TestVersion(t *testing.T) { actual := bytes.TrimSpace(buf) expected := []byte(Version) + + log.Printf("Actual: \"%s\"\n", string(actual)) + log.Printf("Expected: \"%s\"\n", string(expected)) if !bytes.Equal(actual, expected) { - return errors.New(fmt.Sprintf("Do not match! (\"%s\" != \"%s\")", string(actual), string(expected))) + return errors.New(fmt.Sprintf("Do not match!")) } return nil }); err != nil { - log.Fatal(err) + t.Fatal(err) } } From 6ab462250812675166c880acd157c9db59b37abb Mon Sep 17 00:00:00 2001 From: Mura Li Date: Tue, 24 Jan 2017 14:36:30 +0800 Subject: [PATCH 03/65] Enhance run.sh --- tests/run.bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/run.bash b/tests/run.bash index 528bc8d1727e5..f7f06bd786e8b 100755 --- a/tests/run.bash +++ b/tests/run.bash @@ -1,3 +1,3 @@ #!/bin/bash -e -go test -ldflags "-X code.gitea.io/gitea/tests.Version=$(git describe --tags --always | sed 's/-/+/' | sed 's/^v//')" +go test -ldflags "-X code.gitea.io/gitea/tests.Version=$(git describe --tags --always | sed 's/-/+/' | sed 's/^v//')" $@ From 1f41c0b4de014ffdd42edcfd8fe146e9163e97b9 Mon Sep 17 00:00:00 2001 From: Mura Li Date: Tue, 24 Jan 2017 14:36:49 +0800 Subject: [PATCH 04/65] Add install_test.go --- tests/install_test.go | 93 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 tests/install_test.go diff --git a/tests/install_test.go b/tests/install_test.go new file mode 100644 index 0000000000000..196a05bcdeabb --- /dev/null +++ b/tests/install_test.go @@ -0,0 +1,93 @@ +package tests + +import ( + "fmt" + "io/ioutil" + "net/http" + "os" + "os/user" + "path/filepath" + "testing" + "time" + + "code.gitea.io/gitea/tests/internal/utils" +) + +const _RetryLimit = 10 + +//"db_user": {}, +//"db_passwd": {}, +//"db_name": {}, + +func makeSimpleSettings(user, workdir, port string) map[string][]string { + return map[string][]string{ + "db_type": {"SQLite3"}, + "db_host": {"localhost"}, + "db_path": {workdir + "data/gitea.db"}, + "app_name": {"Gitea: Git with a cup of tea"}, + "repo_root_path": {workdir + "repositories"}, + "run_user": {user}, + "domain": {"localhost"}, + "ssh_port": {"22"}, + "http_port": {port}, + "app_url": {"http://localhost:" + port}, + "log_root_path": {workdir + "log"}, + } +} + +func TestInstall(t *testing.T) { + conf := utils.Config{ + Program: "../gitea", + WorkDir: "", + Args: []string{"web", "--port", "3001"}, + //LogFile: os.Stderr, + } + + if err := conf.RunTest(func() error { + var r *http.Response + var err error + + for i := 0; i < _RetryLimit; i++ { + // Give the server some amount of time to warm up. + time.Sleep(500 * time.Millisecond) + + r, err = http.Get("http://:3001/") + if err == nil { + break + } + fmt.Fprintf(os.Stderr, "Retry %d\n", i) + } + + if err != nil { + return err + } + + defer r.Body.Close() + + _user, err := user.Current() + if err != nil { + return err + } + + path, err := filepath.Abs(conf.WorkDir) + if err != nil { + return err + } + + settings := makeSimpleSettings(_user.Username, path, "3001") + resp, err := http.PostForm("http://:3001/install", settings) + if err != nil { + return err + } + defer resp.Body.Close() + + buf, err := ioutil.ReadAll(resp.Body) + if err != nil { + return err + } + fmt.Printf("%s\n", buf) + return nil + }); err != nil { + t.Fatal(err) + } +} From 4e41eb1f46bf854a33b21066fd2304b6a16f5a7a Mon Sep 17 00:00:00 2001 From: Mura Li Date: Tue, 24 Jan 2017 14:50:17 +0800 Subject: [PATCH 05/65] Add parameter utils.Config for testing handlers --- tests/install_test.go | 94 +++++++++++++++++------------------ tests/internal/utils/utils.go | 8 +-- tests/version_test.go | 2 +- 3 files changed, 52 insertions(+), 52 deletions(-) diff --git a/tests/install_test.go b/tests/install_test.go index 196a05bcdeabb..c47f6d10933bd 100644 --- a/tests/install_test.go +++ b/tests/install_test.go @@ -15,10 +15,6 @@ import ( const _RetryLimit = 10 -//"db_user": {}, -//"db_passwd": {}, -//"db_name": {}, - func makeSimpleSettings(user, workdir, port string) map[string][]string { return map[string][]string{ "db_type": {"SQLite3"}, @@ -35,59 +31,61 @@ func makeSimpleSettings(user, workdir, port string) map[string][]string { } } -func TestInstall(t *testing.T) { - conf := utils.Config{ - Program: "../gitea", - WorkDir: "", - Args: []string{"web", "--port", "3001"}, - //LogFile: os.Stderr, - } +func Install(conf *utils.Config) error { + var r *http.Response + var err error - if err := conf.RunTest(func() error { - var r *http.Response - var err error + for i := 0; i < _RetryLimit; i++ { + // Give the server some amount of time to warm up. + time.Sleep(500 * time.Millisecond) - for i := 0; i < _RetryLimit; i++ { - // Give the server some amount of time to warm up. - time.Sleep(500 * time.Millisecond) - - r, err = http.Get("http://:3001/") - if err == nil { - break - } - fmt.Fprintf(os.Stderr, "Retry %d\n", i) + r, err = http.Get("http://:3001/") + if err == nil { + break } + fmt.Fprintf(os.Stderr, "Retry %d\n", i) + } - if err != nil { - return err - } + if err != nil { + return err + } - defer r.Body.Close() + defer r.Body.Close() - _user, err := user.Current() - if err != nil { - return err - } + _user, err := user.Current() + if err != nil { + return err + } - path, err := filepath.Abs(conf.WorkDir) - if err != nil { - return err - } + path, err := filepath.Abs(conf.WorkDir) + if err != nil { + return err + } - settings := makeSimpleSettings(_user.Username, path, "3001") - resp, err := http.PostForm("http://:3001/install", settings) - if err != nil { - return err - } - defer resp.Body.Close() + settings := makeSimpleSettings(_user.Username, path, "3001") + resp, err := http.PostForm("http://:3001/install", settings) + if err != nil { + return err + } + defer resp.Body.Close() - buf, err := ioutil.ReadAll(resp.Body) - if err != nil { - return err - } - fmt.Printf("%s\n", buf) - return nil - }); err != nil { + buf, err := ioutil.ReadAll(resp.Body) + if err != nil { + return err + } + fmt.Printf("%s\n", buf) + return nil +} + +func TestInstall(t *testing.T) { + conf := utils.Config{ + Program: "../gitea", + WorkDir: "", + Args: []string{"web", "--port", "3001"}, + //LogFile: os.Stderr, + } + + if err := conf.RunTest(Install); err != nil { t.Fatal(err) } } diff --git a/tests/internal/utils/utils.go b/tests/internal/utils/utils.go index 8bc6257f9bcc2..31f9043553c90 100644 --- a/tests/internal/utils/utils.go +++ b/tests/internal/utils/utils.go @@ -43,7 +43,7 @@ func redirect(cmd *exec.Cmd, f *os.File) error { } // Helper function for setting up a running Gitea server for functional testing and then gracefully terminating it. -func (c *Config) RunTest(testFunc func() error) (err error) { +func (c *Config) RunTest(tests ...func(*Config) error) (err error) { if c.Program == "" { return errors.New("Need input file") } @@ -103,8 +103,10 @@ func (c *Config) RunTest(testFunc func() error) (err error) { log.Println("Server exited") }() - if err := testFunc(); err != nil { - return err + for _, fn := range tests { + if err := fn(c); err != nil { + return err + } } return nil diff --git a/tests/version_test.go b/tests/version_test.go index ee58a89d02032..ffa68e4bcb267 100644 --- a/tests/version_test.go +++ b/tests/version_test.go @@ -30,7 +30,7 @@ func TestVersion(t *testing.T) { log.Fatal("Please specify the version string via '-ldflags -X' for the package") } - if err := conf.RunTest(func() error { + if err := conf.RunTest(func(*utils.Config) error { var r *http.Response var err error From 8ab6fb9043d9a9af00c29608aea12156ab0fa1aa Mon Sep 17 00:00:00 2001 From: Mura Li Date: Tue, 24 Jan 2017 14:58:07 +0800 Subject: [PATCH 06/65] Re-organize TestVersion.go --- tests/version_test.go | 74 ++++++++++++++++++++++--------------------- 1 file changed, 38 insertions(+), 36 deletions(-) diff --git a/tests/version_test.go b/tests/version_test.go index ffa68e4bcb267..c0582f0200211 100644 --- a/tests/version_test.go +++ b/tests/version_test.go @@ -18,6 +18,43 @@ const RetryLimit = 10 var Version string +func Version_(c *utils.Config) error { + var r *http.Response + var err error + + for i := 0; i < RetryLimit; i++ { + // Give the server some amount of time to warm up. + time.Sleep(500 * time.Millisecond) + + r, err = http.Get("http://:3001/api/v1/version") + if err == nil { + break + } + fmt.Fprintf(os.Stderr, "Retry %d\n", i) + } + + if err != nil { + return err + } + + defer r.Body.Close() + + buf, err := ioutil.ReadAll(r.Body) + if err != nil { + return err + } + + actual := bytes.TrimSpace(buf) + expected := []byte(Version) + + log.Printf("Actual: \"%s\"\n", string(actual)) + log.Printf("Expected: \"%s\"\n", string(expected)) + if !bytes.Equal(actual, expected) { + return errors.New(fmt.Sprintf("Do not match!")) + } + return nil +} + func TestVersion(t *testing.T) { conf := utils.Config{ Program: "../gitea", @@ -30,42 +67,7 @@ func TestVersion(t *testing.T) { log.Fatal("Please specify the version string via '-ldflags -X' for the package") } - if err := conf.RunTest(func(*utils.Config) error { - var r *http.Response - var err error - - for i := 0; i < RetryLimit; i++ { - // Give the server some amount of time to warm up. - time.Sleep(500 * time.Millisecond) - - r, err = http.Get("http://:3001/api/v1/version") - if err == nil { - break - } - fmt.Fprintf(os.Stderr, "Retry %d\n", i) - } - - if err != nil { - return err - } - - defer r.Body.Close() - - buf, err := ioutil.ReadAll(r.Body) - if err != nil { - return err - } - - actual := bytes.TrimSpace(buf) - expected := []byte(Version) - - log.Printf("Actual: \"%s\"\n", string(actual)) - log.Printf("Expected: \"%s\"\n", string(expected)) - if !bytes.Equal(actual, expected) { - return errors.New(fmt.Sprintf("Do not match!")) - } - return nil - }); err != nil { + if err := conf.RunTest(Install, Version_); err != nil { t.Fatal(err) } } From 1f7a314535ea46de6b70f83597c37f9e1314887d Mon Sep 17 00:00:00 2001 From: Mura Li Date: Tue, 24 Jan 2017 15:33:36 +0800 Subject: [PATCH 07/65] Rename functions --- tests/install_test.go | 4 ++-- tests/version_test.go | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/tests/install_test.go b/tests/install_test.go index c47f6d10933bd..022007e3fb1da 100644 --- a/tests/install_test.go +++ b/tests/install_test.go @@ -31,7 +31,7 @@ func makeSimpleSettings(user, workdir, port string) map[string][]string { } } -func Install(conf *utils.Config) error { +func install(conf *utils.Config) error { var r *http.Response var err error @@ -85,7 +85,7 @@ func TestInstall(t *testing.T) { //LogFile: os.Stderr, } - if err := conf.RunTest(Install); err != nil { + if err := conf.RunTest(install); err != nil { t.Fatal(err) } } diff --git a/tests/version_test.go b/tests/version_test.go index c0582f0200211..74ca187ccf717 100644 --- a/tests/version_test.go +++ b/tests/version_test.go @@ -67,7 +67,8 @@ func TestVersion(t *testing.T) { log.Fatal("Please specify the version string via '-ldflags -X' for the package") } - if err := conf.RunTest(Install, Version_); err != nil { + if err := conf.RunTest(install, version); err != nil { + fmt.Fprintf(os.Stderr, "ADDE") t.Fatal(err) } } From fcf470c5184fc8ac34b7a6de1bff44f2c4a358a9 Mon Sep 17 00:00:00 2001 From: Mura Li Date: Tue, 24 Jan 2017 15:34:03 +0800 Subject: [PATCH 08/65] handling process cleanup properly --- tests/internal/utils/utils.go | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/tests/internal/utils/utils.go b/tests/internal/utils/utils.go index 31f9043553c90..79c7bea6a2034 100644 --- a/tests/internal/utils/utils.go +++ b/tests/internal/utils/utils.go @@ -88,13 +88,11 @@ func (c *Config) RunTest(tests ...func(*Config) error) (err error) { log.Println("Done.") defer func() { - if _err := cmd.Process.Signal(syscall.SIGTERM); err != nil { - err = _err - return - } + // Do not early return. We have to call Wait anyway. + _ = cmd.Process.Signal(syscall.SIGTERM) - if _err := cmd.Wait(); err != nil { - if err.Error() != "signal: terminated" { + if _err := cmd.Wait(); _err != nil { + if _err.Error() != "signal: terminated" { err = _err return } From 86f12e1ef399a1f4d8f1f714fc610cc74e1377a0 Mon Sep 17 00:00:00 2001 From: Mura Li Date: Tue, 24 Jan 2017 15:34:44 +0800 Subject: [PATCH 09/65] Fix missing function renaming --- tests/version_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/version_test.go b/tests/version_test.go index 74ca187ccf717..bccd4fe6c96cc 100644 --- a/tests/version_test.go +++ b/tests/version_test.go @@ -18,7 +18,7 @@ const RetryLimit = 10 var Version string -func Version_(c *utils.Config) error { +func version(c *utils.Config) error { var r *http.Response var err error From 8a9826873934c8127516e3ac6f825920aaaa3a74 Mon Sep 17 00:00:00 2001 From: Mura Li Date: Tue, 24 Jan 2017 15:35:04 +0800 Subject: [PATCH 10/65] Cleanup the 'retry' logic --- tests/version_test.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/version_test.go b/tests/version_test.go index bccd4fe6c96cc..8f72391e3099b 100644 --- a/tests/version_test.go +++ b/tests/version_test.go @@ -23,14 +23,14 @@ func version(c *utils.Config) error { var err error for i := 0; i < RetryLimit; i++ { - // Give the server some amount of time to warm up. - time.Sleep(500 * time.Millisecond) - r, err = http.Get("http://:3001/api/v1/version") if err == nil { break } + + // Give the server some amount of time to warm up. fmt.Fprintf(os.Stderr, "Retry %d\n", i) + time.Sleep(500 * time.Millisecond) } if err != nil { From 56c9278ded2e5ea44277a2b5292b9f7a459801a3 Mon Sep 17 00:00:00 2001 From: Mura Li Date: Tue, 24 Jan 2017 15:39:55 +0800 Subject: [PATCH 11/65] Cleanup --- tests/version_test.go | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/tests/version_test.go b/tests/version_test.go index 8f72391e3099b..6494ea27b0983 100644 --- a/tests/version_test.go +++ b/tests/version_test.go @@ -2,7 +2,6 @@ package tests import ( "bytes" - "errors" "fmt" "io/ioutil" "log" @@ -47,10 +46,9 @@ func version(c *utils.Config) error { actual := bytes.TrimSpace(buf) expected := []byte(Version) - log.Printf("Actual: \"%s\"\n", string(actual)) - log.Printf("Expected: \"%s\"\n", string(expected)) + log.Printf("Actual: \"%s\" <> Expected: %s\n", string(actual), string(expected)) if !bytes.Equal(actual, expected) { - return errors.New(fmt.Sprintf("Do not match!")) + return fmt.Errorf("Do not match!") } return nil } @@ -68,7 +66,6 @@ func TestVersion(t *testing.T) { } if err := conf.RunTest(install, version); err != nil { - fmt.Fprintf(os.Stderr, "ADDE") t.Fatal(err) } } From a62c847a917054f6774e39798c9a8398e1b4457a Mon Sep 17 00:00:00 2001 From: Mura Li Date: Tue, 24 Jan 2017 15:40:17 +0800 Subject: [PATCH 12/65] Remove unneeded logging code --- tests/install_test.go | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/tests/install_test.go b/tests/install_test.go index 022007e3fb1da..d4e633a2d9546 100644 --- a/tests/install_test.go +++ b/tests/install_test.go @@ -2,7 +2,6 @@ package tests import ( "fmt" - "io/ioutil" "net/http" "os" "os/user" @@ -69,11 +68,7 @@ func install(conf *utils.Config) error { } defer resp.Body.Close() - buf, err := ioutil.ReadAll(resp.Body) - if err != nil { - return err - } - fmt.Printf("%s\n", buf) + _ = resp return nil } From 1137e7ae9d6476d3a9f212182af2dde36d225f3b Mon Sep 17 00:00:00 2001 From: Mura Li Date: Tue, 24 Jan 2017 15:42:05 +0800 Subject: [PATCH 13/65] Logging messages tweaking --- tests/version_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/version_test.go b/tests/version_test.go index 6494ea27b0983..48334c0cc826c 100644 --- a/tests/version_test.go +++ b/tests/version_test.go @@ -46,7 +46,7 @@ func version(c *utils.Config) error { actual := bytes.TrimSpace(buf) expected := []byte(Version) - log.Printf("Actual: \"%s\" <> Expected: %s\n", string(actual), string(expected)) + log.Printf("Actual: \"%s\" Expected: %s\n", string(actual), string(expected)) if !bytes.Equal(actual, expected) { return fmt.Errorf("Do not match!") } From f8775f860dce181af030294358c25b5c2cb6ee3c Mon Sep 17 00:00:00 2001 From: Mura Li Date: Tue, 24 Jan 2017 15:43:57 +0800 Subject: [PATCH 14/65] Logging message tweaking --- tests/internal/utils/utils.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/internal/utils/utils.go b/tests/internal/utils/utils.go index 79c7bea6a2034..37e37ee22b593 100644 --- a/tests/internal/utils/utils.go +++ b/tests/internal/utils/utils.go @@ -85,7 +85,7 @@ func (c *Config) RunTest(tests ...func(*Config) error) (err error) { return err } - log.Println("Done.") + log.Println("Server started.") defer func() { // Do not early return. We have to call Wait anyway. From a5f9e7db79286e06934fe6e0c3fbed45432ff02a Mon Sep 17 00:00:00 2001 From: Mura Li Date: Tue, 24 Jan 2017 16:16:21 +0800 Subject: [PATCH 15/65] Fix logging messages --- tests/version_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/version_test.go b/tests/version_test.go index 48334c0cc826c..ca171f7839645 100644 --- a/tests/version_test.go +++ b/tests/version_test.go @@ -46,7 +46,7 @@ func version(c *utils.Config) error { actual := bytes.TrimSpace(buf) expected := []byte(Version) - log.Printf("Actual: \"%s\" Expected: %s\n", string(actual), string(expected)) + log.Printf("Actual: \"%s\" Expected: \"%s\"\n", string(actual), string(expected)) if !bytes.Equal(actual, expected) { return fmt.Errorf("Do not match!") } From 6b8b09af33d60635a4ec053b647ddbcc39f2720a Mon Sep 17 00:00:00 2001 From: Mura Li Date: Tue, 24 Jan 2017 16:47:01 +0800 Subject: [PATCH 16/65] Use 'const' instead of hardwired numbers --- tests/version_test.go | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/tests/version_test.go b/tests/version_test.go index ca171f7839645..6919031de26f1 100644 --- a/tests/version_test.go +++ b/tests/version_test.go @@ -13,7 +13,10 @@ import ( "code.gitea.io/gitea/tests/internal/utils" ) -const RetryLimit = 10 +const ( + ServerHttpPort = "3001" + RetryLimit = 10 +) var Version string @@ -22,7 +25,7 @@ func version(c *utils.Config) error { var err error for i := 0; i < RetryLimit; i++ { - r, err = http.Get("http://:3001/api/v1/version") + r, err = http.Get("http://:" + ServerHttpPort + "/api/v1/version") if err == nil { break } @@ -57,7 +60,7 @@ func TestVersion(t *testing.T) { conf := utils.Config{ Program: "../gitea", WorkDir: "", - Args: []string{"web", "--port", "3001"}, + Args: []string{"web", "--port", ServerHttpPort}, //LogFile: os.Stderr, } From b603a31e607afcdc3b8f212c10df3d97fa8ac7dd Mon Sep 17 00:00:00 2001 From: Mura Li Date: Tue, 24 Jan 2017 16:52:50 +0800 Subject: [PATCH 17/65] We don't really need retries anymore --- tests/version_test.go | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/tests/version_test.go b/tests/version_test.go index 6919031de26f1..265e67f95e318 100644 --- a/tests/version_test.go +++ b/tests/version_test.go @@ -6,17 +6,13 @@ import ( "io/ioutil" "log" "net/http" - "os" "testing" - "time" "code.gitea.io/gitea/tests/internal/utils" ) -const ( - ServerHttpPort = "3001" - RetryLimit = 10 -) +// The HTTP port listened by the Gitea server. +const ServerHttpPort = "3001" var Version string @@ -24,15 +20,9 @@ func version(c *utils.Config) error { var r *http.Response var err error - for i := 0; i < RetryLimit; i++ { - r, err = http.Get("http://:" + ServerHttpPort + "/api/v1/version") - if err == nil { - break - } - - // Give the server some amount of time to warm up. - fmt.Fprintf(os.Stderr, "Retry %d\n", i) - time.Sleep(500 * time.Millisecond) + r, err = http.Get("http://:" + ServerHttpPort + "/api/v1/version") + if err == nil { + return err } if err != nil { From 19a0b6343fae78a484b08bc7b1dd77245c065af1 Mon Sep 17 00:00:00 2001 From: Mura Li Date: Tue, 24 Jan 2017 16:53:53 +0800 Subject: [PATCH 18/65] Move constant ServerHttpPort to install_test.go --- tests/install_test.go | 3 ++- tests/version_test.go | 3 --- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/tests/install_test.go b/tests/install_test.go index d4e633a2d9546..46ed4b322001a 100644 --- a/tests/install_test.go +++ b/tests/install_test.go @@ -12,7 +12,8 @@ import ( "code.gitea.io/gitea/tests/internal/utils" ) -const _RetryLimit = 10 +// The HTTP port listened by the Gitea server. +const ServerHttpPort = "3001" func makeSimpleSettings(user, workdir, port string) map[string][]string { return map[string][]string{ diff --git a/tests/version_test.go b/tests/version_test.go index 265e67f95e318..7a65f1d4990ff 100644 --- a/tests/version_test.go +++ b/tests/version_test.go @@ -11,9 +11,6 @@ import ( "code.gitea.io/gitea/tests/internal/utils" ) -// The HTTP port listened by the Gitea server. -const ServerHttpPort = "3001" - var Version string func version(c *utils.Config) error { From 5a85dd9aa467963007b258f10b63af8ae64705c6 Mon Sep 17 00:00:00 2001 From: Mura Li Date: Tue, 24 Jan 2017 16:58:43 +0800 Subject: [PATCH 19/65] Restore mistakenly removed constant --- tests/install_test.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/install_test.go b/tests/install_test.go index 46ed4b322001a..9ec93c6a330fe 100644 --- a/tests/install_test.go +++ b/tests/install_test.go @@ -15,6 +15,8 @@ import ( // The HTTP port listened by the Gitea server. const ServerHttpPort = "3001" +const _RetryLimit = 10 + func makeSimpleSettings(user, workdir, port string) map[string][]string { return map[string][]string{ "db_type": {"SQLite3"}, From 4b033b471933eb78d55395f987db2bff5785ed1f Mon Sep 17 00:00:00 2001 From: Mura Li Date: Tue, 24 Jan 2017 17:04:32 +0800 Subject: [PATCH 20/65] Add required comments to make the linter happy. --- routers/api/v1/misc/version.go | 1 + tests/version_test.go | 1 + 2 files changed, 2 insertions(+) diff --git a/routers/api/v1/misc/version.go b/routers/api/v1/misc/version.go index 30915f665a17d..88eb7aea6bbb4 100644 --- a/routers/api/v1/misc/version.go +++ b/routers/api/v1/misc/version.go @@ -5,6 +5,7 @@ import ( "code.gitea.io/gitea/modules/setting" ) +// Version of the Gitea server func ServerVersion(ctx *context.APIContext) { ctx.Write([]byte(setting.AppVer)) } diff --git a/tests/version_test.go b/tests/version_test.go index 7a65f1d4990ff..80dbb7706c8f7 100644 --- a/tests/version_test.go +++ b/tests/version_test.go @@ -11,6 +11,7 @@ import ( "code.gitea.io/gitea/tests/internal/utils" ) +// The variable is expected to be set by '-ldflags -X ...' which is used by the /version testing. var Version string func version(c *utils.Config) error { From 78a697f02f4d43c0ed8bf28354a50f9aead8eecc Mon Sep 17 00:00:00 2001 From: Mura Li Date: Tue, 24 Jan 2017 17:30:47 +0800 Subject: [PATCH 21/65] Fix comments and naming to address linter's complaints --- routers/api/v1/misc/version.go | 2 +- tests/install_test.go | 2 +- tests/internal/utils/utils.go | 3 ++- tests/version_test.go | 6 +++--- 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/routers/api/v1/misc/version.go b/routers/api/v1/misc/version.go index 88eb7aea6bbb4..6e4de6a4d7286 100644 --- a/routers/api/v1/misc/version.go +++ b/routers/api/v1/misc/version.go @@ -5,7 +5,7 @@ import ( "code.gitea.io/gitea/modules/setting" ) -// Version of the Gitea server +// ServerVersion shows the version of the Gitea server func ServerVersion(ctx *context.APIContext) { ctx.Write([]byte(setting.AppVer)) } diff --git a/tests/install_test.go b/tests/install_test.go index 9ec93c6a330fe..71a4fddfee218 100644 --- a/tests/install_test.go +++ b/tests/install_test.go @@ -13,7 +13,7 @@ import ( ) // The HTTP port listened by the Gitea server. -const ServerHttpPort = "3001" +const ServerHTTPPort = "3001" const _RetryLimit = 10 diff --git a/tests/internal/utils/utils.go b/tests/internal/utils/utils.go index 37e37ee22b593..5be9c2f153db0 100644 --- a/tests/internal/utils/utils.go +++ b/tests/internal/utils/utils.go @@ -12,6 +12,7 @@ import ( "time" ) +// Config Settings of the testing program type Config struct { // The executable path of the tested program. Program string @@ -42,7 +43,7 @@ func redirect(cmd *exec.Cmd, f *os.File) error { return nil } -// Helper function for setting up a running Gitea server for functional testing and then gracefully terminating it. +// RunTest Helper function for setting up a running Gitea server for functional testing and then gracefully terminating it. func (c *Config) RunTest(tests ...func(*Config) error) (err error) { if c.Program == "" { return errors.New("Need input file") diff --git a/tests/version_test.go b/tests/version_test.go index 80dbb7706c8f7..e3d12f35fce7d 100644 --- a/tests/version_test.go +++ b/tests/version_test.go @@ -18,7 +18,7 @@ func version(c *utils.Config) error { var r *http.Response var err error - r, err = http.Get("http://:" + ServerHttpPort + "/api/v1/version") + r, err = http.Get("http://:" + ServerHTTPPort + "/api/v1/version") if err == nil { return err } @@ -39,7 +39,7 @@ func version(c *utils.Config) error { log.Printf("Actual: \"%s\" Expected: \"%s\"\n", string(actual), string(expected)) if !bytes.Equal(actual, expected) { - return fmt.Errorf("Do not match!") + return fmt.Errorf("do not match") } return nil } @@ -48,7 +48,7 @@ func TestVersion(t *testing.T) { conf := utils.Config{ Program: "../gitea", WorkDir: "", - Args: []string{"web", "--port", ServerHttpPort}, + Args: []string{"web", "--port", ServerHTTPPort}, //LogFile: os.Stderr, } From cec3deed2e73d91326e920ae4a028aa03ef145e6 Mon Sep 17 00:00:00 2001 From: Mura Li Date: Tue, 24 Jan 2017 17:55:10 +0800 Subject: [PATCH 22/65] Detect Gitea executale version automatically --- tests/run.bash | 4 +++- tests/version_test.go | 35 ++++++++++++++++++++++++----------- 2 files changed, 27 insertions(+), 12 deletions(-) diff --git a/tests/run.bash b/tests/run.bash index f7f06bd786e8b..0a77a95a480da 100755 --- a/tests/run.bash +++ b/tests/run.bash @@ -1,3 +1,5 @@ #!/bin/bash -e -go test -ldflags "-X code.gitea.io/gitea/tests.Version=$(git describe --tags --always | sed 's/-/+/' | sed 's/^v//')" $@ +version=$(git describe --tags --always | sed 's/-/+/' | sed 's/^v//') +echo Version:$version +go test -ldflags "-X code.gitea.io/gitea/tests.Version=$version" $@ diff --git a/tests/version_test.go b/tests/version_test.go index e3d12f35fce7d..f3a6f0a83aa80 100644 --- a/tests/version_test.go +++ b/tests/version_test.go @@ -6,18 +6,36 @@ import ( "io/ioutil" "log" "net/http" + "os/exec" + "path/filepath" + "strings" "testing" "code.gitea.io/gitea/tests/internal/utils" ) -// The variable is expected to be set by '-ldflags -X ...' which is used by the /version testing. -var Version string - func version(c *utils.Config) error { - var r *http.Response var err error + path, err := filepath.Abs(c.Program) + if err != nil { + return err + } + + cmd := exec.Command(path, "--version") + out, err := cmd.Output() + if err != nil { + return err + } + + fields := strings.Fields(string(out)) + if len(fields) != 3 { + return fmt.Errorf("unexpected version string") + } + + expected := fields[2] + + var r *http.Response r, err = http.Get("http://:" + ServerHTTPPort + "/api/v1/version") if err == nil { return err @@ -34,11 +52,10 @@ func version(c *utils.Config) error { return err } - actual := bytes.TrimSpace(buf) - expected := []byte(Version) + actual := string(bytes.TrimSpace(buf)) log.Printf("Actual: \"%s\" Expected: \"%s\"\n", string(actual), string(expected)) - if !bytes.Equal(actual, expected) { + if actual != expected { return fmt.Errorf("do not match") } return nil @@ -52,10 +69,6 @@ func TestVersion(t *testing.T) { //LogFile: os.Stderr, } - if Version == "" { - log.Fatal("Please specify the version string via '-ldflags -X' for the package") - } - if err := conf.RunTest(install, version); err != nil { t.Fatal(err) } From 37591d65a11a281f62a3be3807252586484ecd7d Mon Sep 17 00:00:00 2001 From: Mura Li Date: Tue, 24 Jan 2017 17:58:04 +0800 Subject: [PATCH 23/65] Remove tests/run.sh, `go test` suffices. --- tests/run.bash | 5 ----- 1 file changed, 5 deletions(-) delete mode 100755 tests/run.bash diff --git a/tests/run.bash b/tests/run.bash deleted file mode 100755 index 0a77a95a480da..0000000000000 --- a/tests/run.bash +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash -e - -version=$(git describe --tags --always | sed 's/-/+/' | sed 's/^v//') -echo Version:$version -go test -ldflags "-X code.gitea.io/gitea/tests.Version=$version" $@ From c223dbd8d7c25560b274c1da43179ce2f6b1f3f8 Mon Sep 17 00:00:00 2001 From: Mura Li Date: Tue, 24 Jan 2017 19:52:05 +0800 Subject: [PATCH 24/65] Make `make build` a prerequisite of `make test` --- Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 9dad28910a986..7b49414557127 100644 --- a/Makefile +++ b/Makefile @@ -67,7 +67,8 @@ lint: for PKG in $(PACKAGES); do golint -set_exit_status $$PKG || exit 1; done; .PHONY: test -test: +test: TAGS=bindata sqlite +test: build for PKG in $(PACKAGES); do go test -cover -coverprofile $$GOPATH/src/$$PKG/coverage.out $$PKG || exit 1; done; .PHONY: test-mysql From 335b41f817fef0230ae08224dd355b36f349d80c Mon Sep 17 00:00:00 2001 From: Mura Li Date: Tue, 24 Jan 2017 19:53:28 +0800 Subject: [PATCH 25/65] Do not sleep before trying --- tests/install_test.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/install_test.go b/tests/install_test.go index 71a4fddfee218..40df0b47aae87 100644 --- a/tests/install_test.go +++ b/tests/install_test.go @@ -38,13 +38,14 @@ func install(conf *utils.Config) error { var err error for i := 0; i < _RetryLimit; i++ { - // Give the server some amount of time to warm up. - time.Sleep(500 * time.Millisecond) r, err = http.Get("http://:3001/") if err == nil { break } + + // Give the server some amount of time to warm up. + time.Sleep(500 * time.Millisecond) fmt.Fprintf(os.Stderr, "Retry %d\n", i) } From 7f4e3f4bf9f67371aafbf901a65074d58f0ad66f Mon Sep 17 00:00:00 2001 From: Mura Li Date: Tue, 24 Jan 2017 22:22:58 +0800 Subject: [PATCH 26/65] Speedup the server pinging loop --- tests/install_test.go | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/tests/install_test.go b/tests/install_test.go index 40df0b47aae87..0ce6e1fae7926 100644 --- a/tests/install_test.go +++ b/tests/install_test.go @@ -37,16 +37,17 @@ func install(conf *utils.Config) error { var r *http.Response var err error - for i := 0; i < _RetryLimit; i++ { + for i := 1; i <= _RetryLimit; i++ { - r, err = http.Get("http://:3001/") + r, err = http.Get("http://:" + ServerHTTPPort + "/") if err == nil { + fmt.Fprintln(os.Stderr) break } // Give the server some amount of time to warm up. - time.Sleep(500 * time.Millisecond) - fmt.Fprintf(os.Stderr, "Retry %d\n", i) + time.Sleep(100 * time.Millisecond) + fmt.Fprintf(os.Stderr, ".") } if err != nil { From b0686eeeba22889e4eaeb19324849925af145016 Mon Sep 17 00:00:00 2001 From: Mura Li Date: Tue, 24 Jan 2017 22:23:38 +0800 Subject: [PATCH 27/65] Use defined const instead of hardwired numbers --- tests/install_test.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/install_test.go b/tests/install_test.go index 0ce6e1fae7926..89e23a129af8e 100644 --- a/tests/install_test.go +++ b/tests/install_test.go @@ -66,8 +66,8 @@ func install(conf *utils.Config) error { return err } - settings := makeSimpleSettings(_user.Username, path, "3001") - resp, err := http.PostForm("http://:3001/install", settings) + settings := makeSimpleSettings(_user.Username, path, ServerHTTPPort) + resp, err := http.PostForm("http://:"+ServerHTTPPort+"/install", settings) if err != nil { return err } @@ -81,7 +81,7 @@ func TestInstall(t *testing.T) { conf := utils.Config{ Program: "../gitea", WorkDir: "", - Args: []string{"web", "--port", "3001"}, + Args: []string{"web", "--port", ServerHTTPPort}, //LogFile: os.Stderr, } From 33a75611f1566dd695cc2eb59175c40e06eaada9 Mon Sep 17 00:00:00 2001 From: Mura Li Date: Tue, 24 Jan 2017 22:47:24 +0800 Subject: [PATCH 28/65] Remove redundant error handling --- tests/version_test.go | 4 ---- 1 file changed, 4 deletions(-) diff --git a/tests/version_test.go b/tests/version_test.go index f3a6f0a83aa80..5dd0d05ea918a 100644 --- a/tests/version_test.go +++ b/tests/version_test.go @@ -41,10 +41,6 @@ func version(c *utils.Config) error { return err } - if err != nil { - return err - } - defer r.Body.Close() buf, err := ioutil.ReadAll(r.Body) From 43d973d50486c1beec90e726474a83f65023e8d0 Mon Sep 17 00:00:00 2001 From: Mura Li Date: Thu, 26 Jan 2017 13:23:35 +0800 Subject: [PATCH 29/65] Use a dedicated target for running code.gitea.io/tests --- Makefile | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 7b49414557127..3dab0c25444a0 100644 --- a/Makefile +++ b/Makefile @@ -14,7 +14,7 @@ JAVASCRIPTS := LDFLAGS := -X "main.Version=$(shell git describe --tags --always | sed 's/-/+/' | sed 's/^v//')" -X "main.Tags=$(TAGS)" TARGETS ?= linux/*,darwin/*,windows/* -PACKAGES ?= $(shell go list ./... | grep -v /vendor/) +PACKAGES ?= $(filter-out tests,$(shell go list ./... | grep -v /vendor/)) SOURCES ?= $(shell find . -name "*.go" -type f) TAGS ?= @@ -66,8 +66,13 @@ lint: fi for PKG in $(PACKAGES); do golint -set_exit_status $$PKG || exit 1; done; +.PHONY: xtest +xtest: TAGS=bindata sqlite +xtest: build + go test code.gitea.io/gitea/tests || exit 1 + .PHONY: test -test: TAGS=bindata sqlite +test: test: build for PKG in $(PACKAGES); do go test -cover -coverprofile $$GOPATH/src/$$PKG/coverage.out $$PKG || exit 1; done; From 235fa4bfca89493588ba4149b54bd3431edd6ecd Mon Sep 17 00:00:00 2001 From: Mura Li Date: Thu, 26 Jan 2017 13:39:42 +0800 Subject: [PATCH 30/65] Do not make 'test' depend on 'build' target --- Makefile | 1 - 1 file changed, 1 deletion(-) diff --git a/Makefile b/Makefile index 3dab0c25444a0..91b679649097a 100644 --- a/Makefile +++ b/Makefile @@ -73,7 +73,6 @@ xtest: build .PHONY: test test: -test: build for PKG in $(PACKAGES); do go test -cover -coverprofile $$GOPATH/src/$$PKG/coverage.out $$PKG || exit 1; done; .PHONY: test-mysql From 662833f8d3c29ac80c11e43914561eece0c80ab3 Mon Sep 17 00:00:00 2001 From: Mura Li Date: Thu, 26 Jan 2017 13:57:31 +0800 Subject: [PATCH 31/65] Rectify the excluded package list --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 91b679649097a..6283301331d62 100644 --- a/Makefile +++ b/Makefile @@ -14,7 +14,7 @@ JAVASCRIPTS := LDFLAGS := -X "main.Version=$(shell git describe --tags --always | sed 's/-/+/' | sed 's/^v//')" -X "main.Tags=$(TAGS)" TARGETS ?= linux/*,darwin/*,windows/* -PACKAGES ?= $(filter-out tests,$(shell go list ./... | grep -v /vendor/)) +PACKAGES ?= $(filter-out code.gitea.io/gitea/tests,$(shell go list ./... | grep -v /vendor/)) SOURCES ?= $(shell find . -name "*.go" -type f) TAGS ?= From 9bcb255e9f3f6f55e2e34fc8193d4630d3a6ddb2 Mon Sep 17 00:00:00 2001 From: Mura Li Date: Thu, 26 Jan 2017 14:02:00 +0800 Subject: [PATCH 32/65] Remove redundant 'exit 1' --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 6283301331d62..c72f0f06f2d74 100644 --- a/Makefile +++ b/Makefile @@ -69,7 +69,7 @@ lint: .PHONY: xtest xtest: TAGS=bindata sqlite xtest: build - go test code.gitea.io/gitea/tests || exit 1 + go test code.gitea.io/gitea/tests .PHONY: test test: From 130e725edbd1346ab66943b9016191b84c2cae7e Mon Sep 17 00:00:00 2001 From: Mura Li Date: Sun, 29 Jan 2017 13:32:06 +0800 Subject: [PATCH 33/65] Change the API to allow passing test.T to test handlers --- tests/install_test.go | 6 +++--- tests/internal/utils/utils.go | 32 ++++++++++++++++++++++---------- tests/version_test.go | 6 +++--- 3 files changed, 28 insertions(+), 16 deletions(-) diff --git a/tests/install_test.go b/tests/install_test.go index 89e23a129af8e..b8069b8035e44 100644 --- a/tests/install_test.go +++ b/tests/install_test.go @@ -33,7 +33,7 @@ func makeSimpleSettings(user, workdir, port string) map[string][]string { } } -func install(conf *utils.Config) error { +func install(t *utils.T) error { var r *http.Response var err error @@ -61,7 +61,7 @@ func install(conf *utils.Config) error { return err } - path, err := filepath.Abs(conf.WorkDir) + path, err := filepath.Abs(t.Config.WorkDir) if err != nil { return err } @@ -85,7 +85,7 @@ func TestInstall(t *testing.T) { //LogFile: os.Stderr, } - if err := conf.RunTest(install); err != nil { + if err := utils.New(t, &conf).RunTest(install); err != nil { t.Fatal(err) } } diff --git a/tests/internal/utils/utils.go b/tests/internal/utils/utils.go index 5be9c2f153db0..eb7d68bbe1905 100644 --- a/tests/internal/utils/utils.go +++ b/tests/internal/utils/utils.go @@ -9,9 +9,21 @@ import ( "os/exec" "path/filepath" "syscall" + "testing" "time" ) +// T wraps testing.T and the configurations of the testing instance. +type T struct { + T *testing.T + Config *Config +} + +// New create an instance of T +func New(t *testing.T, c *Config) *T { + return &T{T: t, Config: c} +} + // Config Settings of the testing program type Config struct { // The executable path of the tested program. @@ -44,19 +56,19 @@ func redirect(cmd *exec.Cmd, f *os.File) error { } // RunTest Helper function for setting up a running Gitea server for functional testing and then gracefully terminating it. -func (c *Config) RunTest(tests ...func(*Config) error) (err error) { - if c.Program == "" { +func (t *T) RunTest(tests ...func(*T) error) (err error) { + if t.Config.Program == "" { return errors.New("Need input file") } - path, err := filepath.Abs(c.Program) + path, err := filepath.Abs(t.Config.Program) if err != nil { return err } - workdir := c.WorkDir + workdir := t.Config.WorkDir if workdir == "" { - workdir, err = filepath.Abs(fmt.Sprintf("%s-%10d", filepath.Base(c.Program), time.Now().UnixNano())) + workdir, err = filepath.Abs(fmt.Sprintf("%s-%10d", filepath.Base(t.Config.Program), time.Now().UnixNano())) if err != nil { return err } @@ -71,13 +83,13 @@ func (c *Config) RunTest(tests ...func(*Config) error) (err error) { return err } - log.Printf("Starting the server: %s args:%s workdir:%s", newpath, c.Args, workdir) + log.Printf("Starting the server: %s args:%s workdir:%s", newpath, t.Config.Args, workdir) - cmd := exec.Command(newpath, c.Args...) + cmd := exec.Command(newpath, t.Config.Args...) cmd.Dir = workdir - if c.LogFile != nil { - if err := redirect(cmd, c.LogFile); err != nil { + if t.Config.LogFile != nil { + if err := redirect(cmd, t.Config.LogFile); err != nil { return err } } @@ -103,7 +115,7 @@ func (c *Config) RunTest(tests ...func(*Config) error) (err error) { }() for _, fn := range tests { - if err := fn(c); err != nil { + if err := fn(t); err != nil { return err } } diff --git a/tests/version_test.go b/tests/version_test.go index 5dd0d05ea918a..498e2f4c10deb 100644 --- a/tests/version_test.go +++ b/tests/version_test.go @@ -14,10 +14,10 @@ import ( "code.gitea.io/gitea/tests/internal/utils" ) -func version(c *utils.Config) error { +func version(t *utils.T) error { var err error - path, err := filepath.Abs(c.Program) + path, err := filepath.Abs(t.Config.Program) if err != nil { return err } @@ -65,7 +65,7 @@ func TestVersion(t *testing.T) { //LogFile: os.Stderr, } - if err := conf.RunTest(install, version); err != nil { + if err := utils.New(t, &conf).RunTest(install, version); err != nil { t.Fatal(err) } } From 4a2d00c1c7a27049b250308935e8b32ee0fa2aa4 Mon Sep 17 00:00:00 2001 From: Mura Li Date: Sun, 29 Jan 2017 13:38:03 +0800 Subject: [PATCH 34/65] Make testing.T an embedded field --- tests/internal/utils/utils.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/internal/utils/utils.go b/tests/internal/utils/utils.go index eb7d68bbe1905..2614b3f54eafa 100644 --- a/tests/internal/utils/utils.go +++ b/tests/internal/utils/utils.go @@ -15,7 +15,7 @@ import ( // T wraps testing.T and the configurations of the testing instance. type T struct { - T *testing.T + *testing.T Config *Config } From c4343c031ae60f79e684042f352456f1e86d4be9 Mon Sep 17 00:00:00 2001 From: Mura Li Date: Sun, 29 Jan 2017 13:46:20 +0800 Subject: [PATCH 35/65] Use assert.Equal to comparing results --- tests/version_test.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/tests/version_test.go b/tests/version_test.go index 498e2f4c10deb..553dabbdcafff 100644 --- a/tests/version_test.go +++ b/tests/version_test.go @@ -11,6 +11,8 @@ import ( "strings" "testing" + "github.com/stretchr/testify/assert" + "code.gitea.io/gitea/tests/internal/utils" ) @@ -51,9 +53,8 @@ func version(t *utils.T) error { actual := string(bytes.TrimSpace(buf)) log.Printf("Actual: \"%s\" Expected: \"%s\"\n", string(actual), string(expected)) - if actual != expected { - return fmt.Errorf("do not match") - } + assert.Equal(t, expected, actual) + return nil } From 240e25b663e17b71c80080d25d1106e6f4fef410 Mon Sep 17 00:00:00 2001 From: Mura Li Date: Wed, 1 Feb 2017 11:40:21 +0800 Subject: [PATCH 36/65] Add copyright info --- tests/install_test.go | 4 ++++ tests/internal/utils/utils.go | 4 ++++ tests/version_test.go | 4 ++++ 3 files changed, 12 insertions(+) diff --git a/tests/install_test.go b/tests/install_test.go index b8069b8035e44..0048ea2afa7dc 100644 --- a/tests/install_test.go +++ b/tests/install_test.go @@ -1,3 +1,7 @@ +// Copyright 2017 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + package tests import ( diff --git a/tests/internal/utils/utils.go b/tests/internal/utils/utils.go index 2614b3f54eafa..eec445acf7fc0 100644 --- a/tests/internal/utils/utils.go +++ b/tests/internal/utils/utils.go @@ -1,3 +1,7 @@ +// Copyright 2017 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + package utils import ( diff --git a/tests/version_test.go b/tests/version_test.go index 553dabbdcafff..b591340b443d4 100644 --- a/tests/version_test.go +++ b/tests/version_test.go @@ -1,3 +1,7 @@ +// Copyright 2017 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + package tests import ( From ae80af3fcab82bd92743e598bfd98f91854a1391 Mon Sep 17 00:00:00 2001 From: Mura Li Date: Wed, 1 Feb 2017 11:43:23 +0800 Subject: [PATCH 37/65] Parametrized logging output --- tests/internal/utils/utils.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/internal/utils/utils.go b/tests/internal/utils/utils.go index eec445acf7fc0..1b148b477a2ea 100644 --- a/tests/internal/utils/utils.go +++ b/tests/internal/utils/utils.go @@ -54,8 +54,8 @@ func redirect(cmd *exec.Cmd, f *os.File) error { return err } - go io.Copy(os.Stderr, stdout) - go io.Copy(os.Stdout, stderr) + go io.Copy(f, stdout) + go io.Copy(f, stderr) return nil } From 06c11933c1fdf5aedf0a227e2e307c9dbc635e5f Mon Sep 17 00:00:00 2001 From: Mura Li Date: Wed, 1 Feb 2017 11:46:35 +0800 Subject: [PATCH 38/65] Use tmpdir instead --- tests/internal/utils/utils.go | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/tests/internal/utils/utils.go b/tests/internal/utils/utils.go index 1b148b477a2ea..1d4186c747683 100644 --- a/tests/internal/utils/utils.go +++ b/tests/internal/utils/utils.go @@ -6,15 +6,14 @@ package utils import ( "errors" - "fmt" "io" + "io/ioutil" "log" "os" "os/exec" "path/filepath" "syscall" "testing" - "time" ) // T wraps testing.T and the configurations of the testing instance. @@ -72,13 +71,10 @@ func (t *T) RunTest(tests ...func(*T) error) (err error) { workdir := t.Config.WorkDir if workdir == "" { - workdir, err = filepath.Abs(fmt.Sprintf("%s-%10d", filepath.Base(t.Config.Program), time.Now().UnixNano())) + workdir, err = ioutil.TempDir(os.TempDir(), "gitea_tests-") if err != nil { return err } - if err := os.Mkdir(workdir, 0700); err != nil { - return err - } defer os.RemoveAll(workdir) } From 0a6356f83950458ff346ba0ec1680750a7cadb14 Mon Sep 17 00:00:00 2001 From: Mura Li Date: Wed, 1 Feb 2017 12:25:28 +0800 Subject: [PATCH 39/65] Eliminate redundant casting --- tests/version_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/version_test.go b/tests/version_test.go index b591340b443d4..c09581d74a1a4 100644 --- a/tests/version_test.go +++ b/tests/version_test.go @@ -56,7 +56,7 @@ func version(t *utils.T) error { actual := string(bytes.TrimSpace(buf)) - log.Printf("Actual: \"%s\" Expected: \"%s\"\n", string(actual), string(expected)) + log.Printf("Actual: \"%s\" Expected: \"%s\"\n", actual, expected) assert.Equal(t, expected, actual) return nil From 0e161f8d42a46a535cc29df0251e473890cde19e Mon Sep 17 00:00:00 2001 From: Mura Li Date: Wed, 1 Feb 2017 12:30:26 +0800 Subject: [PATCH 40/65] Remove unneeded variable --- tests/install_test.go | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/tests/install_test.go b/tests/install_test.go index 0048ea2afa7dc..8d38d9abf188d 100644 --- a/tests/install_test.go +++ b/tests/install_test.go @@ -71,13 +71,11 @@ func install(t *utils.T) error { } settings := makeSimpleSettings(_user.Username, path, ServerHTTPPort) - resp, err := http.PostForm("http://:"+ServerHTTPPort+"/install", settings) - if err != nil { + if _, err := http.PostForm("http://:"+ServerHTTPPort+"/install", settings); err != nil { return err } defer resp.Body.Close() - _ = resp return nil } From a30aff4f9a32d19d6f5a2c0cc812518acf7134df Mon Sep 17 00:00:00 2001 From: Mura Li Date: Wed, 1 Feb 2017 12:35:17 +0800 Subject: [PATCH 41/65] Fix last commit --- tests/install_test.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/install_test.go b/tests/install_test.go index 8d38d9abf188d..7c004717d3183 100644 --- a/tests/install_test.go +++ b/tests/install_test.go @@ -71,7 +71,8 @@ func install(t *utils.T) error { } settings := makeSimpleSettings(_user.Username, path, ServerHTTPPort) - if _, err := http.PostForm("http://:"+ServerHTTPPort+"/install", settings); err != nil { + resp, err := http.PostForm("http://:"+ServerHTTPPort+"/install", settings) + if err != nil { return err } defer resp.Body.Close() From 57fc99296fb3f53571d748b6fde71254fe2b9ebd Mon Sep 17 00:00:00 2001 From: Mura Li Date: Wed, 1 Feb 2017 12:39:47 +0800 Subject: [PATCH 42/65] Add missing copyright info --- routers/api/v1/misc/version.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/routers/api/v1/misc/version.go b/routers/api/v1/misc/version.go index 6e4de6a4d7286..82d8b887224a3 100644 --- a/routers/api/v1/misc/version.go +++ b/routers/api/v1/misc/version.go @@ -1,3 +1,7 @@ +// Copyright 2017 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + package misc import ( From fda4ccaea2356c33efd306c04c18210082725488 Mon Sep 17 00:00:00 2001 From: Mura Li Date: Wed, 1 Feb 2017 12:48:10 +0800 Subject: [PATCH 43/65] Replace fmt.Fprintf with fmt.Fprint --- tests/install_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/install_test.go b/tests/install_test.go index 7c004717d3183..c864592dce86d 100644 --- a/tests/install_test.go +++ b/tests/install_test.go @@ -51,7 +51,7 @@ func install(t *utils.T) error { // Give the server some amount of time to warm up. time.Sleep(100 * time.Millisecond) - fmt.Fprintf(os.Stderr, ".") + fmt.Fprint(os.Stderr, ".") } if err != nil { From ae0dfd541e615a248818075c172862c34926af0c Mon Sep 17 00:00:00 2001 From: Mura Li Date: Tue, 7 Feb 2017 22:43:28 +0800 Subject: [PATCH 44/65] rename the xtest to integration-test --- Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index c72f0f06f2d74..fb25bae8f342f 100644 --- a/Makefile +++ b/Makefile @@ -66,9 +66,9 @@ lint: fi for PKG in $(PACKAGES); do golint -set_exit_status $$PKG || exit 1; done; -.PHONY: xtest -xtest: TAGS=bindata sqlite -xtest: build +.PHONY: integration-test +integration-test: TAGS=bindata sqlite +integration-test: build go test code.gitea.io/gitea/tests .PHONY: test From 856a854caa251d82845f02a76bd996db46012016 Mon Sep 17 00:00:00 2001 From: Mura Li Date: Tue, 21 Feb 2017 15:46:06 +0800 Subject: [PATCH 45/65] Use Symlink instead of hard-link for cross-device linking --- tests/internal/utils/utils.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/internal/utils/utils.go b/tests/internal/utils/utils.go index 1d4186c747683..48305cdf5daf7 100644 --- a/tests/internal/utils/utils.go +++ b/tests/internal/utils/utils.go @@ -79,7 +79,7 @@ func (t *T) RunTest(tests ...func(*T) error) (err error) { } newpath := filepath.Join(workdir, filepath.Base(path)) - if err := os.Link(path, newpath); err != nil { + if err := os.Symlink(path, newpath); err != nil { return err } From a7a98fd11d1778a96657f51b1f821171faa07f70 Mon Sep 17 00:00:00 2001 From: Mura Li Date: Tue, 21 Feb 2017 15:46:47 +0800 Subject: [PATCH 46/65] Turn debugging logs on --- tests/version_test.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/version_test.go b/tests/version_test.go index c09581d74a1a4..97bdef3ab1d1c 100644 --- a/tests/version_test.go +++ b/tests/version_test.go @@ -10,6 +10,7 @@ import ( "io/ioutil" "log" "net/http" + "os" "os/exec" "path/filepath" "strings" @@ -67,7 +68,7 @@ func TestVersion(t *testing.T) { Program: "../gitea", WorkDir: "", Args: []string{"web", "--port", ServerHTTPPort}, - //LogFile: os.Stderr, + LogFile: os.Stderr, } if err := utils.New(t, &conf).RunTest(install, version); err != nil { From 7e1990bf0f005d2befc733b3ba8492d8e281a854 Mon Sep 17 00:00:00 2001 From: Mura Li Date: Tue, 21 Feb 2017 15:49:55 +0800 Subject: [PATCH 47/65] Follow the existing framework for APIs --- routers/api/v1/api.go | 2 +- routers/api/v1/misc/version.go | 5 +++-- vendor/code.gitea.io/sdk/gitea/miscellaneous.go | 9 +++++++++ 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/routers/api/v1/api.go b/routers/api/v1/api.go index 554f48791f649..611a8f91de8bf 100644 --- a/routers/api/v1/api.go +++ b/routers/api/v1/api.go @@ -232,7 +232,7 @@ func RegisterRoutes(m *macaron.Macaron) { m.Group("/v1", func() { // Miscellaneous - m.Get("/version", misc.ServerVersion) + m.Get("/version", misc.Version) m.Post("/markdown", bind(api.MarkdownOption{}), misc.Markdown) m.Post("/markdown/raw", misc.MarkdownRaw) diff --git a/routers/api/v1/misc/version.go b/routers/api/v1/misc/version.go index 82d8b887224a3..3f21cc679c6c0 100644 --- a/routers/api/v1/misc/version.go +++ b/routers/api/v1/misc/version.go @@ -7,9 +7,10 @@ package misc import ( "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/setting" + "code.gitea.io/sdk/gitea" ) // ServerVersion shows the version of the Gitea server -func ServerVersion(ctx *context.APIContext) { - ctx.Write([]byte(setting.AppVer)) +func Version(ctx *context.APIContext) { + ctx.JSON(200, &gitea.ServerVersion{Version: setting.AppVer}) } diff --git a/vendor/code.gitea.io/sdk/gitea/miscellaneous.go b/vendor/code.gitea.io/sdk/gitea/miscellaneous.go index 30aaee77c854b..bdb7ede622fd1 100644 --- a/vendor/code.gitea.io/sdk/gitea/miscellaneous.go +++ b/vendor/code.gitea.io/sdk/gitea/miscellaneous.go @@ -11,3 +11,12 @@ type MarkdownOption struct { Context string Wiki bool } + +type ServerVersion struct { + Version string +} + +func (c *Client) ServerVersion() (string, error) { + v := ServerVersion{} + return v.Version, c.getParsedResponse("GET", "/api/v1/version", nil, nil, &v) +} From 0ef4b44b4371be3d294fa75e18f85c182a1ac8d8 Mon Sep 17 00:00:00 2001 From: Mura Li Date: Tue, 21 Feb 2017 15:58:09 +0800 Subject: [PATCH 48/65] Output logs only if test.v is true --- tests/install_test.go | 2 +- tests/internal/utils/utils.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/install_test.go b/tests/install_test.go index c864592dce86d..10851f64b63c7 100644 --- a/tests/install_test.go +++ b/tests/install_test.go @@ -85,7 +85,7 @@ func TestInstall(t *testing.T) { Program: "../gitea", WorkDir: "", Args: []string{"web", "--port", ServerHTTPPort}, - //LogFile: os.Stderr, + LogFile: os.Stderr, } if err := utils.New(t, &conf).RunTest(install); err != nil { diff --git a/tests/internal/utils/utils.go b/tests/internal/utils/utils.go index 48305cdf5daf7..3a42002048d18 100644 --- a/tests/internal/utils/utils.go +++ b/tests/internal/utils/utils.go @@ -88,7 +88,7 @@ func (t *T) RunTest(tests ...func(*T) error) (err error) { cmd := exec.Command(newpath, t.Config.Args...) cmd.Dir = workdir - if t.Config.LogFile != nil { + if t.Config.LogFile != nil && testing.Verbose() { if err := redirect(cmd, t.Config.LogFile); err != nil { return err } From b4ef83b33ba644fc4117b5e99fc174cd4a219bcd Mon Sep 17 00:00:00 2001 From: Mura Li Date: Wed, 22 Feb 2017 23:47:07 +0800 Subject: [PATCH 49/65] Re-order import statements --- tests/version_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/version_test.go b/tests/version_test.go index 97bdef3ab1d1c..d37b521e5acfb 100644 --- a/tests/version_test.go +++ b/tests/version_test.go @@ -16,9 +16,9 @@ import ( "strings" "testing" - "github.com/stretchr/testify/assert" - "code.gitea.io/gitea/tests/internal/utils" + + "github.com/stretchr/testify/assert" ) func version(t *utils.T) error { From f4bbd2524b38485df06dadd10bd93625358ce7a8 Mon Sep 17 00:00:00 2001 From: Mura Li Date: Thu, 23 Feb 2017 09:39:59 +0800 Subject: [PATCH 50/65] Enhance the error message --- tests/version_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/version_test.go b/tests/version_test.go index d37b521e5acfb..d68dd43e761ae 100644 --- a/tests/version_test.go +++ b/tests/version_test.go @@ -37,7 +37,7 @@ func version(t *utils.T) error { fields := strings.Fields(string(out)) if len(fields) != 3 { - return fmt.Errorf("unexpected version string") + return fmt.Errorf("unexpected version string '%s'", out) } expected := fields[2] From 83a4697e0bcf8dcbae7a378ef82e9fb363c30d45 Mon Sep 17 00:00:00 2001 From: Mura Li Date: Thu, 23 Feb 2017 09:42:11 +0800 Subject: [PATCH 51/65] Fix comment which breaks the linter's rule --- routers/api/v1/misc/version.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/routers/api/v1/misc/version.go b/routers/api/v1/misc/version.go index 3f21cc679c6c0..92950c19c34b2 100644 --- a/routers/api/v1/misc/version.go +++ b/routers/api/v1/misc/version.go @@ -10,7 +10,7 @@ import ( "code.gitea.io/sdk/gitea" ) -// ServerVersion shows the version of the Gitea server +// Version shows the version of the Gitea server func Version(ctx *context.APIContext) { ctx.JSON(200, &gitea.ServerVersion{Version: setting.AppVer}) } From a81ef4c97cf3aa0f35464a1a1033743f18c5e659 Mon Sep 17 00:00:00 2001 From: Mura Li Date: Thu, 23 Feb 2017 10:19:59 +0800 Subject: [PATCH 52/65] Rename 'integration-test' to 'e2e-test' for saving keystrokes --- Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index fb25bae8f342f..bd6a81593be15 100644 --- a/Makefile +++ b/Makefile @@ -66,9 +66,9 @@ lint: fi for PKG in $(PACKAGES); do golint -set_exit_status $$PKG || exit 1; done; -.PHONY: integration-test -integration-test: TAGS=bindata sqlite -integration-test: build +.PHONY: e2e-test +e2e-test: TAGS=bindata sqlite +e2e-test: build go test code.gitea.io/gitea/tests .PHONY: test From 6a6004823d55eee5f54a55d1d3a1953414863acc Mon Sep 17 00:00:00 2001 From: Mura Li Date: Thu, 23 Feb 2017 10:49:38 +0800 Subject: [PATCH 53/65] Add comment to avoid possible confusion --- tests/internal/utils/utils.go | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/internal/utils/utils.go b/tests/internal/utils/utils.go index 3a42002048d18..5ba608740f1fd 100644 --- a/tests/internal/utils/utils.go +++ b/tests/internal/utils/utils.go @@ -120,5 +120,6 @@ func (t *T) RunTest(tests ...func(*T) error) (err error) { } } + // Note that the return value 'err' may be updated by the 'defer' statement before despite it's returning nil here. return nil } From 175267db3cbd80a69aec4ef469ae5e4234b9f97f Mon Sep 17 00:00:00 2001 From: Mura Li Date: Thu, 23 Feb 2017 23:17:39 +0800 Subject: [PATCH 54/65] Rename tests -> integration-tests Also change back the Makefile to use `make integration-test`. --- Makefile | 8 ++++---- {tests => integration-tests}/install_test.go | 0 {tests => integration-tests}/internal/utils/utils.go | 0 {tests => integration-tests}/version_test.go | 0 4 files changed, 4 insertions(+), 4 deletions(-) rename {tests => integration-tests}/install_test.go (100%) rename {tests => integration-tests}/internal/utils/utils.go (100%) rename {tests => integration-tests}/version_test.go (100%) diff --git a/Makefile b/Makefile index bd6a81593be15..e39a8037d2b9e 100644 --- a/Makefile +++ b/Makefile @@ -66,10 +66,10 @@ lint: fi for PKG in $(PACKAGES); do golint -set_exit_status $$PKG || exit 1; done; -.PHONY: e2e-test -e2e-test: TAGS=bindata sqlite -e2e-test: build - go test code.gitea.io/gitea/tests +.PHONY: integration-test +integration-test: TAGS=bindata sqlite +integration-test: build + go test code.gitea.io/gitea/integration-tests .PHONY: test test: diff --git a/tests/install_test.go b/integration-tests/install_test.go similarity index 100% rename from tests/install_test.go rename to integration-tests/install_test.go diff --git a/tests/internal/utils/utils.go b/integration-tests/internal/utils/utils.go similarity index 100% rename from tests/internal/utils/utils.go rename to integration-tests/internal/utils/utils.go diff --git a/tests/version_test.go b/integration-tests/version_test.go similarity index 100% rename from tests/version_test.go rename to integration-tests/version_test.go From 2532c6091e32f5a7176f2f4ae098b642a26a8e08 Mon Sep 17 00:00:00 2001 From: Mura Li Date: Thu, 23 Feb 2017 23:50:21 +0800 Subject: [PATCH 55/65] Use tests/integration for now --- Makefile | 2 +- {integration-tests => tests/integration}/install_test.go | 6 +++--- .../integration}/internal/utils/utils.go | 0 {integration-tests => tests/integration}/version_test.go | 6 +++--- 4 files changed, 7 insertions(+), 7 deletions(-) rename {integration-tests => tests/integration}/install_test.go (94%) rename {integration-tests => tests/integration}/internal/utils/utils.go (100%) rename {integration-tests => tests/integration}/version_test.go (92%) diff --git a/Makefile b/Makefile index e39a8037d2b9e..b14d6509d4b59 100644 --- a/Makefile +++ b/Makefile @@ -69,7 +69,7 @@ lint: .PHONY: integration-test integration-test: TAGS=bindata sqlite integration-test: build - go test code.gitea.io/gitea/integration-tests + go test code.gitea.io/gitea/tests/integration .PHONY: test test: diff --git a/integration-tests/install_test.go b/tests/integration/install_test.go similarity index 94% rename from integration-tests/install_test.go rename to tests/integration/install_test.go index 10851f64b63c7..5da2bb628da65 100644 --- a/integration-tests/install_test.go +++ b/tests/integration/install_test.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a MIT-style // license that can be found in the LICENSE file. -package tests +package integration import ( "fmt" @@ -13,7 +13,7 @@ import ( "testing" "time" - "code.gitea.io/gitea/tests/internal/utils" + "code.gitea.io/gitea/tests/integration/internal/utils" ) // The HTTP port listened by the Gitea server. @@ -82,7 +82,7 @@ func install(t *utils.T) error { func TestInstall(t *testing.T) { conf := utils.Config{ - Program: "../gitea", + Program: "../../gitea", WorkDir: "", Args: []string{"web", "--port", ServerHTTPPort}, LogFile: os.Stderr, diff --git a/integration-tests/internal/utils/utils.go b/tests/integration/internal/utils/utils.go similarity index 100% rename from integration-tests/internal/utils/utils.go rename to tests/integration/internal/utils/utils.go diff --git a/integration-tests/version_test.go b/tests/integration/version_test.go similarity index 92% rename from integration-tests/version_test.go rename to tests/integration/version_test.go index d68dd43e761ae..ed536708edc49 100644 --- a/integration-tests/version_test.go +++ b/tests/integration/version_test.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a MIT-style // license that can be found in the LICENSE file. -package tests +package integration import ( "bytes" @@ -16,7 +16,7 @@ import ( "strings" "testing" - "code.gitea.io/gitea/tests/internal/utils" + "code.gitea.io/gitea/tests/integration/internal/utils" "github.com/stretchr/testify/assert" ) @@ -65,7 +65,7 @@ func version(t *utils.T) error { func TestVersion(t *testing.T) { conf := utils.Config{ - Program: "../gitea", + Program: "../../gitea", WorkDir: "", Args: []string{"web", "--port", ServerHTTPPort}, LogFile: os.Stderr, From 3430d3a1b1748ea4e7584bf99fe7344550345bd7 Mon Sep 17 00:00:00 2001 From: Mura Li Date: Fri, 24 Feb 2017 10:20:19 +0800 Subject: [PATCH 56/65] tests/integration -> integrations Slightly flattened directory hierarchy is better. --- {tests/integration => integrations}/install_test.go | 4 ++-- {tests/integration => integrations}/internal/utils/utils.go | 0 {tests/integration => integrations}/version_test.go | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) rename {tests/integration => integrations}/install_test.go (95%) rename {tests/integration => integrations}/internal/utils/utils.go (100%) rename {tests/integration => integrations}/version_test.go (94%) diff --git a/tests/integration/install_test.go b/integrations/install_test.go similarity index 95% rename from tests/integration/install_test.go rename to integrations/install_test.go index 5da2bb628da65..c0626dcddb161 100644 --- a/tests/integration/install_test.go +++ b/integrations/install_test.go @@ -13,7 +13,7 @@ import ( "testing" "time" - "code.gitea.io/gitea/tests/integration/internal/utils" + "code.gitea.io/gitea/integrations/internal/utils" ) // The HTTP port listened by the Gitea server. @@ -82,7 +82,7 @@ func install(t *utils.T) error { func TestInstall(t *testing.T) { conf := utils.Config{ - Program: "../../gitea", + Program: "../gitea", WorkDir: "", Args: []string{"web", "--port", ServerHTTPPort}, LogFile: os.Stderr, diff --git a/tests/integration/internal/utils/utils.go b/integrations/internal/utils/utils.go similarity index 100% rename from tests/integration/internal/utils/utils.go rename to integrations/internal/utils/utils.go diff --git a/tests/integration/version_test.go b/integrations/version_test.go similarity index 94% rename from tests/integration/version_test.go rename to integrations/version_test.go index ed536708edc49..5badf81ca0c60 100644 --- a/tests/integration/version_test.go +++ b/integrations/version_test.go @@ -16,7 +16,7 @@ import ( "strings" "testing" - "code.gitea.io/gitea/tests/integration/internal/utils" + "code.gitea.io/gitea/integrations/internal/utils" "github.com/stretchr/testify/assert" ) @@ -65,7 +65,7 @@ func version(t *utils.T) error { func TestVersion(t *testing.T) { conf := utils.Config{ - Program: "../../gitea", + Program: "../gitea", WorkDir: "", Args: []string{"web", "--port", ServerHTTPPort}, LogFile: os.Stderr, From 6dedc14ba25ae09df00128235434e5a9caa52ec2 Mon Sep 17 00:00:00 2001 From: Mura Li Date: Fri, 24 Feb 2017 10:24:18 +0800 Subject: [PATCH 57/65] Update Makefile accordingly --- Makefile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index b14d6509d4b59..a8bd19f0103bc 100644 --- a/Makefile +++ b/Makefile @@ -66,10 +66,10 @@ lint: fi for PKG in $(PACKAGES); do golint -set_exit_status $$PKG || exit 1; done; -.PHONY: integration-test -integration-test: TAGS=bindata sqlite -integration-test: build - go test code.gitea.io/gitea/tests/integration +.PHONY: integrations +integrations: TAGS=bindata sqlite +integrations: build + go test code.gitea.io/gitea/integrations .PHONY: test test: From e4ad3948f7efc200925f833a965346081d780b44 Mon Sep 17 00:00:00 2001 From: Mura Li Date: Fri, 24 Feb 2017 10:35:02 +0800 Subject: [PATCH 58/65] Fix a missing change in Makefile --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index a8bd19f0103bc..d09d31ed5f629 100644 --- a/Makefile +++ b/Makefile @@ -14,7 +14,7 @@ JAVASCRIPTS := LDFLAGS := -X "main.Version=$(shell git describe --tags --always | sed 's/-/+/' | sed 's/^v//')" -X "main.Tags=$(TAGS)" TARGETS ?= linux/*,darwin/*,windows/* -PACKAGES ?= $(filter-out code.gitea.io/gitea/tests,$(shell go list ./... | grep -v /vendor/)) +PACKAGES ?= $(filter-out code.gitea.io/gitea/integrations,$(shell go list ./... | grep -v /vendor/)) SOURCES ?= $(shell find . -name "*.go" -type f) TAGS ?= From b022db53c0ded741b4e576a6c2c20a75fa9cd4c4 Mon Sep 17 00:00:00 2001 From: Mura Li Date: Sat, 4 Mar 2017 22:11:58 +0800 Subject: [PATCH 59/65] govendor update code.gitea.io/sdk/gitea --- vendor/code.gitea.io/sdk/gitea/miscellaneous.go | 2 ++ vendor/vendor.json | 6 +++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/vendor/code.gitea.io/sdk/gitea/miscellaneous.go b/vendor/code.gitea.io/sdk/gitea/miscellaneous.go index bdb7ede622fd1..dc56177ca6208 100644 --- a/vendor/code.gitea.io/sdk/gitea/miscellaneous.go +++ b/vendor/code.gitea.io/sdk/gitea/miscellaneous.go @@ -12,10 +12,12 @@ type MarkdownOption struct { Wiki bool } +// ServerVersion wraps the version of the server type ServerVersion struct { Version string } +// ServerVersion returns the version of the server func (c *Client) ServerVersion() (string, error) { v := ServerVersion{} return v.Version, c.getParsedResponse("GET", "/api/v1/version", nil, nil, &v) diff --git a/vendor/vendor.json b/vendor/vendor.json index afe768a0be66f..78ae8f3ff0f1f 100644 --- a/vendor/vendor.json +++ b/vendor/vendor.json @@ -9,10 +9,10 @@ "revisionTime": "2017-02-22T02:52:05Z" }, { - "checksumSHA1": "K0VWBaa3ZUE598zVFGavdLB7vW4=", + "checksumSHA1": "qXD1HI8bTn7qNJZJOeZqQgxo354=", "path": "code.gitea.io/sdk/gitea", - "revision": "06902fe19508c7ede2be38b71287c665efa1f10d", - "revisionTime": "2017-02-19T11:17:32Z" + "revision": "8807a1d2ced513880b288a5e2add39df6bf72144", + "revisionTime": "2017-03-04T10:22:44Z" }, { "checksumSHA1": "IyfS7Rbl6OgR83QR7TOfKdDCq+M=", From 7fe99595af3326268a906706ed60c470b9c2c59a Mon Sep 17 00:00:00 2001 From: Mura Li Date: Sun, 5 Mar 2017 10:10:58 +0800 Subject: [PATCH 60/65] Fix comment of struct fields --- integrations/internal/utils/utils.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/integrations/internal/utils/utils.go b/integrations/internal/utils/utils.go index 5ba608740f1fd..511fa478b946f 100644 --- a/integrations/internal/utils/utils.go +++ b/integrations/internal/utils/utils.go @@ -32,7 +32,7 @@ type Config struct { // The executable path of the tested program. Program string // Working directory prepared for the tested program. - // If empty, a directory named with random suffixes is picked, and created under the current directory. + // If empty, a directory named with random suffixes is picked, and created under the platform-dependent default temporary directory. // The directory will be removed when the test finishes. WorkDir string // Command-line arguments passed to the tested program. From a7547bfc21137930ccf7bce70aaa84464a3af195 Mon Sep 17 00:00:00 2001 From: Mura Li Date: Sun, 5 Mar 2017 13:01:45 +0800 Subject: [PATCH 61/65] Fix conditional nonsense --- integrations/version_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/integrations/version_test.go b/integrations/version_test.go index 5badf81ca0c60..8f3097ce43f8f 100644 --- a/integrations/version_test.go +++ b/integrations/version_test.go @@ -44,7 +44,7 @@ func version(t *utils.T) error { var r *http.Response r, err = http.Get("http://:" + ServerHTTPPort + "/api/v1/version") - if err == nil { + if err != nil { return err } From 01a2a7377c0155bc2c84bd13259a4affdd3fa3ea Mon Sep 17 00:00:00 2001 From: Mura Li Date: Sun, 5 Mar 2017 13:04:13 +0800 Subject: [PATCH 62/65] Fix missing updates regarding version string changes --- integrations/version_test.go | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/integrations/version_test.go b/integrations/version_test.go index 8f3097ce43f8f..0621fe6941da2 100644 --- a/integrations/version_test.go +++ b/integrations/version_test.go @@ -5,9 +5,8 @@ package integration import ( - "bytes" + "encoding/json" "fmt" - "io/ioutil" "log" "net/http" "os" @@ -17,6 +16,7 @@ import ( "testing" "code.gitea.io/gitea/integrations/internal/utils" + "code.gitea.io/sdk/gitea" "github.com/stretchr/testify/assert" ) @@ -36,8 +36,8 @@ func version(t *utils.T) error { } fields := strings.Fields(string(out)) - if len(fields) != 3 { - return fmt.Errorf("unexpected version string '%s'", out) + if !strings.HasPrefix(string(out), "Gitea version") { + return fmt.Errorf("unexpected version string '%s' of the gitea executable", out) } expected := fields[2] @@ -47,15 +47,16 @@ func version(t *utils.T) error { if err != nil { return err } - defer r.Body.Close() - buf, err := ioutil.ReadAll(r.Body) - if err != nil { + var v gitea.ServerVersion + + dec := json.NewDecoder(r.Body) + if err := dec.Decode(&v); err != nil { return err } - actual := string(bytes.TrimSpace(buf)) + actual := v.Version log.Printf("Actual: \"%s\" Expected: \"%s\"\n", actual, expected) assert.Equal(t, expected, actual) From 55e54c3765012922abe515abc443c637729ca1bc Mon Sep 17 00:00:00 2001 From: Mura Li Date: Sun, 5 Mar 2017 13:35:55 +0800 Subject: [PATCH 63/65] Make variable naming more consistent --- integrations/install_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/integrations/install_test.go b/integrations/install_test.go index c0626dcddb161..f47659cd683bd 100644 --- a/integrations/install_test.go +++ b/integrations/install_test.go @@ -71,11 +71,11 @@ func install(t *utils.T) error { } settings := makeSimpleSettings(_user.Username, path, ServerHTTPPort) - resp, err := http.PostForm("http://:"+ServerHTTPPort+"/install", settings) + r, err = http.PostForm("http://:"+ServerHTTPPort+"/install", settings) if err != nil { return err } - defer resp.Body.Close() + defer r.Body.Close() return nil } From 22a7ad420db5cde0506ad71ed568c38631134283 Mon Sep 17 00:00:00 2001 From: Mura Li Date: Sun, 5 Mar 2017 13:48:35 +0800 Subject: [PATCH 64/65] Check http status code --- integrations/install_test.go | 3 +++ integrations/version_test.go | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/integrations/install_test.go b/integrations/install_test.go index f47659cd683bd..a66319b38d127 100644 --- a/integrations/install_test.go +++ b/integrations/install_test.go @@ -77,6 +77,9 @@ func install(t *utils.T) error { } defer r.Body.Close() + if r.StatusCode != http.StatusOK { + return fmt.Errorf("'api/v1/version': %s\n", r.Status) + } return nil } diff --git a/integrations/version_test.go b/integrations/version_test.go index 0621fe6941da2..79e1df44d26e4 100644 --- a/integrations/version_test.go +++ b/integrations/version_test.go @@ -49,6 +49,10 @@ func version(t *utils.T) error { } defer r.Body.Close() + if r.StatusCode != http.StatusOK { + return fmt.Errorf("'api/v1/version': %s\n", r.Status) + } + var v gitea.ServerVersion dec := json.NewDecoder(r.Body) From 3223af532845146284037bb212743fd1a001e801 Mon Sep 17 00:00:00 2001 From: Mura Li Date: Sun, 5 Mar 2017 13:54:10 +0800 Subject: [PATCH 65/65] Rectify error messages --- integrations/install_test.go | 2 +- integrations/version_test.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/integrations/install_test.go b/integrations/install_test.go index a66319b38d127..96d0ce1780f25 100644 --- a/integrations/install_test.go +++ b/integrations/install_test.go @@ -78,7 +78,7 @@ func install(t *utils.T) error { defer r.Body.Close() if r.StatusCode != http.StatusOK { - return fmt.Errorf("'api/v1/version': %s\n", r.Status) + return fmt.Errorf("'/install': %s", r.Status) } return nil } diff --git a/integrations/version_test.go b/integrations/version_test.go index 79e1df44d26e4..beda5c3ab7870 100644 --- a/integrations/version_test.go +++ b/integrations/version_test.go @@ -50,7 +50,7 @@ func version(t *utils.T) error { defer r.Body.Close() if r.StatusCode != http.StatusOK { - return fmt.Errorf("'api/v1/version': %s\n", r.Status) + return fmt.Errorf("'/api/v1/version': %s\n", r.Status) } var v gitea.ServerVersion