Skip to content

Commit 10b7a5d

Browse files
committed
refReference: throw an exception when reference not found
1 parent 1de3233 commit 10b7a5d

File tree

3 files changed

+40
-14
lines changed

3 files changed

+40
-14
lines changed

_build/src/Reference/RefReference.php

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,11 @@ public function getName(): string
1717
public function resolve(Environment $environment, string $data): ResolvedReference
1818
{
1919
$resolver = new Resolver();
20-
dump($resolver->resolve($environment, $data));
21-
return $resolver->resolve($environment, $data);
20+
$resolvedReference = $resolver->resolve($environment, $data);
21+
if ($resolvedReference->getTitle() === '(unresolved)') {
22+
throw new \RuntimeException(sprintf('Reference "%s" could not be resolved', $data));
23+
}
24+
25+
return $resolvedReference;
2226
}
2327
}

_build/tests/IntegrationTest.php

Lines changed: 32 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,7 @@ class IntegrationTest extends TestCase
1717
*/
1818
public function testIntegration(string $folder)
1919
{
20-
$kernel = new HtmlKernel();
21-
$builder = new Builder($kernel);
22-
$fs = new Filesystem();
23-
$fs->remove(__DIR__.'/_output');
24-
25-
$builder->build(
20+
$this->createBuilder()->build(
2621
sprintf('%s/fixtures/source/%s', __DIR__, $folder),
2722
__DIR__.'/_output',
2823
true // verbose
@@ -35,7 +30,7 @@ public function testIntegration(string $folder)
3530

3631
$indenter = new Indenter();
3732
foreach ($finder as $expectedFile) {
38-
$relativePath = $expectedFile->getRelativePathname();
33+
$relativePath = $expectedFile->getRelativePathname();
3934
$actualFilename = __DIR__.'/_output/'.$relativePath;
4035
$this->assertFileExists($actualFilename);
4136

@@ -47,16 +42,20 @@ public function testIntegration(string $folder)
4742

4843
public function integrationProvider()
4944
{
50-
// yield 'main' => [
51-
// 'folder' => 'main'
52-
// ];
45+
// yield 'main' => [
46+
// 'folder' => 'main'
47+
// ];
5348

5449
yield 'toctree' => [
55-
'folder' => 'toctree'
50+
'folder' => 'toctree',
5651
];
5752

5853
yield 'refReference' => [
59-
'folder' => 'refReference'
54+
'folder' => 'refReference',
55+
];
56+
57+
yield 'refReferenceError' => [
58+
'folder' => 'refReferenceError',
6059
];
6160
}
6261

@@ -135,4 +134,25 @@ public function parserUnitBlockProvider()
135134
'documentName' => 'literal',
136135
];
137136
}
137+
138+
public function testRefReferenceError()
139+
{
140+
$this->expectException(\RuntimeException::class);
141+
142+
$this->createBuilder()->build(
143+
sprintf('%s/fixtures/source/refReferenceError', __DIR__),
144+
__DIR__.'/_output',
145+
true // verbose
146+
);
147+
}
148+
149+
private function createBuilder(): Builder
150+
{
151+
$kernel = new HtmlKernel();
152+
$builder = new Builder($kernel);
153+
$fs = new Filesystem();
154+
$fs->remove(__DIR__.'/_output');
155+
156+
return $builder;
157+
}
138158
}
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
2+
:ref:`A ref test <ref-test>`.

0 commit comments

Comments
 (0)