45 lines
1.7 KiB
Python
45 lines
1.7 KiB
Python
import io
|
|
import sys
|
|
import time
|
|
import unittest
|
|
from pathlib import Path
|
|
|
|
from librenet_scanner.privileged_helper import run_supervised
|
|
|
|
ROOT = Path(__file__).resolve().parents[1]
|
|
|
|
|
|
class Cancellation0419Tests(unittest.TestCase):
|
|
def test_privileged_helper_stop_protocol_reaps_root_child(self):
|
|
start = time.monotonic()
|
|
code = run_supervised(
|
|
[sys.executable, "-c", "import time; time.sleep(30)"],
|
|
input_stream=io.StringIO("STOP\n"),
|
|
)
|
|
self.assertEqual(code, 130)
|
|
self.assertLess(time.monotonic() - start, 3.0)
|
|
|
|
def test_scan_processes_have_a_dedicated_process_group_and_stop_channel(self):
|
|
source = (ROOT / "src/librenet_scanner/scanner.py").read_text(encoding="utf-8")
|
|
self.assertIn("start_new_session=True", source)
|
|
self.assertIn('proc.stdin.write("STOP\\n")', source)
|
|
self.assertIn("self._kill_process_group(proc, signal.SIGTERM)", source)
|
|
|
|
def test_stop_button_reports_real_shutdown(self):
|
|
source = (ROOT / "src/librenet_scanner/ui.py").read_text(encoding="utf-8")
|
|
self.assertIn('self.activity_label.setText("Arrêt du scan en cours…")', source)
|
|
self.assertIn("self.stop_btn.setEnabled(False)", source)
|
|
|
|
|
|
class EngineStatus0419Tests(unittest.TestCase):
|
|
def test_discovery_and_port_engines_are_named_separately(self):
|
|
source = (ROOT / "src/librenet_scanner/scanner.py").read_text(encoding="utf-8")
|
|
self.assertIn("découverte rapide Nmap/ARP", source)
|
|
self.assertIn("ports Naabu SYN (Admin)", source)
|
|
self.assertIn("ports Nmap SYN (Admin)", source)
|
|
self.assertIn("REPLI Nmap", source)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|