exec('CREATE TABLE settings (name TEXT PRIMARY KEY, value TEXT)'); $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $db->exec('CREATE TABLE plugin_config (directory TEXT, version TEXT, status INTEGER)'); if ($installed !== null) { $db->prepare('INSERT INTO plugin_config VALUES (?, ?, ?)')->execute(['dependency_fixture', $installed, $status]); } $GLOBALS['database_hostname'] = 'dependency-test'; $GLOBALS['database_port'] = 0; $GLOBALS['database_default'] = 'dependency-test'; $GLOBALS['database_sessions'] = ['dependency-test:0:dependency-test' => $db]; $GLOBALS['database_total_queries'] = 0; file_put_contents($directory . '/INFO', "[info]\nrequires = \"$required\"\n"); $message = ''; expect(api_plugin_can_install($name, $message))->toBe($expected); expect($message === '')->toBe($expected); } finally { foreach ($saved as $key => [$exists, $value]) { if ($exists) { $GLOBALS[$key] = $value; } else { unset($GLOBALS[$key]); } } unlink($directory . '/INFO'); rmdir($directory); } })->with([ ['dependency_fixture:1.0.0', '1.2.0', 4, true], ['dependency_fixture:1.2.0', '1.2.0', 4, true], ['dependency_fixture:1.3.0', '1.2.0', 4, false], ['dependency_fixture:>1.2.0', '1.2.0', 4, false], ['dependency_fixture:>=1.2.0', '1.2.0', 1, true], ['dependency_fixture', '1.2.0', 4, true], ['dependency_fixture', null, 0, false], ['dependency_fixture:1.0.0', '1.2.0', 0, false], ['dependency_fixture:1.0.0', null, 0, false], ]);