From 5dc42a9245a306547a24b2be19819a2cc42b7897 Mon Sep 17 00:00:00 2001 From: rzaitov Date: Thu, 31 Oct 2013 18:20:46 +0400 Subject: [PATCH] =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20?= =?UTF-8?q?=D0=BA=D0=BE=D1=80=D1=80=D0=B5=D0=BA=D1=82=D0=BD=D1=83=D1=8E=20?= =?UTF-8?q?=D0=BE=D0=B1=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=BA=D1=83=20=D0=BF?= =?UTF-8?q?=D1=83=D1=81=D1=82=D0=BD=D1=8B=D1=85=20=D1=81=D1=82=D1=80=D0=BE?= =?UTF-8?q?=D0=BA=20=D0=B8=20=D1=81=D1=82=D1=80=D0=BE=D0=BA-=D0=BA=D0=BE?= =?UTF-8?q?=D0=BC=D0=BC=D0=B5=D0=BD=D1=82=D0=B0=D1=80=D0=B8=D0=B5=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SettingsParser/test_SettingsParser.py | 62 ++++++++++++++++++- .../parser/SettingsParser/SettingsParser.py | 14 ++++- 2 files changed, 73 insertions(+), 3 deletions(-) diff --git a/scripts/UnitTests/SettingsParser/test_SettingsParser.py b/scripts/UnitTests/SettingsParser/test_SettingsParser.py index f515880..2ad2ad4 100644 --- a/scripts/UnitTests/SettingsParser/test_SettingsParser.py +++ b/scripts/UnitTests/SettingsParser/test_SettingsParser.py @@ -22,4 +22,64 @@ class TestSettingsParser(unittest.TestCase): self.parser.getSettingsDictByPath(['another', 'two']) len2 = len(self.parser.settings) - self.assertEqual(2, len2) \ No newline at end of file + self.assertEqual(2, len2) + + def test_processLine(self): + line1 = "x.y.name1 = 'value1'" + line2 = "x.y.name2 = 'value2'" + line3 = "x.z.name1 = 'value3'" + line4 = "x.z.name2 = 'value4'" + + line5 = "a.y.name1 = 'value5'" + line6 = "a.y.name2 = 'value6'" + line7 = "a.z.name1 = 'value7'" + line8 = "a.z.name2 = 'value8'" + + self.parser.processLine(line1) + self.parser.processLine(line2) + self.parser.processLine(line3) + self.parser.processLine(line4) + self.parser.processLine(line5) + self.parser.processLine(line6) + self.parser.processLine(line7) + self.parser.processLine(line8) + + self.assertEqual('value1', self.parser.settings['x']['y']['name1']) + self.assertEqual('value2', self.parser.settings['x']['y']['name2']) + self.assertEqual('value3', self.parser.settings['x']['z']['name1']) + self.assertEqual('value4', self.parser.settings['x']['z']['name2']) + + self.assertEqual('value5', self.parser.settings['a']['y']['name1']) + self.assertEqual('value6', self.parser.settings['a']['y']['name2']) + self.assertEqual('value7', self.parser.settings['a']['z']['name1']) + self.assertEqual('value8', self.parser.settings['a']['z']['name2']) + + def test_emptyLinesAndComments(self): + class PartialSettingsParser(SettingsParser): + def __init__(self): + self.processLineCall = 0 + + def processLine(self, line): + self.processLineCall += 1 + + self.parser = PartialSettingsParser() + content = """ +valid.line.with.setting = 'some value' +# this is comment + + another.valid.line = 'another value' + """ + + self.parser.parse(content) + + self.assertEqual(2, self.parser.processLineCall) + + + + + + + + + + diff --git a/scripts/parser/SettingsParser/SettingsParser.py b/scripts/parser/SettingsParser/SettingsParser.py index dcc2275..0561236 100644 --- a/scripts/parser/SettingsParser/SettingsParser.py +++ b/scripts/parser/SettingsParser/SettingsParser.py @@ -10,12 +10,22 @@ class SettingsParser: lines = content.splitlines() for line in lines: - self.processLine(line) + stripped = line.strip(' \t\n\r') + print (line, stripped) + + if len(stripped) == 0: + continue + if stripped.startswith("#"): + continue + + self.processLine(stripped) def processLine(self, line): parser = SettingsLineParser() - result = parser.parseLine(line) + setting = parser.parseLine(line) + + self.mergeSetting(setting) def mergeSetting(self, setting): value = setting['value']