Coverage for tests/test_dependenpy.py: 100.00%

24 statements  

« prev     ^ index     » next       coverage.py v7.10.5, created at 2025-08-24 18:36 +0200

1"""Tests for main features.""" 

2 

3from __future__ import annotations 

4 

5import pytest 

6 

7from dependenpy._internal.cli import main 

8from dependenpy._internal.dsm import DSM 

9 

10 

11@pytest.mark.parametrize( 

12 "args", 

13 [ 

14 ["-l", "dependenpy"], 

15 ["-m", "dependenpy"], 

16 ["-t", "dependenpy"], 

17 ["dependenpy", "-d100"], 

18 ["dependenpy,internal,dependenpy"], 

19 ], 

20) 

21def test_main_ok(args: list[str]) -> None: 

22 """Main test method. 

23 

24 Arguments: 

25 args: Command line arguments. 

26 """ 

27 assert main(args) == 0 

28 

29 

30def test_main_not_ok() -> None: 

31 """Main test method.""" 

32 assert main(["do not exist"]) == 1 

33 

34 

35def test_tree() -> None: 

36 """Test the built tree.""" 

37 dsm = DSM("internal") 

38 items = [ 

39 "internal", 

40 "internal.subpackage_a", 

41 "internal.subpackage_a.subpackage_1", 

42 "internal.subpackage_a.subpackage_1.__init__", 

43 "internal.subpackage_a.subpackage_1.module_i", 

44 "internal.subpackage_a.__init__", 

45 "internal.subpackage_a.module_1", 

46 "internal.__init__", 

47 "internal.module_a", 

48 ] 

49 for item in items: 

50 assert dsm.get(item) 

51 

52 

53def test_inner_imports() -> None: 

54 """Test inner imports.""" 

55 dsm = DSM("internal") 

56 module_i = dsm["internal.subpackage_a.subpackage_1.module_i"] 

57 assert len(module_i.dependencies) == 4 # type: ignore[union-attr] 

58 assert module_i.cardinal(to=dsm["internal"]) == 3 

59 

60 

61def test_delayed_build() -> None: 

62 """Test delayed build.""" 

63 dsm = DSM("internal", build_tree=False) 

64 dsm.build_tree() 

65 dsm.build_dependencies() 

66 assert len(dsm.submodules) == 6