40 lines
1.5 KiB
Python
40 lines
1.5 KiB
Python
"""Check frozen-backend collection and guard against accidental cross-builds."""
|
|
|
|
import contextlib
|
|
import io
|
|
import unittest
|
|
from pathlib import Path
|
|
from unittest.mock import patch
|
|
|
|
from scripts.build_exe import build_arguments, main
|
|
|
|
|
|
class ExeBuildTests(unittest.TestCase):
|
|
def test_collects_windows_backend_and_keeps_output_in_project(self):
|
|
root = Path("fixture-project").resolve()
|
|
args = build_arguments(root)
|
|
self.assertIn("--onedir", args)
|
|
self.assertIn("--windowed", args)
|
|
self.assertEqual(args[args.index("--collect-submodules") + 1], "bleak.backends.winrt")
|
|
self.assertEqual(args[args.index("--collect-all") + 1], "winrt")
|
|
self.assertEqual(args[args.index("--distpath") + 1], str(root / "dist"))
|
|
self.assertEqual(args[-1], str(root / "controller" / "__main__.py"))
|
|
|
|
def test_onefile_and_debug_console_are_explicit(self):
|
|
args = build_arguments(Path("."), onefile=True, console=True)
|
|
self.assertIn("--onefile", args)
|
|
self.assertIn("--console", args)
|
|
self.assertNotIn("--onedir", args)
|
|
self.assertNotIn("--windowed", args)
|
|
|
|
def test_linux_interpreter_does_not_start_a_build(self):
|
|
with (
|
|
patch("scripts.build_exe.sys.platform", "linux"),
|
|
patch("scripts.build_exe.subprocess.run") as run,
|
|
contextlib.redirect_stderr(io.StringIO()),
|
|
):
|
|
with self.assertRaises(SystemExit) as result:
|
|
main([])
|
|
self.assertEqual(result.exception.code, 2)
|
|
run.assert_not_called()
|