JFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbrerror("phpunit.xml file not found: {$phpunitXmlPath}"); return 100; } if (!file_exists($modulesStatusPath)) { $this->error("Modules statuses file not found: {$modulesStatusPath}"); return 99; } $enabledModules = json_decode(file_get_contents($modulesStatusPath), true); if (json_last_error() !== JSON_ERROR_NONE) { $this->error("Error decoding JSON from {$modulesStatusPath}: " . json_last_error_msg()); return 98; } $modulesPath = base_path('Modules/'); $moduleDirs = []; foreach ($enabledModules as $module => $status) { if ($status) { // Only add enabled modules $moduleDir = $modulesPath . $module . '/' . $appFolder; if (is_dir($moduleDir)) { $moduleDirs[] = $moduleDir; } } } $phpunitXml = simplexml_load_file($phpunitXmlPath); $sourceInclude = $phpunitXml->xpath('//source/include')[0]; unset($sourceInclude->directory); $sourceInclude->addChild('directory', './app'); foreach ($moduleDirs as $dir) { $directory = $sourceInclude->addChild('directory', str_replace(base_path(), '.', $dir)); $directory->addAttribute('suffix', '.php'); } $dom = new DOMDocument(); $dom->preserveWhiteSpace = false; $dom->formatOutput = true; $dom->loadXML($phpunitXml->asXML()); $dom->save($phpunitXmlPath); $this->info("phpunit.xml updated with enabled module directories."); return 0; } }