diff --git a/src/Core/TempFolder.php b/src/Core/TempFolder.php index 1c3167860df..564977e1338 100644 --- a/src/Core/TempFolder.php +++ b/src/Core/TempFolder.php @@ -23,6 +23,11 @@ public static function getTempFolder($base) // Append php version to username folder to avoid issues when upgrading php $folderName .= '-' . preg_replace('/[^\w\-\.+]+/', '-', PHP_VERSION); + // Append paratest token to the folder name + if (($token = getenv('TEST_TOKEN')) !== false) { + $folderName .= '-' . $token; + } + // The actual temp folder is a subfolder of getTempParentFolder() $subfolder = Path::join($parent, $folderName); diff --git a/src/ORM/Connect/TempDatabase.php b/src/ORM/Connect/TempDatabase.php index 66dae3e91c8..68fe9e9c24e 100644 --- a/src/ORM/Connect/TempDatabase.php +++ b/src/ORM/Connect/TempDatabase.php @@ -56,11 +56,13 @@ public function __construct($name = DB::CONN_PRIMARY) */ protected function isDBTemp($name) { - $prefix = Environment::getEnv('SS_DATABASE_PREFIX') ?: 'ss_'; + $prefix = preg_quote(Environment::getEnv('SS_DATABASE_PREFIX') ?: 'ss_', '/') . '([0-9]+_)?'; + $result = preg_match( - sprintf('/^%stmpdb_[0-9]+_[0-9]+$/i', preg_quote($prefix ?? '', '/')), + sprintf('/^%stmpdb_[0-9]+_[0-9]+$/i', $prefix), $name ?? '' ); + return $result === 1; } @@ -198,6 +200,11 @@ public function build() // Create a temporary database, and force the connection to use UTC for time $dbConn = $this->getConn(); $prefix = Environment::getEnv('SS_DATABASE_PREFIX') ?: 'ss_'; + + if (($token = getenv('TEST_TOKEN')) !== false) { + $prefix .= $token . '_'; + } + do { $dbname = strtolower(sprintf('%stmpdb_%s_%s', $prefix, time(), rand(1000000, 9999999))); } while ($dbConn->databaseExists($dbname));