diff --git a/src/spdx_tools/spdx/parser/tagvalue/parser.py b/src/spdx_tools/spdx/parser/tagvalue/parser.py index 50096bda2..2fd803b3e 100644 --- a/src/spdx_tools/spdx/parser/tagvalue/parser.py +++ b/src/spdx_tools/spdx/parser/tagvalue/parser.py @@ -91,6 +91,8 @@ def __init__(self, **kwargs): self.elements_built = dict() self.lex = SPDXLexer() self.lex.build(reflags=re.UNICODE) + kwargs.setdefault("write_tables", False) + kwargs.setdefault("debug", False) self.yacc = yacc.yacc(module=self, **kwargs) @grammar_rule("start : start attrib ") diff --git a/tests/spdx/parser/tagvalue/test_tag_value_parser.py b/tests/spdx/parser/tagvalue/test_tag_value_parser.py index c866e2726..8ccfd43b5 100644 --- a/tests/spdx/parser/tagvalue/test_tag_value_parser.py +++ b/tests/spdx/parser/tagvalue/test_tag_value_parser.py @@ -162,3 +162,20 @@ def test_parse_none_or_no_assertion_as_text(): assert package.summary == "NONE" assert package.license_concluded == SpdxNone() assert package.license_declared == SpdxNoAssertion() + + +def test_parser_init_does_not_write_tables(monkeypatch): + import builtins + + orig_open = builtins.open + + def mock_open(file, *args, **kwargs): + mode = args[0] if args else kwargs.get("mode", "r") + if str(file).endswith(("parsetab.py", "parser.out")) and any(m in mode for m in ("w", "a", "+")): + raise OSError(30, "Read-only file system") + return orig_open(file, *args, **kwargs) + + monkeypatch.setattr(builtins, "open", mock_open) + parser = Parser() + assert parser is not None +