Commit 9a76caec authored by Jelte Jansen's avatar Jelte Jansen
Browse files

[1843] use re for directive matching

to work with both whitespace and case-insensitivity
parent 3de6e881
......@@ -739,13 +739,8 @@ class BindCmdInterpreter(Cmd):
of the sets as defined in command_sets.py'''
if command.command == 'file':
try:
command_file = open(command.params['filename'])
# copy them into a list for consistency with the built-in
# sets of commands
commands = []
for line in command_file:
commands.append(line)
command_file.close()
with open(command.params['filename']) as command_file:
commands = command_file.readlines()
except IOError as ioe:
print("Error: " + str(ioe))
return
......@@ -787,14 +782,14 @@ class BindCmdInterpreter(Cmd):
line = line.strip()
if verbose:
print(line)
if line.startswith('#'):
if line.startswith('#') or len(line) == 0:
continue
elif line.startswith('!'):
if line.startswith('!echo ') and len(line) > 6:
if re.match('^!echo ', line, re.I) and len(line) > 6:
print(line[6:])
elif line.startswith('!verbose on'):
elif re.match('^!verbose\s+on\s*$', line, re.I):
verbose = True
elif line.startswith('!verbose off'):
elif re.match('^!verbose\s+off$', line, re.I):
verbose = False
else:
print("Warning: ignoring unknown directive: " + line)
......
# this is a comment: commentexample1
!echo this is an echo: echoexample
!echo this is an echo: echoexample2
!verbose on
# this is a comment with verbose on: verbosecommentexample
# this is a comment with verbose on: verbosecommentexample3
!verbose off
# this is a comment with verbose off again: commentexample2
# this is a comment with verbose off again: commentexample4
# empty lines and lines with only whitespace should be ignored
# directives are case insensitive, and should handle whitespace
!ECHO echoexample5
!eChO echoexample6
!Verbose ON
# verbosecommentexample7
!verBOSE off
# commentexample8
......@@ -88,9 +88,13 @@ Feature: control with bindctl
When I send bind10 the command execute file data/commands/directives
last bindctl output should not contain Error
last bindctl output should not contain commentexample1
last bindctl output should contain echoexample
last bindctl output should contain verbosecommentexample
last bindctl output should not contain commentexample2
last bindctl output should contain echoexample2
last bindctl output should contain verbosecommentexample3
last bindctl output should not contain commentexample4
last bindctl output should contain echoexample5
last bindctl output should contain echoexample6
last bindctl output should contain verbosecommentexample7
last bindctl output should not contain commentexample8
# bad_command contains a bad command, at which point execution should stop
When I send bind10 the command execute file data/commands/bad_command
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment