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,37 @@ 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 ):
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+ )
127+ assert result .returncode == 0 , (
128+ f"Source-tree import failed.\n "
129+ f"stdout: { result .stdout !r} \n "
130+ f"stderr: { result .stderr !r} "
131+ )
132+ assert result .stdout .strip () == version ("mcp-server-python-docs" )
133+
103134 def test_version_flag_output (self ):
104- """--version prints 0.1.0 ."""
135+ """--version prints the installed package metadata version ."""
105136 result = subprocess .run (
106137 [sys .executable , "-m" , "mcp_server_python_docs" , "--version" ],
107138 capture_output = True ,
@@ -110,8 +141,9 @@ def test_version_flag_output(self):
110141 )
111142 # Version output goes to stderr due to stdio hygiene
112143 combined = result .stdout + result .stderr
113- assert "0.1.0" in combined , (
114- f"Expected '0.1.0' in output.\n "
144+ expected = version ("mcp-server-python-docs" )
145+ assert expected in combined , (
146+ f"Expected { expected !r} in output.\n "
115147 f"stdout: { result .stdout !r} \n "
116148 f"stderr: { result .stderr !r} "
117149 )
@@ -140,7 +172,7 @@ def test_module_runnable(self):
140172 )
141173 assert result .returncode == 0
142174 combined = result .stdout + result .stderr
143- assert "0.1.0" in combined
175+ assert version ( "mcp-server-python-docs" ) in combined
144176
145177 def test_entry_point_module_exists (self ):
146178 """The entry-point module is importable."""
0 commit comments