Skip to content

chore(merge): '1.30.1' into 'main' #2556

chore(merge): '1.30.1' into 'main'

chore(merge): '1.30.1' into 'main' #2556

Workflow file for this run

name: Tests
on:
pull_request:
push:
branches:
- main
jobs:
linters:
runs-on: ubuntu-22.04
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: true
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.10"
- name: Install python packages and dependencies
run: |
sudo snap install --no-wait ruff
sudo apt update
sudo apt install -y libapt-pkg-dev aspell
pip install python-apt@https://launchpad.net/ubuntu/+archive/primary/+sourcefiles/python-apt/2.4.0ubuntu1/python-apt_2.4.0ubuntu1.tar.xz
pip install -U -e .[dev]
sudo snap watch --last=install
- name: Run black
run: |
make test-black
- name: Run codespell
run: |
make test-codespell
- name: Run ruff
run: |
make test-ruff
- name: Run mypy
run: |
make test-mypy
- name: Run pydocstyle
run: |
make test-pydocstyle
- name: Run pyright
run: |
sudo snap install --classic node
sudo snap install --classic pyright
make test-pyright
- name: Run linkcheck, woke, spelling
run: |
sudo snap install woke
make test-docs
unit-tests:
strategy:
matrix:
os: [ubuntu-20.04, ubuntu-22.04]
runs-on: ${{ matrix.os }}
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: |
3.7
3.8
3.9
3.10
3.12
cache: pip
- name: Install apt build dependencies
run: |
sudo apt update
sudo apt install -y libapt-pkg-dev intltool fuse-overlayfs python3-apt
- name: Install additional test dependencies
run: |
sudo apt install -y ninja-build cmake scons \
autoconf automake autopoint gcc git gperf help2man libtool texinfo
python -m pip install tox
# Build Chisel: needs a newer version of go than is available in Ubuntu 20.04
sudo snap install --classic --channel=latest/stable go
git clone https://github.com/canonical/chisel.git chisel-tmp
cd chisel-tmp && git checkout v0.9.1
go mod download
sudo go build -o /usr/bin ./...
chisel --help
# Remove newer go and install regular version for 20.04
sudo snap remove go
sudo apt install -y golang
# Install RPM dependencies for RPM tests
sudo apt install rpm
# Ensure we don't have dotnet installed, to properly test dotnet-deps
# Based on https://github.com/actions/runner-images/blob/main/images/linux/scripts/installers/dotnetcore-sdk.sh
sudo apt remove -y dotnet-* || true
# Remove manually-installed dotnet from tarballs
sudo rm -rf /usr/share/dotnet
# Remove dotnet tools
rm -rf $HOME/.dotnet
- name: specify node version
uses: actions/setup-node@v4
with:
node-version: 16
- name: Setup Tox environments
run: tox run -m unit-tests --notest
- name: Unit tests
run: .tox/.tox/bin/tox run --skip-pkg-install --no-list-dependencies --result-json results/tox-${{ matrix.platform }}.json -m unit-tests
env:
PYTEST_ADDOPTS: "--no-header -vv -rN"
tests:
strategy:
matrix:
os: [ubuntu-20.04]
python-version: ["3.7", "3.8", "3.9", "3.10"]
include:
- adjective: focal
- os: ubuntu-22.04
python-version: "3.10"
adjective: jammy
runs-on: ${{ matrix.os }}
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install apt build dependencies
run: |
sudo apt update
sudo apt install -y libapt-pkg-dev intltool fuse-overlayfs python3-apt
- name: Install general python dependencies
run: |
pip install python-apt@https://launchpad.net/ubuntu/+archive/primary/+sourcefiles/python-apt/2.0.1ubuntu0.20.04.1/python-apt_2.0.1ubuntu0.20.04.1.tar.xz
pip install -e .[dev]
- name: Install additional test dependencies
run: |
sudo apt install -y ninja-build cmake scons qt5-qmake p7zip \
autoconf automake autopoint gcc git gperf help2man libtool texinfo
# Build Chisel: needs a newer version of go than is available in Ubuntu 20.04
# note: we can't use the snap here because it has strict confinement and can't access
# the test files in /tmp/pytest-*
sudo snap install --classic --channel=latest/stable go
git clone https://github.com/canonical/chisel.git chisel-tmp
cd chisel-tmp && git checkout v0.9.1
go mod download
sudo go build -o /usr/bin ./...
chisel --help
# Remove newer go and install regular version for 20.04
sudo snap remove go
sudo apt install -y golang
# Install RPM dependencies for RPM tests
sudo apt install rpm
# Ensure we don't have dotnet installed, to properly test dotnet-deps
# Based on https://github.com/actions/runner-images/blob/main/images/linux/scripts/installers/dotnetcore-sdk.sh
sudo apt remove -y dotnet-* || true
# Remove manually-installed dotnet from tarballs
sudo rm -rf /usr/share/dotnet
# Remove dotnet tools
rm -rf $HOME/.dotnet
- name: specify node version
uses: actions/setup-node@v4
with:
node-version: 16
- name: Run integration tests
run: |
make test-integrations
- name: Run overlay smoke test
if: ${{ matrix.adjective == 'focal' }} # TODO: fix this smoke test for jammy
run: |
wget -q https://cloud-images.ubuntu.com/${{ matrix.adjective }}/current/${{ matrix.adjective }}-server-cloudimg-amd64.squashfs
mkdir base
sudo mount -t squashfs ${{ matrix.adjective }}-server-cloudimg-amd64.squashfs base/
cat <<-EOF > parts.yaml
parts:
foo:
plugin: nil
overlay-packages: [hello]
overlay-script: |
chroot "\$CRAFT_OVERLAY" /bin/bash -c "hello > hello.txt"
echo 1234 > "\$CRAFT_OVERLAY/etc/issue"
overlay:
- "*.txt"
- etc
- usr/bin
bar:
plugin: nil
after: [foo]
overlay-packages: [bison]
overlay-script: |
chroot "\$CRAFT_OVERLAY" /bin/bash -c "rm -Rf /etc/shells /etc/ssh && mkdir /etc/ssh"
echo 5678 > "\$CRAFT_OVERLAY/etc/issue"
overlay:
- -usr/share
- -var/cache
override-build: |
rev "\$CRAFT_OVERLAY/hello.txt" > "\$CRAFT_PART_INSTALL/olleh.txt"
EOF
python_exe=$(command -v python)
cat <<-EOF > run.sh
echo "--- overlay foo"
"${python_exe}" -mcraft_parts --work-dir=work --trace --overlay-base=base --refresh overlay foo
echo "--- next actions plan"
"${python_exe}" -mcraft_parts --work-dir=work --overlay-base=base --dry-run --show-skipped
echo "--- next actions execution"
"${python_exe}" -mcraft_parts --work-dir=work --trace --overlay-base=base
EOF
echo "--- parts.yaml:"
cat parts.yaml
sudo bash -xe run.sh
echo "* Check if hello executables installed"
test -x work/prime/usr/bin/hello && echo "hello"
test -x work/prime/usr/bin/bison && echo "bison"
test -x work/prime/usr/bin/m4 && echo "m4"
echo "* Check if /usr/bin/yacc is a symbolic link"
test -L work/prime/usr/bin/yacc && ls -l work/prime/usr/bin/yacc
echo "* Check if docs excluded"
test ! -d work/usr/share/doc/hello && echo "hello"
test ! -d work/usr/share/doc/bison && echo "bison"
echo "* Check created files"
grep "!dlrow ,olleH" work/prime/olleh.txt
grep "Hello, world!" work/prime/hello.txt
grep 5678 work/prime/etc/issue
echo "* Check whiteout files"
test -f work/prime/etc/.wh.shells && echo "/etc/shells"
test -f work/prime/etc/ssh/.wh..wh.opq && echo "/etc/ssh"
echo "--- prime files:"
find work/prime