config: Keep known options defined on CLI
If the validation or dumping script is given some options, they should only be removed if they are not valid. We have to remove the invalid ones, otherwise that would cause a warning about unknown options. Signed-off-by: Lubomír Sedlář <lsedlar@redhat.com>
This commit is contained in:
parent
d063217d6f
commit
32a6415e58
@ -112,8 +112,7 @@ def process_file(
|
||||
|
||||
# Clean up defines from the final final config. We don't want to keep them
|
||||
# as they would cause warnings during validation.
|
||||
for key in defines:
|
||||
del conf[key]
|
||||
config_utils.remove_unknown(conf, defines)
|
||||
|
||||
if callback:
|
||||
callback(conf)
|
||||
|
@ -92,8 +92,7 @@ def run(config, topdir, has_old, offline, defined_variables):
|
||||
# Load actual configuration
|
||||
conf = pungi.util.load_config(config, defined_variables)
|
||||
# Remove the dummy variables used for defaults.
|
||||
for key in defined_variables:
|
||||
del conf[key]
|
||||
config_utils.remove_unknown(conf, defined_variables)
|
||||
|
||||
errors, warnings = pungi.checks.validate(conf, offline=offline)
|
||||
if errors or warnings:
|
||||
|
@ -3,6 +3,8 @@
|
||||
import argparse
|
||||
import re
|
||||
|
||||
from pungi.checks import make_schema
|
||||
|
||||
|
||||
def validate_definition(value):
|
||||
"""Check that the variable name is a valid Python variable name, and that
|
||||
@ -18,3 +20,11 @@ def validate_definition(value):
|
||||
def extract_defines(args):
|
||||
"""Given an iterable of "key=value" strings, parse them into a dict."""
|
||||
return dict(var.split("=", 1) for var in args)
|
||||
|
||||
|
||||
def remove_unknown(conf, keys):
|
||||
"""Remove given keys from the config unless they are known Pungi options."""
|
||||
schema = make_schema()
|
||||
for key in keys:
|
||||
if key not in schema["properties"]:
|
||||
del conf[key]
|
||||
|
@ -35,3 +35,13 @@ class TestDefineHelpers(unittest.TestCase):
|
||||
def test_validate_define_incorrect(self, value):
|
||||
with self.assertRaises(argparse.ArgumentTypeError):
|
||||
config_utils.validate_definition(value)
|
||||
|
||||
def test_remove_unknown(self):
|
||||
conf = {"foo": "bar"}
|
||||
config_utils.remove_unknown(conf, ["foo"])
|
||||
self.assertEqual(conf, {})
|
||||
|
||||
def test_remove_known(self):
|
||||
conf = {"release_name": "bar"}
|
||||
config_utils.remove_unknown(conf, ["release_name"])
|
||||
self.assertEqual(conf, {"release_name": "bar"})
|
||||
|
Loading…
Reference in New Issue
Block a user