* */ class iTopComposerTest extends ItopTestCase { protected function setUp(): void { parent::setUp(); clearstatcache(); } /** * @dataProvider IsTestDirProvider * @return void */ public function testIsTestDir($sDirName, $bIsTest) { $isTestDir = iTopComposer::IsTestDir($sDirName); $this->assertIsInt($isTestDir); if (true === $bIsTest) { $this->assertTrue(($isTestDir > 0)); } else { $this->assertSame(0, $isTestDir); } } public function IsTestDirProvider() { return [ 'test' => ['test', true], 'Test' => ['Test', true], 'tests' => ['tests', true], 'Tests' => ['Tests', true], 'testaa' => ['testaa', false], 'Testaa' => ['Testaa', false], 'testsaa' => ['testsaa', false], 'Testsaa' => ['Testsaa', false], ]; } public function testListAllTestDir() { $oiTopComposer = new iTopComposer(); $aDirs = $oiTopComposer->ListAllTestDir(); $this->assertTrue(is_array($aDirs)); foreach ($aDirs as $sDir) { $sDirName = basename($sDir); $this->assertMatchesRegularExpression(iTopComposer::TEST_DIR_REGEXP, $sDirName, "Directory not matching test dir : $sDir"); } } public function testListDeniedTestDir() { $oiTopComposer = new iTopComposer(); $aDirs = $oiTopComposer->ListDeniedTestDir(); $this->assertTrue(is_array($aDirs)); $aDeniedDirWrongFormat = []; foreach ($aDirs as $sDir) { if (false === iTopComposer::IsTestDir($sDir)) { $aDeniedDirWrongFormat[] = $sDir; } } $this->assertEmpty($aDeniedDirWrongFormat, 'There are elements in \Combodo\iTop\Composer\iTopComposer::ListDeniedTestDir that are not test dirs :'.var_export($aDeniedDirWrongFormat, true)); } public function testListAllowedTestDir() { $oiTopComposer = new iTopComposer(); $aDirs = $oiTopComposer->ListAllowedTestDir(); $this->assertTrue(is_array($aDirs)); } /** * This is NOT a unit test, this test the iTop instance running the test ... */ public function testNoDeniedDirIsPresentForNow() { $oiTopComposer = new iTopComposer(); $aDeniedButStillPresent = $oiTopComposer->ListDeniedButStillPresent(); $this->assertEmpty( $aDeniedButStillPresent, 'The iTop instance running this test must not contain any denied test directory, found: '.var_export($aDeniedButStillPresent, true) ); } /** * This is NOT a unit test, this test the iTop instance running the test ... */ public function testAllDirCovered() { $oiTopComposer = new iTopComposer(); $aAllowedAndDeniedDirs = array_merge( $oiTopComposer->ListAllowedTestDir(), $oiTopComposer->ListDeniedTestDir() ); $aExistingDirs = $oiTopComposer->ListAllTestDir(); $aMissing = array_diff($aExistingDirs, $aAllowedAndDeniedDirs); $aExtra = array_diff($aAllowedAndDeniedDirs, $aExistingDirs); $this->assertEmpty( $aMissing, 'Test dirs exists in /lib !'."\n" .' They must be declared either in the allowed or denied list in '.iTopComposer::class." (see N°2651).\n" .' List of dirs:'."\n".var_export($aMissing, true) ); } }