Commit Graph

13 Commits

Author SHA1 Message Date
729f18a152 fix: stacktrace with nested with calls 2026-04-10 17:25:05 +01:00
26345fd9f4 fix: dataset inheritance with method chaining (beforeEach()->with(), describe()->with())
Fixes issue where datasets were not applied when using method chaining patterns
like beforeEach()->with([...]) or describe()->with([...]) inside nested describe blocks.

Root cause: Multiple functions were using Backtrace::file() which returns the
immediate caller's filename. This breaks when called through method chaining
because the backtrace returns internal Pest files instead of the test file.

Solution: Use Backtrace::testFile() which walks the entire backtrace to find
the actual test file being executed. This matches the pattern already used by
test() and describe() functions.

Changes in src/Functions.php:
- beforeEach(): Use testFile() to fix beforeEach()->with() pattern
- afterEach(): Use testFile() for consistency with beforeEach()
- beforeAll(): Use testFile() for better error messages
- afterAll(): Use testFile() for better error messages
- pest(): Use testFile() to fix pest()->beforeEach() pattern
- uses(): Use testFile() for consistency with pest()
- covers(): Use testFile() for correct test file context
- mutates(): Use testFile() for correct test file context

Changes in src/PendingCalls/DescribeCall.php:
- __destruct(): Force BeforeEachCall destructor before test creation
- __call(): Use $this->filename instead of Backtrace, more efficient
- __call(): Properly merge describing context for nested describe blocks

Fixes patterns:
- beforeEach()->with([...])
- describe()->with([...])
- pest()->beforeEach()->with([...]

Tests passing:
- tests/Features/Describe.php (all dataset tests)
- tests/Hooks/BeforeEachTest.php (global hook execution)
- tests/Features/Expect/toMatchSnapshot.php (28 tests)
2025-11-05 17:46:52 +01:00
d6c6489e93 Merge branch '4.x' into fix/sibling-describe-blocks 2025-07-26 04:26:10 +01:00
f68d11ccae chore: bumps dependencies 2025-03-29 17:44:06 +00:00
50ff347b59 Pass description into describe call 2025-01-20 17:40:18 -05:00
b5b8fab09b Fix an issue where beforeEach/afterEach functions were called on other describe blocks with the same name 2025-01-20 17:36:22 -05:00
9510d4a2f9 Change array type hint 2024-10-13 09:54:19 -04:00
a6cd83665c Execute all parent beforeEach and afterEach functions for each test 2024-10-11 23:51:18 -04:00
0c57142c03 Fix an issue where a describe block will prevent a beforeEach call from executing 2024-10-11 21:24:08 -04:00
ee32f25485 feat: pr and issue 2024-07-04 00:53:58 +01:00
bc951787d3 feat(describe): snapshots 2023-07-01 10:31:26 +01:00
3e8616ec64 feat(describe): continues work around hooks 2023-07-01 10:31:26 +01:00
465c65243d feat(describe): improves logic around hooks 2023-07-01 10:31:26 +01:00