@@ -1188,6 +1188,82 @@ def test_no_site_url_no_canonical(self, tmp_path: Path):
11881188 assert "canonical" not in content
11891189
11901190
1191+ # ---------------------------------------------------------------------------
1192+ # site-url adjustment for versioned builds
1193+ # ---------------------------------------------------------------------------
1194+
1195+
1196+ class TestSiteUrlVersionAdjustment :
1197+ def test_non_latest_adjusts_site_url (self , tmp_path : Path ):
1198+ """Non-latest versions get site-url with /v/<tag>/ appended."""
1199+ from great_docs ._versioned_build import _rewrite_quarto_yml_for_version
1200+
1201+ dest = tmp_path / "v02"
1202+ dest .mkdir ()
1203+ (dest / "_quarto.yml" ).write_text (
1204+ "project:\n type: website\n output-dir: _site\n "
1205+ "format:\n html: {}\n website:\n title: Test\n "
1206+ " site-url: 'http://myserver:3838/data-team/mypkg/'\n " ,
1207+ encoding = "utf-8" ,
1208+ )
1209+ entry = _make_entry ("0.2" )
1210+ _rewrite_quarto_yml_for_version (
1211+ dest , entry , "0.3" , site_url = "http://myserver:3838/data-team/mypkg/"
1212+ )
1213+
1214+ from yaml12 import read_yaml
1215+
1216+ with open (dest / "_quarto.yml" ) as f :
1217+ result = read_yaml (f )
1218+
1219+ assert result ["website" ]["site-url" ] == "http://myserver:3838/data-team/mypkg/v/0.2/"
1220+
1221+ def test_latest_keeps_site_url_unchanged (self , tmp_path : Path ):
1222+ """Latest version keeps the original site-url as-is."""
1223+ from great_docs ._versioned_build import _rewrite_quarto_yml_for_version
1224+
1225+ dest = tmp_path / "root"
1226+ dest .mkdir ()
1227+ (dest / "_quarto.yml" ).write_text (
1228+ "project:\n type: website\n output-dir: _site\n "
1229+ "format:\n html: {}\n website:\n title: Test\n "
1230+ " site-url: 'http://myserver:3838/data-team/mypkg/'\n " ,
1231+ encoding = "utf-8" ,
1232+ )
1233+ entry = _make_entry ("0.3" , latest = True )
1234+ _rewrite_quarto_yml_for_version (
1235+ dest , entry , "0.3" , site_url = "http://myserver:3838/data-team/mypkg/"
1236+ )
1237+
1238+ from yaml12 import read_yaml
1239+
1240+ with open (dest / "_quarto.yml" ) as f :
1241+ result = read_yaml (f )
1242+
1243+ assert result ["website" ]["site-url" ] == "http://myserver:3838/data-team/mypkg/"
1244+
1245+ def test_no_site_url_in_config_no_adjustment (self , tmp_path : Path ):
1246+ """When site-url is not in _quarto.yml, nothing is injected."""
1247+ from great_docs ._versioned_build import _rewrite_quarto_yml_for_version
1248+
1249+ dest = tmp_path / "v02"
1250+ dest .mkdir ()
1251+ (dest / "_quarto.yml" ).write_text (
1252+ "project:\n type: website\n output-dir: _site\n "
1253+ "format:\n html: {}\n website:\n title: Test\n " ,
1254+ encoding = "utf-8" ,
1255+ )
1256+ entry = _make_entry ("0.2" )
1257+ _rewrite_quarto_yml_for_version (dest , entry , "0.3" )
1258+
1259+ from yaml12 import read_yaml
1260+
1261+ with open (dest / "_quarto.yml" ) as f :
1262+ result = read_yaml (f )
1263+
1264+ assert "site-url" not in result .get ("website" , {})
1265+
1266+
11911267# ---------------------------------------------------------------------------
11921268# Snapshot cache path
11931269# ---------------------------------------------------------------------------
0 commit comments