blob: 2e34952b2eb939a4b7bf2efa1c1707c55fad460e [file] [log] [blame]
# Pylint doesn't play well with fixtures and dependency injection from pytest
# pylint: disable=redefined-outer-name
import os
import pytest
from buildstream.exceptions import ErrorDomain, LoadErrorReason
from buildstream.testing import cli # pylint: disable=unused-import
DATA_DIR = os.path.dirname(os.path.realpath(__file__))
@pytest.mark.parametrize(
"target,domain,reason,provenance",
[
# When specifying a bad suffix on the command line we get a different error, we
# catch this error earlier on in the load sequence while sorting out element and
# artifact names and glob expressions.
#
("farm.pony", ErrorDomain.STREAM, "invalid-element-names", None),
('The "quoted" pony.bst', ErrorDomain.LOAD, LoadErrorReason.BAD_CHARACTERS_IN_NAME, None),
(
"bad-suffix-dep.bst",
ErrorDomain.LOAD,
LoadErrorReason.BAD_ELEMENT_SUFFIX,
"bad-suffix-dep.bst [line 3 column 2]",
),
(
"bad-chars-dep.bst",
ErrorDomain.LOAD,
LoadErrorReason.BAD_CHARACTERS_IN_NAME,
"bad-chars-dep.bst [line 3 column 2]",
),
],
ids=["toplevel-bad-suffix", "toplevel-bad-chars", "dependency-bad-suffix", "dependency-bad-chars"],
)
@pytest.mark.datafiles(DATA_DIR)
def test_invalid_element_names(cli, datafiles, target, domain, reason, provenance):
project = os.path.join(str(datafiles), "elementnames")
result = cli.run(project=project, silent=True, args=["show", target])
result.assert_main_error(domain, reason)
if provenance:
assert provenance in result.stderr