From 40f2065575aad62629a3f65774ef11bbbce224be Mon Sep 17 00:00:00 2001 From: jordanbrauer <18744334+jordanbrauer@users.noreply.github.com> Date: Sat, 13 Feb 2021 11:12:09 -0600 Subject: [PATCH] catch parse errors and let the user know in a friendlier manner --- src/Factories/TestCaseFactory.php | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/Factories/TestCaseFactory.php b/src/Factories/TestCaseFactory.php index f4773ce6..df1c0d2a 100644 --- a/src/Factories/TestCaseFactory.php +++ b/src/Factories/TestCaseFactory.php @@ -5,6 +5,7 @@ declare(strict_types=1); namespace Pest\Factories; use Closure; +use ParseError; use Pest\Concerns; use Pest\Contracts\HasPrintableTestCaseName; use Pest\Datasets; @@ -13,6 +14,7 @@ use Pest\Support\HigherOrderMessageCollection; use Pest\Support\NullClosure; use Pest\TestSuite; use PHPUnit\Framework\TestCase; +use RuntimeException; /** * @internal @@ -194,15 +196,19 @@ final class TestCaseFactory $namespace = implode('\\', $partsFQN); $baseClass = sprintf('\%s', $this->class); - eval(" - namespace $namespace; + try { + eval(" + namespace $namespace; - final class $className extends $baseClass implements $hasPrintableTestCaseClassFQN { - $traitsCode + final class $className extends $baseClass implements $hasPrintableTestCaseClassFQN { + $traitsCode - private static \$__filename = '$filename'; - } - "); + private static \$__filename = '$filename'; + } + "); + } catch (ParseError $caught) { + throw new RuntimeException(sprintf('Unable to create test case for test file at %s', $filename), 1, $caught); + } return $classFQN; }