From 256b167eafa04979f15c73c8dec7cd8ff6a7c2c1 Mon Sep 17 00:00:00 2001 From: luke Date: Thu, 5 Aug 2021 15:31:09 +0100 Subject: [PATCH] Improvements --- bin/pest | 2 +- src/Console/Paratest/PestRunnerWorker.php | 13 ++++++++++++- src/Console/Paratest/Runner.php | 4 ++++ 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/bin/pest b/bin/pest index 39302e87..4e7f94c2 100755 --- a/bin/pest +++ b/bin/pest @@ -62,7 +62,7 @@ use Symfony\Component\Console\Output\OutputInterface; $_SERVER['argv'][] = '--runner'; $_SERVER['argv'][] = Runner::class; - exit(ParaTestCommand::applicationFactory(getcwd())->run(new ArgvInput())); + exit(ParaTestCommand::applicationFactory($testSuite->rootPath)->run(new ArgvInput())); } exit($container->get(Command::class)->run($_SERVER['argv'])); diff --git a/src/Console/Paratest/PestRunnerWorker.php b/src/Console/Paratest/PestRunnerWorker.php index dfb777f7..decd2130 100644 --- a/src/Console/Paratest/PestRunnerWorker.php +++ b/src/Console/Paratest/PestRunnerWorker.php @@ -40,7 +40,7 @@ final class PestRunnerWorker $args = array_merge( $args, $this->executableTest->commandArguments( - '/Users/luke/Packages/pest/bin/pest', + $this->getPestBinary(), $options->filtered(), $options->passthru() ) @@ -109,6 +109,17 @@ final class PestRunnerWorker } } + private function getPestBinary(): string + { + // Used when Pest is required using composer. + $vendorPath = dirname(__DIR__, 7) . '/bin/pest'; + + // Used when Pest maintainers are running Pest tests. + $localPath = dirname(__DIR__, 3) . '/bin/pest'; + + return file_exists($vendorPath) ? $vendorPath : $localPath; + } + public function getWorkerCrashedException(?Throwable $previousException = null): WorkerCrashedException { return WorkerCrashedException::fromProcess( diff --git a/src/Console/Paratest/Runner.php b/src/Console/Paratest/Runner.php index 56d31e42..d30d24b4 100644 --- a/src/Console/Paratest/Runner.php +++ b/src/Console/Paratest/Runner.php @@ -13,6 +13,7 @@ use ParaTest\Runners\PHPUnit\Options; use ParaTest\Runners\PHPUnit\ResultPrinter; use ParaTest\Runners\PHPUnit\RunnerInterface; use ParaTest\Runners\PHPUnit\SuiteLoader; +use Pest\Actions\LoadStructure; use Pest\Factories\TestCaseFactory; use Pest\TestSuite; use PHPUnit\TextUI\TestRunner; @@ -100,6 +101,8 @@ final class Runner implements RunnerInterface { $this->beforeLoadChecks(); + LoadStructure::in(TestSuite::getInstance()->rootPath); + $loader->load(); $this->loadPestSuite(); @@ -327,6 +330,7 @@ final class Runner implements RunnerInterface private function loadPestSuite(): void { $pestTestSuite = TestSuite::getInstance(); + LoadStructure::in($pestTestSuite->rootPath); $files = array_values(array_map(function (TestCaseFactory $factory): string { return $factory->filename;