6
6
7
7
namespace Magento \FunctionalTestingFramework \Suite ;
8
8
9
+ use Magento \FunctionalTestingFramework \Exceptions \TestReferenceException ;
9
10
use Magento \FunctionalTestingFramework \Suite \Generators \GroupClassGenerator ;
10
11
use Magento \FunctionalTestingFramework \Suite \Handlers \SuiteObjectHandler ;
11
12
use Magento \FunctionalTestingFramework \Suite \Objects \SuiteObject ;
@@ -156,6 +157,7 @@ private function generateSuiteFromTest($suiteName, $tests = [], $originalSuiteNa
156
157
157
158
$ relevantTests = [];
158
159
if (!empty ($ tests )) {
160
+ $ this ->validateTestsReferencedInSuite ($ suiteName , $ tests , $ originalSuiteName );
159
161
foreach ($ tests as $ testName ) {
160
162
$ relevantTests [$ testName ] = TestObjectHandler::getInstance ()->getObject ($ testName );
161
163
}
@@ -170,6 +172,34 @@ private function generateSuiteFromTest($suiteName, $tests = [], $originalSuiteNa
170
172
print "Suite $ {suiteName} generated to $ {relativePath}. \n" ;
171
173
}
172
174
175
+ /**
176
+ * Function which validates tests passed in as custom configuration against the configuration defined by the user to
177
+ * prevent possible invalid test configurations from executing.
178
+ *
179
+ * @param string $suiteName
180
+ * @param array $testsReferenced
181
+ * @param string $originalSuiteName
182
+ * @return void
183
+ * @throws TestReferenceException
184
+ */
185
+ private function validateTestsReferencedInSuite ($ suiteName , $ testsReferenced , $ originalSuiteName )
186
+ {
187
+ $ suiteRef = $ originalSuiteName ?? $ suiteName ;
188
+ $ possibleTestRef = SuiteObjectHandler::getInstance ()->getObject ($ suiteRef )->getTests ();
189
+ $ invalidTestRef = null ;
190
+ $ errorMsg = "Cannot reference tests not declared as part of {$ suiteRef }: \n " ;
191
+
192
+ array_walk ($ testsReferenced , function ($ value ) use (&$ invalidTestRef , $ possibleTestRef , &$ errorMsg ) {
193
+ if (!array_key_exists ($ value , $ possibleTestRef )) {
194
+ $ invalidTestRef .= "\t{$ value }\n" ;
195
+ }
196
+ });
197
+
198
+ if ($ invalidTestRef != null ) {
199
+ throw new TestReferenceException ($ errorMsg . $ invalidTestRef );
200
+ }
201
+ }
202
+
173
203
/**
174
204
* Function for generating split groups of tests (following a parallel execution). Takes a paralle suite config
175
205
* and generates applicable suites.
0 commit comments