Coverage for tests / scripts / test_verify_manifest_tools.py: 94%

18 statements  

« prev     ^ index     » next       coverage.py v7.13.0, created at 2026-04-03 18:53 +0000

1"""Tests for scripts/ci/verify-manifest-tools.py.""" 

2 

3from __future__ import annotations 

4 

5import importlib.util 

6from pathlib import Path 

7from types import ModuleType 

8 

9from assertpy import assert_that 

10 

11 

12def _load_verify_manifest_tools_module() -> ModuleType: 

13 """Load verify-manifest-tools.py as a module for unit testing.""" 

14 script_path = ( 

15 Path(__file__).resolve().parents[2] 

16 / "scripts" 

17 / "ci" 

18 / "verify-manifest-tools.py" 

19 ) 

20 spec = importlib.util.spec_from_file_location( 

21 "verify_manifest_tools", 

22 script_path, 

23 ) 

24 if spec is None or spec.loader is None: 

25 raise RuntimeError("Failed to load verify-manifest-tools.py module") 

26 

27 module = importlib.util.module_from_spec(spec) 

28 spec.loader.exec_module(module) 

29 return module 

30 

31 

32def test_tool_command_uses_install_bin_when_provided() -> None: 

33 """verify-manifest-tools should honor install.bin for executable name.""" 

34 module = _load_verify_manifest_tools_module() 

35 

36 # Access private function for testing - module loaded dynamically via importlib 

37 tool_command_fn = module._tool_command # noqa: SLF001 

38 cmd = tool_command_fn( 

39 "astro_check", 

40 {"type": "npm", "package": "astro", "bin": "astro"}, 

41 ) 

42 

43 assert_that(cmd).is_equal_to(["astro", "--version"])