Commit Graph

52 Commits (master)

Author SHA1 Message Date
Arjun Mahishi c41592ba5f suite: fix deadlock in suite.Require()/Assert()
As pointed out in issue #1520, if the suite is not initialised properly
(buy calling the Run function), then calling suite.Require() or
suite.Assert() will result in a deadlock.

This commit fixes that by panicking if the suite is not initialised
properly. This is justified because, the suite is intended to be
triggered in the right way. If the user does not do that, this panic will
nudge them in the right direction.

It has to be a panic because, at this point, we don't have access to any
testing.T context to gracefully call a t.Fail(). Also, these two
functions are not expected to return an error.

Fixes #1520
2024-02-18 23:55:01 +05:30
Olivier Mengué 2be68b5e9e suite: fix recoverAndFailOnPanic to report at the right location
Add calls to t.Helper() to fix the location where the panic is reported
as a test failure.
2024-01-31 16:01:43 +01:00
Linus Barth a4a54a4597 fix: panic behavior for subtests
This fix adds panic handling for subtests which will achieve:
- subtests will fail for the correct test context when panicking
- the test execution is not stopped; the next subtest will be executed
2023-10-30 22:51:08 +01:00
Linus Barth 4526456fa4 improve: defer-style in Suite.Run() 2023-10-30 22:51:08 +01:00
Linus Barth 737a765d89 fix: SetupSubTest and TearDownSubTest execution order
There were two problems with the order of execution in the Suite.Run() method:
- One could not access the correct testing context ("s.T()") inside the SetupSubTest and TearDownSubTest methods. If the testing context was used for e.g. assertions of mocks in the TearDownSubTest, the results would not be "attached" to the correct test in the test output.
- The behavior was different to the order of execution for "root" tests (see lines 167-201) regarding the SetupTest and TearDownTest methods. This could confuse users of the library.

