55"""
66from __future__ import annotations
77
8+ import os
89import shutil
910import subprocess
1011import sys
1112import zipfile
13+ from importlib .metadata import version
1214from pathlib import Path
1315
1416import pytest
@@ -100,8 +102,38 @@ def test_required_deps_present(self):
100102class TestVersionFlag :
101103 """PKG-06: --version flag prints version."""
102104
105+ def test_module_version_matches_package_metadata (self ):
106+ """__version__ stays in sync with installed package metadata."""
107+ import mcp_server_python_docs
108+
109+ assert mcp_server_python_docs .__version__ == version ("mcp-server-python-docs" )
110+
111+ def test_source_tree_import_without_installed_metadata (self , tmp_path : Path ):
112+ """Source-tree import falls back to pyproject.toml when metadata is absent."""
113+ env = os .environ .copy ()
114+ env ["PYTHONPATH" ] = str (PROJECT_ROOT / "src" )
115+ result = subprocess .run (
116+ [
117+ sys .executable ,
118+ "-S" ,
119+ "-c" ,
120+ "import mcp_server_python_docs; print(mcp_server_python_docs.__version__)" ,
121+ ],
122+ capture_output = True ,
123+ text = True ,
124+ timeout = 10 ,
125+ env = env ,
126+ cwd = str (tmp_path ),
127+ )
128+ assert result .returncode == 0 , (
129+ f"Source-tree import failed.\n "
130+ f"stdout: { result .stdout !r} \n "
131+ f"stderr: { result .stderr !r} "
132+ )
133+ assert result .stdout .strip () == version ("mcp-server-python-docs" )
134+
103135 def test_version_flag_output (self ):
104- """--version prints 0.1.0 ."""
136+ """--version prints the installed package metadata version ."""
105137 result = subprocess .run (
106138 [sys .executable , "-m" , "mcp_server_python_docs" , "--version" ],
107139 capture_output = True ,
@@ -110,8 +142,9 @@ def test_version_flag_output(self):
110142 )
111143 # Version output goes to stderr due to stdio hygiene
112144 combined = result .stdout + result .stderr
113- assert "0.1.0" in combined , (
114- f"Expected '0.1.0' in output.\n "
145+ expected = version ("mcp-server-python-docs" )
146+ assert expected in combined , (
147+ f"Expected { expected !r} in output.\n "
115148 f"stdout: { result .stdout !r} \n "
116149 f"stderr: { result .stderr !r} "
117150 )
@@ -140,7 +173,7 @@ def test_module_runnable(self):
140173 )
141174 assert result .returncode == 0
142175 combined = result .stdout + result .stderr
143- assert "0.1.0" in combined
176+ assert version ( "mcp-server-python-docs" ) in combined
144177
145178 def test_entry_point_module_exists (self ):
146179 """The entry-point module is importable."""
0 commit comments