AbstractExampleModules.php in X Autoload 7.5
File
tests/src/Example/AbstractExampleModules.php
View source
<?php
namespace Drupal\xautoload\Tests\Example;
use Drupal\xautoload\Tests\DrupalBootTest\AbstractDrupalBootTest;
use Drupal\xautoload\Tests\Filesystem\VirtualFilesystem;
use Drupal\xautoload\Tests\VirtualDrupal\ExampleModulesInterface;
use Drupal\xautoload\Tests\VirtualDrupal\PureFunctions;
abstract class AbstractExampleModules implements ExampleModulesInterface {
public function drupalSystemListingModules() {
$modules = array();
foreach ($this
->getAvailableExtensions() as $name => $type) {
if ('module' !== $type) {
continue;
}
$modules[$name] = (object) array(
'uri' => $this
->getExtensionFilename($type, $name),
'filename' => $name . '.module',
'name' => $name,
);
}
return $modules;
}
protected abstract function getAvailableExtensions();
public function getBootstrapModules() {
$bootstrap_modules = array();
foreach ($this
->discoverModuleFilenames('module') as $name => $filename) {
$php = file_get_contents($filename);
foreach (PureFunctions::bootstrapHooks() as $hook) {
if (FALSE !== strpos($php, 'function ' . $name . '_' . $hook)) {
$bootstrap_modules[$name] = TRUE;
break;
}
}
}
return $bootstrap_modules;
}
public function assertLoadExampleClasses(AbstractDrupalBootTest $testCase) {
foreach ($this
->getExampleClasses() as $class) {
$testCase
->assertLoadClass($class);
}
}
public abstract function getExampleClasses();
function discoverModuleFilenames($type) {
$filenames = array();
foreach ($this
->getAvailableExtensions() as $name => $itemType) {
if ($type !== $itemType) {
continue;
}
$filenames[$name] = $this
->getExtensionFilename($type, $name);
}
return $filenames;
}
public function getExtensionFilename($type, $name) {
if ('xautoload' === $name) {
return dirname(dirname(dirname(__DIR__))) . '/xautoload.module';
}
$file = dirname(dirname(__DIR__)) . '/fixtures/.modules/' . $name . '/' . $name . '.module';
if (is_file($file)) {
return $file;
}
}
}