getConfigFiles(); $validationStateMock = $this->createMock(\Magento\Framework\Config\ValidationStateInterface::class); $validationStateMock->method('isValidationRequired') ->willReturn(false); $mergedConfig = new \Magento\Framework\Config\Dom( '', $validationStateMock, $this->getIdAttributes() ); foreach ($files as $file) { $content = file_get_contents($file[0]); try { $validationStateMock = $this->createMock(\Magento\Framework\Config\ValidationStateInterface::class); $validationStateMock->method('isValidationRequired') ->willReturn(true); new \Magento\Framework\Config\Dom($content, $validationStateMock, $this->getIdAttributes()); //merge won't be performed if file is invalid because of exception thrown $mergedConfig->merge($content); } catch (\Magento\Framework\Config\Dom\ValidationException $e) { $invalidFiles[] = $file[0]; } } if (!empty($invalidFiles)) { $this->fail('Found broken files: ' . implode("\n", $invalidFiles)); } $errors = []; $mergedConfig->validate($this->getMergedSchemaFile(), $errors); if ($errors) { $this->fail('Merged routes config is invalid: ' . "\n" . implode("\n", $errors)); } } }