/** * Create a builder for the headless environment. * * @return \Civi\Test\CiviEnvBuilder * * @code * \Civi\Test::headless()->apply(); * \Civi\Test::headless()->sqlFile('ex.sql')->apply(); * @endCode */ public static function headless() { $civiRoot = dirname(__DIR__); $builder = new \Civi\Test\CiviEnvBuilder('CiviEnvBuilder'); $builder->callback(function ($ctx) { if (CIVICRM_UF !== 'UnitTests') { throw new \RuntimeException("\\Civi\\Test::headless() requires CIVICRM_UF=UnitTests"); } $dbName = \Civi\Test::dsn('database'); echo "Installing {$dbName} schema\n"; \Civi\Test::schema()->dropAll(); }, 'headless-drop')->sqlFile($civiRoot . "/sql/civicrm.mysql")->sql("DELETE FROM civicrm_extension")->callback(function ($ctx) { \Civi\Test::data()->populate(); }, 'populate'); return $builder; }