fix(tools): make stubgen debt links resolve from docs/dev
stubgen emitted TechnicalDebt links as repo-relative paths, but TechnicalDebt.md lives in docs/dev and the conventions checker resolves links relative to it, so pasted lines failed CI. The derived default path now carries a ../../ prefix; an explicit --td-path is used as given. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01V9UU71SP1UKGR51Sowbgmq
This commit is contained in:
parent
b44eeb967a
commit
efbf36f637
|
|
@ -57,6 +57,8 @@ if(BUILD_TESTING)
|
|||
${CMAKE_CURRENT_SOURCE_DIR}/tools/tests/test_test_registration.py)
|
||||
add_test(NAME check_skips COMMAND ${Python3_EXECUTABLE}
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/tools/tests/test_check_skips.py)
|
||||
add_test(NAME stubgen COMMAND ${Python3_EXECUTABLE}
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/tools/tests/test_stubgen.py)
|
||||
add_test(NAME hardware_oracle COMMAND ${Python3_EXECUTABLE}
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/tools/hw-oracle/test_hw_oracle.py)
|
||||
add_test(NAME pr_overlap_exports COMMAND ${Python3_EXECUTABLE}
|
||||
|
|
|
|||
|
|
@ -104,7 +104,7 @@ def _default_td_path(module):
|
|||
|
||||
def td_target(module, td_path, td_lib):
|
||||
if td_path is None:
|
||||
td_path = _default_td_path(module)
|
||||
td_path = "../../" + _default_td_path(module)
|
||||
if td_lib is None:
|
||||
td_lib = module
|
||||
return (td_path, td_lib)
|
||||
|
|
@ -173,7 +173,7 @@ def main(argv=None):
|
|||
ap.add_argument("--nids", required=True, help="path to missing-NIDs file, one 11-char NID per line")
|
||||
ap.add_argument("--db", required=False, default=None, help="path to NID name CSV, NID name per line like aerolib.csv")
|
||||
ap.add_argument("--out", required=False, default=None, help="output file for code, default stdout")
|
||||
ap.add_argument("--td-path", required=False, default=None, help="override file path used inside TechnicalDebt lines, default derived from module")
|
||||
ap.add_argument("--td-path", required=False, default=None, help="override file path used inside TechnicalDebt lines, default derived from module, relative to docs/dev")
|
||||
ap.add_argument("--td-lib", required=False, default=None, help="override lib label used inside TechnicalDebt lines, default derived from module")
|
||||
ap.add_argument("--td-out", required=False, default=None, help="output file for TechnicalDebt lines, default stdout")
|
||||
ap.add_argument("--td-only", action="store_true", help="print only TechnicalDebt lines, no code")
|
||||
|
|
|
|||
|
|
@ -0,0 +1,29 @@
|
|||
from pathlib import Path
|
||||
import sys
|
||||
import unittest
|
||||
|
||||
sys.path.insert(0, str(Path(__file__).resolve().parents[1]))
|
||||
import check_conventions
|
||||
import stubgen
|
||||
|
||||
|
||||
class StubgenTests(unittest.TestCase):
|
||||
def test_default_debt_link_resolves_from_docs_dev(self):
|
||||
_, td = stubgen.generate("libkernel", ["AC1FtjqMCL0"], {})
|
||||
found = check_conventions.links("docs/dev/TechnicalDebt.md", td.strip())
|
||||
self.assertTrue(found)
|
||||
for item in found:
|
||||
self.assertEqual(item[1], "core/libs/prx/libkernel/Unimplemented.cpp")
|
||||
|
||||
def test_explicit_td_path_is_verbatim(self):
|
||||
_, td = stubgen.generate("libkernel", ["AC1FtjqMCL0"], {}, td_path="x/y.cpp")
|
||||
self.assertIn("(x/y.cpp)", td)
|
||||
|
||||
def test_code_still_generated(self):
|
||||
code, _ = stubgen.generate("libkernel", ["AC1FtjqMCL0"], {})
|
||||
self.assertIn("APS5_VABI", code)
|
||||
self.assertIn("NotImplemented_nid_no_patch", code)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Loading…
Reference in New Issue