Skip to content

Commit fa57a42

Browse files
authored
Merge branch 'develop' into MQE-2463
2 parents ede771d + 7f0cf87 commit fa57a42

File tree

2 files changed

+61
-1
lines changed

2 files changed

+61
-1
lines changed

dev/tests/unit/Magento/FunctionalTestFramework/Suite/SuiteGeneratorTest.php

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,57 @@ public function testNonExistentSuiteTestPair()
226226
$this->assertArrayHasKey('Suite3', $suiteErrors);
227227
}
228228

229+
/**
230+
* Tests generating split suites for parallel test generation
231+
*/
232+
public function testGenerateSplitSuiteFromTest()
233+
{
234+
$suiteDataArrayBuilder = new SuiteDataArrayBuilder();
235+
$mockSuiteData = $suiteDataArrayBuilder
236+
->withName('mockSuite')
237+
->includeGroups(['group1'])
238+
->build();
239+
$testDataArrayBuilder = new TestDataArrayBuilder();
240+
$mockSimpleTest1 = $testDataArrayBuilder
241+
->withName('simpleTest1')
242+
->withAnnotations(['group' => [['value' => 'group1']]])
243+
->withTestReference("NonExistantTest")
244+
->withTestActions()
245+
->build();
246+
$mockSimpleTest2 = $testDataArrayBuilder
247+
->withName('simpleTest2')
248+
->withAnnotations(['group' => [['value' => 'group1']]])
249+
->withTestActions()
250+
->build();
251+
$mockSimpleTest3 = $testDataArrayBuilder
252+
->withName('simpleTest3')
253+
->withAnnotations(['group' => [['value' => 'group1']]])
254+
->withTestActions()
255+
->build();
256+
$mockTestData = array_merge($mockSimpleTest1, $mockSimpleTest2, $mockSimpleTest3);
257+
$this->setMockTestAndSuiteParserOutput($mockTestData, $mockSuiteData);
258+
259+
// Make manifest for split suites
260+
$suiteConfig = [
261+
'mockSuite' => [
262+
'mockSuite_0_G' => ['simpleTest1', 'simpleTest2'],
263+
'mockSuite_1_G' => ['simpleTest3'],
264+
],
265+
];
266+
$manifest = TestManifestFactory::makeManifest('default', $suiteConfig);
267+
268+
// parse and generate suite object with mocked data and manifest
269+
$mockSuiteGenerator = SuiteGenerator::getInstance();
270+
$mockSuiteGenerator->generateAllSuites($manifest);
271+
272+
// assert last split suite group generated
273+
TestLoggingUtil::getInstance()->validateMockLogStatement(
274+
'info',
275+
"suite generated",
276+
['suite' => 'mockSuite_1_G', 'relative_path' => "_generated" . DIRECTORY_SEPARATOR . "mockSuite_1_G"]
277+
);
278+
}
279+
229280
/**
230281
* Function used to set mock for parser return and force init method to run between tests.
231282
*

src/Magento/FunctionalTestingFramework/Suite/SuiteGenerator.php

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -265,7 +265,16 @@ private function validateTestsReferencedInSuite($suiteName, $testsReferenced, $o
265265
private function generateSplitSuiteFromTest($suiteName, $suiteContent)
266266
{
267267
foreach ($suiteContent as $suiteSplitName => $tests) {
268-
$this->generateSuiteFromTest($suiteSplitName, $tests, $suiteName);
268+
try {
269+
$this->generateSuiteFromTest($suiteSplitName, $tests, $suiteName);
270+
} catch (FastFailException $e) {
271+
throw $e;
272+
} catch (\Exception $e) {
273+
// There are suites that include tests that reference tests from other Magento editions
274+
// To keep backward compatibility, we will catch such exceptions with no error.
275+
// This might inevitably hide some suite errors that are resulted by tests with broken references
276+
//TODO MQE-2484
277+
}
269278
}
270279
}
271280

0 commit comments

Comments
 (0)