1package testing
2
3import (
4	"os"
5	"testing"
6)
7
8func init() {
9	testTesting = true
10
11	if err := os.Setenv(TestEnvVar, "1"); err != nil {
12		panic(err)
13	}
14}
15
16func TestTest_noEnv(t *testing.T) {
17	// Unset the variable
18	if err := os.Setenv(TestEnvVar, ""); err != nil {
19		t.Fatalf("err: %s", err)
20	}
21	defer os.Setenv(TestEnvVar, "1")
22
23	mt := new(mockT)
24	Test(mt, TestCase{
25		AcceptanceTest: true,
26	})
27
28	if !mt.SkipCalled {
29		t.Fatal("skip not called")
30	}
31}
32
33func TestTest_preCheck(t *testing.T) {
34	called := false
35
36	mt := new(mockT)
37	Test(mt, TestCase{
38		PreCheck: func() { called = true },
39	})
40
41	if !called {
42		t.Fatal("precheck should be called")
43	}
44}
45
46// mockT implements TestT for testing
47type mockT struct {
48	ErrorCalled bool
49	ErrorArgs   []interface{}
50	FatalCalled bool
51	FatalArgs   []interface{}
52	SkipCalled  bool
53	SkipArgs    []interface{}
54
55	f bool
56}
57
58func (t *mockT) Error(args ...interface{}) {
59	t.ErrorCalled = true
60	t.ErrorArgs = args
61	t.f = true
62}
63
64func (t *mockT) Fatal(args ...interface{}) {
65	t.FatalCalled = true
66	t.FatalArgs = args
67	t.f = true
68}
69
70func (t *mockT) Skip(args ...interface{}) {
71	t.SkipCalled = true
72	t.SkipArgs = args
73	t.f = true
74}
75
76func (t *mockT) failed() bool {
77	return t.f
78}
79
80func (t *mockT) failMessage() string {
81	if t.FatalCalled {
82		return t.FatalArgs[0].(string)
83	} else if t.ErrorCalled {
84		return t.ErrorArgs[0].(string)
85	} else if t.SkipCalled {
86		return t.SkipArgs[0].(string)
87	}
88
89	return "unknown"
90}
91