From 8eb173b44e6c9fe093e58428dc6dd8d812b80318 Mon Sep 17 00:00:00 2001 From: Henrique Date: Wed, 27 Nov 2019 09:21:30 -0500 Subject: Fixed small bugs on command_history and tests --- test/mitmproxy/addons/test_command_history.py | 320 +++++++++++++------------- 1 file changed, 165 insertions(+), 155 deletions(-) (limited to 'test') diff --git a/test/mitmproxy/addons/test_command_history.py b/test/mitmproxy/addons/test_command_history.py index e38b4061..df20fba7 100644 --- a/test/mitmproxy/addons/test_command_history.py +++ b/test/mitmproxy/addons/test_command_history.py @@ -26,200 +26,210 @@ class TestCommandHistory: history.add_command('') assert history.history == ['cmd1', 'cmd2'] - def test_get_next_and_prev(self, tctx): - history = command_history.CommandHistory(5) - history.configure([]) + def test_get_next_and_prev(self, tmpdir): + ch = command_history.CommandHistory() - history.add_command('cmd1') + with taddons.context(ch) as tctx: + tctx.options.confdir = str(tmpdir) - assert history.get_next() == '' - assert history.get_next() == '' - assert history.get_prev() == 'cmd1' - assert history.get_prev() == 'cmd1' - assert history.get_prev() == 'cmd1' - assert history.get_next() == '' - assert history.get_next() == '' + ch.add_command('cmd1') + + assert ch.get_next() == '' + assert ch.get_next() == '' + assert ch.get_prev() == 'cmd1' + assert ch.get_prev() == 'cmd1' + assert ch.get_prev() == 'cmd1' + assert ch.get_next() == '' + assert ch.get_next() == '' + + ch.add_command('cmd2') + + assert ch.get_next() == '' + assert ch.get_next() == '' + assert ch.get_prev() == 'cmd2' + assert ch.get_prev() == 'cmd1' + assert ch.get_prev() == 'cmd1' + assert ch.get_next() == 'cmd2' + assert ch.get_next() == '' + assert ch.get_next() == '' + + ch.add_command('cmd3') + + assert ch.get_next() == '' + assert ch.get_next() == '' + assert ch.get_prev() == 'cmd3' + assert ch.get_prev() == 'cmd2' + assert ch.get_prev() == 'cmd1' + assert ch.get_prev() == 'cmd1' + assert ch.get_next() == 'cmd2' + assert ch.get_next() == 'cmd3' + assert ch.get_next() == '' + assert ch.get_next() == '' + assert ch.get_prev() == 'cmd3' + assert ch.get_prev() == 'cmd2' + + ch.add_command('cmd4') + + assert ch.get_prev() == 'cmd4' + assert ch.get_prev() == 'cmd3' + assert ch.get_prev() == 'cmd2' + assert ch.get_prev() == 'cmd1' + assert ch.get_prev() == 'cmd1' + assert ch.get_next() == 'cmd2' + assert ch.get_next() == 'cmd3' + assert ch.get_next() == 'cmd4' + assert ch.get_next() == '' + assert ch.get_next() == '' + + ch.add_command('cmd5') + ch.add_command('cmd6') + + assert ch.get_next() == '' + assert ch.get_prev() == 'cmd6' + assert ch.get_prev() == 'cmd5' + assert ch.get_prev() == 'cmd4' + assert ch.get_next() == 'cmd5' + assert ch.get_prev() == 'cmd4' + assert ch.get_prev() == 'cmd3' + assert ch.get_prev() == 'cmd2' + assert ch.get_next() == 'cmd3' + assert ch.get_prev() == 'cmd2' + assert ch.get_prev() == 'cmd1' + assert ch.get_prev() == 'cmd1' + assert ch.get_prev() == 'cmd1' + assert ch.get_next() == 'cmd2' + assert ch.get_next() == 'cmd3' + assert ch.get_next() == 'cmd4' + assert ch.get_next() == 'cmd5' + assert ch.get_next() == 'cmd6' + assert ch.get_next() == '' + assert ch.get_next() == '' + + ch.clear_history() + + def test_clear(self, tmpdir): + ch = command_history.CommandHistory() - history.add_command('cmd2') + with taddons.context(ch) as tctx: + tctx.options.confdir = str(tmpdir) + ch.add_command('cmd1') + ch.add_command('cmd2') + ch.clear_history() - assert history.get_next() == '' - assert history.get_next() == '' - assert history.get_prev() == 'cmd2' - assert history.get_prev() == 'cmd1' - assert history.get_prev() == 'cmd1' - assert history.get_next() == 'cmd2' - assert history.get_next() == '' - assert history.get_next() == '' - - history.add_command('cmd3') - - assert history.get_next() == '' - assert history.get_next() == '' - assert history.get_prev() == 'cmd3' - assert history.get_prev() == 'cmd2' - assert history.get_prev() == 'cmd1' - assert history.get_prev() == 'cmd1' - assert history.get_next() == 'cmd2' - assert history.get_next() == 'cmd3' - assert history.get_next() == '' - assert history.get_next() == '' - assert history.get_prev() == 'cmd3' - assert history.get_prev() == 'cmd2' - - history.add_command('cmd4') - - assert history.get_prev() == 'cmd4' - assert history.get_prev() == 'cmd3' - assert history.get_prev() == 'cmd2' - assert history.get_prev() == 'cmd1' - assert history.get_prev() == 'cmd1' - assert history.get_next() == 'cmd2' - assert history.get_next() == 'cmd3' - assert history.get_next() == 'cmd4' - assert history.get_next() == '' - assert history.get_next() == '' - - history.add_command('cmd5') - history.add_command('cmd6') - - assert history.get_next() == '' - assert history.get_prev() == 'cmd6' - assert history.get_prev() == 'cmd5' - assert history.get_prev() == 'cmd4' - assert history.get_next() == 'cmd5' - assert history.get_prev() == 'cmd4' - assert history.get_prev() == 'cmd3' - assert history.get_prev() == 'cmd2' - assert history.get_next() == 'cmd3' - assert history.get_prev() == 'cmd2' - assert history.get_prev() == 'cmd2' - assert history.get_next() == 'cmd3' - assert history.get_next() == 'cmd4' - assert history.get_next() == 'cmd5' - assert history.get_next() == 'cmd6' - assert history.get_next() == '' - assert history.get_next() == '' - - history.cleanup() - - def test_clear(self, tctx): - history = command_history.CommandHistory(3) - history.configure([]) + saved_commands = ch.get_history() + assert saved_commands == [] - history.add_command('cmd1') - history.add_command('cmd2') - history.clear_history() + assert ch.get_next() == '' + assert ch.get_next() == '' + assert ch.get_prev() == '' + assert ch.get_prev() == '' - saved_commands = [cmd for cmd in history.history] - assert saved_commands == [] + ch.clear_history() - assert history.get_next() == '' - assert history.get_next() == '' - assert history.get_prev() == '' - assert history.get_prev() == '' + def test_filter(self, tmpdir): + ch = command_history.CommandHistory() - history.cleanup() + with taddons.context(ch) as tctx: + tctx.options.confdir = str(tmpdir) - def test_filter(self, tctx): - history = command_history.CommandHistory(3) - history.configure([]) + ch.add_command('cmd1') + ch.add_command('cmd2') + ch.add_command('abc') + ch.set_filter('c') + + assert ch.get_next() == 'c' + assert ch.get_next() == 'c' + assert ch.get_prev() == 'cmd2' + assert ch.get_prev() == 'cmd1' + assert ch.get_prev() == 'cmd1' + assert ch.get_next() == 'cmd2' + assert ch.get_next() == 'c' + assert ch.get_next() == 'c' + + ch.set_filter('') + + assert ch.get_next() == '' + assert ch.get_next() == '' + assert ch.get_prev() == 'abc' + assert ch.get_prev() == 'cmd2' + assert ch.get_prev() == 'cmd1' + assert ch.get_prev() == 'cmd1' + assert ch.get_next() == 'cmd2' + assert ch.get_next() == 'abc' + assert ch.get_next() == '' + assert ch.get_next() == '' + + ch.clear_history() + + def test_multiple_instances(self, tmpdir): + ch = command_history.CommandHistory() + with taddons.context(ch) as tctx: + tctx.options.confdir = str(tmpdir) - history.add_command('cmd1') - history.add_command('cmd2') - history.add_command('abc') - history.set_filter('c') - - assert history.get_next() == '' - assert history.get_next() == '' - assert history.get_prev() == 'c' - assert history.get_prev() == 'cmd2' - assert history.get_prev() == 'cmd1' - assert history.get_prev() == 'cmd1' - assert history.get_next() == 'cmd2' - assert history.get_next() == 'c' - assert history.get_next() == '' - assert history.get_next() == '' - - history.set_filter('') - - assert history.get_next() == '' - assert history.get_next() == '' - assert history.get_prev() == 'abc' - assert history.get_prev() == 'cmd2' - assert history.get_prev() == 'cmd1' - assert history.get_prev() == 'cmd1' - assert history.get_next() == 'cmd2' - assert history.get_next() == 'abc' - assert history.get_next() == '' - assert history.get_next() == '' - - history.cleanup() - - def test_multiple_instances(self, tctx): instances = [ - command_history.CommandHistory(10), - command_history.CommandHistory(10), - command_history.CommandHistory(10) + command_history.CommandHistory(), + command_history.CommandHistory(), + command_history.CommandHistory() ] for i in instances: - i.configure([]) - saved_commands = [cmd for cmd in i.history] + i.configure('command_history') + saved_commands = i.get_history() assert saved_commands == [] instances[0].add_command('cmd1') - saved_commands = [cmd for cmd in instances[0].history] + saved_commands = instances[0].get_history() assert saved_commands == ['cmd1'] # These instances haven't yet added a new command, so they haven't # yet reloaded their commands from the command file. # This is expected, because if the user is filtering a command on # another window, we don't want to interfere with that - saved_commands = [cmd for cmd in instances[1].history] + saved_commands = instances[1].get_history() assert saved_commands == [] - saved_commands = [cmd for cmd in instances[2].history] + saved_commands = instances[2].get_history() assert saved_commands == [] # Since the second instanced added a new command, its list of # saved commands has been updated to have the commands from the # first instance + its own commands instances[1].add_command('cmd2') - saved_commands = [cmd for cmd in instances[1].history] - assert saved_commands == ['cmd1', 'cmd2'] + saved_commands = instances[1].get_history() + assert saved_commands == ['cmd2'] - saved_commands = [cmd for cmd in instances[0].history] + saved_commands = instances[0].get_history() assert saved_commands == ['cmd1'] # Third instance is still empty as it has not yet ran any command - saved_commands = [cmd for cmd in instances[2].history] + saved_commands = instances[2].get_history() assert saved_commands == [] instances[2].add_command('cmd3') - saved_commands = [cmd for cmd in instances[2].history] - assert saved_commands == ['cmd1', 'cmd2', 'cmd3'] + saved_commands = instances[2].get_history() + assert saved_commands == ['cmd3'] instances[0].add_command('cmd4') - saved_commands = [cmd for cmd in instances[0].history] - assert saved_commands == ['cmd1', 'cmd2', 'cmd3', 'cmd4'] + saved_commands = instances[0].get_history() + assert saved_commands == ['cmd1', 'cmd4'] - instances.append(command_history.CommandHistory(10)) - instances[3].configure([]) - saved_commands = [cmd for cmd in instances[3].history] + instances.append(command_history.CommandHistory()) + instances[3].configure('command_history') + saved_commands = instances[3].get_history() assert saved_commands == ['cmd1', 'cmd2', 'cmd3', 'cmd4'] instances[0].add_command('cmd_before_close') - instances.pop(0) + instances.pop(0).done() - saved_commands = [cmd for cmd in instances[0].history] - assert saved_commands == ['cmd1', 'cmd2'] + saved_commands = instances[0].get_history() + assert saved_commands == ['cmd2'] instances[0].add_command('new_cmd') - saved_commands = [cmd for cmd in instances[0].history] - assert saved_commands == ['cmd1', 'cmd2', 'cmd3', 'cmd4', 'cmd_before_close', 'new_cmd'] + saved_commands = instances[0].get_history() + assert saved_commands == ['cmd2', 'new_cmd'] - instances.pop(0) - instances.pop(0) - instances.pop(0) + instances.pop(0).done() + instances.pop(0).done() + instances.pop(0).done() _path = os.path.join(tctx.options.confdir, 'command_history') lines = open(_path, 'r').readlines() @@ -227,14 +237,14 @@ class TestCommandHistory: assert saved_commands == ['cmd1', 'cmd2', 'cmd3', 'cmd4', 'cmd_before_close', 'new_cmd'] instances = [ - command_history.CommandHistory(10), - command_history.CommandHistory(10) + command_history.CommandHistory(), + command_history.CommandHistory() ] for i in instances: - i.configure([]) + i.configure('command_history') i.clear_history() - saved_commands = [cmd for cmd in i.history] + saved_commands = i.get_history() assert saved_commands == [] instances[0].add_command('cmd1') @@ -243,11 +253,11 @@ class TestCommandHistory: instances[1].add_command('cmd4') instances[1].add_command('cmd5') - saved_commands = [cmd for cmd in instances[1].history] - assert saved_commands == ['cmd1', 'cmd2', 'cmd3', 'cmd4', 'cmd5'] + saved_commands = instances[1].get_history() + assert saved_commands == ['cmd3', 'cmd4', 'cmd5'] - instances.pop() - instances.pop() + instances.pop().done() + instances.pop().done() _path = os.path.join(tctx.options.confdir, 'command_history') lines = open(_path, 'r').readlines() -- cgit v1.2.3