@@ -264,6 +264,90 @@ def test_http_get_rejects_invalid_content_length(
264264 LocalLanguageTool .from_version_name ()._get_remote_zip (io .BytesIO ())
265265
266266
267+ @pytest .mark .parametrize ("release_version" , ["6.7" , "6.8" ]) # type: ignore[untyped-decorator]
268+ def test_release_download_url_uses_new_release_base_from_6_7 (
269+ release_version : str ,
270+ monkeypatch : pytest .MonkeyPatch ,
271+ ) -> None :
272+ """
273+ Test that releases 6.7 and newer include the version in the base URL.
274+ """
275+ monkeypatch .setattr (
276+ download_lt ,
277+ "BASE_URL_NEW_RELEASES" ,
278+ "https://example.test/releases/LanguageTool-{version}/" ,
279+ )
280+
281+ local_language_tool = LocalLanguageTool .from_version_name (release_version )
282+
283+ expected_url = (
284+ f"https://example.test/releases/LanguageTool-{ release_version } /"
285+ f"LanguageTool-{ release_version } .zip"
286+ )
287+
288+ assert local_language_tool .download_url == expected_url
289+
290+
291+ def test_release_download_url_keeps_main_release_base_for_6_6 (
292+ monkeypatch : pytest .MonkeyPatch ,
293+ ) -> None :
294+ """
295+ Test that release 6.6 keeps using the versioned filename.
296+ """
297+ monkeypatch .setattr (
298+ download_lt ,
299+ "BASE_URL_RELEASE" ,
300+ "https://example.test/download/" ,
301+ )
302+
303+ local_language_tool = LocalLanguageTool .from_version_name ("6.6" )
304+
305+ assert (
306+ local_language_tool .download_url
307+ == "https://example.test/download/LanguageTool-6.6.zip"
308+ )
309+
310+
311+ def test_release_download_url_keeps_main_release_base_before_6_7 (
312+ monkeypatch : pytest .MonkeyPatch ,
313+ ) -> None :
314+ """
315+ Test that earlier 6.x releases keep using the versioned filename.
316+ """
317+ monkeypatch .setattr (
318+ download_lt ,
319+ "BASE_URL_RELEASE" ,
320+ "https://example.test/download/" ,
321+ )
322+
323+ local_language_tool = LocalLanguageTool .from_version_name ("6.5" )
324+
325+ assert (
326+ local_language_tool .download_url
327+ == "https://example.test/download/LanguageTool-6.5.zip"
328+ )
329+
330+
331+ def test_release_download_url_keeps_archive_base_before_6_0 (
332+ monkeypatch : pytest .MonkeyPatch ,
333+ ) -> None :
334+ """
335+ Test that older supported releases keep using the archive base URL.
336+ """
337+ monkeypatch .setattr (
338+ download_lt ,
339+ "BASE_URL_ARCHIVE" ,
340+ "https://example.test/archive/" ,
341+ )
342+
343+ local_language_tool = LocalLanguageTool .from_version_name ("5.9" )
344+
345+ assert (
346+ local_language_tool .download_url
347+ == "https://example.test/archive/LanguageTool-5.9.zip"
348+ )
349+
350+
267351def test_http_get_verifies_configured_sha256 (
268352 monkeypatch : pytest .MonkeyPatch ,
269353) -> None :
0 commit comments