diff --git a/tests/demo_transclude_circular/copier_files/include_me.yml b/tests/demo_transclude_circular/copier_files/include_me.yml new file mode 100644 index 000000000..136799471 --- /dev/null +++ b/tests/demo_transclude_circular/copier_files/include_me.yml @@ -0,0 +1,6 @@ +--- +!include ../copier_files/include_me_also.yml +--- + +_exclude: + - "exclude1" diff --git a/tests/demo_transclude_circular/copier_files/include_me_also.yml b/tests/demo_transclude_circular/copier_files/include_me_also.yml new file mode 100644 index 000000000..9273156a4 --- /dev/null +++ b/tests/demo_transclude_circular/copier_files/include_me_also.yml @@ -0,0 +1,6 @@ +--- +!include ../copier_files/include_me.yml +--- + +_exclude: + - "exclude2" diff --git a/tests/demo_transclude_circular/demo/copier.yml b/tests/demo_transclude_circular/demo/copier.yml new file mode 100644 index 000000000..d35d2d971 --- /dev/null +++ b/tests/demo_transclude_circular/demo/copier.yml @@ -0,0 +1,7 @@ +--- +!include ../copier_files/include_me.yml +--- + +project_name: + type: str + help: What is the project name diff --git a/tests/demo_transclude_circular_bis/copier_files/include_me.yml b/tests/demo_transclude_circular_bis/copier_files/include_me.yml new file mode 100644 index 000000000..339fbc21a --- /dev/null +++ b/tests/demo_transclude_circular_bis/copier_files/include_me.yml @@ -0,0 +1 @@ +!include ../copier_files/include_me_also.yml diff --git a/tests/demo_transclude_circular_bis/copier_files/include_me_also.yml b/tests/demo_transclude_circular_bis/copier_files/include_me_also.yml new file mode 100644 index 000000000..391287ef1 --- /dev/null +++ b/tests/demo_transclude_circular_bis/copier_files/include_me_also.yml @@ -0,0 +1,2 @@ +!include ../copier_files/include_me.yml + diff --git a/tests/demo_transclude_circular_bis/demo/copier.yml b/tests/demo_transclude_circular_bis/demo/copier.yml new file mode 100644 index 000000000..9a77fb261 --- /dev/null +++ b/tests/demo_transclude_circular_bis/demo/copier.yml @@ -0,0 +1,7 @@ +--- +!include ../copier_files/include_me.yml +--- + +_exclude: + - "exclude1" + - "exclude2" diff --git a/tests/test_config.py b/tests/test_config.py index 2e92728df..94f270ebc 100644 --- a/tests/test_config.py +++ b/tests/test_config.py @@ -383,6 +383,22 @@ def test_config_data_transclusion() -> None: assert config.all_exclusions == ("exclude1", "exclude2") +@pytest.mark.skip( + "TODO: Catch circular transclusions instead of causing a `RecursionError` and provide a comprehensive error with files that collide" +) +@pytest.mark.parametrize( + "demo_path", + ["tests/demo_transclude_circular/demo", "tests/demo_transclude_circular_bis/demo"], +) +def test_config_circular_transclusions(demo_path: str) -> None: + config = Worker(demo_path) + with pytest.raises(RecursionError): + assert config.all_exclusions == ("exclude1", "exclude2") + raise ValueError( + "Error should be custom, and caught before exceeding recursion limit." + ) + + @pytest.mark.parametrize( "user_defaults, data, expected", [