catch parse errors and let the user know in a friendlier manner

This commit is contained in:
jordanbrauer
2021-02-13 11:12:09 -06:00
parent be906eb823
commit 40f2065575

View File

@ -5,6 +5,7 @@ declare(strict_types=1);
namespace Pest\Factories; namespace Pest\Factories;
use Closure; use Closure;
use ParseError;
use Pest\Concerns; use Pest\Concerns;
use Pest\Contracts\HasPrintableTestCaseName; use Pest\Contracts\HasPrintableTestCaseName;
use Pest\Datasets; use Pest\Datasets;
@ -13,6 +14,7 @@ use Pest\Support\HigherOrderMessageCollection;
use Pest\Support\NullClosure; use Pest\Support\NullClosure;
use Pest\TestSuite; use Pest\TestSuite;
use PHPUnit\Framework\TestCase; use PHPUnit\Framework\TestCase;
use RuntimeException;
/** /**
* @internal * @internal
@ -194,15 +196,19 @@ final class TestCaseFactory
$namespace = implode('\\', $partsFQN); $namespace = implode('\\', $partsFQN);
$baseClass = sprintf('\%s', $this->class); $baseClass = sprintf('\%s', $this->class);
eval(" try {
namespace $namespace; eval("
namespace $namespace;
final class $className extends $baseClass implements $hasPrintableTestCaseClassFQN { final class $className extends $baseClass implements $hasPrintableTestCaseClassFQN {
$traitsCode $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; return $classFQN;
} }