From 1f21ab23130f1a979f9d7d0a01b22acdd75a8f20 Mon Sep 17 00:00:00 2001 From: Kang-min Liu Date: Fri, 7 Feb 2025 12:03:04 +0800 Subject: [PATCH 01/25] make a trivial test case out of `perlbrew intsall 5.40.0`. --- test-e2e/lib-tests.zsh | 17 +++++++++++++++++ test-e2e/run.zsh | 1 + 2 files changed, 18 insertions(+) diff --git a/test-e2e/lib-tests.zsh b/test-e2e/lib-tests.zsh index 18598f97..8dfd5f26 100644 --- a/test-e2e/lib-tests.zsh +++ b/test-e2e/lib-tests.zsh @@ -27,3 +27,20 @@ test-perlbrew-install-skaji-relocatable-perl() { echo 'OK - perlbrew install skaji-relocatable-perl-5.40.0.1' } + +test-perlbrew-install-perl-5-40() { + echo 'TEST - perlbrew install perl-5.40.0' + + local PERLBREW=~/perl5/perlbrew/bin/perlbrew + + assert-file-exists $PERLBREW + assert-dir-missing ~/perl5/perlbrew/perls/perl-5.40.0 + + $PERLBREW install perl-5.40.0 + + assert-dir-exists ~/perl5/perlbrew/perls/perl-5.40.0 + assert-file-exists ~/perl5/perlbrew/perls/perl-5.40.0/bin/perl + assert-ok ~/perl5/perlbrew/perls/perl-5.40.0/bin/perl -v + + echo 'OK - perlbrew install perl-5.40.0' +} diff --git a/test-e2e/run.zsh b/test-e2e/run.zsh index 6c16304e..23e1c193 100755 --- a/test-e2e/run.zsh +++ b/test-e2e/run.zsh @@ -16,3 +16,4 @@ fi test-perlbrew-self-install test-perlbrew-install-skaji-relocatable-perl +test-perlbrew-install-perl-5-40 From 6a7a071634f4ebcea4dbf3e7b4caeb7ef3402ca3 Mon Sep 17 00:00:00 2001 From: Kang-min Liu Date: Fri, 7 Feb 2025 12:18:59 +0800 Subject: [PATCH 02/25] run e2e tests under a PERLBREW_ROOT and PERLBREW_HOME So that they can be run locally without clobbing with existing perlbrew env. --- test-e2e/lib-tests.zsh | 32 ++++++++++++++++++++++++++++++-- test-e2e/run.zsh | 17 +++++++++++------ 2 files changed, 41 insertions(+), 8 deletions(-) diff --git a/test-e2e/lib-tests.zsh b/test-e2e/lib-tests.zsh index 8dfd5f26..f5442815 100644 --- a/test-e2e/lib-tests.zsh +++ b/test-e2e/lib-tests.zsh @@ -1,12 +1,27 @@ +PERLBREW_E2E=/tmp/e2e +export PERLBREW_ROOT=$PERLBREW_E2E/root +export PERLBREW_HOME=$PERLBREW_E2E/home + +e2e-begin() { + mkdir $PERLBREW_E2E + mkdir $PERLBREW_ROOT + mkdir $PERLBREW_HOME + echo 'E2E BEGIN -- preapre $PERLBREW_E2E' +} + +e2e-end() { + rm -rf $PERLBREW_E2E + echo 'E2E END -- cleanup $PERLBREW_E2E' +} test-perlbrew-self-install() { echo 'TEST - perlbrew self-install' - assert-file-missing ~/perl5/perlbrew/bin/perlbrew + assert-file-missing $PERLBREW_ROOT/bin/perlbrew assert-ok ./perlbrew self-install - assert-file-exists ~/perl5/perlbrew/bin/perlbrew + assert-file-exists $PERLBREW_ROOT/bin/perlbrew } test-perlbrew-install-skaji-relocatable-perl() { @@ -44,3 +59,16 @@ test-perlbrew-install-perl-5-40() { echo 'OK - perlbrew install perl-5.40.0' } + +test-perlbrew-uninstall-perl-5-40() { + echo 'TEST - perlbrew uninstall perl-5.40.0' + + assert-dir-exists ~/perl5/perlbrew/perls/perl-5.40.0 + assert-file-exists ~/perl5/perlbrew/perls/perl-5.40.0/bin/perl + + $PERLBREW uninstall perl-5.40.0 + + assert-dir-missing ~/perl5/perlbrew/perls/perl-5.40.0 + + echo 'OK - perlbrew uninstall perl-5.40.0' +} diff --git a/test-e2e/run.zsh b/test-e2e/run.zsh index 23e1c193..86d88eed 100755 --- a/test-e2e/run.zsh +++ b/test-e2e/run.zsh @@ -6,14 +6,19 @@ source $e2eDir/lib-tests.zsh echo "# uname -a" uname -a - local testName=$1 +e2e-begin + +TRAPEXIT() { + e2e-end +} + if [[ ! -z $testName ]]; then $testName - exit 0 +else + test-perlbrew-self-install + test-perlbrew-install-skaji-relocatable-perl + test-perlbrew-install-perl-5-40 + test-perlbrew-uninstall-perl-5-40 fi - -test-perlbrew-self-install -test-perlbrew-install-skaji-relocatable-perl -test-perlbrew-install-perl-5-40 From 62e0372971e7eb899c60f1a17a7c8d712a0adaf9 Mon Sep 17 00:00:00 2001 From: Kang-min Liu Date: Fri, 7 Feb 2025 22:59:52 +0800 Subject: [PATCH 03/25] run e2e workflow when test-e2e/*.zsh are changed. --- .github/workflows/e2e.yml | 1 + .github/workflows/e2e.ys | 1 + 2 files changed, 2 insertions(+) diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index 6e17b046..39c62645 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -7,6 +7,7 @@ name: E2E paths: - perlbrew - .github/workflows/e2e.yml + - test-e2e/*.zsh jobs: debian: runs-on: ubuntu-latest diff --git a/.github/workflows/e2e.ys b/.github/workflows/e2e.ys index ba390856..c40c8594 100644 --- a/.github/workflows/e2e.ys +++ b/.github/workflows/e2e.ys @@ -29,6 +29,7 @@ on: paths: - perlbrew - .github/workflows/e2e.yml + - test-e2e/*.zsh jobs: init =: load("src/init.yaml") From 8f8cd48682d8418650a364cc08aa725a5e42493c Mon Sep 17 00:00:00 2001 From: Kang-min Liu Date: Fri, 7 Feb 2025 23:03:54 +0800 Subject: [PATCH 04/25] test install/uninstall commands in e2e. --- test-e2e/lib-tests.zsh | 56 ++++++++++++++++++------------------------ test-e2e/run.zsh | 9 ++++--- 2 files changed, 30 insertions(+), 35 deletions(-) diff --git a/test-e2e/lib-tests.zsh b/test-e2e/lib-tests.zsh index f5442815..4f16b6b2 100644 --- a/test-e2e/lib-tests.zsh +++ b/test-e2e/lib-tests.zsh @@ -2,6 +2,8 @@ PERLBREW_E2E=/tmp/e2e export PERLBREW_ROOT=$PERLBREW_E2E/root export PERLBREW_HOME=$PERLBREW_E2E/home +PERLBREW=$PERLBREW_ROOT/bin/perlbrew + e2e-begin() { mkdir $PERLBREW_E2E mkdir $PERLBREW_ROOT @@ -22,53 +24,43 @@ test-perlbrew-self-install() { assert-ok ./perlbrew self-install assert-file-exists $PERLBREW_ROOT/bin/perlbrew + + $PERLBREW_ROOT/bin/perlbrew install-patchperl + assert-file-exists $PERLBREW_ROOT/bin/patchperl } -test-perlbrew-install-skaji-relocatable-perl() { - echo 'TEST - perlbrew install skaji-relocatable-perl' +test-perlbrew-install() { + local installation=$1 + shift - local PERLBREW=~/perl5/perlbrew/bin/perlbrew + echo "TEST - perlbrew install $installation" assert-file-exists $PERLBREW - assert-dir-missing ~/perl5/perlbrew/perls/skaji-relocatable-perl-5.40.0.1 + assert-dir-missing $PERLBREW_ROOT/perls/$installation - $PERLBREW install skaji-relocatable-perl-5.40.0.1 + $PERLBREW install $installation - assert-dir-exists ~/perl5/perlbrew/perls/skaji-relocatable-perl-5.40.0.1 - assert-file-exists ~/perl5/perlbrew/perls/skaji-relocatable-perl-5.40.0.1/bin/perl + assert-dir-exists $PERLBREW_ROOT/perls/$installation + assert-file-exists $PERLBREW_ROOT/perls/$installation/bin/perl - assert-ok ~/perl5/perlbrew/perls/skaji-relocatable-perl-5.40.0.1/bin/perl -v + assert-ok $PERLBREW_ROOT/perls/$installation/bin/perl -v - echo 'OK - perlbrew install skaji-relocatable-perl-5.40.0.1' + echo "OK - perlbrew install $installation" } -test-perlbrew-install-perl-5-40() { - echo 'TEST - perlbrew install perl-5.40.0' - - local PERLBREW=~/perl5/perlbrew/bin/perlbrew - - assert-file-exists $PERLBREW - assert-dir-missing ~/perl5/perlbrew/perls/perl-5.40.0 - - $PERLBREW install perl-5.40.0 - - assert-dir-exists ~/perl5/perlbrew/perls/perl-5.40.0 - assert-file-exists ~/perl5/perlbrew/perls/perl-5.40.0/bin/perl - assert-ok ~/perl5/perlbrew/perls/perl-5.40.0/bin/perl -v - - echo 'OK - perlbrew install perl-5.40.0' -} +test-perlbrew-uninstall() { + local installation=$1 + shift -test-perlbrew-uninstall-perl-5-40() { - echo 'TEST - perlbrew uninstall perl-5.40.0' + echo "TEST - perlbrew uninstall $installation" - assert-dir-exists ~/perl5/perlbrew/perls/perl-5.40.0 - assert-file-exists ~/perl5/perlbrew/perls/perl-5.40.0/bin/perl + assert-dir-exists $PERLBREW_ROOT/perls/$installation + assert-file-exists $PERLBREW_ROOT/perls/$installation/bin/perl - $PERLBREW uninstall perl-5.40.0 + $PERLBREW uninstall --yes $installation - assert-dir-missing ~/perl5/perlbrew/perls/perl-5.40.0 + assert-dir-missing $PERLBREW_ROOT/perls/$installation - echo 'OK - perlbrew uninstall perl-5.40.0' + echo "OK - perlbrew uninstall $installation" } diff --git a/test-e2e/run.zsh b/test-e2e/run.zsh index 86d88eed..f6b88c58 100755 --- a/test-e2e/run.zsh +++ b/test-e2e/run.zsh @@ -18,7 +18,10 @@ if [[ ! -z $testName ]]; then $testName else test-perlbrew-self-install - test-perlbrew-install-skaji-relocatable-perl - test-perlbrew-install-perl-5-40 - test-perlbrew-uninstall-perl-5-40 + + test-perlbrew-install skaji-relocatable-perl-5.40.1.0 + test-perlbrew-uninstall skaji-relocatable-perl-5.40.1.0 + + test-perlbrew-install perl-5.40.1 + test-perlbrew-uninstall perl-5.40.1 fi From 78b53220f41cb853d14534db91eee20e534a49e2 Mon Sep 17 00:00:00 2001 From: Kang-min Liu Date: Sat, 8 Feb 2025 00:12:54 +0800 Subject: [PATCH 05/25] load perlbrew init during e2e test. --- test-e2e/lib-tests.zsh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test-e2e/lib-tests.zsh b/test-e2e/lib-tests.zsh index 4f16b6b2..b21868b0 100644 --- a/test-e2e/lib-tests.zsh +++ b/test-e2e/lib-tests.zsh @@ -27,6 +27,8 @@ test-perlbrew-self-install() { $PERLBREW_ROOT/bin/perlbrew install-patchperl assert-file-exists $PERLBREW_ROOT/bin/patchperl + + eval "$($PERLBREW init-in-bash)" } test-perlbrew-install() { From 0b82e932f45e5be788aa3c7199e9033e4501f145 Mon Sep 17 00:00:00 2001 From: Kang-min Liu Date: Sat, 8 Feb 2025 00:15:13 +0800 Subject: [PATCH 06/25] verbose by default. Otherwise it's rather cumbersome to check error logs. --- test-e2e/lib-tests.zsh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test-e2e/lib-tests.zsh b/test-e2e/lib-tests.zsh index b21868b0..3f77d28f 100644 --- a/test-e2e/lib-tests.zsh +++ b/test-e2e/lib-tests.zsh @@ -41,7 +41,7 @@ test-perlbrew-install() { assert-dir-missing $PERLBREW_ROOT/perls/$installation - $PERLBREW install $installation + $PERLBREW install --verbose $installation assert-dir-exists $PERLBREW_ROOT/perls/$installation assert-file-exists $PERLBREW_ROOT/perls/$installation/bin/perl @@ -60,7 +60,7 @@ test-perlbrew-uninstall() { assert-dir-exists $PERLBREW_ROOT/perls/$installation assert-file-exists $PERLBREW_ROOT/perls/$installation/bin/perl - $PERLBREW uninstall --yes $installation + $PERLBREW uninstall --verbose --yes $installation assert-dir-missing $PERLBREW_ROOT/perls/$installation From 8f356a4571f3ff135c631e98f1a39e3acb7f8a68 Mon Sep 17 00:00:00 2001 From: Kang-min Liu Date: Sat, 8 Feb 2025 00:18:30 +0800 Subject: [PATCH 07/25] build tools are required. --- .github/workflows/src/init.yaml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/src/init.yaml b/.github/workflows/src/init.yaml index b71b36a6..1bead955 100644 --- a/.github/workflows/src/init.yaml +++ b/.github/workflows/src/init.yaml @@ -1,10 +1,11 @@ --- with-dnf: &with-dnf | - dnf install -y zsh perl + dnf install -y zsh perl make clang + dnf groupinstall -y "Development Tools" "Development Libraries" with-apt: &with-apt | apt-get update -y - apt-get install -y zsh perl curl + apt-get install -y zsh perl curl build-essentials fedora: *with-dnf almalinux: *with-dnf From 55ea9f01764ef6e6106cf5569641916bb4e44d69 Mon Sep 17 00:00:00 2001 From: Kang-min Liu Date: Sat, 8 Feb 2025 00:21:10 +0800 Subject: [PATCH 08/25] build tools are required --- .github/workflows/e2e.yml | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index 39c62645..3c1ef98a 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -16,7 +16,7 @@ jobs: steps: - run: | apt-get update -y - apt-get install -y zsh perl curl + apt-get install -y zsh perl curl build-essentials - uses: actions/checkout@v4 - run: zsh ./test-e2e/run.zsh ubuntu: @@ -26,7 +26,7 @@ jobs: steps: - run: | apt-get update -y - apt-get install -y zsh perl curl + apt-get install -y zsh perl curl build-essentials - uses: actions/checkout@v4 - run: zsh ./test-e2e/run.zsh fedora: @@ -35,7 +35,8 @@ jobs: image: fedora:latest steps: - run: | - dnf install -y zsh perl + dnf install -y zsh perl make clang + dnf groupinstall -y "Development Tools" "Development Libraries" - uses: actions/checkout@v4 - run: zsh ./test-e2e/run.zsh almalinux: @@ -44,7 +45,8 @@ jobs: image: almalinux:latest steps: - run: | - dnf install -y zsh perl + dnf install -y zsh perl make clang + dnf groupinstall -y "Development Tools" "Development Libraries" - uses: actions/checkout@v4 - run: zsh ./test-e2e/run.zsh rockylinux: @@ -53,7 +55,8 @@ jobs: image: docker.io/rockylinux/rockylinux:latest steps: - run: | - dnf install -y zsh perl + dnf install -y zsh perl make clang + dnf groupinstall -y "Development Tools" "Development Libraries" - uses: actions/checkout@v4 - run: zsh ./test-e2e/run.zsh opensuse: From d22b6238a45358c06e7487ddd95f2becc8face66 Mon Sep 17 00:00:00 2001 From: Kang-min Liu Date: Sat, 8 Feb 2025 00:22:07 +0800 Subject: [PATCH 09/25] typo. --- .github/workflows/e2e.yml | 4 ++-- .github/workflows/src/init.yaml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index 3c1ef98a..93f664ed 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -16,7 +16,7 @@ jobs: steps: - run: | apt-get update -y - apt-get install -y zsh perl curl build-essentials + apt-get install -y zsh perl curl build-essential - uses: actions/checkout@v4 - run: zsh ./test-e2e/run.zsh ubuntu: @@ -26,7 +26,7 @@ jobs: steps: - run: | apt-get update -y - apt-get install -y zsh perl curl build-essentials + apt-get install -y zsh perl curl build-essential - uses: actions/checkout@v4 - run: zsh ./test-e2e/run.zsh fedora: diff --git a/.github/workflows/src/init.yaml b/.github/workflows/src/init.yaml index 1bead955..acc2813d 100644 --- a/.github/workflows/src/init.yaml +++ b/.github/workflows/src/init.yaml @@ -5,7 +5,7 @@ with-dnf: &with-dnf | with-apt: &with-apt | apt-get update -y - apt-get install -y zsh perl curl build-essentials + apt-get install -y zsh perl curl build-essential fedora: *with-dnf almalinux: *with-dnf From 163462d484e5524c7f10d9133031ec8640843a24 Mon Sep 17 00:00:00 2001 From: Kang-min Liu Date: Sat, 8 Feb 2025 00:24:34 +0800 Subject: [PATCH 10/25] retry, with a smaller list of packages. --- .github/workflows/src/init.yaml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/src/init.yaml b/.github/workflows/src/init.yaml index acc2813d..8bf857e7 100644 --- a/.github/workflows/src/init.yaml +++ b/.github/workflows/src/init.yaml @@ -1,7 +1,6 @@ --- with-dnf: &with-dnf | - dnf install -y zsh perl make clang - dnf groupinstall -y "Development Tools" "Development Libraries" + dnf install -y zsh perl make automake gcc gcc-c++ kernel-devel with-apt: &with-apt | apt-get update -y From 42db4b98767164f0e2de67a28a3d1e874b37f54d Mon Sep 17 00:00:00 2001 From: Kang-min Liu Date: Sat, 8 Feb 2025 00:25:15 +0800 Subject: [PATCH 11/25] retry. with a smaller list of packages --- .github/workflows/e2e.yml | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index 93f664ed..3da81f85 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -35,8 +35,7 @@ jobs: image: fedora:latest steps: - run: | - dnf install -y zsh perl make clang - dnf groupinstall -y "Development Tools" "Development Libraries" + dnf install -y zsh perl make automake gcc gcc-c++ kernel-devel - uses: actions/checkout@v4 - run: zsh ./test-e2e/run.zsh almalinux: @@ -45,8 +44,7 @@ jobs: image: almalinux:latest steps: - run: | - dnf install -y zsh perl make clang - dnf groupinstall -y "Development Tools" "Development Libraries" + dnf install -y zsh perl make automake gcc gcc-c++ kernel-devel - uses: actions/checkout@v4 - run: zsh ./test-e2e/run.zsh rockylinux: @@ -55,8 +53,7 @@ jobs: image: docker.io/rockylinux/rockylinux:latest steps: - run: | - dnf install -y zsh perl make clang - dnf groupinstall -y "Development Tools" "Development Libraries" + dnf install -y zsh perl make automake gcc gcc-c++ kernel-devel - uses: actions/checkout@v4 - run: zsh ./test-e2e/run.zsh opensuse: From 862cf2716567a6eab89d3571c262e76059fc666f Mon Sep 17 00:00:00 2001 From: Kang-min Liu Date: Sat, 8 Feb 2025 00:27:33 +0800 Subject: [PATCH 12/25] looks like devel_basis zypper packages might be required. --- .github/workflows/src/init.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/src/init.yaml b/.github/workflows/src/init.yaml index 8bf857e7..966f78d2 100644 --- a/.github/workflows/src/init.yaml +++ b/.github/workflows/src/init.yaml @@ -14,7 +14,8 @@ debian: *with-apt ubuntu: *with-apt opensuse: | - zypper install -y zsh perl + zypper install -t pattern devel_basis + zypper install -y zsh perl awk alpine: | apk add zsh perl From 5e8a0b2dec692776d561ffba702fc522f4c51280 Mon Sep 17 00:00:00 2001 From: Kang-min Liu Date: Sat, 8 Feb 2025 00:28:28 +0800 Subject: [PATCH 13/25] looks like devel_basis zypper packages might be required. --- .github/workflows/e2e.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index 3da81f85..662ac423 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -62,7 +62,8 @@ jobs: image: opensuse/tumbleweed:latest steps: - run: | - zypper install -y zsh perl + zypper install -t pattern devel_basis + zypper install -y zsh perl awk - uses: actions/checkout@v4 - run: zsh ./test-e2e/run.zsh macos-latest: From 02d1ec80a46ddd45fb2b04f50e8d6801d5380e33 Mon Sep 17 00:00:00 2001 From: Kang-min Liu Date: Sat, 8 Feb 2025 00:43:33 +0800 Subject: [PATCH 14/25] need '-y' for zypper. --- .github/workflows/e2e.yml | 2 +- .github/workflows/src/init.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index 662ac423..742244e4 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -62,7 +62,7 @@ jobs: image: opensuse/tumbleweed:latest steps: - run: | - zypper install -t pattern devel_basis + zypper install -y -t pattern devel_basis zypper install -y zsh perl awk - uses: actions/checkout@v4 - run: zsh ./test-e2e/run.zsh diff --git a/.github/workflows/src/init.yaml b/.github/workflows/src/init.yaml index 966f78d2..519d34bc 100644 --- a/.github/workflows/src/init.yaml +++ b/.github/workflows/src/init.yaml @@ -14,7 +14,7 @@ debian: *with-apt ubuntu: *with-apt opensuse: | - zypper install -t pattern devel_basis + zypper install -y -t pattern devel_basis zypper install -y zsh perl awk alpine: | From 14610161ef1494353c275116517e4c626e15c947 Mon Sep 17 00:00:00 2001 From: Kang-min Liu Date: Sat, 8 Feb 2025 13:38:21 +0800 Subject: [PATCH 15/25] On ubuntu, do `unminimize` and install `man-db`. The ubuntu container image is "minimized" and that seems to be the cause of this error message when running perl5db.t: # Failed test 123 - perldoc command works fine at ../lib/perl5db.t line 2998 # got 'This system has been minimized by removing packages and content that are\nnot required on a system that users do not log into.\n\nTo restore this content, including manpages, you can run the \'unminimize\'\ncommand. You will still need to ensure the \'man-db\' package is installed.\n' # expected /(?^:No (?:manual )?entry for perlrules)/ ../lib/perl5db.t ..................................................... Failed 1/149 subtests (less 2 skipped subtests: 146 okay) --- .github/workflows/e2e.yml | 6 ++++-- .github/workflows/src/init.yaml | 6 +++++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index 742244e4..94ddac96 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -15,8 +15,9 @@ jobs: image: debian:latest steps: - run: | + yes | unminimize apt-get update -y - apt-get install -y zsh perl curl build-essential + apt-get install -y zsh perl curl build-essential man-db - uses: actions/checkout@v4 - run: zsh ./test-e2e/run.zsh ubuntu: @@ -25,8 +26,9 @@ jobs: image: ubuntu:latest steps: - run: | + yes | unminimize apt-get update -y - apt-get install -y zsh perl curl build-essential + apt-get install -y zsh perl curl build-essential man-db - uses: actions/checkout@v4 - run: zsh ./test-e2e/run.zsh fedora: diff --git a/.github/workflows/src/init.yaml b/.github/workflows/src/init.yaml index 519d34bc..cb7da449 100644 --- a/.github/workflows/src/init.yaml +++ b/.github/workflows/src/init.yaml @@ -11,7 +11,11 @@ almalinux: *with-dnf rockylinux: *with-dnf debian: *with-apt -ubuntu: *with-apt +ubuntu: | + yes | unminimize + apt-get update -y + apt-get install -y zsh perl curl build-essential man-db + opensuse: | zypper install -y -t pattern devel_basis From c912fb8e65f646ec0921986470bb3b4dc873ff50 Mon Sep 17 00:00:00 2001 From: Kang-min Liu Date: Sat, 8 Feb 2025 13:48:23 +0800 Subject: [PATCH 16/25] unbreak debian workflow. --- .github/workflows/e2e.yml | 3 +-- .github/workflows/e2e.ys | 2 +- .github/workflows/src/init.yaml | 10 ++++------ 3 files changed, 6 insertions(+), 9 deletions(-) diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index 94ddac96..c94de4c4 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -15,9 +15,8 @@ jobs: image: debian:latest steps: - run: | - yes | unminimize apt-get update -y - apt-get install -y zsh perl curl build-essential man-db + apt-get install -y zsh perl curl build-essential - uses: actions/checkout@v4 - run: zsh ./test-e2e/run.zsh ubuntu: diff --git a/.github/workflows/e2e.ys b/.github/workflows/e2e.ys index c40c8594..33ec079d 100644 --- a/.github/workflows/e2e.ys +++ b/.github/workflows/e2e.ys @@ -33,7 +33,7 @@ on: jobs: init =: load("src/init.yaml") - debian:: gen-container-job(init.ubuntu, 'debian:latest') + debian:: gen-container-job(init.debian, 'debian:latest') ubuntu:: gen-container-job(init.ubuntu, 'ubuntu:latest') fedora:: gen-container-job(init.fedora 'fedora:latest') almalinux:: gen-container-job(init.almalinux 'almalinux:latest') diff --git a/.github/workflows/src/init.yaml b/.github/workflows/src/init.yaml index cb7da449..6b9ad8fb 100644 --- a/.github/workflows/src/init.yaml +++ b/.github/workflows/src/init.yaml @@ -2,21 +2,19 @@ with-dnf: &with-dnf | dnf install -y zsh perl make automake gcc gcc-c++ kernel-devel -with-apt: &with-apt | - apt-get update -y - apt-get install -y zsh perl curl build-essential - fedora: *with-dnf almalinux: *with-dnf rockylinux: *with-dnf -debian: *with-apt +debian: | + apt-get update -y + apt-get install -y zsh perl curl build-essential + ubuntu: | yes | unminimize apt-get update -y apt-get install -y zsh perl curl build-essential man-db - opensuse: | zypper install -y -t pattern devel_basis zypper install -y zsh perl awk From a526dd454794e3d7b0afc687b2ebdef0a397b369 Mon Sep 17 00:00:00 2001 From: Kang-min Liu Date: Sat, 8 Feb 2025 15:44:59 +0800 Subject: [PATCH 17/25] disable rockylinux for now. One test file fail -- and the solution seems non-trivial. Test Summary Report ------------------- ../ext/Pod-Html/t/htmldir3.t (Wstat: 512 (exited 2) Tests: 3 Failed: 2) Failed tests: 1, 3 Non-zero exit status: 2 Oddly this test only failed on rockylinux, but not on other linux distributions. These seems relevant: - https://github.com/Perl/perl5/issues/12198 - https://github.com/Perl/perl5/issues/12271 --- .github/workflows/e2e.yml | 9 --------- .github/workflows/e2e.ys | 2 +- 2 files changed, 1 insertion(+), 10 deletions(-) diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index c94de4c4..2b81d89c 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -48,15 +48,6 @@ jobs: dnf install -y zsh perl make automake gcc gcc-c++ kernel-devel - uses: actions/checkout@v4 - run: zsh ./test-e2e/run.zsh - rockylinux: - runs-on: ubuntu-latest - container: - image: docker.io/rockylinux/rockylinux:latest - steps: - - run: | - dnf install -y zsh perl make automake gcc gcc-c++ kernel-devel - - uses: actions/checkout@v4 - - run: zsh ./test-e2e/run.zsh opensuse: runs-on: ubuntu-latest container: diff --git a/.github/workflows/e2e.ys b/.github/workflows/e2e.ys index 33ec079d..f4debe50 100644 --- a/.github/workflows/e2e.ys +++ b/.github/workflows/e2e.ys @@ -37,7 +37,7 @@ jobs: ubuntu:: gen-container-job(init.ubuntu, 'ubuntu:latest') fedora:: gen-container-job(init.fedora 'fedora:latest') almalinux:: gen-container-job(init.almalinux 'almalinux:latest') - rockylinux:: gen-container-job(init.rockylinux 'docker.io/rockylinux/rockylinux:latest') + # rockylinux:: gen-container-job(init.rockylinux 'docker.io/rockylinux/rockylinux:latest') opensuse:: gen-container-job(init.opensuse 'opensuse/tumbleweed:latest') macos-latest:: gen-macos-job("macos-latest") macos-13:: gen-macos-job("macos-13") From 4f6f22880d6fef274ee973af7cea2323d3cd13bc Mon Sep 17 00:00:00 2001 From: Kang-min Liu Date: Sat, 8 Feb 2025 19:39:59 +0800 Subject: [PATCH 18/25] attempt to run e2e on cygwin --- .github/workflows/e2e.yml | 13 +++++++++++++ .github/workflows/e2e.ys | 15 +++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index 2b81d89c..314b5089 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -74,3 +74,16 @@ jobs: perl-version: '5.40' - uses: actions/checkout@v4 - run: zsh ./test-e2e/run.zsh + cygwin: + runs-on: windows-latest + steps: + - uses: cygwin/cygwin-install-action@master + with: + packages: zsh bash curl make perl gcc-g++ libcrypt-devel perl-Module-Build perl-Module-Pluggable + add-to-path: true + - uses: actions/checkout@v4 + - name: run e2e + run: | + cd "$GITHUB_WORKSPACE" + zsh ./test-e2e/run.zsh + shell: C:\cygwin\bin\bash.exe --login -o igncr -eo pipefail '{0}' diff --git a/.github/workflows/e2e.ys b/.github/workflows/e2e.ys index f4debe50..61d34317 100644 --- a/.github/workflows/e2e.ys +++ b/.github/workflows/e2e.ys @@ -20,6 +20,20 @@ defn gen-macos-job(os):: perl-version: "5.40" - :: e2e-steps +defn gen-cygwin-job():: + runs-on: windows-latest + steps: + - uses: cygwin/cygwin-install-action@master + with: + packages: zsh bash curl make perl gcc-g++ libcrypt-devel perl-Module-Build perl-Module-Pluggable + add-to-path: true + - uses: actions/checkout@v4 + - name: run e2e + run: | + cd "$GITHUB_WORKSPACE" + zsh ./test-e2e/run.zsh + shell: C:\cygwin\bin\bash.exe --login -o igncr -eo pipefail '{0}' + --- !yamlscript/v0: name: E2E @@ -41,3 +55,4 @@ jobs: opensuse:: gen-container-job(init.opensuse 'opensuse/tumbleweed:latest') macos-latest:: gen-macos-job("macos-latest") macos-13:: gen-macos-job("macos-13") + cygwin:: gen-cygwin-job() From 1cbb85d712f7d8fcba162680eb71e2a978b2b3bf Mon Sep 17 00:00:00 2001 From: Kang-min Liu Date: Sat, 8 Feb 2025 19:46:25 +0800 Subject: [PATCH 19/25] skip testing skaji-relocatable-perl on cygwin ... because there are no such releases. --- test-e2e/run.zsh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/test-e2e/run.zsh b/test-e2e/run.zsh index f6b88c58..14e19b40 100755 --- a/test-e2e/run.zsh +++ b/test-e2e/run.zsh @@ -19,8 +19,10 @@ if [[ ! -z $testName ]]; then else test-perlbrew-self-install - test-perlbrew-install skaji-relocatable-perl-5.40.1.0 - test-perlbrew-uninstall skaji-relocatable-perl-5.40.1.0 + if [[ $OSTYPE -ne 'cygwin' ]]; then + test-perlbrew-install skaji-relocatable-perl-5.40.1.0 + test-perlbrew-uninstall skaji-relocatable-perl-5.40.1.0 + fi test-perlbrew-install perl-5.40.1 test-perlbrew-uninstall perl-5.40.1 From ece3d0775e8418cc23726448c8ee4c84895899ad Mon Sep 17 00:00:00 2001 From: Kang-min Liu Date: Sat, 8 Feb 2025 19:54:08 +0800 Subject: [PATCH 20/25] Ignore suffix of $OSTYPE --- test-e2e/run.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test-e2e/run.zsh b/test-e2e/run.zsh index 14e19b40..c9fcfee2 100755 --- a/test-e2e/run.zsh +++ b/test-e2e/run.zsh @@ -19,7 +19,7 @@ if [[ ! -z $testName ]]; then else test-perlbrew-self-install - if [[ $OSTYPE -ne 'cygwin' ]]; then + if [[ ! ( "$OSTYPE" =~ ^cygwin ) ]]; then test-perlbrew-install skaji-relocatable-perl-5.40.1.0 test-perlbrew-uninstall skaji-relocatable-perl-5.40.1.0 fi From fbf06550d0d9d9f338aff4fce95eb9daf1024a55 Mon Sep 17 00:00:00 2001 From: Kang-min Liu Date: Sun, 9 Feb 2025 13:11:51 +0800 Subject: [PATCH 21/25] do `perlbrew install --notest` on cygwin. It make sense to keep cygwin as that's one of the new target we intend to have some level of support. --- .github/workflows/e2e.yml | 1 + .github/workflows/e2e.ys | 1 + test-e2e/lib-tests.zsh | 7 ++++++- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index 314b5089..601841ef 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -85,5 +85,6 @@ jobs: - name: run e2e run: | cd "$GITHUB_WORKSPACE" + export PERLBREW_E2E_INSTALL_NOTEST=1 zsh ./test-e2e/run.zsh shell: C:\cygwin\bin\bash.exe --login -o igncr -eo pipefail '{0}' diff --git a/.github/workflows/e2e.ys b/.github/workflows/e2e.ys index 61d34317..52d796c0 100644 --- a/.github/workflows/e2e.ys +++ b/.github/workflows/e2e.ys @@ -31,6 +31,7 @@ defn gen-cygwin-job():: - name: run e2e run: | cd "$GITHUB_WORKSPACE" + export PERLBREW_E2E_INSTALL_NOTEST=1 zsh ./test-e2e/run.zsh shell: C:\cygwin\bin\bash.exe --login -o igncr -eo pipefail '{0}' diff --git a/test-e2e/lib-tests.zsh b/test-e2e/lib-tests.zsh index 3f77d28f..e7318d53 100644 --- a/test-e2e/lib-tests.zsh +++ b/test-e2e/lib-tests.zsh @@ -41,7 +41,12 @@ test-perlbrew-install() { assert-dir-missing $PERLBREW_ROOT/perls/$installation - $PERLBREW install --verbose $installation + if [[ -n "$PERLBREW_E2E_INSTALL_NOTEST" ]] + then + $PERLBREW install --verbose --notest $installation + else + $PERLBREW install --verbose $installation + fi assert-dir-exists $PERLBREW_ROOT/perls/$installation assert-file-exists $PERLBREW_ROOT/perls/$installation/bin/perl From 424f889d8094456fc67c0a2111c2e8c5ca2e78cf Mon Sep 17 00:00:00 2001 From: Kang-min Liu Date: Sun, 9 Feb 2025 13:37:48 +0800 Subject: [PATCH 22/25] Revert "disable rockylinux for now." This reverts commit a526dd454794e3d7b0afc687b2ebdef0a397b369. --- .github/workflows/e2e.yml | 9 +++++++++ .github/workflows/e2e.ys | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index 601841ef..504f0b73 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -48,6 +48,15 @@ jobs: dnf install -y zsh perl make automake gcc gcc-c++ kernel-devel - uses: actions/checkout@v4 - run: zsh ./test-e2e/run.zsh + rockylinux: + runs-on: ubuntu-latest + container: + image: docker.io/rockylinux/rockylinux:latest + steps: + - run: | + dnf install -y zsh perl make automake gcc gcc-c++ kernel-devel + - uses: actions/checkout@v4 + - run: zsh ./test-e2e/run.zsh opensuse: runs-on: ubuntu-latest container: diff --git a/.github/workflows/e2e.ys b/.github/workflows/e2e.ys index 52d796c0..af8d55e3 100644 --- a/.github/workflows/e2e.ys +++ b/.github/workflows/e2e.ys @@ -52,7 +52,7 @@ jobs: ubuntu:: gen-container-job(init.ubuntu, 'ubuntu:latest') fedora:: gen-container-job(init.fedora 'fedora:latest') almalinux:: gen-container-job(init.almalinux 'almalinux:latest') - # rockylinux:: gen-container-job(init.rockylinux 'docker.io/rockylinux/rockylinux:latest') + rockylinux:: gen-container-job(init.rockylinux 'docker.io/rockylinux/rockylinux:latest') opensuse:: gen-container-job(init.opensuse 'opensuse/tumbleweed:latest') macos-latest:: gen-macos-job("macos-latest") macos-13:: gen-macos-job("macos-13") From fe472bc0469e329dc76bf7369ca52a0b9a63361e Mon Sep 17 00:00:00 2001 From: Kang-min Liu Date: Sun, 9 Feb 2025 13:42:36 +0800 Subject: [PATCH 23/25] put env vars on `env`. --- .github/workflows/e2e.yml | 15 ++++++++++++++- .github/workflows/e2e.ys | 5 ++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index 504f0b73..4579bfbb 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -13,6 +13,8 @@ jobs: runs-on: ubuntu-latest container: image: debian:latest + env: + PERLBREW_E2E: 1 steps: - run: | apt-get update -y @@ -23,6 +25,8 @@ jobs: runs-on: ubuntu-latest container: image: ubuntu:latest + env: + PERLBREW_E2E: 1 steps: - run: | yes | unminimize @@ -34,6 +38,8 @@ jobs: runs-on: ubuntu-latest container: image: fedora:latest + env: + PERLBREW_E2E: 1 steps: - run: | dnf install -y zsh perl make automake gcc gcc-c++ kernel-devel @@ -43,6 +49,8 @@ jobs: runs-on: ubuntu-latest container: image: almalinux:latest + env: + PERLBREW_E2E: 1 steps: - run: | dnf install -y zsh perl make automake gcc gcc-c++ kernel-devel @@ -52,6 +60,8 @@ jobs: runs-on: ubuntu-latest container: image: docker.io/rockylinux/rockylinux:latest + env: + PERLBREW_E2E: 1 steps: - run: | dnf install -y zsh perl make automake gcc gcc-c++ kernel-devel @@ -61,6 +71,8 @@ jobs: runs-on: ubuntu-latest container: image: opensuse/tumbleweed:latest + env: + PERLBREW_E2E: 1 steps: - run: | zypper install -y -t pattern devel_basis @@ -85,6 +97,8 @@ jobs: - run: zsh ./test-e2e/run.zsh cygwin: runs-on: windows-latest + env: + PERLBREW_E2E_INSTALL_NOTEST: 1 steps: - uses: cygwin/cygwin-install-action@master with: @@ -94,6 +108,5 @@ jobs: - name: run e2e run: | cd "$GITHUB_WORKSPACE" - export PERLBREW_E2E_INSTALL_NOTEST=1 zsh ./test-e2e/run.zsh shell: C:\cygwin\bin\bash.exe --login -o igncr -eo pipefail '{0}' diff --git a/.github/workflows/e2e.ys b/.github/workflows/e2e.ys index af8d55e3..07cc43a8 100644 --- a/.github/workflows/e2e.ys +++ b/.github/workflows/e2e.ys @@ -8,6 +8,8 @@ defn gen-container-job(init image=nil):: runs-on: ubuntu-latest container: image:: image + env: + PERLBREW_E2E: 1 steps: - run:: init - :: e2e-steps @@ -22,6 +24,8 @@ defn gen-macos-job(os):: defn gen-cygwin-job():: runs-on: windows-latest + env: + PERLBREW_E2E_INSTALL_NOTEST: 1 steps: - uses: cygwin/cygwin-install-action@master with: @@ -31,7 +35,6 @@ defn gen-cygwin-job():: - name: run e2e run: | cd "$GITHUB_WORKSPACE" - export PERLBREW_E2E_INSTALL_NOTEST=1 zsh ./test-e2e/run.zsh shell: C:\cygwin\bin\bash.exe --login -o igncr -eo pipefail '{0}' From dfbd383c28410a7b5d0c7d5336e5e4e1d95695ad Mon Sep 17 00:00:00 2001 From: Kang-min Liu Date: Sun, 9 Feb 2025 13:48:53 +0800 Subject: [PATCH 24/25] replace init.yml with job-config --- .github/workflows/e2e.ys | 51 +++++++++++++++++++++++++++------ .github/workflows/src/init.yaml | 23 --------------- 2 files changed, 42 insertions(+), 32 deletions(-) delete mode 100644 .github/workflows/src/init.yaml diff --git a/.github/workflows/e2e.ys b/.github/workflows/e2e.ys index 07cc43a8..fb03943c 100644 --- a/.github/workflows/e2e.ys +++ b/.github/workflows/e2e.ys @@ -1,17 +1,51 @@ --- !yamlscript/v0 +job-config =:: + with-dnf =:: &with-dnf | + dnf install -y zsh perl make automake gcc gcc-c++ kernel-devel + + fedora: + init: *with-dnf + + almalinux: + init: *with-dnf + + rockylinux: + init: *with-dnf + + debian: + init: | + apt-get update -y + apt-get install -y zsh perl curl build-essential + + ubuntu: + init: | + yes | unminimize + apt-get update -y + apt-get install -y zsh perl curl build-essential man-db + + opensuse: + init: | + zypper install -y -t pattern devel_basis + zypper install -y zsh perl awk + + alpine: + init: | + apk add zsh perl + e2e-steps =:: - uses: actions/checkout@v4 - run: zsh ./test-e2e/run.zsh -defn gen-container-job(init image=nil):: +defn gen-container-job(config image=nil):: runs-on: ubuntu-latest container: image:: image env: PERLBREW_E2E: 1 + :: config.env steps: - - run:: init + - run:: config.init - :: e2e-steps defn gen-macos-job(os):: @@ -50,13 +84,12 @@ on: - test-e2e/*.zsh jobs: - init =: load("src/init.yaml") - debian:: gen-container-job(init.debian, 'debian:latest') - ubuntu:: gen-container-job(init.ubuntu, 'ubuntu:latest') - fedora:: gen-container-job(init.fedora 'fedora:latest') - almalinux:: gen-container-job(init.almalinux 'almalinux:latest') - rockylinux:: gen-container-job(init.rockylinux 'docker.io/rockylinux/rockylinux:latest') - opensuse:: gen-container-job(init.opensuse 'opensuse/tumbleweed:latest') + debian:: gen-container-job(job-config.debian, 'debian:latest') + ubuntu:: gen-container-job(job-config.ubuntu, 'ubuntu:latest') + fedora:: gen-container-job(job-config.fedora 'fedora:latest') + almalinux:: gen-container-job(job-config.almalinux 'almalinux:latest') + rockylinux:: gen-container-job(job-config.rockylinux 'docker.io/rockylinux/rockylinux:latest') + opensuse:: gen-container-job(job-config.opensuse 'opensuse/tumbleweed:latest') macos-latest:: gen-macos-job("macos-latest") macos-13:: gen-macos-job("macos-13") cygwin:: gen-cygwin-job() diff --git a/.github/workflows/src/init.yaml b/.github/workflows/src/init.yaml deleted file mode 100644 index 6b9ad8fb..00000000 --- a/.github/workflows/src/init.yaml +++ /dev/null @@ -1,23 +0,0 @@ ---- -with-dnf: &with-dnf | - dnf install -y zsh perl make automake gcc gcc-c++ kernel-devel - -fedora: *with-dnf -almalinux: *with-dnf -rockylinux: *with-dnf - -debian: | - apt-get update -y - apt-get install -y zsh perl curl build-essential - -ubuntu: | - yes | unminimize - apt-get update -y - apt-get install -y zsh perl curl build-essential man-db - -opensuse: | - zypper install -y -t pattern devel_basis - zypper install -y zsh perl awk - -alpine: | - apk add zsh perl From b92a30de9b7b4be06b34ae581075e15765400069 Mon Sep 17 00:00:00 2001 From: Kang-min Liu Date: Sun, 9 Feb 2025 13:57:07 +0800 Subject: [PATCH 25/25] run `perlbrew install` with `--notest` on rockylinux. --- .github/workflows/e2e.yml | 1 + .github/workflows/e2e.ys | 2 ++ 2 files changed, 3 insertions(+) diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index 4579bfbb..8d66bcb4 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -62,6 +62,7 @@ jobs: image: docker.io/rockylinux/rockylinux:latest env: PERLBREW_E2E: 1 + PERLBREW_E2E_INSTALL_NOTEST: 1 steps: - run: | dnf install -y zsh perl make automake gcc gcc-c++ kernel-devel diff --git a/.github/workflows/e2e.ys b/.github/workflows/e2e.ys index fb03943c..ff279784 100644 --- a/.github/workflows/e2e.ys +++ b/.github/workflows/e2e.ys @@ -11,6 +11,8 @@ job-config =:: init: *with-dnf rockylinux: + env: + PERLBREW_E2E_INSTALL_NOTEST: 1 init: *with-dnf debian: