vuln.py 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. """
  2. Some legacy tests against previous bugs.
  3. FIXME: this should probably be integrated into ../../../tests/test_regression.py
  4. """
  5. import subprocess
  6. import sys
  7. from pathlib import Path
  8. # Import helper function to compare graphs from tests/regressions_tests
  9. sys.path.insert(0, str(Path(__file__).resolve().parent.parent))
  10. from regression_test_helpers import ( # pylint: disable=import-error,wrong-import-position
  11. compare_graphs,
  12. )
  13. vulnfiles = ["nullderefrebuildlist"]
  14. output_types = [("xdot", "xdot:xdot:core")]
  15. def generate_vuln_graph(vulnfile, output_type):
  16. """
  17. Generate a graph from the given file in the given output format.
  18. """
  19. if not Path("output").exists():
  20. Path("output").mkdir(parents=True)
  21. output_file = Path("output") / f"{vulnfile}.{output_type[0]}"
  22. input_file = Path("input") / f"{vulnfile}.dot"
  23. try:
  24. subprocess.check_call(
  25. ["dot", f"-T{output_type[1]}", "-o", output_file, input_file]
  26. )
  27. except subprocess.CalledProcessError:
  28. print(f"An error occurred while generating: {output_file}")
  29. sys.exit(1)
  30. failures = 0
  31. for v in vulnfiles:
  32. for o in output_types:
  33. generate_vuln_graph(v, o)
  34. if not compare_graphs(v, o[0]):
  35. failures += 1
  36. print("")
  37. print('Results for "vuln" regression test:')
  38. print(f" Number of tests: {len(vulnfiles) * len(output_types)}")
  39. print(f" Number of failures: {failures}")
  40. if not failures == 0:
  41. sys.exit(1)