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