Обновил парсер ключ-значение для проектов
This commit is contained in:
parent
de84d68620
commit
97f941ec9a
|
|
@ -10,38 +10,23 @@ class TestCsprojParser(unittest.TestCase):
|
|||
value_provider = ValueProvider()
|
||||
self.parser = ProjectParser(value_provider, 'csproj')
|
||||
|
||||
def test_parseAppStatement(self):
|
||||
statement = "app:SomeAppName"
|
||||
app_name = self.parser._ProjectLineParser__parseAppStatement(statement)
|
||||
|
||||
self.assertEqual(app_name, 'SomeAppName')
|
||||
def test_isValid(self):
|
||||
line = "for CoolApp csproj set KEY to 'VALUE'"
|
||||
isValid = self.parser.isValidLine(line)
|
||||
|
||||
def test_parseKeyValueStatement(self):
|
||||
statement = r"key:myKey 'my value -bla bla'"
|
||||
setting = self.parser._ProjectLineParser__parseKeyValueStatement(statement)
|
||||
self.assertEqual(True, isValid)
|
||||
|
||||
self.assertEqual(setting.key, 'myKey')
|
||||
self.assertEqual(setting.value, 'my value -bla bla')
|
||||
def test_isNotValid(self):
|
||||
line = "for CoolApp InvalidCmdToken set KEY to 'VALUE'"
|
||||
isValid = self.parser.isValidLine(line)
|
||||
|
||||
def test_parseAttributeStatement(self):
|
||||
statement = r"rel_path '../some_dir/some_file.txt'"
|
||||
setting = self.parser._ProjectLineParser__parseAttributeStatement(statement)
|
||||
self.assertEqual(False, isValid)
|
||||
|
||||
self.assertEqual(setting.attribute_name, 'rel_path')
|
||||
self.assertEqual(setting.attribute_value, r'../some_dir/some_file.txt')
|
||||
def test_parse(self):
|
||||
line = "for CoolApp.Touch csproj set OutputPath to 'Output'"
|
||||
settings = self.parser.parseLine(line)
|
||||
|
||||
def test_parse_keyedCsprojLine(self):
|
||||
statement = r"csproj app:coolApp key:CodesignKey 'iPhone Developer: Рустам Заитов (CTL85FZX6K)'"
|
||||
setting = self.parser.parseLine(statement)
|
||||
|
||||
self.assertEqual(setting.projectName, 'coolApp')
|
||||
self.assertEqual(setting.key, 'CodesignKey')
|
||||
self.assertEqual(setting.value, 'iPhone Developer: Рустам Заитов (CTL85FZX6K)')
|
||||
|
||||
def test_parse_attributedCsprojLine(self):
|
||||
statement = r"csproj app:coolApp rel_path '../parent_dir/some_file.extension'"
|
||||
setting = self.parser.parseLine(statement)
|
||||
|
||||
self.assertEqual(setting.projectName, 'coolApp')
|
||||
self.assertEqual(setting.attribute_name, 'rel_path')
|
||||
self.assertEqual(setting.attribute_value, '../parent_dir/some_file.extension')
|
||||
self.assertEqual('CoolApp.Touch', settings.projectName)
|
||||
self.assertEqual('OutputPath', settings.key)
|
||||
self.assertEqual('Output', settings.value)
|
||||
|
|
@ -12,11 +12,11 @@ class ProjectParser(LineParser):
|
|||
def parseLine(self, line):
|
||||
assert line is not None
|
||||
|
||||
projectNameRegexp = r"(?P<name>[a-Z0-9.]+)"
|
||||
keyRegexp = r'(?P<key>[a-Z]+)'
|
||||
projectNameRegexp = r"(?P<name>[.a-zA-Z]+)"
|
||||
keyRegexp = r'(?P<key>[a-zA-Z]+)'
|
||||
valueRegexp = r"'(?P<value>[^']+)'"
|
||||
|
||||
regexpSource = self.startsWithKeywordToken('for') + projectNameRegexp + self.keywordToken(r'project\s+set') + keyRegexp + self.keywordToken('to') + valueRegexp
|
||||
regexpSource = self.startsWithKeywordToken('for') + projectNameRegexp + self.keywordToken(self._command_token + r'\s+set') + keyRegexp + self.keywordToken('to') + valueRegexp
|
||||
regexp = re.compile(regexpSource, re.UNICODE)
|
||||
|
||||
match = regexp.match(line)
|
||||
|
|
@ -32,7 +32,7 @@ class ProjectParser(LineParser):
|
|||
return settings
|
||||
|
||||
def isValidLine(self, line):
|
||||
regexpSrc = r'for\s+.*project\s+set'
|
||||
regexpSrc = r'for\s+.*'+ self._command_token +r'\s+set'
|
||||
regexp = re.compile(regexpSrc, re.UNICODE)
|
||||
|
||||
match = regexp.match(line)
|
||||
|
|
|
|||
Loading…
Reference in New Issue