Skip to content

Commit 7758075

Browse files
committed
MQE-2008: Filter test generation and execution by severity
1 parent 269a4e5 commit 7758075

File tree

8 files changed

+35
-29
lines changed

8 files changed

+35
-29
lines changed

src/Magento/FunctionalTestingFramework/Filter/Test/Severity.php

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
use Magento\FunctionalTestingFramework\Exceptions\TestFrameworkException;
1212
use Magento\FunctionalTestingFramework\Filter\FilterInterface;
13+
use Magento\FunctionalTestingFramework\Test\Objects\TestObject;
1314

1415
/**
1516
* Class Severity
@@ -51,17 +52,17 @@ public function __construct(array $filterValues = [])
5152
/**
5253
* Filter tests by severity.
5354
*
54-
* @param array $tests
55+
* @param TestObject[] $tests
5556
* @return void
5657
*/
5758
public function filter(array &$tests)
5859
{
60+
/** @var TestObject $test */
5961
foreach ($tests as $testName => $test) {
60-
if (is_array($test) && !empty($test['annotations'][self::ANNOTATION_TAG])) {
61-
foreach ($test['annotations'][self::ANNOTATION_TAG] as $severity) {
62-
if (!in_array($severity['value'], $this->filterValues, true)) {
63-
unset($tests[$testName]);
64-
}
62+
$severities = $test->getAnnotationByName(self::ANNOTATION_TAG);
63+
foreach ($severities as $severity) {
64+
if (!in_array($severity, $this->filterValues, true)) {
65+
unset($tests[$testName]);
6566
}
6667
}
6768
}

src/Magento/FunctionalTestingFramework/Suite/Objects/SuiteObject.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
*/
66
namespace Magento\FunctionalTestingFramework\Suite\Objects;
77

8+
use Magento\FunctionalTestingFramework\Config\MftfApplicationConfig;
9+
use Magento\FunctionalTestingFramework\Filter\FilterInterface;
810
use Magento\FunctionalTestingFramework\Test\Objects\TestHookObject;
911
use Magento\FunctionalTestingFramework\Test\Objects\TestObject;
1012
use Magento\FunctionalTestingFramework\Util\Logger\LoggingUtil;
@@ -97,12 +99,10 @@ private function resolveTests($includeTests, $excludeTests)
9799
unset($finalTestList[$testName]);
98100
}
99101

100-
if (empty($finalTestList)) {
101-
LoggingUtil::getInstance()->getLogger(self::class)->notification(
102-
"Current suite configuration for " . $this->name . " contains no tests." . PHP_EOL,
103-
[],
104-
true
105-
);
102+
$filters = MftfApplicationConfig::getConfig()->getFilterList()->getFilters();
103+
/** @var FilterInterface $filter */
104+
foreach ($filters as $filter) {
105+
$filter->filter($finalTestList);
106106
}
107107

108108
return $finalTestList;

src/Magento/FunctionalTestingFramework/Suite/SuiteGenerator.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,12 @@ public function generateAllSuites($testManifest)
9595
$suites = $testManifest->getSuiteConfig();
9696

9797
foreach ($suites as $suiteName => $suiteContent) {
98+
if (empty($suiteContent)) {
99+
LoggingUtil::getInstance()->getLogger(self::class)->notification(
100+
"Suite '" . $suiteName . "' contains no tests and won't be generated." . PHP_EOL, [], true
101+
);
102+
continue;
103+
}
98104
$firstElement = array_values($suiteContent)[0];
99105

100106
// if the first element is a string we know that we simply have an array of tests

src/Magento/FunctionalTestingFramework/Test/Handlers/TestObjectHandler.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424
*/
2525
class TestObjectHandler implements ObjectHandlerInterface
2626
{
27+
const XML_ROOT = 'tests';
28+
2729
/**
2830
* Test Object Handler
2931
*

src/Magento/FunctionalTestingFramework/Test/Parsers/TestDataParser.php

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,6 @@ class TestDataParser
2222
*/
2323
private $testData;
2424

25-
/**
26-
* @var \Magento\FunctionalTestingFramework\Filter\FilterList
27-
*/
28-
private $filterList;
29-
3025
/**
3126
* TestDataParser constructor.
3227
*
@@ -38,8 +33,6 @@ public function __construct(DataInterface $testData)
3833
$this->testData = array_filter($testData->get('tests'), function ($value) {
3934
return is_array($value);
4035
});
41-
42-
$this->filterList = MftfApplicationConfig::getConfig()->getFilterList();
4336
}
4437

4538
/**
@@ -50,15 +43,6 @@ public function __construct(DataInterface $testData)
5043
*/
5144
public function readTestData()
5245
{
53-
/** @var FilterInterface $filter */
54-
foreach ($this->filterList->getFilters() as $filter) {
55-
$filter->filter($this->testData);
56-
}
57-
58-
if (empty($this->testData)) {
59-
throw new TestFrameworkException("No tests found.");
60-
}
61-
6246
return $this->testData;
6347
}
6448
}

src/Magento/FunctionalTestingFramework/Util/Manifest/DefaultTestManifest.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,9 @@ public function generate()
8686
protected function generateSuiteEntries($fileResource)
8787
{
8888
foreach ($this->getSuiteConfig() as $suiteName => $tests) {
89+
if (count($tests) === 0) {
90+
continue;
91+
}
8992
$line = "-g {$suiteName}";
9093
fwrite($fileResource, $line . PHP_EOL);
9194
}

src/Magento/FunctionalTestingFramework/Util/Manifest/ParallelTestManifest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ private function generateGroupFile($testGroup, $nodeNumber, $suites)
132132
$fileResource = fopen($this->dirPath . DIRECTORY_SEPARATOR . "group{$nodeNumber}.txt", 'a');
133133

134134
$line = null;
135-
if (array_key_exists($entryName, $suites)) {
135+
if (!empty($suites[$entryName])) {
136136
$line = "-g {$entryName}";
137137
} else {
138138
$line = $this->relativeDirPath . DIRECTORY_SEPARATOR . $entryName . '.php';

src/Magento/FunctionalTestingFramework/Util/TestGenerator.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
use Magento\FunctionalTestingFramework\DataGenerator\Objects\EntityDataObject;
1212
use Magento\FunctionalTestingFramework\Exceptions\TestFrameworkException;
1313
use Magento\FunctionalTestingFramework\Exceptions\TestReferenceException;
14+
use Magento\FunctionalTestingFramework\Filter\FilterInterface;
1415
use Magento\FunctionalTestingFramework\Suite\Handlers\SuiteObjectHandler;
1516
use Magento\FunctionalTestingFramework\Test\Handlers\ActionGroupObjectHandler;
1617
use Magento\FunctionalTestingFramework\Test\Handlers\TestObjectHandler;
@@ -171,6 +172,9 @@ private function loadAllTestObjects($testsToIgnore)
171172
{
172173
if ($this->tests === null || empty($this->tests)) {
173174
$testObjects = TestObjectHandler::getInstance()->getAllObjects();
175+
176+
177+
174178
return array_diff_key($testObjects, $testsToIgnore);
175179
}
176180

@@ -288,6 +292,12 @@ private function assembleAllTestPhp($testManifest, array $testsToIgnore)
288292
/** @var TestObject[] $testObjects */
289293
$testObjects = $this->loadAllTestObjects($testsToIgnore);
290294
$cestPhpArray = [];
295+
$filters = MftfApplicationConfig::getConfig()->getFilterList()->getFilters();
296+
/** @var FilterInterface $filter */
297+
foreach ($filters as $filter) {
298+
$filter->filter($testObjects);
299+
}
300+
291301

292302
foreach ($testObjects as $test) {
293303
// Do not generate test if it is an extended test and parent does not exist

0 commit comments

Comments
 (0)