From 6513ccdb004066fd3727e8c22fda60982cde38f9 Mon Sep 17 00:00:00 2001 From: nexxo Date: Mon, 3 Aug 2026 20:39:14 +0200 Subject: [PATCH] Behebt Zaehlfehler: gestartete Instanzen wurden doppelt gezaehlt MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit $started++ stand an zwei Stellen: nach der Uebersprungsgruendung und nach dem Dispatch. Im echten Lauf wurde jede Instanz zweimal gezaehlt. Entfernt die redundante Zaehlung nach dem Dispatch und ergaenzt zwei Tests, die die Zahlenwerte in der Abschlusszusammenfassung pruefen — diese Tests haetten den Fehler gefangen. Co-Authored-By: Claude Opus 5 --- .../Commands/ConfigureInstanceMail.php | 1 - .../ConfigureInstanceMailCommandTest.php | 30 +++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/app/Console/Commands/ConfigureInstanceMail.php b/app/Console/Commands/ConfigureInstanceMail.php index e7c42aa..1438653 100644 --- a/app/Console/Commands/ConfigureInstanceMail.php +++ b/app/Console/Commands/ConfigureInstanceMail.php @@ -76,7 +76,6 @@ class ConfigureInstanceMail extends Command AdvanceRunJob::dispatch($run->uuid); $this->info("{$instance->uuid}: Lauf {$run->id} gestartet"); - $started++; } foreach ($skipped as $reason => $count) { diff --git a/tests/Feature/Console/ConfigureInstanceMailCommandTest.php b/tests/Feature/Console/ConfigureInstanceMailCommandTest.php index fb85552..56fb86c 100644 --- a/tests/Feature/Console/ConfigureInstanceMailCommandTest.php +++ b/tests/Feature/Console/ConfigureInstanceMailCommandTest.php @@ -104,3 +104,33 @@ it('ueberspringt eine Instanz mit laufendem Lauf und sagt es', function () { // Kein neuer Lauf angelegt expect(ProvisioningRun::where('pipeline', 'instance-mail')->count())->toBe(0); }); + +it('zaehlt die Laeufe korrekt in der Abschlusszusammenfassung', function () { + aktiveInstanzMitHost(); + aktiveInstanzMitHost(['vmid' => 102]); + aktiveInstanzMitHost(['vmid' => 103]); + + // Eine Instanz ohne Host (wird uebergangen) + Instance::factory()->create(['status' => 'active', 'host_id' => null, 'vmid' => 104]); + + $this->artisan('clupilot:configure-instance-mail') + // Genau 3 Laeufe, nicht 6 wegen Doppelzaehlung + ->expectsOutputToContain('3 Lauf/Läufe gestartet') + ->expectsOutputToContain('übersprungen (kein Host): 1') + ->assertSuccessful(); +}); + +it('zaehlt unter --dry-run richtig', function () { + aktiveInstanzMitHost(); + aktiveInstanzMitHost(['vmid' => 102]); + + // Eine Instanz ohne VMID (wird uebergangen) + $host = Host::factory()->active()->create(['datacenter' => 'fsn', 'node' => 'pve']); + Instance::factory()->create(['status' => 'active', 'host_id' => $host->id, 'vmid' => null]); + + $this->artisan('clupilot:configure-instance-mail', ['--dry-run' => true]) + // Genau 2 Instanzen im Probelauf + ->expectsOutputToContain('Probelauf: 2 Instanz(en) bekämen') + ->expectsOutputToContain('übersprungen (keine VMID): 1') + ->assertSuccessful(); +});