expectException(\Exception::class); } $sActualMinVersion = \utils::GetItopMinorVersion($sVersion); if (!is_null($sExpectedMinVersion)) { $this->assertEquals($sExpectedMinVersion, $sActualMinVersion); } } public function GetItopMinorVersionProvider() { return [['2.8.0', '2.8'], ['3.0.0', '3.0'], ['3.', null], ['3', null]]; } /** * Verify if the datamodel.*.xml files refer to the current itop version * This is an integration test * * @group skipPostBuild * * @dataProvider iTopModulesPhpVersionProvider */ public function testiTopModulesPhpVersion($sExpectedVersion, $sPhpFile) { $this->assertNotNull($sExpectedVersion, 'Expected version is null, something went wrong in the dataprovider !'); $sModulePath = realpath($sPhpFile); $sModuleFileName = basename($sModulePath); $sModuleName = preg_replace('/[^.]+\.([^.]+)\.php/', '$1', $sModuleFileName); $sFileContent = file_get_contents($sPhpFile); preg_match( "#'$sModuleName/([^']+)'#", $sFileContent, $matches ); $this->assertRegExp("#$sExpectedVersion#", $matches[1], " $sPhpFile:2 file refer does not refer to current itop version ($sModuleName/$matches[1] does not match regexp $sModuleName/$sExpectedVersion)"); } /** * @return array * @throws \Exception * @uses utils::GetItopMinorVersion() */ public function iTopModulesPhpVersionProvider() { parent::setUp(); require_once APPROOT.'core/config.class.inc.php'; require_once APPROOT.'application/utils.inc.php'; if (is_dir(APPROOT.'datamodels/2.x')) { $DatamodelsPath = APPROOT.'datamodels/2.x'; } elseif (is_dir(APPROOT.'datamodels/1.x')) { $DatamodelsPath = APPROOT.'datamodels/1.x'; } else { throw new \Exception('Cannot local the datamodels directory'); } $sPath = $DatamodelsPath.'/*/module.*.php'; $aPhpFiles = glob($sPath); try { $sExpectedVersion = \utils::GetItopMinorVersion().'\.\d+';// ie: 2.7\.\d+ (and yes, the 1st dot should be escaped, but, hey, it is good enough as it, ans less complex to read) } catch (\Exception $e) { $sExpectedVersion = null; } $aTestCases = array(); foreach ($aPhpFiles as $sPhpFile) { $aTestCases[$sPhpFile] = array( 'sExpectedVersion' => $sExpectedVersion, 'sPhpFile' => $sPhpFile, ); } return $aTestCases; } }