diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml new file mode 100644 index 0000000..4fabac0 --- /dev/null +++ b/.github/workflows/main.yaml @@ -0,0 +1,30 @@ +name: CI with JUnit Report + +on: [push, pull_request] + +jobs: + build-and-test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: install dependencies and run tests + run: | + set -x + mkdir -p deps + git clone ${{ vars.VERSIONERS_URI }} deps/versioners + cd deps/versioners + make install + cd ../../ + git clone ${{ vars.SHUNIT_URI }} deps/shunit + cd deps/shunit + make install + cd ../../ + make test-ci + cat junit.xml + - name: Publish Test Report + uses: mikepenz/action-junit-report@v5 + if: success() || failure() # always run even if the previous step fails + with: + report_paths: 'junit.xml' + annotate_only: true + include_passed: true diff --git a/Makefile b/Makefile index f8911a4..b534f6f 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,9 @@ -VERSION:=$(shell if [ -d .git ]; then bash -c 'gitversion.sh | grep "^MAJOR=" | cut -d = -f 2'; else source version.sh && echo $$MAJOR ; fi) -RELEASE:=$(shell if [ -d .git ]; then bash -c 'gitversion.sh | grep "^BUILD=" | cut -d = -f 2'; else source version.sh && echo $$BUILD ; fi) +ifndef PREFIX + PREFIX=/usr +endif + +VERSION:=$(shell if [ -d .git ]; then bash -c '$(PREFIX)/bin/gitversion.sh | grep "^MAJOR=" | cut -d = -f 2'; else source version.sh && echo $$MAJOR ; fi) +RELEASE:=$(shell if [ -d .git ]; then bash -c '$(PREFIX)/bin/gitversion.sh | grep "^BUILD=" | cut -d = -f 2'; else source version.sh && echo $$BUILD ; fi) DISTFILE=./dist/cmdarg-$(VERSION)-$(RELEASE).tar.gz SPECFILE=cmdarg.spec ifndef RHEL_VERSION @@ -19,12 +23,13 @@ ifndef PREFIX endif DISTFILE_DEPS=$(shell find . -type f | grep -Ev '\.git|\./dist/|$(DISTFILE)') +JUNIT_DEPS=$(wildcard *.sh) $(wildcard tests/*.sh) all: ./dist/$(RPM) # --- PHONY targets -.PHONY: clean srpm rpm gitclean dist +.PHONY: clean srpm rpm gitclean dist test test-ci clean: rm -f $(DISTFILE) rm -fr dist/cmdarg-$(VERSION)-$(RELEASE)* @@ -38,8 +43,18 @@ rpm: ./dist/$(RPM) ./dist/$(SRPM) gitclean: git clean -df +test: tunit.txt + +test-ci: junit.xml + # --- End phony targets +junit.xml: cmdarg.sh $(JUNIT_DEPS) + AK_PREFIX=. $(PREFIX)/bin/shunit.sh -f junit -t tests > junit.xml + +tunit.txt: cmdarg.sh $(JUNIT_DEPS) + AK_PREFIX=. $(PREFIX)/bin/shunit.sh -f tunit -t tests | tee tunit.txt + version.sh: gitversion.sh > version.sh @@ -65,10 +80,9 @@ $(RHEL_DISTFILE): $(DISTFILE) uninstall: rm -f $(PREFIX)/usr/lib/cmdarg.sh - install: - mkdir -p $(PREFIX)/usr/lib - install ./cmdarg.sh $(PREFIX)/usr/lib/cmdarg.sh + mkdir -p $(PREFIX)/lib + install ./cmdarg.sh $(PREFIX)/lib/cmdarg.sh MANIFEST: - echo /usr/lib/cmdarg.sh > MANIFEST + echo $(PREFIX)/lib/cmdarg.sh > MANIFEST diff --git a/test.sh b/test.sh deleted file mode 100644 index 2406638..0000000 --- a/test.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/usr/bin/bash4 - -declare -a cfg_array -declare -A cfg_hash - -source ./cmdarg.sh - -cmdarg 'b' 'boolean' 'A boolean argument' -cmdarg 's:' 'string' 'A string argument' -cmdarg 'a:[]' 'cfg_array' 'An array argument' -cmdarg 'H:{}' 'cfg_hash' 'A hash argument' - -cmdarg_parse "$@" - -cmdarg_dump