Tests: Add tests for missing and default parameters
Change-Id: Iaca0cd39576e99829b20373bf7203ec205a1088c
This commit is contained in:
parent
f7c6e4f43d
commit
08196fe819
@ -106,6 +106,14 @@ def expected_output(scenario):
|
|||||||
return "".join(path.read_text() for path in sorted(scenario.out_paths))
|
return "".join(path.read_text() for path in sorted(scenario.out_paths))
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def expected_error(scenario):
|
||||||
|
if scenario.error_path.exists():
|
||||||
|
return scenario.error_path.read_text().rstrip()
|
||||||
|
else:
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
def check_folder(scenario, jjb_config, input):
|
def check_folder(scenario, jjb_config, input):
|
||||||
if "name" not in input:
|
if "name" not in input:
|
||||||
return
|
return
|
||||||
@ -142,7 +150,10 @@ def check_parser(jjb_config, registry):
|
|||||||
|
|
||||||
def check(in_path):
|
def check(in_path):
|
||||||
parser.parse(str(in_path))
|
parser.parse(str(in_path))
|
||||||
_ = parser.expandYaml(registry)
|
registry.set_parser_data(parser.data)
|
||||||
|
job_data_list, job_view_list = parser.expandYaml(registry)
|
||||||
|
generator = XmlJobGenerator(registry)
|
||||||
|
_ = generator.generateXML(job_data_list)
|
||||||
|
|
||||||
return check
|
return check
|
||||||
|
|
||||||
|
@ -21,7 +21,7 @@ from collections import namedtuple
|
|||||||
|
|
||||||
|
|
||||||
Scenario = namedtuple(
|
Scenario = namedtuple(
|
||||||
"Scnenario", "name in_path out_paths config_path plugins_info_path"
|
"Scnenario", "name in_path out_paths error_path config_path plugins_info_path"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -35,6 +35,7 @@ def scenario_list(fixtures_dir, in_ext=".yaml", out_ext=".xml"):
|
|||||||
name=path.stem,
|
name=path.stem,
|
||||||
in_path=path,
|
in_path=path,
|
||||||
out_paths=out_path_list,
|
out_paths=out_path_list,
|
||||||
|
error_path=path.with_suffix(".error"),
|
||||||
# When config file is missing it will still be passed and not None,
|
# When config file is missing it will still be passed and not None,
|
||||||
# so JJBConfig will prefer it over system and user configs.
|
# so JJBConfig will prefer it over system and user configs.
|
||||||
config_path=path.with_suffix(".conf"),
|
config_path=path.with_suffix(".conf"),
|
||||||
|
@ -0,0 +1 @@
|
|||||||
|
'missing_param' is undefined
|
@ -0,0 +1,16 @@
|
|||||||
|
- project:
|
||||||
|
name: sample-project
|
||||||
|
jobs:
|
||||||
|
- sample-job
|
||||||
|
|
||||||
|
- builder:
|
||||||
|
name: sample-builder
|
||||||
|
builders:
|
||||||
|
- shell: !j2: |
|
||||||
|
echo {{ missing_param }} {{ other_param }}
|
||||||
|
|
||||||
|
- job-template:
|
||||||
|
name: sample-job
|
||||||
|
builders:
|
||||||
|
- sample-builder:
|
||||||
|
other_param: abc
|
@ -0,0 +1 @@
|
|||||||
|
'missing_param' is undefined
|
@ -0,0 +1,21 @@
|
|||||||
|
- project:
|
||||||
|
name: sample-project
|
||||||
|
param_1: !j2: '{{ missing_param }}'
|
||||||
|
param_2: '{param_1}'
|
||||||
|
jobs:
|
||||||
|
- sample-job
|
||||||
|
|
||||||
|
- builder:
|
||||||
|
name: sample-builder
|
||||||
|
builders:
|
||||||
|
- shell: !j2: |
|
||||||
|
# This param_2 usage does not actually trigger underined error.
|
||||||
|
# Error is triggered before macro substitution.
|
||||||
|
echo {{ param_3 }} {{ other_param }}
|
||||||
|
|
||||||
|
- job-template:
|
||||||
|
name: sample-job
|
||||||
|
param_3: '{param_2}-plus'
|
||||||
|
builders:
|
||||||
|
- sample-builder:
|
||||||
|
other_param: abc
|
@ -0,0 +1 @@
|
|||||||
|
'missing_param' is undefined
|
@ -0,0 +1,10 @@
|
|||||||
|
- project:
|
||||||
|
name: sample-project
|
||||||
|
jobs:
|
||||||
|
- sample-job
|
||||||
|
|
||||||
|
- job-template:
|
||||||
|
name: sample-job
|
||||||
|
builders:
|
||||||
|
- shell: !j2: |
|
||||||
|
echo {{ missing_param }}
|
@ -0,0 +1 @@
|
|||||||
|
'missing_param' is undefined
|
@ -0,0 +1,13 @@
|
|||||||
|
- project:
|
||||||
|
name: sample-project
|
||||||
|
param_1: !j2: '{{ missing_param }}'
|
||||||
|
param_2: '{param_1}'
|
||||||
|
jobs:
|
||||||
|
- sample-job
|
||||||
|
|
||||||
|
- job-template:
|
||||||
|
name: sample-job
|
||||||
|
param_3: '{param_2}-plus'
|
||||||
|
builders:
|
||||||
|
- shell: !j2: |
|
||||||
|
echo {{ param_3 }}
|
@ -0,0 +1,4 @@
|
|||||||
|
missing_param parameter missing to format echo {missing_param} {other_param}
|
||||||
|
|
||||||
|
Given:
|
||||||
|
{'other_param': 'abc'}
|
@ -0,0 +1,16 @@
|
|||||||
|
- project:
|
||||||
|
name: sample-project
|
||||||
|
jobs:
|
||||||
|
- sample-job
|
||||||
|
|
||||||
|
- builder:
|
||||||
|
name: sample-builder
|
||||||
|
builders:
|
||||||
|
- shell: |
|
||||||
|
echo {missing_param} {other_param}
|
||||||
|
|
||||||
|
- job-template:
|
||||||
|
name: sample-job
|
||||||
|
builders:
|
||||||
|
- sample-builder:
|
||||||
|
other_param: abc
|
@ -0,0 +1,7 @@
|
|||||||
|
missing_param parameter missing to format {missing_param}
|
||||||
|
Given:
|
||||||
|
{'': '',
|
||||||
|
'name': 'sample-project',
|
||||||
|
'param_1': '{missing_param}',
|
||||||
|
'param_2': '{param_1}',
|
||||||
|
'template-name': 'sample-job'}
|
@ -0,0 +1,21 @@
|
|||||||
|
- project:
|
||||||
|
name: sample-project
|
||||||
|
param_1: '{missing_param}'
|
||||||
|
param_2: '{param_1}'
|
||||||
|
jobs:
|
||||||
|
- sample-job
|
||||||
|
|
||||||
|
- builder:
|
||||||
|
name: sample-builder
|
||||||
|
builders:
|
||||||
|
- shell: |
|
||||||
|
# This param_2 usage does not actually trigger underined error.
|
||||||
|
# Error is triggered before macro substitution.
|
||||||
|
echo {param_3} {other_param}
|
||||||
|
|
||||||
|
- job-template:
|
||||||
|
name: sample-job
|
||||||
|
param_3: '{param_2}-plus'
|
||||||
|
builders:
|
||||||
|
- sample-builder:
|
||||||
|
other_param: abc
|
@ -0,0 +1,7 @@
|
|||||||
|
missing_param parameter missing to format echo {missing_param}
|
||||||
|
|
||||||
|
Given:
|
||||||
|
{'': '',
|
||||||
|
'builders': [OrderedDict([('shell', 'echo {missing_param}\n')])],
|
||||||
|
'name': 'sample-project',
|
||||||
|
'template-name': 'sample-job'}
|
@ -0,0 +1,10 @@
|
|||||||
|
- project:
|
||||||
|
name: sample-project
|
||||||
|
jobs:
|
||||||
|
- sample-job
|
||||||
|
|
||||||
|
- job-template:
|
||||||
|
name: sample-job
|
||||||
|
builders:
|
||||||
|
- shell: |
|
||||||
|
echo {missing_param}
|
@ -0,0 +1,7 @@
|
|||||||
|
missing_param parameter missing to format {missing_param}
|
||||||
|
Given:
|
||||||
|
{'': '',
|
||||||
|
'name': 'sample-project',
|
||||||
|
'param_1': '{missing_param}',
|
||||||
|
'param_2': '{param_1}',
|
||||||
|
'template-name': 'sample-job'}
|
@ -0,0 +1,13 @@
|
|||||||
|
- project:
|
||||||
|
name: sample-project
|
||||||
|
param_1: '{missing_param}'
|
||||||
|
param_2: '{param_1}'
|
||||||
|
jobs:
|
||||||
|
- sample-job
|
||||||
|
|
||||||
|
- job-template:
|
||||||
|
name: sample-job
|
||||||
|
param_3: '{param_1}-plus'
|
||||||
|
builders:
|
||||||
|
- shell: |
|
||||||
|
echo {param_3}
|
@ -0,0 +1,19 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<project>
|
||||||
|
<actions/>
|
||||||
|
<description><!-- Managed by Jenkins Job Builder --></description>
|
||||||
|
<keepDependencies>false</keepDependencies>
|
||||||
|
<blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>
|
||||||
|
<blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>
|
||||||
|
<concurrentBuild>false</concurrentBuild>
|
||||||
|
<canRoam>true</canRoam>
|
||||||
|
<properties/>
|
||||||
|
<scm class="hudson.scm.NullSCM"/>
|
||||||
|
<builders>
|
||||||
|
<hudson.tasks.Shell>
|
||||||
|
<command>echo default_value abc</command>
|
||||||
|
</hudson.tasks.Shell>
|
||||||
|
</builders>
|
||||||
|
<publishers/>
|
||||||
|
<buildWrappers/>
|
||||||
|
</project>
|
@ -0,0 +1,16 @@
|
|||||||
|
- project:
|
||||||
|
name: sample-project
|
||||||
|
jobs:
|
||||||
|
- sample-job
|
||||||
|
|
||||||
|
- builder:
|
||||||
|
name: sample-builder
|
||||||
|
builders:
|
||||||
|
- shell: !j2: |
|
||||||
|
echo {{ missing_param | default('default_value') }} {{ other_param }}
|
||||||
|
|
||||||
|
- job-template:
|
||||||
|
name: sample-job
|
||||||
|
builders:
|
||||||
|
- sample-builder:
|
||||||
|
other_param: abc
|
@ -0,0 +1,19 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<project>
|
||||||
|
<actions/>
|
||||||
|
<description><!-- Managed by Jenkins Job Builder --></description>
|
||||||
|
<keepDependencies>false</keepDependencies>
|
||||||
|
<blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>
|
||||||
|
<blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>
|
||||||
|
<concurrentBuild>false</concurrentBuild>
|
||||||
|
<canRoam>true</canRoam>
|
||||||
|
<properties/>
|
||||||
|
<scm class="hudson.scm.NullSCM"/>
|
||||||
|
<builders>
|
||||||
|
<hudson.tasks.Shell>
|
||||||
|
<command>echo {param_2}-plus abc</command>
|
||||||
|
</hudson.tasks.Shell>
|
||||||
|
</builders>
|
||||||
|
<publishers/>
|
||||||
|
<buildWrappers/>
|
||||||
|
</project>
|
@ -0,0 +1,20 @@
|
|||||||
|
- project:
|
||||||
|
name: sample-project
|
||||||
|
param_1: !j2: '{{ missing_param | default("default_value") }}'
|
||||||
|
param_2: '{param_1}'
|
||||||
|
jobs:
|
||||||
|
- sample-job
|
||||||
|
|
||||||
|
- builder:
|
||||||
|
name: sample-builder
|
||||||
|
builders:
|
||||||
|
- shell: !j2: |
|
||||||
|
echo {{ param_3 }} {{ other_param }}
|
||||||
|
|
||||||
|
- job-template:
|
||||||
|
name: sample-job
|
||||||
|
param_3: '{param_2}-plus'
|
||||||
|
builders:
|
||||||
|
- sample-builder:
|
||||||
|
param_3: '{param_3}'
|
||||||
|
other_param: abc
|
@ -0,0 +1,19 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<project>
|
||||||
|
<actions/>
|
||||||
|
<description><!-- Managed by Jenkins Job Builder --></description>
|
||||||
|
<keepDependencies>false</keepDependencies>
|
||||||
|
<blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>
|
||||||
|
<blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>
|
||||||
|
<concurrentBuild>false</concurrentBuild>
|
||||||
|
<canRoam>true</canRoam>
|
||||||
|
<properties/>
|
||||||
|
<scm class="hudson.scm.NullSCM"/>
|
||||||
|
<builders>
|
||||||
|
<hudson.tasks.Shell>
|
||||||
|
<command>echo default_value</command>
|
||||||
|
</hudson.tasks.Shell>
|
||||||
|
</builders>
|
||||||
|
<publishers/>
|
||||||
|
<buildWrappers/>
|
||||||
|
</project>
|
@ -0,0 +1,10 @@
|
|||||||
|
- project:
|
||||||
|
name: sample-project
|
||||||
|
jobs:
|
||||||
|
- sample-job
|
||||||
|
|
||||||
|
- job-template:
|
||||||
|
name: sample-job
|
||||||
|
builders:
|
||||||
|
- shell: !j2: |
|
||||||
|
echo {{ missing_param | default('default_value') }}
|
@ -0,0 +1,19 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<project>
|
||||||
|
<actions/>
|
||||||
|
<description><!-- Managed by Jenkins Job Builder --></description>
|
||||||
|
<keepDependencies>false</keepDependencies>
|
||||||
|
<blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>
|
||||||
|
<blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>
|
||||||
|
<concurrentBuild>false</concurrentBuild>
|
||||||
|
<canRoam>true</canRoam>
|
||||||
|
<properties/>
|
||||||
|
<scm class="hudson.scm.NullSCM"/>
|
||||||
|
<builders>
|
||||||
|
<hudson.tasks.Shell>
|
||||||
|
<command>echo {param_2}-plus</command>
|
||||||
|
</hudson.tasks.Shell>
|
||||||
|
</builders>
|
||||||
|
<publishers/>
|
||||||
|
<buildWrappers/>
|
||||||
|
</project>
|
@ -0,0 +1,13 @@
|
|||||||
|
- project:
|
||||||
|
name: sample-project
|
||||||
|
param_1: !j2: '{{ missing_param | default("default_value") }}'
|
||||||
|
param_2: '{param_1}'
|
||||||
|
jobs:
|
||||||
|
- sample-job
|
||||||
|
|
||||||
|
- job-template:
|
||||||
|
name: sample-job
|
||||||
|
param_3: '{param_2}-plus'
|
||||||
|
builders:
|
||||||
|
- shell: !j2: |
|
||||||
|
echo {{ param_3 }}
|
@ -0,0 +1,20 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<project>
|
||||||
|
<actions/>
|
||||||
|
<description><!-- Managed by Jenkins Job Builder --></description>
|
||||||
|
<keepDependencies>false</keepDependencies>
|
||||||
|
<blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>
|
||||||
|
<blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>
|
||||||
|
<concurrentBuild>false</concurrentBuild>
|
||||||
|
<canRoam>true</canRoam>
|
||||||
|
<properties/>
|
||||||
|
<scm class="hudson.scm.NullSCM"/>
|
||||||
|
<builders>
|
||||||
|
<hudson.tasks.Shell>
|
||||||
|
<command>echo default_value abc
|
||||||
|
</command>
|
||||||
|
</hudson.tasks.Shell>
|
||||||
|
</builders>
|
||||||
|
<publishers/>
|
||||||
|
<buildWrappers/>
|
||||||
|
</project>
|
@ -0,0 +1,16 @@
|
|||||||
|
- project:
|
||||||
|
name: sample-project
|
||||||
|
jobs:
|
||||||
|
- sample-job
|
||||||
|
|
||||||
|
- builder:
|
||||||
|
name: sample-builder
|
||||||
|
builders:
|
||||||
|
- shell: |
|
||||||
|
echo {missing_param|default_value} {other_param}
|
||||||
|
|
||||||
|
- job-template:
|
||||||
|
name: sample-job
|
||||||
|
builders:
|
||||||
|
- sample-builder:
|
||||||
|
other_param: abc
|
@ -0,0 +1,20 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<project>
|
||||||
|
<actions/>
|
||||||
|
<description><!-- Managed by Jenkins Job Builder --></description>
|
||||||
|
<keepDependencies>false</keepDependencies>
|
||||||
|
<blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>
|
||||||
|
<blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>
|
||||||
|
<concurrentBuild>false</concurrentBuild>
|
||||||
|
<canRoam>true</canRoam>
|
||||||
|
<properties/>
|
||||||
|
<scm class="hudson.scm.NullSCM"/>
|
||||||
|
<builders>
|
||||||
|
<hudson.tasks.Shell>
|
||||||
|
<command>echo {param_2}-plus abc
|
||||||
|
</command>
|
||||||
|
</hudson.tasks.Shell>
|
||||||
|
</builders>
|
||||||
|
<publishers/>
|
||||||
|
<buildWrappers/>
|
||||||
|
</project>
|
@ -0,0 +1,20 @@
|
|||||||
|
- project:
|
||||||
|
name: sample-project
|
||||||
|
param_1: '{missing_param|default_value}'
|
||||||
|
param_2: '{param_1}'
|
||||||
|
jobs:
|
||||||
|
- sample-job
|
||||||
|
|
||||||
|
- builder:
|
||||||
|
name: sample-builder
|
||||||
|
builders:
|
||||||
|
- shell: |
|
||||||
|
echo {param_3} {other_param}
|
||||||
|
|
||||||
|
- job-template:
|
||||||
|
name: sample-job
|
||||||
|
param_3: '{param_2}-plus'
|
||||||
|
builders:
|
||||||
|
- sample-builder:
|
||||||
|
param_3: '{param_3}'
|
||||||
|
other_param: abc
|
@ -0,0 +1,20 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<project>
|
||||||
|
<actions/>
|
||||||
|
<description><!-- Managed by Jenkins Job Builder --></description>
|
||||||
|
<keepDependencies>false</keepDependencies>
|
||||||
|
<blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>
|
||||||
|
<blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>
|
||||||
|
<concurrentBuild>false</concurrentBuild>
|
||||||
|
<canRoam>true</canRoam>
|
||||||
|
<properties/>
|
||||||
|
<scm class="hudson.scm.NullSCM"/>
|
||||||
|
<builders>
|
||||||
|
<hudson.tasks.Shell>
|
||||||
|
<command>echo default_value
|
||||||
|
</command>
|
||||||
|
</hudson.tasks.Shell>
|
||||||
|
</builders>
|
||||||
|
<publishers/>
|
||||||
|
<buildWrappers/>
|
||||||
|
</project>
|
@ -0,0 +1,10 @@
|
|||||||
|
- project:
|
||||||
|
name: sample-project
|
||||||
|
jobs:
|
||||||
|
- sample-job
|
||||||
|
|
||||||
|
- job-template:
|
||||||
|
name: sample-job
|
||||||
|
builders:
|
||||||
|
- shell: |
|
||||||
|
echo {missing_param|default_value}
|
@ -0,0 +1,20 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<project>
|
||||||
|
<actions/>
|
||||||
|
<description><!-- Managed by Jenkins Job Builder --></description>
|
||||||
|
<keepDependencies>false</keepDependencies>
|
||||||
|
<blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>
|
||||||
|
<blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>
|
||||||
|
<concurrentBuild>false</concurrentBuild>
|
||||||
|
<canRoam>true</canRoam>
|
||||||
|
<properties/>
|
||||||
|
<scm class="hudson.scm.NullSCM"/>
|
||||||
|
<builders>
|
||||||
|
<hudson.tasks.Shell>
|
||||||
|
<command>echo {param_2}-plus
|
||||||
|
</command>
|
||||||
|
</hudson.tasks.Shell>
|
||||||
|
</builders>
|
||||||
|
<publishers/>
|
||||||
|
<buildWrappers/>
|
||||||
|
</project>
|
@ -0,0 +1,13 @@
|
|||||||
|
- project:
|
||||||
|
name: sample-project
|
||||||
|
param_1: '{missing_param|default_value}'
|
||||||
|
param_2: '{param_1}'
|
||||||
|
jobs:
|
||||||
|
- sample-job
|
||||||
|
|
||||||
|
- job-template:
|
||||||
|
name: sample-job
|
||||||
|
param_3: '{param_2}-plus'
|
||||||
|
builders:
|
||||||
|
- shell: |
|
||||||
|
echo {param_3}
|
@ -16,14 +16,33 @@
|
|||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
from operator import attrgetter
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
|
from tests.enum_scenarios import scenario_list
|
||||||
|
|
||||||
fixtures_dir = Path(__file__).parent / "error_fixtures"
|
fixtures_dir = Path(__file__).parent / "error_fixtures"
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture(
|
||||||
|
params=[
|
||||||
|
s
|
||||||
|
for s in scenario_list(fixtures_dir)
|
||||||
|
if s.in_path.name
|
||||||
|
not in {
|
||||||
|
"incorrect_template_dimensions.yaml",
|
||||||
|
"failure_formatting_template.yaml",
|
||||||
|
"failure_formatting_params.yaml",
|
||||||
|
}
|
||||||
|
],
|
||||||
|
ids=attrgetter("name"),
|
||||||
|
)
|
||||||
|
def scenario(request):
|
||||||
|
return request.param
|
||||||
|
|
||||||
|
|
||||||
# Override to avoid scenarios usage.
|
# Override to avoid scenarios usage.
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def config_path():
|
def config_path():
|
||||||
@ -51,3 +70,9 @@ def test_failure_formatting(caplog, check_parser, name):
|
|||||||
check_parser(in_path)
|
check_parser(in_path)
|
||||||
assert f"Failure formatting {name}" in caplog.text
|
assert f"Failure formatting {name}" in caplog.text
|
||||||
assert "Problem formatting with args" in caplog.text
|
assert "Problem formatting with args" in caplog.text
|
||||||
|
|
||||||
|
|
||||||
|
def test_error(check_parser, scenario, expected_error):
|
||||||
|
with pytest.raises(Exception) as excinfo:
|
||||||
|
check_parser(scenario.in_path)
|
||||||
|
assert str(excinfo.value) == expected_error
|
||||||
|
Loading…
Reference in New Issue
Block a user