Porównaj commity

...

2 Commity

Autor SHA1 Wiadomość Data
Marnanel Thurman a1c6007326 test for optional config
rm ConfigParser backing for now; there are problems with the idea of defaults
2023-10-17 01:49:21 +01:00
Marnanel Thurman 5cfdbc45a6 config, and basic test
more tests to follow
2023-10-14 15:41:46 +01:00
2 zmienionych plików z 58 dodań i 5 usunięć

Wyświetl plik

@ -1,4 +1,8 @@
import argparse
import os
DEFAULT_CONFIG_FILENAME = '/etc/kepi/kepi.conf'
CONFIG_SECTION = 'kepi'
class Config:
@ -14,9 +18,10 @@ class Config:
def __getattr__(self, field):
if field in self.settings:
print("9199", self.settings, field)
return self.settings[field]
else:
raise KeyError(field)
raise AttributeError(field)
def parse_args(self, argparser):
@ -32,8 +37,6 @@ class Config:
for sub in self.subcommands:
sub(self.subparsers)
self.subcommands = None
args = self.argparser.parse_args()
for field in dir(args):
@ -41,8 +44,6 @@ class Config:
continue
self.settings[field] = getattr(args, field)
# TODO here we will check the config file, and merge them in.
config = Config.__new__(Config)
def subcommand(fn):

Wyświetl plik

@ -0,0 +1,52 @@
import os
import sys
import argparse
import tempfile
from kepi.config import config, subcommand
@subcommand
def subcommands_for_testing(subparsers):
parser = subparsers.add_parser('wombat')
parser.add_argument(
'spong',
help=(
'the spong to wombat'
),
)
parser.add_argument(
'--fruit',
default='orange',
help=(
'the fruit you like'
),
)
def test_config_add_subcommands():
old_argv = sys.argv
sys.argv = ['kepi', 'wombat', 'foo']
parser = argparse.ArgumentParser()
config.parse_args(parser)
assert config.command=='wombat'
assert config.spong=='foo'
assert config.fruit=='orange'
sys.argv = old_argv
def test_config_optional():
old_argv = sys.argv
sys.argv = ['kepi', 'wombat', 'foo', '--fruit', 'grapes']
parser = argparse.ArgumentParser()
config.parse_args(parser)
assert config.command=='wombat'
assert config.spong=='foo'
assert config.fruit=='grapes'
sys.argv = old_argv