Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .fmf/version
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
1
50 changes: 50 additions & 0 deletions .github/workflows/tmt-tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
name: TMT Tests

on:
push:
branches:
- main
pull_request:
branches:
- main
workflow_dispatch:
inputs:
plan_filter:
description: |
Test plan filter name, ie: tag:smoke.
If provided, only tests matching this filter will be run, otherwise all tests will be run.
required: false
default: ''
use_built_from_src:
description: 'Built bootupd from source instead of install distro package'
required: false
default: 'true'

jobs:
tmt-tests:
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Install dependencies
run: |
set -x -e -o pipefail
sudo apt-get update
sudo apt-get install -y podman libblkid-dev rsync
pip install --user tmt

- name: Run TMT tests
run: |
set -x -e -o pipefail
if [ "$ACT" = "true" ]; then
echo "Running locally using ACT"
TMT_PROVISION_OPTS="--how local --feeling-safe"
else
TMT_PROVISION_OPTS="--how container"
fi
if [ -n "${{ github.event.inputs.plan_filter }}" ]; then
PLAN_FILTER_PARAM="plan --filter '${{ github.event.inputs.plan_filter }}'"
fi
eval "tmt run --all --debug -vvvv provision $TMT_PROVISION_OPTS $PLAN_FILTER_PARAM"
32 changes: 32 additions & 0 deletions tests/core/core.fmf
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
summary: check bootupd package installation and basic functionality
tag:
- smoke
test: |
set -x -e -o pipefail

# Check if bootupctl is available
if ! command -v bootupctl &> /dev/null; then
echo "bootupctl command not found"
exit 1
fi

# Get architecture
arch="$(uname --machine)"

# Run bootupctl status and check output
output=$(bootupctl status | tr -d '\r')

if [[ "${arch}" == "x86_64" ]]; then
expected_components='Available components: BIOS EFI'
else
# Assume aarch64 for now
expected_components='Available components: EFI'
fi

if [ "${expected_components}" != "${output}" ]; then
echo "Expected: ${expected_components}"
echo "Got: ${output}"
exit 1
fi

echo "bootupd package and bootupctl status test passed"
32 changes: 32 additions & 0 deletions tests/tmt/plans/main.fmf
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# This prepare is used to control when bootupd is installed using
# the distribution package or when it is built from source in the test environment
prepare:
- name: Set BOOTUPD_BIN_DIR when built from source
when: use_built_from_src is defined and use_built_from_src == true
how: shell
script: |
set -x -e -o pipefail
echo "Preparing the test environment"
BOOTUPD_BIN_NAME="bootupd"
PARENT_DIR=$(dirname "${TMT_TREE}")
BOOTUPD_BIN_FULL_PATH=$(find "${PARENT_DIR}" -type f -name "${BOOTUPD_BIN_NAME}")
if [ -z "${BOOTUPD_BIN_FULL_PATH}" ]; then
echo "bootupd file not found."
exit 1
elif [ "$(echo "${BOOTUPD_BIN_FULL_PATH}" | wc -l)" -gt 1 ]; then
echo "error: found multiple 'bootupd' binaries:" >&2
echo "${BOOTUPD_BIN_FULL_PATH}" >&2
exit 1
fi
BOOTUPD_BIN_DIR=$(dirname "${BOOTUPD_BIN_FULL_PATH}")
echo "BOOTUPD_BIN_DIR=${BOOTUPD_BIN_DIR}" > /tmp/bootupd_bin_dir
- name: Install bootupd package
when: use_built_from_src is not defined or use_built_from_src == false
how: install
package: bootupd
- name: Set BOOTUPD_BIN_DIR when installed package
when: use_built_from_src is not defined or use_built_from_src == false
how: shell
script: |
set -x -e -o pipefail
echo "BOOTUPD_BIN_DIR=/usr/libexec" > /tmp/bootupd_bin_dir
8 changes: 8 additions & 0 deletions tests/tmt/plans/smoke.fmf
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
summary: Basic smoke test
tag:
- smoke
discover:
how: fmf
filter: "tag: smoke"
execute:
how: tmt