-
-
Notifications
You must be signed in to change notification settings - Fork 17
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add unit test Github action script for automated function testings
- Loading branch information
1 parent
e6c0c2e
commit 43bea4a
Showing
6 changed files
with
184 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,157 @@ | ||
name: "Unit tests" | ||
on: | ||
repository_dispatch: | ||
types: ["Unit tests"] | ||
schedule: | ||
- cron: '0 2 * * *' | ||
pull_request: | ||
types: [opened, reopened, edited, synchronize, review_requested] | ||
# paths: | ||
# - 'tests/*.conf' | ||
|
||
env: | ||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
PR_NUMBER: ${{ github.event.number }} | ||
|
||
concurrency: | ||
group: pipeline-pr-${{github.event.pull_request.number}} | ||
cancel-in-progress: true | ||
|
||
jobs: | ||
|
||
test: | ||
name: "Unit tests" | ||
runs-on: ubuntu-latest | ||
outputs: | ||
matrix: ${{steps.json.outputs.JSON_CONTENT}} | ||
steps: | ||
|
||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
with: | ||
path: 'config' | ||
|
||
- name: Get changed files | ||
id: changed-files | ||
uses: tj-actions/changed-files@v43 | ||
with: | ||
path: config | ||
files: | | ||
tests/*.conf | ||
- name: "Make JSON ${{ steps.changed-files.outputs.all_changed_files }}" | ||
id: json | ||
run: | | ||
echo 'JSON_CONTENT<<EOF' >> $GITHUB_OUTPUT | ||
# define docker images where we will run test install | ||
dockerimages=("debian:bookworm" "debian:trixie" "ubuntu:jammy" "ubuntu:noble") | ||
# read tests cases and loop them | ||
if [[ -n "${{ steps.changed-files.outputs.all_changed_files }}" ]]; then | ||
tests=($(echo ${{ steps.changed-files.outputs.all_changed_files }} | tr " " "\n" | cut -d"." -f1 | cut -d"/" -f2)) | ||
else | ||
tests=($(grep -rw config/tests/*.conf -e "ENABLED=true" | cut -d"/" -f3 | cut -d"." -f1)) | ||
fi | ||
for i in "${tests[@]}"; do | ||
unset RELEASE | ||
source config/tests/${i}.conf | ||
if [[ -z "${RELEASE}" ]]; then RELEASE=all; fi | ||
# if we speficy releases, we need to loop docker images and use if there is a match | ||
if [[ $RELEASE != all || -z $RELEASE ]]; then | ||
for j in ${dockerimages[@]}; do | ||
elements=($(echo $RELEASE | tr ':' "\n")) | ||
for SELECTED_RELEASE in "${elements[@]}"; do | ||
if [[ $j == *"${SELECTED_RELEASE}"* ]]; then | ||
echo "{\"package\":\"${i}\",\"image\":\"$j\"}" | ||
fi | ||
done | ||
done | ||
else | ||
for j in ${dockerimages[@]}; do | ||
echo "{\"package\":\"${i}\",\"image\":\"$j\"}" | ||
done | ||
fi | ||
done | jq -s >> $GITHUB_OUTPUT | ||
echo 'EOF' >> $GITHUB_OUTPUT | ||
gradle: | ||
needs: test | ||
strategy: | ||
fail-fast: false | ||
max-parallel: 32 | ||
matrix: | ||
image: ${{ fromJSON(needs.test.outputs.matrix) }} | ||
|
||
name: "I" | ||
runs-on: ubuntu-latest | ||
container: | ||
image: "${{ matrix.image.image }}" | ||
steps: | ||
|
||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
with: | ||
path: 'config' | ||
|
||
- name: Install | ||
run: | | ||
# source vars | ||
. "config/tests/${{ matrix.image.package }}.conf" | ||
echo ${TEST_TITLE} | ||
export DEBIAN_FRONTEND=noninteractive | ||
RELEASE=$(echo "${{ matrix.image.image }}" | cut -d":" -f2) | ||
apt update | ||
apt -y install wget gpg | ||
# add armbian repository | ||
URL=apt.armbian.com | ||
wget https://${URL}/armbian.key -O key | ||
gpg --dearmor < key | tee /usr/share/keyrings/armbian.gpg > /dev/null | ||
chmod go+r /usr/share/keyrings/armbian.gpg | ||
echo "deb [signed-by=/usr/share/keyrings/armbian.gpg] http://${URL} $RELEASE main ${RELEASE}-utils ${RELEASE}-desktop" | tee /etc/apt/sources.list.d/armbian.list | ||
apt update -y | ||
apt upgrade -y | ||
apt -y install sudo procps systemd whiptail jq lsb-release iproute2 | ||
# install packages / except howdy as its too large | ||
export DEBIAN_FRONTEND=noninteractive | ||
cd config | ||
eval "$PREINSTALL" | ||
sudo bash bin/armbian-configng --cmd "${{ matrix.image.package }}" | ||
eval "$CONDITION" | ||
# stats | ||
FILENAME="data-"$(echo ${{ matrix.image.image }} | sed "s/:/-/g")"-${{ matrix.image.package }}.teststats" | ||
echo $RELEASE >> ../${FILENAME} | ||
bash bin/armbian-configng --cmd | grep "${{ matrix.image.package }}" | xargs >> ../${FILENAME} | ||
echo " " >> ../${FILENAME} | ||
- name: Upload test | ||
uses: actions/[email protected] | ||
with: | ||
name: TESTDATA | ||
path: data-*.teststats | ||
|
||
stop: | ||
name: "Merge test artifacts" | ||
if: always() | ||
needs: gradle | ||
runs-on: ubuntu-latest | ||
steps: | ||
|
||
- name: "Download changes" | ||
uses: actions/download-artifact@v3-node20 | ||
with: | ||
name: TESTDATA | ||
|
||
- name: Install | ||
run: | | ||
echo "# Succesful tests:" >> $GITHUB_STEP_SUMMARY | ||
cat ./*.teststats | sed '$ s/.$//' >> $GITHUB_STEP_SUMMARY |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
# Unit tests | ||
|
||
- name of the the file is function ID. | ||
- ENABLED=false|true | ||
- PREINSTALL="cmd" in order to satisfy test case | ||
- CONDITION must return 0 for test success | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
ENABLED=true | ||
PREINSTALL="bash bin/armbian-configng --cmd S18" | ||
CONDITION="[ ! -f /usr/bin/zsh ]" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
ENABLED=true | ||
CONDITION="[ -f /usr/bin/zsh ]" |