fix(updater): Paket-Adresse aus Tag und Dateiname bauen, Version 1.0.2

Gitea meldet browser_download_url hinter dem TLS-Proxy mit http://, der Updater lehnte die Adresse ab
und fand kein Update. Die Adresse wird jetzt aus dem geprüften Tag und dem Dateinamen gebaut; release-check.sh
prüft genauso.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
Jan-Niclas Loosen
2026-11-04 14:50:43 +01:00
co-authored by Claude Sonnet 5.5
parent b2759fba73
commit c8648d5263
6 changed files with 44 additions and 25 deletions
+23 -6
View File
@@ -55,6 +55,28 @@ final class GiteaUpdaterTest extends TestCase
self::assertSame('', $this->log());
}
/** @dataProvider reportedAddresses */
public function testPackageAddressIsBuiltHereNotTakenFromTheAnswer(string $reported): void
{
$this->givenRelease(200, self::releaseBody('v1.0.0', self::ZIP_NAME, $reported));
$update = $this->updater()->offer(false, [], self::BASENAME);
self::assertSame(self::ZIP, $update['package']);
}
/** @return array<string, array{string}> */
public static function reportedAddresses(): array
{
return [
'http, as Gitea behind a TLS proxy reports it' => [
'http://' . GiteaUpdater::HOST . '/janniclas.loosen/WP-LIT-MCP/releases/download/v1.0.0/'
. self::ZIP_NAME,
],
'another host' => ['https://evil.example/' . self::ZIP_NAME],
];
}
public function testOtherPluginsAreLeftAlone(): void
{
Functions\expect('wp_remote_get')->never();
@@ -104,8 +126,6 @@ final class GiteaUpdaterTest extends TestCase
/** @return array<string, array{string}> */
public static function unusableReleases(): array
{
$foreign = 'https://evil.example/releases/download/v1.0.0/' . self::ZIP_NAME;
return [
'no JSON' => ['<html>'],
'tag is no version' => [self::releaseBody('latest', self::ZIP_NAME, self::ZIP)],
@@ -113,10 +133,7 @@ final class GiteaUpdaterTest extends TestCase
'tag with trailing newline' => [self::releaseBody("v1.0.0\n", self::ZIP_NAME, self::ZIP)],
'asset missing' => [self::releaseBody('v1.0.0', 'other.zip', self::ZIP)],
'release without assets' => ['{"tag_name":"v1.0.0"}'],
'package from a foreign host' => [self::releaseBody('v1.0.0', self::ZIP_NAME, $foreign)],
'package outside the release downloads' => [
self::releaseBody('v1.0.0', self::ZIP_NAME, 'https://' . GiteaUpdater::HOST . '/other/repo/x.zip'),
],
'asset of another version' => [self::releaseBody('v1.0.0', 'wp-lit-mcp-0.9.0.zip', self::ZIP)],
];
}