public function UnitTests::convert in Drupal 7 to 8/9 Module Upgrader 8
Performs required conversions.
Parameters
TargetInterface $target: The target module to convert.
Overrides ConverterInterface::convert
File
- src/
Plugin/ DMU/ Converter/ UnitTests.php, line 29
Class
- UnitTests
- Plugin annotation @Converter( id = "unit_tests", description = @Translation("Modifies unit test classes.") )
Namespace
Drupal\drupalmoduleupgrader\Plugin\DMU\ConverterCode
public function convert(TargetInterface $target) {
$unit_tests = [];
$test_files = $target
->getIndexer('class')
->getQuery([
'file',
])
->condition('parent', 'DrupalUnitTestCase')
->execute()
->fetchCol();
foreach ($test_files as $test_file) {
/** @var \Pharborist\Objects\Classnode[] $tests */
$tests = $target
->open($test_file)
->find(Filter::isInstanceOf('\\Pharborist\\Objects\\SingleInheritanceNode'))
->toArray();
foreach ($tests as $test) {
if ((string) $test
->getExtends() === 'DrupalUnitTestCase') {
$unit_tests[] = $test;
}
}
}
/** @var \Pharborist\Objects\ClassNode $unit_test */
foreach ($unit_tests as $unit_test) {
$unit_test
->setExtends('\\Drupal\\Tests\\UnitTestCase');
$comment_text = <<<END
@FIXME
Unit tests are now written for the PHPUnit framework. You will need to refactor
this test in order for it to work properly.
END;
$comment = DocCommentNode::create($comment_text);
$unit_test
->setDocComment($comment);
$ns = 'Drupal\\Tests\\' . $target
->id() . '\\Unit';
$doc = RootNode::create($ns)
->getNamespace($ns)
->append($unit_test
->remove());
WhitespaceNode::create("\n\n")
->insertBefore($unit_test);
$this
->write($target, 'tests/src/Unit/' . $unit_test
->getName() . '.php', "<?php\n\n{$doc}");
}
}