Skip to content

Commit 4267fee

Browse files
authored
Merge pull request #651 from magento/MQE-2039
MQE-2039: fatal error in actionGroupArguments static check when there…
2 parents 49ee420 + 730a3d4 commit 4267fee

File tree

2 files changed

+30
-8
lines changed

2 files changed

+30
-8
lines changed

src/Magento/FunctionalTestingFramework/StaticCheck/ActionGroupArgumentsCheck.php

+21-8
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,9 @@
66

77
namespace Magento\FunctionalTestingFramework\StaticCheck;
88

9-
use Magento\FunctionalTestingFramework\Config\MftfApplicationConfig;
10-
use Magento\FunctionalTestingFramework\Exceptions\XmlException;
119
use Magento\FunctionalTestingFramework\Test\Handlers\ActionGroupObjectHandler;
1210
use Magento\FunctionalTestingFramework\Test\Objects\ActionGroupObject;
1311
use Symfony\Component\Console\Input\InputInterface;
14-
use Magento\FunctionalTestingFramework\Util\ModuleResolver;
1512
use Symfony\Component\Finder\Finder;
1613
use Exception;
1714
use Magento\FunctionalTestingFramework\Util\Script\ScriptUtil;
@@ -22,7 +19,6 @@
2219
*/
2320
class ActionGroupArgumentsCheck implements StaticCheckInterface
2421
{
25-
2622
const ACTIONGROUP_XML_REGEX_PATTERN = '/<actionGroup\sname=(?: (?!<\/actionGroup>).)*/mxs';
2723
const ACTIONGROUP_ARGUMENT_REGEX_PATTERN = '/<argument[^\/>]*name="([^"\']*)/mxs';
2824
const ACTIONGROUP_NAME_REGEX_PATTERN = '/<actionGroup name=["\']([^\'"]*)/';
@@ -42,6 +38,13 @@ class ActionGroupArgumentsCheck implements StaticCheckInterface
4238
*/
4339
private $output;
4440

41+
/**
42+
* ScriptUtil instance
43+
*
44+
* @var ScriptUtil
45+
*/
46+
private $scriptUtil;
47+
4548
/**
4649
* Checks unused arguments in action groups and prints out error to file.
4750
*
@@ -51,16 +54,17 @@ class ActionGroupArgumentsCheck implements StaticCheckInterface
5154
*/
5255
public function execute(InputInterface $input)
5356
{
54-
$allModules = ScriptUtil::getAllModulePaths();
57+
$this->scriptUtil = new ScriptUtil();
58+
$allModules = $this->scriptUtil->getAllModulePaths();
5559

56-
$actionGroupXmlFiles = ScriptUtil::getModuleXmlFilesByScope(
60+
$actionGroupXmlFiles = $this->scriptUtil->getModuleXmlFilesByScope(
5761
$allModules,
5862
DIRECTORY_SEPARATOR . 'ActionGroup' . DIRECTORY_SEPARATOR
5963
);
6064

6165
$this->errors = $this->findErrorsInFileSet($actionGroupXmlFiles);
6266

63-
$this->output = ScriptUtil::printErrorsToFile(
67+
$this->output = $this->scriptUtil->printErrorsToFile(
6468
$this->errors,
6569
self::ERROR_LOG_FILENAME,
6670
self::ERROR_LOG_MESSAGE
@@ -132,10 +136,19 @@ private function findUnusedArguments($actionGroupXml)
132136

133137
preg_match_all(self::ACTIONGROUP_ARGUMENT_REGEX_PATTERN, $actionGroupXml, $arguments);
134138
preg_match(self::ACTIONGROUP_NAME_REGEX_PATTERN, $actionGroupXml, $actionGroupName);
139+
$validActionGroup = false;
135140
try {
136141
$actionGroup = ActionGroupObjectHandler::getInstance()->getObject($actionGroupName[1]);
137-
} catch (XmlException $e) {
142+
if ($actionGroup) {
143+
$validActionGroup = true;
144+
}
145+
} catch (Exception $e) {
146+
}
147+
148+
if (!$validActionGroup) {
149+
return $unusedArguments;
138150
}
151+
139152
foreach ($arguments[1] as $argument) {
140153
//pattern to match all argument references
141154
$patterns = [

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

+9
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
namespace Magento\FunctionalTestingFramework\Test\Handlers;
77

88
use Magento\FunctionalTestingFramework\Exceptions\TestFrameworkException;
9+
use Magento\FunctionalTestingFramework\Exceptions\XmlException;
910
use Magento\FunctionalTestingFramework\ObjectManager\ObjectHandlerInterface;
1011
use Magento\FunctionalTestingFramework\ObjectManagerFactory;
1112
use Magento\FunctionalTestingFramework\Test\Objects\ActionGroupObject;
@@ -49,6 +50,7 @@ class ActionGroupObjectHandler implements ObjectHandlerInterface
4950
* Singleton getter for instance of ActionGroupObjectHandler
5051
*
5152
* @return ActionGroupObjectHandler
53+
* @throws XmlException
5254
*/
5355
public static function getInstance(): ActionGroupObjectHandler
5456
{
@@ -61,6 +63,7 @@ public static function getInstance(): ActionGroupObjectHandler
6163

6264
/**
6365
* ActionGroupObjectHandler constructor.
66+
* @throws XmlException
6467
*/
6568
private function __construct()
6669
{
@@ -73,6 +76,8 @@ private function __construct()
7376
*
7477
* @param string $actionGroupName
7578
* @return ActionGroupObject
79+
* @throws TestFrameworkException
80+
* @throws XmlException
7681
*/
7782
public function getObject($actionGroupName)
7883
{
@@ -88,6 +93,8 @@ public function getObject($actionGroupName)
8893
* Function to return all objects for which the handler is responsible
8994
*
9095
* @return array
96+
* @throws TestFrameworkException
97+
* @throws XmlException
9198
*/
9299
public function getAllObjects(): array
93100
{
@@ -101,6 +108,7 @@ public function getAllObjects(): array
101108
* Method which populates field array with objects from parsed action_group.xml
102109
*
103110
* @return void
111+
* @throws XmlException
104112
* @SuppressWarnings(PHPMD.UnusedPrivateMethod)
105113
*/
106114
private function initActionGroups()
@@ -137,6 +145,7 @@ private function initActionGroups()
137145
*
138146
* @param ActionGroupObject $actionGroupObject
139147
* @return ActionGroupObject
148+
* @throws XmlException
140149
* @throws TestFrameworkException
141150
*/
142151
private function extendActionGroup($actionGroupObject): ActionGroupObject

0 commit comments

Comments
 (0)