@@ -4794,3 +4794,104 @@ def test_dismissible_skills_card() -> None:
47944794 "skill" : "WOW Lightsaber Skill" ,
47954795 "url" : "https://learn.mongodb.com/courses/crud-operations-in-mongodb" ,
47964796 }
4797+
4798+
4799+ def test_reserved_dirs () -> None :
4800+ with make_test (
4801+ {
4802+ Path (
4803+ "source/index.txt"
4804+ ): """
4805+ ========
4806+ Homepage
4807+ ========
4808+
4809+ txt files inside of code-examples directories should not be parsed as reStructuredText.
4810+
4811+ .. literalinclude:: /code-examples/test.txt
4812+
4813+ .. literalinclude:: /includes/code-examples/test.txt
4814+
4815+ rst files inside of code-examples directories are okay to parse.
4816+
4817+ .. include:: /includes/code-examples/foo.rst
4818+
4819+ """ ,
4820+ Path (
4821+ "source/code-examples.txt"
4822+ ): """
4823+ :orphan:
4824+
4825+ ==================
4826+ Code Examples Page
4827+ ==================
4828+
4829+ This page exists to make sure that pages titled code-examples are okay to have.
4830+
4831+ """ ,
4832+ Path (
4833+ "source/code-examples/test.txt"
4834+ ): """
4835+ This is a code example and should not be captured as a page.
4836+ """ ,
4837+ Path (
4838+ "source/includes/code-examples/test.txt"
4839+ ): """
4840+ This is another code example, but nested in a subdirectory, and should not be captured as a page.
4841+ """ ,
4842+ Path (
4843+ "source/includes/code-examples/foo.rst"
4844+ ): """
4845+ This file makes sure that rst files nested in a code-examples subdirectory is okay.
4846+
4847+ .. warning::
4848+
4849+ This is a test.
4850+
4851+ """ ,
4852+ }
4853+ ) as result :
4854+ # txt files nested under code-examples directories should not be parsed as reStructuredText
4855+ assert len (result .pages ) == 3
4856+ assert result .pages .get (FileId ("code-examples/test.txt" )) == None
4857+ assert result .pages .get (FileId ("includes/code-examples/test.txt" )) == None
4858+
4859+ # Allow rst files under code-examples to be parsed
4860+ assert result .pages [FileId ("includes/code-examples/foo.rst" )]
4861+
4862+ # Allow code-examples.txt files to be parsed
4863+ assert result .pages [FileId ("code-examples.txt" )]
4864+
4865+ assert len (result .diagnostics [FileId ("index.txt" )]) == 0
4866+ check_ast_testing_string (
4867+ result .pages [FileId ("index.txt" )].ast ,
4868+ """
4869+ <root fileid="index.txt">
4870+ <section>
4871+ <heading id="homepage"><text>Homepage</text></heading>
4872+ <paragraph><text>txt files inside of code-examples directories should not be parsed as reStructuredText.</text></paragraph>
4873+ <directive name="literalinclude">
4874+ <text>/code-examples/test.txt</text>
4875+ <code copyable="True">
4876+ This is a code example and should not be captured as a page.
4877+ </code>
4878+ </directive>
4879+ <directive name="literalinclude">
4880+ <text>/includes/code-examples/test.txt</text>
4881+ <code copyable="True">
4882+ This is another code example, but nested in a subdirectory, and should not be captured as a page.
4883+ </code>
4884+ </directive>
4885+ <paragraph><text>rst files inside of code-examples directories are okay to parse.</text></paragraph>
4886+ <directive name="include">
4887+ <text>/includes/code-examples/foo.rst</text>
4888+ <root fileid="includes/code-examples/foo.rst">
4889+ <paragraph><text>This file makes sure that rst files nested in a code-examples subdirectory is okay.</text></paragraph>
4890+ <directive name="warning">
4891+ <paragraph><text>This is a test.</text></paragraph>
4892+ </directive>
4893+ </root>
4894+ </directive>
4895+ </section>
4896+ </root>""" ,
4897+ )
0 commit comments