Skip to content

Commit

Permalink
Merge pull request #32 from dailymotion/aftertest_on_fail_panic
Browse files Browse the repository at this point in the history
Resolved #30
  • Loading branch information
ubermensch01 committed Jun 3, 2020
2 parents d4de48c + 5cc96db commit c1bc798
Show file tree
Hide file tree
Showing 18 changed files with 261 additions and 50 deletions.
5 changes: 2 additions & 3 deletions error.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,10 +51,9 @@ func allureError(err error, status string, now bool) {
manipulateOnObjectFromCtx(
testInstanceKey,
func(testInstance interface{}) {
testInstance.(*testing.T).Fail()
if now {
testInstance.(*testing.T).FailNow()
} else {
testInstance.(*testing.T).Fail()
panic(err)
}
})
}
Expand Down
40 changes: 0 additions & 40 deletions example/example_error_test.go

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package example
package failure_examples

import (
"github.com/dailymotion/allure-go"
Expand Down
16 changes: 16 additions & 0 deletions example/failure_examples/example_break_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package failure_examples

import (
"github.com/dailymotion/allure-go"
"github.com/pkg/errors"
"testing"
)

func TestBreakAllure(t *testing.T) {
allure.Test(t, allure.Description("Test with Allure error in it"), allure.Action(func() {
allure.Step(allure.Description("Step 1"), allure.Action(func() {}))
allure.Step(allure.Description("Step 2"), allure.Action(func() {
allure.Break(errors.New("Error message"))
}))
}))
}
14 changes: 14 additions & 0 deletions example/failure_examples/example_breaknow_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package failure_examples

import (
"github.com/dailymotion/allure-go"
"github.com/pkg/errors"
"testing"
)

func TestBreakNowAllure(t *testing.T) {
allure.Test(t, allure.Description("Test with Allure error in it"), allure.Action(func() {
allure.BreakNow(errors.New("A more serious error"))
allure.Step(allure.Description("Step you're not supposed to see"), allure.Action(func() {}))
}))
}
17 changes: 17 additions & 0 deletions example/failure_examples/example_fail_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package failure_examples

import (
"github.com/dailymotion/allure-go"
"github.com/pkg/errors"
"testing"
)

func TestFailAllure(t *testing.T) {
allure.Test(t, allure.Description("Test with Allure error in it"), allure.Action(func() {
allure.Step(allure.Description("Step 1"), allure.Action(func() {
}))
allure.Step(allure.Description("Step 2"), allure.Action(func() {
allure.Fail(errors.New("Error message"))
}))
}))
}
14 changes: 14 additions & 0 deletions example/failure_examples/example_failnow_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package failure_examples

import (
"github.com/dailymotion/allure-go"
"github.com/pkg/errors"
"testing"
)

func TestFailNowAllure(t *testing.T) {
allure.Test(t, allure.Description("Test with Allure error in it"), allure.Action(func() {
allure.FailNow(errors.New("A more serious error"))
allure.Step(allure.Description("Step you're not supposed to see"), allure.Action(func() {}))
}))
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package example
package failure_examples

import (
"github.com/dailymotion/allure-go"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package example
package failure_examples

import (
"github.com/dailymotion/allure-go"
Expand Down
23 changes: 23 additions & 0 deletions example/failure_examples/teardown/example_after_break_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package teardown

import (
"errors"
"github.com/dailymotion/allure-go"
"testing"
)

func TestAfterBreak(t *testing.T) {
allure.Test(t,
allure.Description("Break now"),
allure.Action(func() {
//panic("panic at the before statement! (disco)")
allure.Break(errors.New("break now statement"))

allure.Step(allure.Description("Step after break"),
allure.Action(func() {}))
}))

allure.AfterTest(t, allure.Action(func() {
allure.Step(allure.Description("Running after a panic"))
}))
}
23 changes: 23 additions & 0 deletions example/failure_examples/teardown/example_after_breaknow_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package teardown

import (
"errors"
"github.com/dailymotion/allure-go"
"testing"
)

func TestAfterBreakNow(t *testing.T) {
allure.Test(t,
allure.Description("Break now"),
allure.Action(func() {
//panic("panic at the before statement! (disco)")
allure.BreakNow(errors.New("break now statement"))

allure.Step(allure.Description("Step after break"),
allure.Action(func() {}))
}))

allure.AfterTest(t, allure.Action(func() {
allure.Step(allure.Description("Running after a panic"))
}))
}
23 changes: 23 additions & 0 deletions example/failure_examples/teardown/example_after_fail_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package teardown

import (
"errors"
"github.com/dailymotion/allure-go"
"testing"
)

func TestAfterFail(t *testing.T) {
allure.Test(t,
allure.Description("Break now"),
allure.Action(func() {
//panic("panic at the before statement! (disco)")
allure.Fail(errors.New("break now statement"))

allure.Step(allure.Description("Step after break"),
allure.Action(func() {}))
}))

allure.AfterTest(t, allure.Action(func() {
allure.Step(allure.Description("Running after a panic"))
}))
}
23 changes: 23 additions & 0 deletions example/failure_examples/teardown/example_after_failnow_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package teardown

import (
"errors"
"github.com/dailymotion/allure-go"
"testing"
)

func TestAfterFailNow(t *testing.T) {
allure.Test(t,
allure.Description("Break now"),
allure.Action(func() {
//panic("panic at the before statement! (disco)")
allure.FailNow(errors.New("break now statement"))

allure.Step(allure.Description("Step after break"),
allure.Action(func() {}))
}))

allure.AfterTest(t, allure.Action(func() {
allure.Step(allure.Description("Running after a panic"))
}))
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package teardown

import (
"errors"
"github.com/dailymotion/allure-go"
"testing"
)

func TestDeferredAfterBreak(t *testing.T) {
allure.Test(t,
allure.Description("Break now"),
allure.Action(func() {
//panic("panic at the before statement! (disco)")
allure.Break(errors.New("break now statement"))

allure.Step(allure.Description("Step after break"),
allure.Action(func() {}))
}))
defer func() {
allure.AfterTest(t, allure.Action(func() {
allure.Step(allure.Description("Running after a panic"))
}))
}()
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package teardown

import (
"errors"
"github.com/dailymotion/allure-go"
"testing"
)

func TestDeferredAfterBreakNow(t *testing.T) {
allure.Test(t,
allure.Description("Break now"),
allure.Action(func() {
//panic("panic at the before statement! (disco)")
allure.BreakNow(errors.New("break now statement"))

allure.Step(allure.Description("Step after break"),
allure.Action(func() {}))
}))
defer func() {
allure.AfterTest(t, allure.Action(func() {
allure.Step(allure.Description("Running after a panic"))
}))
}()
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package teardown

import (
"errors"
"github.com/dailymotion/allure-go"
"testing"
)

func TestDeferredAfterFail(t *testing.T) {
allure.Test(t,
allure.Description("Break now"),
allure.Action(func() {
//panic("panic at the before statement! (disco)")
allure.Fail(errors.New("break now statement"))

allure.Step(allure.Description("Step after break"),
allure.Action(func() {}))
}))
defer func() {
allure.AfterTest(t, allure.Action(func() {
allure.Step(allure.Description("Running after a panic"))
}))
}()
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package teardown

import (
"errors"
"github.com/dailymotion/allure-go"
"testing"
)

func TestDeferredAfterFailNow(t *testing.T) {
allure.Test(t,
allure.Description("Break now"),
allure.Action(func() {
//panic("panic at the before statement! (disco)")
allure.FailNow(errors.New("break now statement"))

allure.Step(allure.Description("Step after break"),
allure.Action(func() {}))
}))
defer func() {
allure.AfterTest(t, allure.Action(func() {
allure.Step(allure.Description("Running after a panic"))
}))
}()
}
11 changes: 7 additions & 4 deletions test.go
Original file line number Diff line number Diff line change
Expand Up @@ -88,12 +88,15 @@ func Test(t *testing.T, testOptions ...Option) {
getCurrentTestPhaseObject(t).Test = r
r.Stop = getTimestampMs()
if panicObject != nil {
isFailed := t.Failed()
t.Fail()
r.StatusDetails = &statusDetails{
Message: fmt.Sprintf("%+v", panicObject),
Trace: filterStackTrace(debug.Stack()),
}
r.Status = broken
if !isFailed {
r.Status = broken
}
}
if r.Status == "" {
r.Status = getTestStatus(t)
Expand All @@ -113,9 +116,9 @@ func Test(t *testing.T, testOptions ...Option) {
}
}

if panicObject != nil {
panic(panicObject)
}
//if panicObject != nil {
// panic(panicObject)
//}
}()
ctxMgr.SetValues(gls.Values{
testResultKey: r,
Expand Down

0 comments on commit c1bc798

Please sign in to comment.