Files

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()