in_array($command, ['dnf', 'yum'], true)); self::assertSame('dnf', $manager?->command); } public function testPackagesFollowEnabledConfigureOptions(): void { $manager = new LinuxPackageManager('apt-get'); $packages = $manager->packagesForConfigureOptions(['--with-curl', '--enable-mbstring']); self::assertContains('build-essential', $packages); self::assertContains('cmake', $packages); self::assertContains('libcurl4-openssl-dev', $packages); self::assertContains('libonig-dev', $packages); self::assertNotContains('libzip-dev', $packages); } public function testBuildToolPackagesIncludeCompilerMakeAndCmake(): void { self::assertSame( ['build-essential', 'cmake', 'pkg-config'], (new LinuxPackageManager('apt-get'))->packagesForBuildTools() ); self::assertSame( ['gcc', 'gcc-c++', 'make', 'cmake', 'pkgconf-pkg-config'], (new LinuxPackageManager('dnf'))->packagesForBuildTools() ); } public function testMissingPackagesFiltersInstalledPackages(): void { $manager = new LinuxPackageManager('apt-get'); $missing = $manager->missingPackages( ['make', 're2c'], static fn(string $package): bool => $package === 'make' ); self::assertSame(['re2c'], $missing); } public function testExtensionNamesWithoutSuffixAlsoResolveSharedObjects(): void { self::assertSame( ['/php/extensions/swoole', '/php/extensions/swoole.so'], LibPhpInstaller::extensionFileCandidates('/php/extensions/swoole') ); self::assertSame( ['/php/extensions/opcache.so'], LibPhpInstaller::extensionFileCandidates('/php/extensions/opcache.so') ); } }