Admin Panel
from amitools.vamos.lib.dos.CommandLine import CommandLine
def dos_cmdline_cmd_test():
cl = CommandLine()
# no command given
assert cl.parse_line('') == cl.COMMAND_ERROR
assert cl.parse_line('"open_quote') == cl.COMMAND_ERROR
# ok command
assert cl.parse_line('cmd') == cl.LINE_OK
assert cl.get_cmd() == 'cmd'
assert cl.get_arg_str() == '\n'
# command gets automatically unquoted
assert cl.parse_line('"a cmd"') == cl.LINE_OK
assert cl.get_cmd() == 'a cmd'
assert cl.get_arg_str() == '\n'
def dos_cmdline_args_test():
cl = CommandLine()
# some args
assert cl.parse_line('cmd some "args" and "more"') == cl.LINE_OK
assert cl.get_cmd() == 'cmd'
assert cl.get_arg_str() == 'some "args" and "more"\n'
def dos_cmdline_redir_in_test():
cl = CommandLine()
# redir in
assert cl.parse_line('cmd <in some "args" and "more"') == cl.LINE_OK
assert cl.get_cmd() == 'cmd'
assert cl.get_redir_in() == 'in'
assert cl.get_arg_str() == 'some "args" and "more"\n'
# redir in 2
assert cl.parse_line('cmd some <in "args" and "more"') == cl.LINE_OK
assert cl.get_cmd() == 'cmd'
assert cl.get_redir_in() == 'in'
assert cl.get_arg_str() == 'some "args" and "more"\n'
# redir in quoting
assert cl.parse_line('cmd <"in redir" some "args" and "more"') == cl.LINE_OK
assert cl.get_cmd() == 'cmd'
assert cl.get_redir_in() == 'in redir'
assert cl.get_arg_str() == ' some "args" and "more"\n'
# redir in quoting 2
assert cl.parse_line('cmd some <"in redir" "args" and "more"') == cl.LINE_OK
assert cl.get_cmd() == 'cmd'
assert cl.get_redir_in() == 'in redir'
assert cl.get_arg_str() == 'some "args" and "more"\n'
# redir in quoting 3
assert cl.parse_line('cmd some <"in redir""args" and "more"') == cl.LINE_OK
assert cl.get_cmd() == 'cmd'
assert cl.get_redir_in() == 'in redir'
assert cl.get_arg_str() == 'some "args" and "more"\n'
def dos_cmdline_redir_out_test():
cl = CommandLine()
# redir out
assert cl.parse_line('cmd >out some "args" and "more"') == cl.LINE_OK
assert cl.get_cmd() == 'cmd'
assert cl.get_redir_out() == 'out'
assert not cl.is_append_out()
assert cl.get_arg_str() == 'some "args" and "more"\n'
# redir out 2
assert cl.parse_line('cmd some >out "args" and "more"') == cl.LINE_OK
assert cl.get_cmd() == 'cmd'
assert cl.get_redir_out() == 'out'
assert not cl.is_append_out()
assert cl.get_arg_str() == 'some "args" and "more"\n'
# redir out quoting
assert cl.parse_line('cmd >"out redir" some "args" and "more"') == cl.LINE_OK
assert cl.get_cmd() == 'cmd'
assert cl.get_redir_out() == 'out redir'
assert not cl.is_append_out()
assert cl.get_arg_str() == ' some "args" and "more"\n'
# redir out quoting 2
assert cl.parse_line('cmd some >"out redir" "args" and "more"') == cl.LINE_OK
assert cl.get_cmd() == 'cmd'
assert cl.get_redir_out() == 'out redir'
assert not cl.is_append_out()
assert cl.get_arg_str() == 'some "args" and "more"\n'
# redir out quoting 3
assert cl.parse_line('cmd some >"out redir""args" and "more"') == cl.LINE_OK
assert cl.get_cmd() == 'cmd'
assert cl.get_redir_out() == 'out redir'
assert not cl.is_append_out()
assert cl.get_arg_str() == 'some "args" and "more"\n'
def dos_cmdline_redir_append_test():
cl = CommandLine()
# redir out
assert cl.parse_line('cmd >>out some "args" and "more"') == cl.LINE_OK
assert cl.get_cmd() == 'cmd'
assert cl.get_redir_out() == 'out'
assert cl.is_append_out()
assert cl.get_arg_str() == 'some "args" and "more"\n'
# redir out 2
assert cl.parse_line('cmd some >>out "args" and "more"') == cl.LINE_OK
assert cl.get_cmd() == 'cmd'
assert cl.get_redir_out() == 'out'
assert cl.is_append_out()
assert cl.get_arg_str() == 'some "args" and "more"\n'
# redir out quoting
assert cl.parse_line('cmd >>"out redir" some "args" and "more"') == cl.LINE_OK
assert cl.get_cmd() == 'cmd'
assert cl.get_redir_out() == 'out redir'
assert cl.is_append_out()
assert cl.get_arg_str() == ' some "args" and "more"\n'
# redir out quoting 2
assert cl.parse_line('cmd some >>"out redir" "args" and "more"') == cl.LINE_OK
assert cl.get_cmd() == 'cmd'
assert cl.get_redir_out() == 'out redir'
assert cl.is_append_out()
assert cl.get_arg_str() == 'some "args" and "more"\n'
# redir out quoting 3
assert cl.parse_line('cmd some >>"out redir""args" and "more"') == cl.LINE_OK
assert cl.get_cmd() == 'cmd'
assert cl.get_redir_out() == 'out redir'
assert cl.is_append_out()
assert cl.get_arg_str() == 'some "args" and "more"\n'