function FrontMatterTest::testFrontMatter
Test Twig template front matter.
@covers \Drupal\Core\Template\TwigEnvironment::compileSource
      
    
@covers \Drupal\Core\Template\TwigEnvironment::getTemplateMetadata
      
    
@dataProvider \Drupal\Tests\Component\FrontMatter\FrontMatterTest::providerFrontMatterData
Parameters
array|null $yaml: The YAML used for metadata in a Twig template.
int $line: The expected line number where the source code starts.
string $content: The content to use for testing purposes.
File
- 
              core/
tests/ Drupal/ KernelTests/ Core/ Theme/ FrontMatterTest.php, line 98  
Class
- FrontMatterTest
 - Tests Twig front matter support.
 
Namespace
Drupal\KernelTests\Core\ThemeCode
public function testFrontMatter($yaml, $line, $content = ComponentFrontMatterTest::SOURCE) : void {
  // Create a temporary Twig template.
  $source = ComponentFrontMatterTest::createFrontMatterSource($yaml, $content);
  $file = $this->createTwigTemplate($source);
  $name = basename($file);
  // Ensure the proper metadata is returned.
  $metadata = $this->twig
    ->getTemplateMetadata($name);
  $this->assertEquals($yaml ?? [], $metadata);
  // Ensure the metadata is never rendered.
  $output = $this->twig
    ->load($name)
    ->render();
  $this->assertEquals($content, $output);
  // Create a temporary Twig template.
  $source = ComponentFrontMatterTest::createFrontMatterSource($yaml, static::BROKEN_SOURCE);
  $file = $this->createTwigTemplate($source);
  $name = basename($file);
  try {
    $this->twig
      ->load($name);
  } catch (Error $error) {
    $this->assertEquals($line, $error->getTemplateLine());
  }
  // Ensure string based templates work too.
  try {
    $this->twig
      ->createTemplate($source)
      ->render();
  } catch (Error $error) {
    $this->assertEquals($line, $error->getTemplateLine());
  }
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.