14 use PHPUnit\Util\Filesystem;
15 use Symfony\Component\Yaml\Yaml;
21 const RESOURCES_DIR = TESTS_BP . DIRECTORY_SEPARATOR .
'verification' . DIRECTORY_SEPARATOR .
'Resources';
35 private static $TEST_GROUPS = [];
43 if (file_exists(self::GENERATE_RESULT_DIR)) {
51 $fileSystem = new \Symfony\Component\Filesystem\Filesystem();
60 .
'codeception.dist.yml' 73 $groupName =
'functionalSuite1';
76 'additionalTestCest.php',
77 'additionalIncludeTest2Cest.php',
78 'IncludeTest2Cest.php',
89 [
'suite' => $groupName,
'relative_path' =>
"_generated" . DIRECTORY_SEPARATOR . $groupName]
92 self::$TEST_GROUPS[] = $groupName;
96 $this->assertArrayHasKey($groupName, $yml[
'groups']);
98 $suiteResultBaseDir = self::GENERATE_RESULT_DIR .
104 $dirContents = array_diff(scandir($suiteResultBaseDir), [
'..',
'.']);
106 foreach ($expectedContents as $expectedFile) {
107 $this->assertTrue(in_array($expectedFile, $dirContents));
114 public function testSuiteGenerationParallel()
116 $groupName =
'functionalSuite1';
119 'functionalSuite1_0',
120 'functionalSuite1_1',
121 'functionalSuite1_2',
125 $expectedContents = [
126 'additionalTestCest.php',
127 'additionalIncludeTest2Cest.php',
128 'IncludeTest2Cest.php',
129 'IncludeTestCest.php' 137 $parallelManifest->createTestGroups(1);
141 $expectedGroup = $expectedGroups[count($expectedGroups)-1] ;
145 [
'suite' => $expectedGroup,
'relative_path' =>
"_generated" . DIRECTORY_SEPARATOR . $expectedGroup]
148 self::$TEST_GROUPS[] = $groupName;
152 $this->assertEquals(array_intersect($expectedGroups, array_keys($yml[
'groups'])), $expectedGroups);
154 foreach ($expectedGroups as $expectedFolder) {
155 $suiteResultBaseDir = self::GENERATE_RESULT_DIR .
156 DIRECTORY_SEPARATOR .
161 $dirContents = array_diff(scandir($suiteResultBaseDir), [
'..',
'.']);
164 $this->assertEquals(1, count($dirContents));
165 $this->assertContains(array_values($dirContents)[0], $expectedContents);
174 $groupName =
'functionalSuiteHooks';
176 $expectedContents = [
177 'IncludeTestCest.php' 187 [
'suite' => $groupName,
'relative_path' =>
"_generated" . DIRECTORY_SEPARATOR . $groupName]
189 self::$TEST_GROUPS[] = $groupName;
193 $this->assertArrayHasKey($groupName, $yml[
'groups']);
195 $suiteResultBaseDir = self::GENERATE_RESULT_DIR .
196 DIRECTORY_SEPARATOR .
201 $dirContents = array_diff(scandir($suiteResultBaseDir), [
'..',
'.']);
203 foreach ($expectedContents as $expectedFile) {
204 $this->assertTrue(in_array($expectedFile, $dirContents));
209 DIRECTORY_SEPARATOR .
211 DIRECTORY_SEPARATOR .
213 DIRECTORY_SEPARATOR .
214 "FunctionalTestingFramework" .
215 DIRECTORY_SEPARATOR .
217 DIRECTORY_SEPARATOR .
221 $this->assertTrue(file_exists($groupFile));
222 $this->assertFileEquals(
223 self::RESOURCES_PATH . DIRECTORY_SEPARATOR . $groupName .
".txt",
231 public function testSuiteGenerationSingleRun()
234 $groupName =
'functionalSuite2';
236 $expectedContents = [
237 'additionalTestCest.php',
238 'additionalIncludeTest2Cest.php',
239 'IncludeTest2Cest.php',
240 'IncludeTestCest.php' 249 $singleRunManifest->generate();
255 [
'suite' => $groupName,
'relative_path' =>
"_generated" . DIRECTORY_SEPARATOR . $groupName]
257 self::$TEST_GROUPS[] = $groupName;
261 $this->assertArrayHasKey($groupName, $yml[
'groups']);
263 $suiteResultBaseDir = self::GENERATE_RESULT_DIR .
264 DIRECTORY_SEPARATOR .
269 $dirContents = array_diff(scandir($suiteResultBaseDir), [
'..',
'.']);
271 foreach ($expectedContents as $expectedFile) {
272 $this->assertTrue(in_array($expectedFile, $dirContents));
275 $expectedManifest =
"verification" 276 . DIRECTORY_SEPARATOR
278 . DIRECTORY_SEPARATOR
280 . DIRECTORY_SEPARATOR
282 .
"-g functionalSuite2" 285 $this->assertEquals($expectedManifest,
file_get_contents(self::getManifestFilePath()));
297 $fileSystem = new \Symfony\Component\Filesystem\Filesystem();
299 self::CONFIG_YML_FILE
316 private static function getManifestFilePath()
319 DIRECTORY_SEPARATOR .
321 DIRECTORY_SEPARATOR .
323 DIRECTORY_SEPARATOR .
static tearDownAfterClass()
testSuiteGenerationHooks()
const GENERATE_RESULT_DIR
static setUpBeforeClass()
const YAML_CODECEPTION_CONFIG_FILENAME
static makeManifest($runConfig, $suiteConfiguration, $testPath=TestGenerator::DEFAULT_DIR)
static rmdirRecursive($directory)