diff options
Diffstat (limited to 'tests/do_line_diff.py')
-rwxr-xr-x | tests/do_line_diff.py | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/tests/do_line_diff.py b/tests/do_line_diff.py new file mode 100755 index 000000000..6db65a133 --- /dev/null +++ b/tests/do_line_diff.py @@ -0,0 +1,46 @@ +#!/usr/bin/env python + +""" +do_line_diff.py - Interactively runs all tests, and on any test where line_diff.py +showed an output, lets the user check the output and replace the test file with the output +file if they think it's safe to do so (in the sense that the test is actually passing). This +script was first used when enhancing the ssl protocol to not immediately stop detection upon +only detecting a client certificate. When server certificates were added, the this script +was helpful in checking which lines of which tests had appended server certificate info +to the line. +""" + +import os +import sys +import time +import subprocess + +program_base_args = ["../example/ndpiReader", "-p", "../example/protos.txt", "-q", "-i"] +line_diff_base_args = ["./line_diff.py"] +temp_output = "/tmp/reader.out" +result_folder = "result/" +pcap_folder = "pcap/" +pcap_file_list = os.listdir(pcap_folder) + +def find_pcap(result_file): + for pcap_file in pcap_file_list: + if pcap_file == result_file[:-4]: + return pcap_file + +for result_file in os.listdir(result_folder): + pcap_file = find_pcap(result_file) + program_args = program_base_args + [pcap_folder + pcap_file, "-w", temp_output, "-v", "1"] + program_output = subprocess.call(program_args) + line_diff_args = line_diff_base_args + [result_folder + result_file, temp_output] + line_diff_output = subprocess.check_output(line_diff_args, universal_newlines=True) + if len(line_diff_output) > 0: + print("File output " + result_file + " had line diff output. Here it is:") + print(line_diff_output) + replace = "" + while replace.lower() != 'y' and replace.lower() != 'n': + replace = input("Would you like to replace the file? ('y' or 'n') ") + if replace == 'y': + subprocess.check_output(["cp", temp_output, result_folder + result_file]) + print("") + elif replace == 'n': + break
\ No newline at end of file |