diff --git a/docs/source/business_ch16_seasonality_baselines.rst b/docs/source/business_ch16_seasonality_baselines.rst index eb6994c..77c3c39 100644 --- a/docs/source/business_ch16_seasonality_baselines.rst +++ b/docs/source/business_ch16_seasonality_baselines.rst @@ -1,3 +1,6 @@ +.. |trackd_run| replace:: d16 +.. include:: _includes/track_d_run_strip.rst + Track D — Chapter 16 ==================== diff --git a/docs/source/business_ch17_revenue_forecasting_segmentation_drivers.rst b/docs/source/business_ch17_revenue_forecasting_segmentation_drivers.rst index f44799b..5502adf 100644 --- a/docs/source/business_ch17_revenue_forecasting_segmentation_drivers.rst +++ b/docs/source/business_ch17_revenue_forecasting_segmentation_drivers.rst @@ -1,3 +1,6 @@ +.. |trackd_run| replace:: d17 +.. include:: _includes/track_d_run_strip.rst + Track D — Chapter 17 ==================== diff --git a/docs/source/business_ch18_expense_forecasting_fixed_variable_step_payroll.rst b/docs/source/business_ch18_expense_forecasting_fixed_variable_step_payroll.rst index 8a5a60d..19d74a2 100644 --- a/docs/source/business_ch18_expense_forecasting_fixed_variable_step_payroll.rst +++ b/docs/source/business_ch18_expense_forecasting_fixed_variable_step_payroll.rst @@ -1,3 +1,6 @@ +.. |trackd_run| replace:: d18 +.. include:: _includes/track_d_run_strip.rst + Track D — Chapter 18 ==================== diff --git a/docs/source/business_ch19_cash_flow_forecasting_direct_method_13_week.rst b/docs/source/business_ch19_cash_flow_forecasting_direct_method_13_week.rst index 05b1958..84a2a28 100644 --- a/docs/source/business_ch19_cash_flow_forecasting_direct_method_13_week.rst +++ b/docs/source/business_ch19_cash_flow_forecasting_direct_method_13_week.rst @@ -1,3 +1,6 @@ +.. |trackd_run| replace:: d19 +.. include:: _includes/track_d_run_strip.rst + Track D — Chapter 19 ==================== diff --git a/docs/source/business_ch20_integrated_forecasting_three_statements.rst b/docs/source/business_ch20_integrated_forecasting_three_statements.rst index dc375fb..e42271a 100644 --- a/docs/source/business_ch20_integrated_forecasting_three_statements.rst +++ b/docs/source/business_ch20_integrated_forecasting_three_statements.rst @@ -1,3 +1,6 @@ +.. |trackd_run| replace:: d20 +.. include:: _includes/track_d_run_strip.rst + Track D — Chapter 20 ==================== diff --git a/tests/test_workbook_track_d_runstrip_ch16_20.py b/tests/test_workbook_track_d_runstrip_ch16_20.py new file mode 100644 index 0000000..ca2996b --- /dev/null +++ b/tests/test_workbook_track_d_runstrip_ch16_20.py @@ -0,0 +1,22 @@ +from __future__ import annotations + +from pathlib import Path + + +def test_track_d_ch16_20_runstrip_present() -> None: + """Guardrail: Track D Ch16–Ch20 docs include the PyPI run-strip.""" + + docs = Path("docs/source") + + cases = { + "business_ch16_seasonality_baselines.rst": "d16", + "business_ch17_revenue_forecasting_segmentation_drivers.rst": "d17", + "business_ch18_expense_forecasting_fixed_variable_step_payroll.rst": "d18", + "business_ch19_cash_flow_forecasting_direct_method_13_week.rst": "d19", + "business_ch20_integrated_forecasting_three_statements.rst": "d20", + } + + for rel, run_id in cases.items(): + text = (docs / rel).read_text(encoding="utf-8") + assert ".. include:: _includes/track_d_run_strip.rst" in text + assert f".. |trackd_run| replace:: {run_id}" in text