Coverage for lintro / utils / environment / node_info.py: 81%

16 statements  

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

1"""Node.js runtime information.""" 

2 

3from __future__ import annotations 

4 

5from dataclasses import dataclass 

6 

7 

8@dataclass 

9class NodeInfo: 

10 """Node.js runtime information.""" 

11 

12 version: str | None 

13 path: str | None 

14 npm_version: str | None 

15 bun_version: str | None 

16 pnpm_version: str | None 

17 

18 @property 

19 def section_title(self) -> str: 

20 """Return the section title for display.""" 

21 return "Node.js" 

22 

23 def to_display_rows(self) -> list[tuple[str, str]]: 

24 """Return label-value pairs for rendering.""" 

25 return [ 

26 ("Version", self.version or "(unknown)"), 

27 ("Path", self.path or "(unknown)"), 

28 ("npm", self.npm_version or "(not found)"), 

29 ("bun", self.bun_version or "(not installed)"), 

30 ("pnpm", self.pnpm_version or "(not installed)"), 

31 ] 

32 

33 def is_available(self) -> bool: 

34 """Return whether this section has data to display.""" 

35 return self.version is not None or self.path is not None