assertInstanceOf(SPCConfigUtil::class, new SPCConfigUtil()); $this->assertInstanceOf(SPCConfigUtil::class, new SPCConfigUtil(BuilderProvider::makeBuilderByInput(new ArgvInput()))); } public function testConfig(): void { if (PHP_OS_FAMILY !== 'Linux') { $this->markTestSkipped('SPCConfigUtil tests are only applicable on Linux.'); } // normal $result = (new SPCConfigUtil())->config(['bcmath']); $this->assertStringContainsString(BUILD_ROOT_PATH . '/include', $result['cflags']); $this->assertStringContainsString(BUILD_ROOT_PATH . '/lib', $result['ldflags']); $this->assertStringContainsString('-lphp', $result['libs']); // has cpp $result = (new SPCConfigUtil())->config(['rar']); $this->assertStringContainsString(PHP_OS_FAMILY === 'Darwin' ? '-lc++' : '-lstdc++', $result['libs']); // has libmimalloc.a in lib dir // backup first if (file_exists(BUILD_LIB_PATH . '/libmimalloc.a')) { $bak = file_get_contents(BUILD_LIB_PATH . '/libmimalloc.a'); @unlink(BUILD_LIB_PATH . '/libmimalloc.a'); } file_put_contents(BUILD_LIB_PATH . '/libmimalloc.a', ''); $result = (new SPCConfigUtil())->config(['bcmath'], ['mimalloc']); $this->assertStringStartsWith(BUILD_LIB_PATH . '/libmimalloc.a', $result['libs']); @unlink(BUILD_LIB_PATH . '/libmimalloc.a'); if (isset($bak)) { file_put_contents(BUILD_LIB_PATH . '/libmimalloc.a', $bak); } } }