Issue 87 execute tests with GitHub ci (#234)

* Enable lcov coverage in unit testing via cmake.

* fix pipeline build error

* add compile options for unit test to silence some warnings

* remove all BAC_TEST unit tests in src/bacnet/ folder. They are now in test/bacnet/ folders using ztest.

* removed key.c - only used for unit test.

* produce XML test result output for parsing

* produce junit XML test result output

* change lint workflow to quality

* update readme badge for quality results

Co-authored-by: Steve Karg <skarg@users.sourceforge.net>
This commit is contained in:
Steve Karg
2022-02-28 20:09:46 -06:00
committed by GitHub
parent 585cdb4a7d
commit c3a4c229fe
182 changed files with 231 additions and 16779 deletions
+24 -240
View File
@@ -1,247 +1,31 @@
# Unit tests for the BACnet Stack project
# Main Makefile for BACnet-stack applications, tests, and sample ports
LOGFILE = test.log
# Export the variables defined here to all subprocesses
# (see http://www.gnu.org/software/automake/manual/make/Special-Targets.html)
.EXPORT_ALL_VARIABLES:
all: abort address arf awf bvlc bvlc6 bacapp bacdcode bacerror bacint bacstr \
cov crc datetime dcc event filename fifo getevent iam ihave \
indtext keylist key lighting lso memcopy npdu proplist ptransfer \
rd reject ringbuf rp rpm sbuf timesync vmac \
bbmd bbmd6 objects \
whohas whois wp
# all: demos router-ipv6 ${DEMO_LINUX}
clean: logfile
rm ${LOGFILE}
.PHONY: all
all: test
logfile:
touch ${LOGFILE}
BUILD_DIR=build
CTEST_OPTIONS := --quiet --output-on-failure --parallel 4
CTEST_OPTIONS += --output-junit test-results.xml
.PHONY: test
test:
[ -d $(BUILD_DIR) ] || mkdir -p $(BUILD_DIR)
[ -d $(BUILD_DIR) ] && cd $(BUILD_DIR) && cmake .. && cd ..
[ -d $(BUILD_DIR) ] && cd $(BUILD_DIR) && cmake --build . --clean-first && cd ..
[ -d $(BUILD_DIR) ] && cd $(BUILD_DIR) && ctest $(CTEST_OPTIONS)
[ -d $(BUILD_DIR) ] && $(MAKE) -C $(BUILD_DIR) lcov
.PHONY: report
report:
cat ${LOGFILE}
cat ${LOGFILE} | grep Failed: | \
awk 'BEGIN { err = 0 } $$2 > 0 { print "Unit Tests Failed!"; err = 1} \
END {exit err}'
[ -d $(BUILD_DIR) ] && cat $(BUILD_DIR)/Testing/Temporary/LastTest*.log
abort: logfile abort.mak
$(MAKE) -s -f abort.mak clean all
( ./abort >> ${LOGFILE} )
$(MAKE) -s -f abort.mak clean
address: logfile address.mak
$(MAKE) -s -f address.mak clean all
( ./address >> ${LOGFILE} )
$(MAKE) -s -f address.mak clean
arf: logfile arf.mak
$(MAKE) -s -f arf.mak clean all
( ./arf >> ${LOGFILE} )
$(MAKE) -s -f arf.mak clean
awf: logfile awf.mak
$(MAKE) -s -f awf.mak clean all
( ./awf >> ${LOGFILE} )
$(MAKE) -s -f awf.mak clean
bacapp: logfile bacapp.mak
$(MAKE) -s -f bacapp.mak clean all
( ./bacapp >> ${LOGFILE} )
$(MAKE) -s -f bacapp.mak clean
bacdcode: logfile bacdcode.mak
$(MAKE) -s -f bacdcode.mak clean all
( ./bacdcode >> ${LOGFILE} )
$(MAKE) -s -f bacdcode.mak clean
bacerror: logfile bacerror.mak
$(MAKE) -s -f bacerror.mak clean all
( ./bacerror >> ${LOGFILE} )
$(MAKE) -s -f bacerror.mak clean
bacint: logfile bacint.mak
$(MAKE) -s -f bacint.mak clean all
( ./bacint >> ${LOGFILE} )
$(MAKE) -s -f bacint.mak clean
bacreal: logfile bacnet/bacreal/Makefile
$(MAKE) -s -C bacnet/bacreal/ clean all
( ./bacnet/bacreal/unittest >> ${LOGFILE} )
$(MAKE) -s -C bacnet/bacreal/ clean
bacstr: logfile bacstr.mak
$(MAKE) -s -f bacstr.mak clean all
( ./bacstr >> ${LOGFILE} )
$(MAKE) -s -f bacstr.mak clean
bvlc: logfile bvlc.mak
$(MAKE) -s -f bvlc.mak clean all
( ./bvlc >> ${LOGFILE} )
$(MAKE) -s -f bvlc.mak clean
bbmd: logfile bacnet/basic/bbmd/Makefile
$(MAKE) -s -C bacnet/basic/bbmd/ clean all
( ./bacnet/basic/bbmd/unittest >> ${LOGFILE} )
$(MAKE) -s -C bacnet/basic/bbmd/ clean
bvlc6: logfile bvlc6.mak
$(MAKE) -s -f bvlc6.mak clean all
( ./bvlc6 >> ${LOGFILE} )
$(MAKE) -s -f bvlc6.mak clean
bbmd6: logfile bacnet/basic/bbmd6/Makefile
$(MAKE) -s -C bacnet/basic/bbmd6/ clean all
( ./bacnet/basic/bbmd6/unittest >> ${LOGFILE} )
$(MAKE) -s -C bacnet/basic/bbmd6/ clean
cov: logfile cov.mak
$(MAKE) -s -f cov.mak clean all
( ./cov >> ${LOGFILE} )
$(MAKE) -s -f cov.mak clean
crc: logfile crc.mak
$(MAKE) -s -f crc.mak clean all
( ./crc >> ${LOGFILE} )
$(MAKE) -s -f crc.mak clean
datetime: logfile datetime.mak
$(MAKE) -s -f datetime.mak clean all
( ./datetime >> ${LOGFILE} )
$(MAKE) -s -f datetime.mak clean
dcc: logfile dcc.mak
$(MAKE) -s -f dcc.mak clean all
( ./dcc >> ${LOGFILE} )
$(MAKE) -s -f dcc.mak clean
event: logfile event.mak
$(MAKE) -s -f event.mak clean all
( ./event >> ${LOGFILE} )
$(MAKE) -s -f event.mak clean
filename: logfile filename.mak
$(MAKE) -s -f filename.mak clean all
( ./filename >> ${LOGFILE} )
$(MAKE) -s -f filename.mak clean
fifo: logfile fifo.mak
$(MAKE) -s -f fifo.mak clean all
( ./fifo >> ${LOGFILE} )
$(MAKE) -s -f fifo.mak clean
getevent: logfile getevent.mak
$(MAKE) -s -f getevent.mak clean all
( ./getevent >> ${LOGFILE} )
$(MAKE) -s -f getevent.mak clean
iam: logfile iam.mak
$(MAKE) -s -f iam.mak clean all
( ./iam >> ${LOGFILE} )
$(MAKE) -s -f iam.mak clean
ihave: logfile ihave.mak
$(MAKE) -s -f ihave.mak clean all
( ./ihave >> ${LOGFILE} )
$(MAKE) -s -f ihave.mak clean
indtext: logfile indtext.mak
$(MAKE) -s -f indtext.mak clean all
( ./indtext >> ${LOGFILE} )
$(MAKE) -s -f indtext.mak clean
keylist: logfile keylist.mak
$(MAKE) -s -f keylist.mak clean all
( ./keylist >> ${LOGFILE} )
$(MAKE) -s -f keylist.mak clean
key: logfile key.mak
$(MAKE) -s -f key.mak clean all
( ./key >> ${LOGFILE} )
$(MAKE) -s -f key.mak clean
lighting: logfile lighting.mak
$(MAKE) -s -f lighting.mak clean all
( ./lighting >> ${LOGFILE} )
$(MAKE) -s -f lighting.mak clean
lso: logfile lso.mak
$(MAKE) -s -f lso.mak clean all
( ./lso >> ${LOGFILE} )
$(MAKE) -s -f lso.mak clean
memcopy: logfile memcopy.mak
$(MAKE) -s -f memcopy.mak clean all
( ./memcopy >> ${LOGFILE} )
$(MAKE) -s -f memcopy.mak clean
npdu: logfile npdu.mak
$(MAKE) -s -f npdu.mak clean all
( ./npdu >> ${LOGFILE} )
$(MAKE) -s -f npdu.mak clean
objects: logfile bacnet/basic/object/objects/Makefile
$(MAKE) -s -C bacnet/basic/object/objects/ clean all
( ./bacnet/basic/object/objects/unittest >> ${LOGFILE} )
$(MAKE) -s -C bacnet/basic/object/objects/ clean
proplist: logfile proplist.mak
$(MAKE) -s -f proplist.mak clean all
( ./proplist >> ${LOGFILE} )
$(MAKE) -s -f proplist.mak clean
ptransfer: logfile ptransfer.mak
$(MAKE) -s -f ptransfer.mak clean all
( ./ptransfer >> ${LOGFILE} )
$(MAKE) -s -f ptransfer.mak clean
rd: logfile rd.mak
$(MAKE) -s -f rd.mak clean all
( ./rd >> ${LOGFILE} )
$(MAKE) -s -f rd.mak clean
reject: logfile reject.mak
$(MAKE) -s -f reject.mak clean all
( ./reject >> ${LOGFILE} )
$(MAKE) -s -f reject.mak clean
ringbuf: logfile ringbuf.mak
$(MAKE) -s -f ringbuf.mak clean all
( ./ringbuf >> ${LOGFILE} )
$(MAKE) -s -f ringbuf.mak clean
rp: logfile rp.mak
$(MAKE) -s -f rp.mak clean all
( ./rp >> ${LOGFILE} )
$(MAKE) -s -f rp.mak clean
rpm: logfile rpm.mak
$(MAKE) -s -f rpm.mak clean all
( ./rpm >> ${LOGFILE} )
$(MAKE) -s -f rpm.mak clean
sbuf: logfile sbuf.mak
$(MAKE) -s -f sbuf.mak clean all
( ./sbuf >> ${LOGFILE} )
$(MAKE) -s -f sbuf.mak clean
timesync: logfile timesync.mak
$(MAKE) -s -f timesync.mak clean all
( ./timesync >> ${LOGFILE} )
$(MAKE) -s -f timesync.mak clean
vmac: logfile vmac.mak
$(MAKE) -s -f vmac.mak clean all
( ./vmac >> ${LOGFILE} )
$(MAKE) -s -f vmac.mak clean
whohas: logfile whohas.mak
$(MAKE) -s -f whohas.mak clean all
( ./whohas >> ${LOGFILE} )
$(MAKE) -s -f whohas.mak clean
whois: logfile whois.mak
$(MAKE) -s -f whois.mak clean all
( ./whois >> ${LOGFILE} )
$(MAKE) -s -f whois.mak clean
wp: logfile wp.mak
$(MAKE) -s -f wp.mak clean all
( ./wp >> ${LOGFILE} )
$(MAKE) -s -f wp.mak clean
.PHONY: clean
clean:
-rm -rf $(BUILD_DIR)