From 7d04cdfeb5797a2325ae7dabfb29110f903d6a37 Mon Sep 17 00:00:00 2001 From: Michael Timbert Date: Tue, 24 Feb 2026 13:42:55 +0100 Subject: [PATCH 01/16] Add artifact build to the CI --- .github/workflows/ci.yml | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2ae3719..2c9d263 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -110,3 +110,33 @@ jobs: - name: Test run: | prove -lv t + + build-artifact: + needs: run-tests + runs-on: ubuntu-22.04 + steps: + - uses: actions/checkout@v4 + + - name: apt install + run: sudo apt-get install -y build-essential git libmodule-install-perl + + - name: build + run: perl Makefile.PL && make dist + + - name: Get short SHA + id: short_sha + run: echo "short_sha=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT + + - name: Get Zonemaster-CLI version + id: version + run: | + result=`grep "use version; our $VERSION" lib/Zonemaster/CLI.pm` + result+='printf $VERSION;' + VERSION=`perl -e "$result"` + echo "version=$VERSION" >> $GITHUB_OUTPUT + + - name: upload artifact + uses: actions/upload-artifact@v4 + with: + name: Zonemaster-CLI-${{ steps.version.outputs.version }}-${{ steps.short_sha.outputs.short_sha }} + path: Zonemaster-CLI-${{ steps.version.outputs.version }}.tar.gz From 966b7a2f94ff49178077b1da92f3c590822bf225 Mon Sep 17 00:00:00 2001 From: Michael Timbert Date: Tue, 3 Mar 2026 08:21:08 +0100 Subject: [PATCH 02/16] fixing missing .mo files --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2c9d263..1ad75b7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -121,7 +121,7 @@ jobs: run: sudo apt-get install -y build-essential git libmodule-install-perl - name: build - run: perl Makefile.PL && make dist + run: perl Makefile.PL && make all dist - name: Get short SHA id: short_sha From 65ae19b0ddd75aeee436144daf2f67400888c238 Mon Sep 17 00:00:00 2001 From: Michael Timbert Date: Tue, 3 Mar 2026 10:11:28 +0100 Subject: [PATCH 03/16] add gettext dependency --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1ad75b7..8e0ee5f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -118,7 +118,7 @@ jobs: - uses: actions/checkout@v4 - name: apt install - run: sudo apt-get install -y build-essential git libmodule-install-perl + run: sudo apt-get install -y build-essential git libmodule-install-perl gettext - name: build run: perl Makefile.PL && make all dist From 85dd44bdc12c34635bccbd05d5255d580ab3eb2f Mon Sep 17 00:00:00 2001 From: Michael Timbert Date: Tue, 3 Mar 2026 13:49:07 +0100 Subject: [PATCH 04/16] fix sha commit --- .github/workflows/ci.yml | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8e0ee5f..95ab218 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -125,7 +125,12 @@ jobs: - name: Get short SHA id: short_sha - run: echo "short_sha=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT + run: | + if [ "${{ github.event_name }}" == "pull_request" ]; then + echo "SHORT_SHA=$(echo ${{ github.event.pull_request.head.sha }} | cut -c1-7)" >> $GITHUB_ENV + else + echo "SHORT_SHA=$(echo ${{ github.sha }} | cut -c1-7)" >> $GITHUB_ENV + fi - name: Get Zonemaster-CLI version id: version @@ -138,5 +143,5 @@ jobs: - name: upload artifact uses: actions/upload-artifact@v4 with: - name: Zonemaster-CLI-${{ steps.version.outputs.version }}-${{ steps.short_sha.outputs.short_sha }} + name: Zonemaster-CLI-${{ steps.version.outputs.version }}-${{ env.SHORT_SHA }} path: Zonemaster-CLI-${{ steps.version.outputs.version }}.tar.gz From fbee0eb1b19a433695e273e0afd5ff900bfb3902 Mon Sep 17 00:00:00 2001 From: Marc van der Wal Date: Wed, 8 Apr 2026 11:50:33 +0200 Subject: [PATCH 05/16] CI: Target Perl version 5.42 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The latest version of Perl is now 5.42. Let’s bump the topmost version in the list of Perls tested against in CI to that. --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2ae3719..fecf2cd 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,7 +21,7 @@ jobs: - develop # - latest perl: - - '5.40' + - '5.42' - '5.36' - '5.26' runner: From a70ef2bd14c8c865ccbfe7fe96921a8beee6f986 Mon Sep 17 00:00:00 2001 From: Michael Timbert Date: Mon, 8 Jun 2026 10:24:05 +0200 Subject: [PATCH 06/16] fix for Net-IDN-Encode --- Dockerfile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Dockerfile b/Dockerfile index 8c5768c..740b831 100644 --- a/Dockerfile +++ b/Dockerfile @@ -9,6 +9,9 @@ RUN apk add --no-cache \ perl-test-deep \ perl-test-differences \ perl-try-tiny \ + build-base perl-test-nowarnings perl-dev \ + && cpanm --notest --no-wget --from https://cpan.metacpan.org/ \ + https://cpan.metacpan.org/authors/id/E/ET/ETHER/Net-IDN-Encode-2.501-TRIAL.tar.gz \ && cpanm --notest --no-wget --from https://cpan.metacpan.org/ \ JSON::Validator From feee1ca1a3a15042b67e7f718decfc3d08c6d33f Mon Sep 17 00:00:00 2001 From: Marc van der Wal Date: Tue, 9 Jun 2026 14:31:02 +0200 Subject: [PATCH 07/16] Update data file format Changes to the cache file format in Zonemaster::Engine require regeneration of some data files in use by the test suite in Zonemaster-CLI. There also was a small bug in the logic in t/usage.wrapper.pl: it tried to restore data from the saved cache file even when we are recording it again, which makes little sense. It also prevented the test suite from correctly rerecording the data files because it bailed out before it had the chance to get to save the files. --- t/usage.fake-data.data | Bin 127296 -> 42175 bytes t/usage.fake-root.data | Bin 51 -> 93 bytes t/usage.normal.data | 27 +-------------------------- t/usage.wrapper.pl | 6 +++--- 4 files changed, 4 insertions(+), 29 deletions(-) diff --git a/t/usage.fake-data.data b/t/usage.fake-data.data index 7c22e2432a1b3ad6ae79d330b3f28500d55b2336..bec09fec4a0b6673bfecc5d7f725337ac246df83 100644 GIT binary patch literal 42175 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 literal 127296 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 T7+-N8Fp6_=#si4eW)Z!9PLrWt)13e=> j!^WmS1`uEblR$!vf$^JPYF>I~UMkE8w=xSoLp?(PJgptL literal 51 zcmc~RHqeffective->set( q{no_network}, 1 ); -} -if ( $opt_datafile ) { - Zonemaster::Engine::Nameserver->restore( $opt_datafile ); + if ( $opt_datafile ) { + Zonemaster::Engine::Nameserver->restore( $opt_datafile ); + } } our $EXIT_STATUS; From 5c89b77b2dad06d8d636e5f3ee7952a6dea177f8 Mon Sep 17 00:00:00 2001 From: MichaelTimbert <110017095+MichaelTimbert@users.noreply.github.com> Date: Mon, 8 Jun 2026 14:45:06 +0200 Subject: [PATCH 08/16] Update Dockerfile MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Mattias PĂ€ivĂ€rinta --- Dockerfile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 740b831..3269e18 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,15 +1,17 @@ FROM zonemaster/engine:local AS build RUN apk add --no-cache \ + build-base \ make \ perl-app-cpanminus \ + perl-dev \ perl-json-xs \ perl-lwp-protocol-https \ perl-mojolicious \ perl-test-deep \ perl-test-differences \ + perl-test-nowarnings \ perl-try-tiny \ - build-base perl-test-nowarnings perl-dev \ && cpanm --notest --no-wget --from https://cpan.metacpan.org/ \ https://cpan.metacpan.org/authors/id/E/ET/ETHER/Net-IDN-Encode-2.501-TRIAL.tar.gz \ && cpanm --notest --no-wget --from https://cpan.metacpan.org/ \ From 78b0641c6810e35fbc1501be92dfaf90194d23b9 Mon Sep 17 00:00:00 2001 From: Mats Dufberg Date: Mon, 2 Mar 2026 22:59:16 +0000 Subject: [PATCH 09/16] Updates Swedish translation --- share/sv.po | 75 +++++++++++++++++++++++------------------------------ 1 file changed, 32 insertions(+), 43 deletions(-) diff --git a/share/sv.po b/share/sv.po index df3dd1f..4afbb31 100644 --- a/share/sv.po +++ b/share/sv.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: 0.0.5\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-12-12 10:17+0100\n" -"PO-Revision-Date: 2023-05-31 08:42+0000\n" +"POT-Creation-Date: 2026-03-02 22:57+0000\n" +"PO-Revision-Date: 2026-03-02 22:56+0000\n" "Last-Translator: mattias.paivarinta@iis.se\n" "Language-Team: Zonemaster Team\n" "Language: sv\n" @@ -28,7 +28,7 @@ msgstr "" "– finns den installerad pĂ„ det hĂ€r systemet?" msgid "Warning: deprecated --encoding, simply remove it from your usage." -msgstr "" +msgstr "Varning: förĂ„ldrat \"--encoding\", sluta att anvĂ€nda." msgid "Error: --json-stream and --no-json cannot be used together." msgstr "Fel: --json-stream och --no-json kan inte anvĂ€ndas tillsammans." @@ -54,39 +54,15 @@ msgstr "Laddar profil frĂ„n {path}." #, perl-brace-format msgid "Error: invalid value for --sourceaddr4: {reason}" -msgstr "" +msgstr "Fel: otillĂ„tet vĂ€rde för \"--sourceaddr4\": {reason}" #, perl-brace-format msgid "Error: invalid value for --sourceaddr6: {reason}" -msgstr "" +msgstr "Fel: otillĂ„tet vĂ€rde för \\\"--sourceaddr6\\\": {reason}" #, perl-brace-format -msgid "" -"Error: Invalid input '{cli_arg}' in --test. There must be at most one slash " -"('/') character." -msgstr "" - -#, perl-brace-format -msgid "" -"Error: Unrecognized test case '{testcase}' in --test. Use --list-tests for a " -"list of valid choices." -msgstr "" - -#, perl-brace-format -msgid "" -"Error: Unrecognized test module '{module}' in --test. Use --list-tests for a " -"list of valid choices." -msgstr "" - -#, perl-brace-format -msgid "Error: Invalid input '{cli_arg}' in --test." -msgstr "" - -#, perl-brace-format -msgid "" -"Notice: Engine does not have test case '{testcase}' enabled in the profile. " -"Forcing..." -msgstr "" +msgid "Error: unrecognized term '{term}' in --test." +msgstr "Fel: okĂ€nd term \"{term}\" för \"--test\"." #, perl-brace-format msgid "Failed to recognize stop level '{level}'." @@ -111,7 +87,7 @@ msgstr "Namnet pĂ„ en domĂ€n att testa mĂ„ste anges." #, perl-brace-format msgid "Error loading hints file: {message}" -msgstr "" +msgstr "Fel nĂ€r \"hint-filen\" skulle laddas: \"{message}\"." msgid "Seconds" msgstr "Sekund" @@ -131,18 +107,29 @@ msgstr "Meddelande" msgid "Looks OK." msgstr "Ser OK ut." -msgid "" -"\n" -"\n" -" Level\tNumber of log entries" -msgstr "" -"\n" -"\n" -" NivĂ„ \tAntal loggmeddelanden" +msgid "Number of log entries" +msgstr "Antal loggmeddelanden" + +msgid "Message tag" +msgstr "Meddelandetagg" + +msgid "Count" +msgstr "Antal" + +msgid "Name servers" +msgstr "Namnservrar" + +msgid "Child zone" +msgstr "Dotterzon" + +msgid "Parent zone" +msgstr "Moderzon" + +msgid "Other" +msgstr "Övrigt" -#, perl-format -msgid "%8s\t%5d entries.\n" -msgstr "%8s\t%5d meddelanden.\n" +msgid "Grand total" +msgstr "Totalt" msgid "--ns must be a name or a name/ip pair." msgstr "--ns mĂ„ste vara ett namn eller namn/ip i det formatet.\"" @@ -151,6 +138,8 @@ msgid "" "--ds ds data must be in the form \"keytag,algorithm,type,digest\". E.g. " "space is not permitted anywhere in the string." msgstr "" +"Data till \"--ds\" mĂ„ste ges i en strĂ€ng med formatet " +"\"keytag,algoritm,typ,digest\", dĂ€r t.ex. mellanslag Ă€r inte tillĂ„tet." msgid "DEBUG" msgstr "DEBUG" From d8e8bb4cfc90274492d29e1506272b8ef83a7065 Mon Sep 17 00:00:00 2001 From: Mats Dufberg Date: Tue, 9 Jun 2026 13:08:05 +0000 Subject: [PATCH 10/16] Reformated sv.po --- share/sv.po | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/share/sv.po b/share/sv.po index 4afbb31..7d962c4 100644 --- a/share/sv.po +++ b/share/sv.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: 0.0.5\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-02 22:57+0000\n" +"POT-Creation-Date: 2026-06-09 13:07+0000\n" "PO-Revision-Date: 2026-03-02 22:56+0000\n" "Last-Translator: mattias.paivarinta@iis.se\n" "Language-Team: Zonemaster Team\n" @@ -138,8 +138,8 @@ msgid "" "--ds ds data must be in the form \"keytag,algorithm,type,digest\". E.g. " "space is not permitted anywhere in the string." msgstr "" -"Data till \"--ds\" mĂ„ste ges i en strĂ€ng med formatet " -"\"keytag,algoritm,typ,digest\", dĂ€r t.ex. mellanslag Ă€r inte tillĂ„tet." +"Data till \"--ds\" mĂ„ste ges i en strĂ€ng med formatet \"keytag,algoritm,typ," +"digest\", dĂ€r t.ex. mellanslag Ă€r inte tillĂ„tet." msgid "DEBUG" msgstr "DEBUG" From 48f3481cb7dbefd66ccf41c6eea4f980e690441f Mon Sep 17 00:00:00 2001 From: Mats Dufberg Date: Wed, 10 Jun 2026 16:09:30 +0000 Subject: [PATCH 11/16] Editorial updates --- share/sv.po | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/share/sv.po b/share/sv.po index 7d962c4..63e1ac9 100644 --- a/share/sv.po +++ b/share/sv.po @@ -58,7 +58,7 @@ msgstr "Fel: otillĂ„tet vĂ€rde för \"--sourceaddr4\": {reason}" #, perl-brace-format msgid "Error: invalid value for --sourceaddr6: {reason}" -msgstr "Fel: otillĂ„tet vĂ€rde för \\\"--sourceaddr6\\\": {reason}" +msgstr "Fel: otillĂ„tet vĂ€rde för \"--sourceaddr6\": {reason}" #, perl-brace-format msgid "Error: unrecognized term '{term}' in --test." @@ -66,7 +66,7 @@ msgstr "Fel: okĂ€nd term \"{term}\" för \"--test\"." #, perl-brace-format msgid "Failed to recognize stop level '{level}'." -msgstr "KĂ€nde inte igen avslutsnivĂ„n '{level}'." +msgstr "KĂ€nde inte igen avslutsnivĂ„n \"{level}\"." msgid "" "--level must be one of CRITICAL, ERROR, WARNING, NOTICE, INFO, DEBUG, DEBUG2 " @@ -79,8 +79,8 @@ msgid "" "Only one domain can be given for testing. Did you forget to prepend an " "option with '--