mirror of
https://github.com/DJ2LS/FreeDATA
synced 2024-05-14 08:04:33 +00:00
Add write() method to config and created first tests.
This commit is contained in:
parent
8d99b0bfa2
commit
0102220271
2 changed files with 65 additions and 0 deletions
|
@ -40,6 +40,46 @@ class CONFIG:
|
|||
write values to config
|
||||
"""
|
||||
|
||||
# Validates config data
|
||||
def validate(self, data):
|
||||
for section in data:
|
||||
for setting in data[section]:
|
||||
if section == 'NETWORK':
|
||||
if setting == 'modemport' and int(data[section][setting]) == 0:
|
||||
raise Exception("'modemport' should be an integer")
|
||||
if section == 'STATION':
|
||||
if setting == 'mycall' and len(data[section][setting]) <= 0:
|
||||
raise Exception("'%s' can't be empty" % setting)
|
||||
if setting == 'mygrid' and len(data[section][setting]) <= 0:
|
||||
raise Exception("'%s' can't be empty" % setting)
|
||||
if setting == 'ssid_list' and not isinstance(data[section][setting], list):
|
||||
raise Exception("'%s' needs to be a list" % setting)
|
||||
# TODO finish this for all config settings!
|
||||
|
||||
# Sets and writes config data from a dict containing data settings
|
||||
def write(self, data):
|
||||
|
||||
# Validate config data before writing
|
||||
self.validate(data)
|
||||
|
||||
for section in data:
|
||||
# init section if it doesn't exist yet
|
||||
if not section.upper() in self.config.keys():
|
||||
self.config[section] = {}
|
||||
|
||||
for setting in data[section]:
|
||||
self.config[section][setting] = data[section][setting]
|
||||
|
||||
# Write config data to file
|
||||
try:
|
||||
with open(self.config_name, 'w') as configfile:
|
||||
self.config.write(configfile)
|
||||
return self.config
|
||||
except Exception as conferror:
|
||||
self.log.error("[CFG] reading logfile", e=conferror)
|
||||
return False
|
||||
|
||||
# TODO remove this method when ready
|
||||
def write_entire_config(self, data):
|
||||
"""
|
||||
write entire config
|
||||
|
|
25
tests/test_config.py
Normal file
25
tests/test_config.py
Normal file
|
@ -0,0 +1,25 @@
|
|||
import unittest
|
||||
from modem import config
|
||||
|
||||
class TestConfigMethods(unittest.TestCase):
|
||||
|
||||
def test_config_exists(self):
|
||||
c = config.CONFIG('modem/config.ini')
|
||||
self.assertTrue(c.config_exists())
|
||||
|
||||
c = config.CONFIG('modem/nonexistant.ini')
|
||||
self.assertFalse(c.config_exists())
|
||||
|
||||
|
||||
def test_validate_data(self):
|
||||
c = config.CONFIG('modem/config.ini')
|
||||
data = {'NETWORK': {'modemport': "abc"}}
|
||||
with self.assertRaises(ValueError):
|
||||
c.validate(data)
|
||||
|
||||
data = {'NETWORK': {'modemport': "3000"}}
|
||||
self.assertIsNone(c.validate(data))
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
Loading…
Reference in a new issue