diff --git a/bin/ci/generate_testsuites.php b/bin/ci/generate_testsuites.php
index 24045b8cff5..b1d5d98da33 100644
--- a/bin/ci/generate_testsuites.php
+++ b/bin/ci/generate_testsuites.php
@@ -2,46 +2,39 @@
 
 declare(strict_types=1);
 
-if (count($argv) < 2) {
+$number_of_chunks = count($argv) === 2 ? (int) $argv[1] : 0;
+if ($number_of_chunks <= 0) {
     fwrite(STDERR, 'Usage: ' . $argv[0] . ' <number_of_chunks>' . PHP_EOL);
     exit(1);
 }
 
-$number_of_chunks = (int) $argv[1];
-if ($number_of_chunks === 0) {
-    fwrite(STDERR, 'Usage: ' . $argv[0] . ' <number_of_chunks>' . PHP_EOL);
-    exit(1);
-}
+$root = dirname(__DIR__, 2) . DIRECTORY_SEPARATOR;
 
 // find tests -name '*Test.php'
 $files = iterator_to_array(
     new RegexIterator(
         new RecursiveIteratorIterator(
             new RecursiveDirectoryIterator(
-                'tests',
+                $root . 'tests',
                 FilesystemIterator::CURRENT_AS_PATHNAME|FilesystemIterator::SKIP_DOTS,
             ),
             RecursiveIteratorIterator::LEAVES_ONLY,
         ),
-        '/.*Test.php$/',
+        '/Test\\.php$/',
     ),
 );
 
 mt_srand(4); // chosen by fair dice roll.
              // guaranteed to be random.
              // -- xkcd:221
-
-$order = array_map(
-    fn(): int => mt_rand(),
-    $files,
-);
+$order = array_map(fn(): int => mt_rand(), $files,);
 array_multisort($order, $files);
 
 $chunks = array_chunk($files, (int) ceil(count($files) / $number_of_chunks));
 
 $phpunit_config = new DOMDocument('1.0', 'UTF-8');
 $phpunit_config->preserveWhiteSpace = false;
-$phpunit_config->load('phpunit.xml.dist');
+$phpunit_config->load($root . 'phpunit.xml.dist');
 $suites_container = $phpunit_config->getElementsByTagName('testsuites')->item(0);
 
 while ($suites_container->firstChild) {
@@ -58,4 +51,4 @@
 }
 
 $phpunit_config->formatOutput = true;
-$phpunit_config->save('phpunit.xml');
+$phpunit_config->save($root . 'phpunit.xml');