From b1ae48a20920d13925a3062bd3c96418173422c4 Mon Sep 17 00:00:00 2001 From: crazywhalecc Date: Wed, 1 Nov 2023 01:46:21 +0800 Subject: [PATCH] let sanity check can be overwritten --- src/SPC/builder/Extension.php | 28 +++++++++++++++++++++ src/SPC/builder/traits/UnixBuilderTrait.php | 19 +------------- 2 files changed, 29 insertions(+), 18 deletions(-) diff --git a/src/SPC/builder/Extension.php b/src/SPC/builder/Extension.php index 922d4f3d..5d9f2e6b 100644 --- a/src/SPC/builder/Extension.php +++ b/src/SPC/builder/Extension.php @@ -163,6 +163,34 @@ class Extension return false; } + /** + * Run compile check if build target is cli + * If you need to run some check, overwrite this or add your assert in src/globals/tests/{extension_name}.php + * + * @throws RuntimeException + */ + public function runCheck(): void + { + [$ret] = shell()->execWithResult(BUILD_ROOT_PATH . '/bin/php --ri "' . $this->getDistName() . '"', false); + if ($ret !== 0) { + throw new RuntimeException('extension ' . $this->getName() . ' failed compile check: php-cli returned ' . $ret); + } + + if (file_exists(ROOT_DIR . '/src/globals/tests/' . $this->getName() . '.php')) { + // Trim additional content & escape special characters to allow inline usage + $test = str_replace( + ['getName() . '.php') + ); + + [$ret] = shell()->execWithResult(BUILD_ROOT_PATH . '/bin/php -r "' . trim($test) . '"'); + if ($ret !== 0) { + throw new RuntimeException('extension ' . $this->getName() . ' failed sanity check'); + } + } + } + /** * @throws RuntimeException */ diff --git a/src/SPC/builder/traits/UnixBuilderTrait.php b/src/SPC/builder/traits/UnixBuilderTrait.php index 2d0d43d2..d698c730 100644 --- a/src/SPC/builder/traits/UnixBuilderTrait.php +++ b/src/SPC/builder/traits/UnixBuilderTrait.php @@ -66,24 +66,7 @@ trait UnixBuilderTrait foreach ($this->exts as $ext) { logger()->debug('testing ext: ' . $ext->getName()); - [$ret] = shell()->execWithResult(BUILD_ROOT_PATH . '/bin/php --ri "' . $ext->getDistName() . '"', false); - if ($ret !== 0) { - throw new RuntimeException('extension ' . $ext->getName() . ' failed compile check'); - } - - if (file_exists(ROOT_DIR . '/src/globals/tests/' . $ext->getName() . '.php')) { - // Trim additional content & escape special characters to allow inline usage - $test = str_replace( - ['getName() . '.php') - ); - - [$ret] = shell()->execWithResult(BUILD_ROOT_PATH . '/bin/php -r "' . trim($test) . '"'); - if ($ret !== 0) { - throw new RuntimeException('extension ' . $ext->getName() . ' failed sanity check'); - } - } + $ext->runCheck(); } }