Skip to content

Commit 69fa603

Browse files
add pre-migration hook when setting up databases in parallel tests
1 parent a78e156 commit 69fa603

File tree

4 files changed

+43
-0
lines changed

4 files changed

+43
-0
lines changed

src/Illuminate/Support/Facades/ParallelTesting.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,13 @@
77
* @method static void resolveTokenUsing(\Closure|null $resolver)
88
* @method static void setUpProcess(callable $callback)
99
* @method static void setUpTestCase(callable $callback)
10+
* @method static void setUpTestDatabasePreMigration(callable $callback)
1011
* @method static void setUpTestDatabase(callable $callback)
1112
* @method static void tearDownProcess(callable $callback)
1213
* @method static void tearDownTestCase(callable $callback)
1314
* @method static void callSetUpProcessCallbacks()
1415
* @method static void callSetUpTestCaseCallbacks(\Illuminate\Foundation\Testing\TestCase $testCase)
16+
* @method static void callSetUpTestDatabasePreMigrationCallbacks(string $database)
1517
* @method static void callSetUpTestDatabaseCallbacks(string $database)
1618
* @method static void callTearDownProcessCallbacks()
1719
* @method static void callTearDownTestCaseCallbacks(\Illuminate\Foundation\Testing\TestCase $testCase)

src/Illuminate/Testing/Concerns/TestDatabases.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,10 @@ protected function bootTestDatabase()
5959

6060
$this->switchToDatabase($testDatabase);
6161

62+
if ($created) {
63+
ParallelTesting::callSetUpTestDatabasePreMigrationCallbacks($testDatabase);
64+
}
65+
6266
if (isset($uses[Testing\DatabaseTransactions::class])) {
6367
$this->ensureSchemaIsUpToDate();
6468
}

src/Illuminate/Testing/ParallelTesting.php

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,13 @@ class ParallelTesting
4242
*/
4343
protected $setUpTestCaseCallbacks = [];
4444

45+
/**
46+
* All of the registered "setUp" test database callbacks prior the migrations
47+
*
48+
* @var array
49+
*/
50+
protected $setUpTestDatabasePreMigrationCallbacks = [];
51+
4552
/**
4653
* All of the registered "setUp" test database callbacks.
4754
*
@@ -117,6 +124,17 @@ public function setUpTestCase($callback)
117124
$this->setUpTestCaseCallbacks[] = $callback;
118125
}
119126

127+
/**
128+
* Register a "setUp" test database prior the migration callback.
129+
*
130+
* @param callable $callback
131+
* @return void
132+
*/
133+
public function setUpTestDatabasePreMigration($callback)
134+
{
135+
$this->setUpTestDatabasePreMigrationCallbacks[] = $callback;
136+
}
137+
120138
/**
121139
* Register a "setUp" test database callback.
122140
*
@@ -184,6 +202,24 @@ public function callSetUpTestCaseCallbacks($testCase)
184202
});
185203
}
186204

205+
/**
206+
* Call all of the "setUp" test database callbacks.
207+
*
208+
* @param string $database
209+
* @return void
210+
*/
211+
public function callSetUpTestDatabasePreMigrationCallbacks($database)
212+
{
213+
$this->whenRunningInParallel(function () use ($database) {
214+
foreach ($this->setUpTestDatabasePreMigrationCallbacks as $callback) {
215+
$this->container->call($callback, [
216+
'database' => $database,
217+
'token' => $this->token(),
218+
]);
219+
}
220+
});
221+
}
222+
187223
/**
188224
* Call all of the "setUp" test database callbacks.
189225
*

tests/Testing/ParallelTestingTest.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ public static function callbacks()
9191
['setUpProcess'],
9292
['setUpTestCase'],
9393
['setUpTestDatabase'],
94+
['setUpTestDatabasePreMigration'],
9495
['tearDownTestCase'],
9596
['tearDownProcess'],
9697
];

0 commit comments

Comments
 (0)