| // These tests verify the test running logic. |
| |
| package gocheck_test |
| |
| import ( |
| "gocheck" |
| . "gocheck/local" |
| "os" |
| ) |
| |
| |
| var runnerS = gocheck.Suite(&RunS{}) |
| |
| type RunS struct{} |
| |
| func (s *RunS) TestCountSuite(c *gocheck.C) { |
| suitesRun += 1 |
| } |
| |
| |
| // ----------------------------------------------------------------------- |
| // Tests ensuring result counting works properly. |
| |
| func (s *RunS) TestSuccess(c *gocheck.C) { |
| output := String{} |
| result := gocheck.Run(&SuccessHelper{}, &gocheck.RunConf{Output: &output}) |
| c.Check(result.Succeeded, Equals, 1) |
| c.Check(result.Failed, Equals, 0) |
| c.Check(result.Skipped, Equals, 0) |
| c.Check(result.Panicked, Equals, 0) |
| c.Check(result.FixturePanicked, Equals, 0) |
| c.Check(result.Missed, Equals, 0) |
| c.Check(result.RunError, IsNil) |
| } |
| |
| func (s *RunS) TestFailure(c *gocheck.C) { |
| output := String{} |
| result := gocheck.Run(&FailHelper{}, &gocheck.RunConf{Output: &output}) |
| c.Check(result.Succeeded, Equals, 0) |
| c.Check(result.Failed, Equals, 1) |
| c.Check(result.Skipped, Equals, 0) |
| c.Check(result.Panicked, Equals, 0) |
| c.Check(result.FixturePanicked, Equals, 0) |
| c.Check(result.Missed, Equals, 0) |
| c.Check(result.RunError, IsNil) |
| } |
| |
| func (s *RunS) TestFixture(c *gocheck.C) { |
| output := String{} |
| result := gocheck.Run(&FixtureHelper{}, &gocheck.RunConf{Output: &output}) |
| c.Check(result.Succeeded, Equals, 2) |
| c.Check(result.Failed, Equals, 0) |
| c.Check(result.Skipped, Equals, 0) |
| c.Check(result.Panicked, Equals, 0) |
| c.Check(result.FixturePanicked, Equals, 0) |
| c.Check(result.Missed, Equals, 0) |
| c.Check(result.RunError, IsNil) |
| } |
| |
| func (s *RunS) TestPanicOnTest(c *gocheck.C) { |
| output := String{} |
| helper := &FixtureHelper{panicOn:"Test1"} |
| result := gocheck.Run(helper, &gocheck.RunConf{Output: &output}) |
| c.Check(result.Succeeded, Equals, 1) |
| c.Check(result.Failed, Equals, 0) |
| c.Check(result.Skipped, Equals, 0) |
| c.Check(result.Panicked, Equals, 1) |
| c.Check(result.FixturePanicked, Equals, 0) |
| c.Check(result.Missed, Equals, 0) |
| c.Check(result.RunError, IsNil) |
| } |
| |
| func (s *RunS) TestPanicOnSetUpTest(c *gocheck.C) { |
| output := String{} |
| helper := &FixtureHelper{panicOn:"SetUpTest"} |
| result := gocheck.Run(helper, &gocheck.RunConf{Output: &output}) |
| c.Check(result.Succeeded, Equals, 0) |
| c.Check(result.Failed, Equals, 0) |
| c.Check(result.Skipped, Equals, 0) |
| c.Check(result.Panicked, Equals, 0) |
| c.Check(result.FixturePanicked, Equals, 1) |
| c.Check(result.Missed, Equals, 2) |
| c.Check(result.RunError, IsNil) |
| } |
| |
| func (s *RunS) TestPanicOnSetUpSuite(c *gocheck.C) { |
| output := String{} |
| helper := &FixtureHelper{panicOn:"SetUpSuite"} |
| result := gocheck.Run(helper, &gocheck.RunConf{Output: &output}) |
| c.Check(result.Succeeded, Equals, 0) |
| c.Check(result.Failed, Equals, 0) |
| c.Check(result.Skipped, Equals, 0) |
| c.Check(result.Panicked, Equals, 0) |
| c.Check(result.FixturePanicked, Equals, 1) |
| c.Check(result.Missed, Equals, 2) |
| c.Check(result.RunError, IsNil) |
| } |
| |
| |
| // ----------------------------------------------------------------------- |
| // Check result aggregation. |
| |
| func (s *RunS) TestAdd(c *gocheck.C) { |
| result := &gocheck.Result{Succeeded:1, Skipped:2, Failed:3, Panicked:4, |
| FixturePanicked:5, Missed:6} |
| result.Add(&gocheck.Result{Succeeded:10, Skipped:20, Failed:30, |
| Panicked:40, FixturePanicked:50, Missed:60}) |
| c.Check(result.Succeeded, Equals, 11) |
| c.Check(result.Skipped, Equals, 22) |
| c.Check(result.Failed, Equals, 33) |
| c.Check(result.Panicked, Equals, 44) |
| c.Check(result.FixturePanicked, Equals, 55) |
| c.Check(result.Missed, Equals, 66) |
| c.Check(result.RunError, IsNil) |
| } |
| |
| |
| // ----------------------------------------------------------------------- |
| // Check the Passed() method. |
| |
| func (s *RunS) TestPassed(c *gocheck.C) { |
| c.Assert((&gocheck.Result{}).Passed(), Equals, true) |
| c.Assert((&gocheck.Result{Succeeded:1}).Passed(), Equals, true) |
| c.Assert((&gocheck.Result{Skipped:1}).Passed(), Equals, true) |
| c.Assert((&gocheck.Result{Failed:1}).Passed(), Equals, false) |
| c.Assert((&gocheck.Result{Panicked:1}).Passed(), Equals, false) |
| c.Assert((&gocheck.Result{FixturePanicked:1}).Passed(), Equals, false) |
| c.Assert((&gocheck.Result{Missed:1}).Passed(), Equals, false) |
| c.Assert((&gocheck.Result{RunError:os.NewError("!")}).Passed(), Equals, false) |
| } |
| |
| // ----------------------------------------------------------------------- |
| // Check that result printing is working correctly. |
| |
| func (s *RunS) TestPrintSuccess(c *gocheck.C) { |
| result := &gocheck.Result{Succeeded:5} |
| c.Check(result.String(), Equals, "OK: 5 passed") |
| } |
| |
| func (s *RunS) TestPrintFailure(c *gocheck.C) { |
| result := &gocheck.Result{Failed:5} |
| c.Check(result.String(), Equals, "OOPS: 0 passed, 5 FAILED") |
| } |
| |
| func (s *RunS) TestPrintSkipped(c *gocheck.C) { |
| result := &gocheck.Result{Skipped:5} |
| c.Check(result.String(), Equals, "OK: 0 passed, 5 skipped") |
| } |
| |
| func (s *RunS) TestPrintPanicked(c *gocheck.C) { |
| result := &gocheck.Result{Panicked:5} |
| c.Check(result.String(), Equals, "OOPS: 0 passed, 5 PANICKED") |
| } |
| |
| func (s *RunS) TestPrintFixturePanicked(c *gocheck.C) { |
| result := &gocheck.Result{FixturePanicked:5} |
| c.Check(result.String(), Equals, "OOPS: 0 passed, 5 FIXTURE PANICKED") |
| } |
| |
| func (s *RunS) TestPrintMissed(c *gocheck.C) { |
| result := &gocheck.Result{Missed:5} |
| c.Check(result.String(), Equals, "OOPS: 0 passed, 5 MISSED") |
| } |
| |
| func (s *RunS) TestPrintAll(c *gocheck.C) { |
| result := &gocheck.Result{Succeeded:1, Skipped:2, Panicked:3, |
| FixturePanicked:4, Missed:5} |
| c.Check(result.String(), Equals, |
| "OOPS: 1 passed, 2 skipped, 3 PANICKED, " + |
| "4 FIXTURE PANICKED, 5 MISSED") |
| } |
| |
| func (s *RunS) TestPrintRunError(c *gocheck.C) { |
| result := &gocheck.Result{Succeeded:1, Failed:1, |
| RunError: os.NewError("Kaboom!")} |
| c.Check(result.String(), Equals, "ERROR: Kaboom!") |
| } |
| |
| |
| // ----------------------------------------------------------------------- |
| // Verify that the method pattern flag works correctly. |
| |
| func (s *RunS) TestFilterTestName(c *gocheck.C) { |
| helper := FixtureHelper{} |
| output := String{} |
| runConf := gocheck.RunConf{Output: &output, Filter: "Test[91]"} |
| gocheck.Run(&helper, &runConf) |
| c.Check(helper.calls[0], Equals, "SetUpSuite") |
| c.Check(helper.calls[1], Equals, "SetUpTest") |
| c.Check(helper.calls[2], Equals, "Test1") |
| c.Check(helper.calls[3], Equals, "TearDownTest") |
| c.Check(helper.calls[4], Equals, "TearDownSuite") |
| c.Check(helper.n, Equals, 5) |
| } |
| |
| func (s *RunS) TestFilterTestNameWithAll(c *gocheck.C) { |
| helper := FixtureHelper{} |
| output := String{} |
| runConf := gocheck.RunConf{Output: &output, Filter: ".*"} |
| gocheck.Run(&helper, &runConf) |
| c.Check(helper.calls[0], Equals, "SetUpSuite") |
| c.Check(helper.calls[1], Equals, "SetUpTest") |
| c.Check(helper.calls[2], Equals, "Test1") |
| c.Check(helper.calls[3], Equals, "TearDownTest") |
| c.Check(helper.calls[4], Equals, "SetUpTest") |
| c.Check(helper.calls[5], Equals, "Test2") |
| c.Check(helper.calls[6], Equals, "TearDownTest") |
| c.Check(helper.calls[7], Equals, "TearDownSuite") |
| c.Check(helper.n, Equals, 8) |
| } |
| |
| func (s *RunS) TestFilterSuiteName(c *gocheck.C) { |
| helper := FixtureHelper{} |
| output := String{} |
| runConf := gocheck.RunConf{Output: &output, Filter: "FixtureHelper"} |
| gocheck.Run(&helper, &runConf) |
| c.Check(helper.calls[0], Equals, "SetUpSuite") |
| c.Check(helper.calls[1], Equals, "SetUpTest") |
| c.Check(helper.calls[2], Equals, "Test1") |
| c.Check(helper.calls[3], Equals, "TearDownTest") |
| c.Check(helper.calls[4], Equals, "SetUpTest") |
| c.Check(helper.calls[5], Equals, "Test2") |
| c.Check(helper.calls[6], Equals, "TearDownTest") |
| c.Check(helper.calls[7], Equals, "TearDownSuite") |
| c.Check(helper.n, Equals, 8) |
| } |
| |
| func (s *RunS) TestFilterSuiteNameAndTestName(c *gocheck.C) { |
| helper := FixtureHelper{} |
| output := String{} |
| runConf := gocheck.RunConf{Output: &output, Filter: "FixtureHelper\\.Test2"} |
| gocheck.Run(&helper, &runConf) |
| c.Check(helper.calls[0], Equals, "SetUpSuite") |
| c.Check(helper.calls[1], Equals, "SetUpTest") |
| c.Check(helper.calls[2], Equals, "Test2") |
| c.Check(helper.calls[3], Equals, "TearDownTest") |
| c.Check(helper.calls[4], Equals, "TearDownSuite") |
| c.Check(helper.n, Equals, 5) |
| } |
| |
| func (s *RunS) TestFilterAllOut(c *gocheck.C) { |
| helper := FixtureHelper{} |
| output := String{} |
| runConf := gocheck.RunConf{Output: &output, Filter: "NotFound"} |
| gocheck.Run(&helper, &runConf) |
| c.Check(helper.n, Equals, 0) |
| } |
| |
| func (s *RunS) TestRequirePartialMatch(c *gocheck.C) { |
| helper := FixtureHelper{} |
| output := String{} |
| runConf := gocheck.RunConf{Output: &output, Filter: "est"} |
| gocheck.Run(&helper, &runConf) |
| c.Check(helper.n, Equals, 8) |
| } |
| |
| |
| func (s *RunS) TestFilterError(c *gocheck.C) { |
| helper := FixtureHelper{} |
| output := String{} |
| runConf := gocheck.RunConf{Output: &output, Filter: "]["} |
| result := gocheck.Run(&helper, &runConf) |
| c.Check(result.String(), Equals, |
| "ERROR: Bad filter expression: unmatched ']'") |
| c.Check(helper.n, Equals, 0) |
| } |