Also the logic to be deferred was joined together. This was fine beforehand because a panic in the TearDownSubTest would have had no influence on the "suite.SetT(oldT)". Now since a panic in the TearDownSubTest would lead to omitting the "suite.SetT(oldT)" this defer was split into two separate defers.
2023-10-30 22:51:08 +01:00
Vadym Tishchenko 1333b5d3bd
Add sub-tests to Suite (#1246)
Co-authored-by: Vadym Tishchenko <v.tishchenko@evopay.com.ua>
2022-11-02 21:46:59 +10:00
nicoche 1b73601ae8
suite: correctly set stats on test panic (#1195) 2022-06-23 19:40:15 +10:00
Weizhen Wang 106ec21d14 use RWMutex
Signed-off-by: Weizhen Wang <wangweizhen@pingcap.com>
2022-05-04 20:46:29 +10:00
Weizhen Wang a409ccf19e fix data race in the suit
Signed-off-by: Weizhen Wang <wangweizhen@pingcap.com>
2022-05-04 20:46:29 +10:00
ariley cd58006fe6 Change how tearDownAllSuite is run to aviod deadlock when running with failfast 2020-05-05 08:16:34 +10:00
ariley 097ec799df Change how tearDownAllSuite is run to aviod deadlock when running with failfast 2020-05-05 08:16:34 +10:00
Boyan 2566b66989 Resolve conflicts 2020-04-24 07:38:44 +10:00
Aaron N. Brock f238e4b70a Move teardown defers to before setup 2020-04-24 07:38:44 +10:00
ariley f43aa3c488 Change to guard clause 2020-04-23 15:52:53 +02:00
ariley a41f2db807 Add warning in log when no tests are run within a suite 2020-04-23 15:52:53 +02:00
Esdras Beleza de Noronha 961bfee4b1 Add function to return if all tests in a suite passed 2020-03-11 19:42:32 +11:00
Esdras Beleza de Noronha f37e428318 Use comma ok idiom 2020-03-11 19:42:32 +11:00
Esdras Beleza de Noronha 89909913cc Fix var block with only one variable 2020-03-11 19:42:32 +11:00
Esdras Beleza e8910bb335 Add stats to suites and tests 2020-03-11 19:42:32 +11:00
Boyan 3ebf1ddaeb Revert PR #867 2020-02-20 07:56:11 +11:00
Corey McGregor 624f997379 fix(suite): Add Fatalf method to suite.TestingT for gomock compatibility 2020-02-19 07:05:10 +11:00
Chris K 9dfcf7c562 suite: make suite.TestingT satisfy mock.TestingT
...by adding Logf method.
2020-02-05 20:52:22 +11:00
Keynan Pratt ea72eb9159 added Log/Skip methods as required by CI tests 2020-01-29 11:08:28 +11:00
Keynan Pratt d3e61647c0 removed Helper method from TestingT interface 2020-01-29 11:08:28 +11:00
Keynan Pratt 045d838faf changed dependency to interface, s.t. consumers can easily mock the testing.T type 2020-01-29 11:08:28 +11:00
devdinu 3c60a0e014 Merging suite_order_test in suite test, removing anonymous defer func call 2020-01-16 14:06:22 +11:00
Dinesh Kumar 0d3c8ce9f8 fixing suite teardown ordering issue
(cherry picked from commit 92c097a5af7b4bbbe3a66c2e7484f68194cd555a)
2020-01-16 14:06:22 +11:00
Leigh McCulloch 3b0d317f67 Fix code not gofmtd 2019-12-09 10:12:49 -07:00
Sergej Zagursky 10a9f47426 Show stack trace on panic 2019-02-28 14:40:23 -07:00
Tigran Saluev 2894c76efe Rename setupDone to suiteSetupDone 2019-02-14 09:28:04 -07:00
Tigran Saluev 3efd733edb Don't setup suite if no methods satisfy filter
When suite setup is long, the necessity to wait for all suite setups for testing one single method bothers a lot. Here's a little fix of that behavior.
2019-02-14 09:28:04 -07:00
Kyl Wellman 865fb2c8f5 Add support for subtests (go 1.7) 2019-01-02 10:25:22 -07:00
Iaroslav Ciupin 660f15d67d Recover panic in suite 2018-12-24 10:37:47 -07:00
Ben Blount 3104bf5483 Use Go 1.7 subtests so suites can properly nest
This removes dependencies on Go Testing Internals and
also enables test methods within a suite to have subtests.

Fixes #346
2017-05-29 12:27:49 +01:00
Ernesto Jiménez cd206b0fb2 Merge pull request #318 from esdrasbeleza/master
Add callbacks to be run after and before each test
2016-12-17 13:30:15 -06:00
Esdras Beleza 5e72f93a89 Remove timestamp from callback 2016-09-26 13:48:19 -03:00
Ernesto Jiménez bfe70f3776 Namespace suite flag `m` to `testify.m` 2016-09-24 19:52:00 +01:00
Esdras Beleza bf7a93e70c Add timestamp 2016-06-26 18:36:07 -03:00
Esdras Beleza fcedfe2aad Add callbacks to run before and after each test 2016-06-26 18:35:37 -03:00
Ernesto Jiménez 95644cab17 Fixes issue #149 2015-11-01 15:12:29 +00:00
Samuel Nelson 354307edce Add getters for *assert.Assertions and *require.Assertions 2015-01-19 12:15:53 -07:00
Jon Gjengset 81a69ed105 Defer suite teardown to align with test teardown 2014-11-25 19:58:50 -05:00
Jon Gjengset c1b496c5c9 Ensure TearDownTest is called after Skip 2014-11-03 17:46:03 -05:00
Tyler Bunnell 459056d303 Merge forward assertions. 2014-06-30 11:34:00 -06:00
Zaur Abasmirzoev d68e894fba Clear staff 2014-06-16 20:06:15 +04:00
Zaur Abasmirzoev 78cdc04039 Specify the method of the test suite 2014-06-16 19:50:34 +04:00
taichi 52f556e421 Simplify the API by using the new assertion. 2014-03-11 16:39:56 +09:00
Sean Talts 72c1136caa Formatting, restore T after test is over just in case 2014-03-07 12:54:55 -05:00
Sean Talts 5739ba4d16 Have testing.RunTests run the tests we find with their setup methods. 2014-03-07 12:14:37 -05:00
Samuel Nelson 46e05f3e57 Removing unnecessary defer (the call was already at the end of the function it was in
)
2013-10-15 12:02:07 -06:00