Skip to content

Commit

Permalink
Merge pull request #840 from gugod/more-e2e-tests
Browse files Browse the repository at this point in the history
More e2e tests
  • Loading branch information
gugod authored Feb 12, 2025
2 parents 9e1e244 + b92a30d commit 5451552
Show file tree
Hide file tree
Showing 5 changed files with 172 additions and 51 deletions.
43 changes: 37 additions & 6 deletions .github/workflows/e2e.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,61 +7,77 @@ name: E2E
paths:
- perlbrew
- .github/workflows/e2e.yml
- test-e2e/*.zsh
jobs:
debian:
runs-on: ubuntu-latest
container:
image: debian:latest
env:
PERLBREW_E2E: 1
steps:
- run: |
apt-get update -y
apt-get install -y zsh perl curl
apt-get install -y zsh perl curl build-essential
- uses: actions/checkout@v4
- run: zsh ./test-e2e/run.zsh
ubuntu:
runs-on: ubuntu-latest
container:
image: ubuntu:latest
env:
PERLBREW_E2E: 1
steps:
- run: |
yes | unminimize
apt-get update -y
apt-get install -y zsh perl curl
apt-get install -y zsh perl curl build-essential man-db
- uses: actions/checkout@v4
- run: zsh ./test-e2e/run.zsh
fedora:
runs-on: ubuntu-latest
container:
image: fedora:latest
env:
PERLBREW_E2E: 1
steps:
- run: |
dnf install -y zsh perl
dnf install -y zsh perl make automake gcc gcc-c++ kernel-devel
- uses: actions/checkout@v4
- run: zsh ./test-e2e/run.zsh
almalinux:
runs-on: ubuntu-latest
container:
image: almalinux:latest
env:
PERLBREW_E2E: 1
steps:
- run: |
dnf install -y zsh perl
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
env:
PERLBREW_E2E: 1
PERLBREW_E2E_INSTALL_NOTEST: 1
steps:
- run: |
dnf install -y zsh perl
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:
image: opensuse/tumbleweed:latest
env:
PERLBREW_E2E: 1
steps:
- run: |
zypper install -y zsh perl
zypper install -y -t pattern devel_basis
zypper install -y zsh perl awk
- uses: actions/checkout@v4
- run: zsh ./test-e2e/run.zsh
macos-latest:
Expand All @@ -80,3 +96,18 @@ jobs:
perl-version: '5.40'
- uses: actions/checkout@v4
- 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:
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}'
73 changes: 64 additions & 9 deletions .github/workflows/e2e.ys
Original file line number Diff line number Diff line change
@@ -1,15 +1,53 @@
--- !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:
env:
PERLBREW_E2E_INSTALL_NOTEST: 1
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)::
Expand All @@ -20,6 +58,22 @@ defn gen-macos-job(os)::
perl-version: "5.40"
- :: e2e-steps

defn gen-cygwin-job()::
runs-on: windows-latest
env:
PERLBREW_E2E_INSTALL_NOTEST: 1
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

Expand All @@ -29,14 +83,15 @@ on:
paths:
- perlbrew
- .github/workflows/e2e.yml
- test-e2e/*.zsh

jobs:
init =: load("src/init.yaml")
debian:: gen-container-job(init.ubuntu, '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()
20 changes: 0 additions & 20 deletions .github/workflows/src/init.yaml

This file was deleted.

66 changes: 55 additions & 11 deletions test-e2e/lib-tests.zsh
Original file line number Diff line number Diff line change
@@ -1,29 +1,73 @@
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
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

$PERLBREW_ROOT/bin/perlbrew install-patchperl
assert-file-exists $PERLBREW_ROOT/bin/patchperl

eval "$($PERLBREW init-in-bash)"
}

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

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

assert-ok $PERLBREW_ROOT/perls/$installation/bin/perl -v

echo "OK - perlbrew install $installation"
}

test-perlbrew-uninstall() {
local installation=$1
shift

echo "TEST - perlbrew uninstall $installation"

$PERLBREW install skaji-relocatable-perl-5.40.0.1
assert-dir-exists $PERLBREW_ROOT/perls/$installation
assert-file-exists $PERLBREW_ROOT/perls/$installation/bin/perl

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
$PERLBREW uninstall --verbose --yes $installation

assert-ok ~/perl5/perlbrew/perls/skaji-relocatable-perl-5.40.0.1/bin/perl -v
assert-dir-missing $PERLBREW_ROOT/perls/$installation

echo 'OK - perlbrew install skaji-relocatable-perl-5.40.0.1'
echo "OK - perlbrew uninstall $installation"
}
21 changes: 16 additions & 5 deletions test-e2e/run.zsh
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,24 @@ 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
fi
else
test-perlbrew-self-install

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

test-perlbrew-self-install
test-perlbrew-install-skaji-relocatable-perl
test-perlbrew-install perl-5.40.1
test-perlbrew-uninstall perl-5.40.1
fi

0 comments on commit 5451552

Please sign in to comment.