Skip to content

Commit ffd1c1c

Browse files
authored
Port tests to run under git, perforce, or independently (from installation).
Signed-off-by: Henry Cox <[email protected]>
1 parent 5bdf2f5 commit ffd1c1c

File tree

28 files changed

+418
-2181
lines changed

28 files changed

+418
-2181
lines changed

scripts/P4version.pm

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,14 @@ sub new
148148
die("unexpected p4 have line '$_'");
149149
}
150150
}
151-
close(P4) or die("error on close 'p4 have' pipe: $!");
151+
unless (close(P4)) {
152+
# there might not be a repo here..
153+
die("error on close 'p4 have' pipe: $!") if %filehash;
154+
$depot = '.' unless $depot;
155+
lcovutil::ignorable_error($lcovutil::ERROR_USAGE,
156+
"'$depot' seems to not be a perforce repo.");
157+
goto done;
158+
}
152159

153160
open(WHERE, '-|', "$cd p4 where $depot") or
154161
die("unable to execute p4 where: $!");
@@ -199,6 +206,7 @@ sub new
199206
}
200207
close(EDITS) or die("error on close 'p4 opened' pipe: $!");
201208

209+
done:
202210
my $self =
203211
[$allow_missing, $local_edit, $use_md5, $prefix, $depot, \%filehash];
204212
return bless $self, $class;

tests/common.mak

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ endif
2727
TESTBINDIR := $(TOPDIR)bin
2828

2929
IS_GIT := $(shell git -C $(TOPDIR) rev-parse 2>&1 > /dev/null ; if [ 0 -eq $$? ]; then echo 1 ; else echo 0 ; fi)
30+
IS_P4 = $(shell p4 have ... 2>&1 > /dev/null ; if [ 0 -eq $$? ]; then echo 1 ; else echo 0 ; fi)
3031

3132
ifeq (1,$(IS_GIT))
3233
ANNOTATE_SCRIPT=$(SCRIPTDIR)/gitblame.pm

tests/common.tst

Lines changed: 163 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,163 @@
1+
# common utility for testing - mainly argument parsing
2+
3+
CLEAN_ONLY=0
4+
COVER=
5+
6+
PARALLEL='--parallel 0'
7+
PROFILE="--profile"
8+
LOCAL_COVERAGE=1
9+
KEEP_GOING=0
10+
11+
#echo "CMD: $0 $@"
12+
13+
while [ $# -gt 0 ] ; do
14+
15+
OPT=$1
16+
shift
17+
case $OPT in
18+
19+
--clean | clean )
20+
CLEAN_ONLY=1
21+
;;
22+
23+
-v | --verbose | verbose )
24+
set -x
25+
;;
26+
27+
--keep-going | -k )
28+
KEEP_GOING=1
29+
;;
30+
31+
--coverage )
32+
if [[ "$1"x != 'x' && $1 != "-"* ]] ; then
33+
COVER_DB=$1
34+
LOCAL_COVERAGE=0
35+
shift
36+
else
37+
COVER_DB='cover_db.dat'
38+
fi
39+
export PYCOV_DB="${COVER_DB}_py"
40+
COVER="perl -MDevel::Cover=-db,${COVER_DB},-coverage,statement,branch,condition,subroutine,-silent,1 "
41+
42+
if [ '' != "${COVERAGE_COMMAND}" ] ; then
43+
CMD=${COVERAGE_COMMAND}
44+
else
45+
CMD='coverage'
46+
which $CMD
47+
if [ 0 != $? ] ; then
48+
CMD='python3-coverage' # ubuntu?
49+
fi
50+
fi
51+
which $CMD
52+
if [ 0 != $? ] ; then
53+
echo "cannot find 'coverage' or 'python3-coverage'"
54+
echo "unable to run py2lcov - please install python Coverage.py package"
55+
exit 1
56+
fi
57+
58+
PYCOVER="COVERAGE_FILE=$PYCOV_DB $CMD run --branch --append"
59+
;;
60+
61+
--home | -home )
62+
LCOV_HOME=$1
63+
shift
64+
if [ ! -f $LCOV_HOME/bin/lcov ] ; then
65+
echo "LCOV_HOME '$LCOV_HOME' does not exist"
66+
exit 1
67+
fi
68+
;;
69+
70+
--no-parallel )
71+
PARALLEL=''
72+
;;
73+
74+
--no-profile )
75+
PROFILE=''
76+
;;
77+
78+
--llvm )
79+
LLVM=1
80+
module load como/tools/llvm-gnu/11.0.0-1
81+
# seems to have been using same gcov version as gcc/4.8.3
82+
module load gcc/4.8.3
83+
#EXTRA_GCOV_OPTS="--gcov-tool '\"llvm-cov gcov\"'"
84+
CXX="clang++"
85+
;;
86+
87+
* )
88+
echo "Error: unexpected option '$OPT'"
89+
exit 1
90+
;;
91+
esac
92+
done
93+
94+
if [[ "x" == ${LCOV_HOME}x ]] ; then
95+
if [ -f ../../../bin/lcov ] ; then
96+
LCOV_HOME=../../..
97+
else
98+
LCOV_HOME=../../../../releng/coverage/lcov
99+
fi
100+
fi
101+
LCOV_HOME=`(cd ${LCOV_HOME} ; pwd)`
102+
103+
if [[ ! ( -d $LCOV_HOME/bin && -d $LCOV_HOME/lib && -x $LCOV_HOME/bin/genhtml && ( -f $LCOV_HOME/lib/lcovutil.pm || -f $LCOV_HOME/lib/lcov/lcovutil.pm ) ) ]] ; then
104+
echo "LCOV_HOME '$LCOV_HOME' seems not to be valid"
105+
exit 1
106+
fi
107+
108+
export PATH=${LCOV_HOME}/bin:${LCOV_HOME}/share:${PATH}
109+
export MANPATH=${MANPATH}:${LCOV_HOME}/man
110+
111+
ROOT=`pwd`
112+
PARENT=`(cd .. ; pwd)`
113+
if [ -f $LCOV_HOME/scripts/getp4version ] ; then
114+
SCRIPT_DIR=$LCOV_HOME/scripts
115+
else
116+
# running test from lcov install
117+
SCRIPT_DIR=$LCOV_HOME/share/lcov/support-scripts
118+
MD5_OPT='--version-script --md5'
119+
fi
120+
if [ 'x' == "x$GENHTML_TOOL" ] ; then
121+
GENHTML_TOOL=${LCOV_HOME}/bin/genhtml
122+
LCOV_TOOL=${LCOV_HOME}/bin/lcov
123+
GENINFO_TOOL=${LCOV_HOME}/bin/geninfo
124+
SPREADSHEET_TOOL=${SCRIPT_DIR}/spreadsheet.py
125+
LLVM2LCOV_TOOL=${LCOV_HOME}/bin/llvm2lcov
126+
PERL2LCOV_TOOL=${LCOV_HOME}/bin/perl2lcov
127+
PY2LCOV_TOOL=${LCOV_HOME}/bin/py2lcov
128+
XML2LCOV_TOOL=${LCOV_HOME}/bin/xml2lcov
129+
fi
130+
131+
# is this git or P4?
132+
IS_GIT=0
133+
IS_P4=0
134+
git -C . rev-parse > /dev/null 2>&1
135+
if [ 0 == $? ] ; then
136+
# this is git
137+
IS_GIT=1
138+
USE_GIT=1
139+
GET_VERSION=${SCRIPT_DIR}/gitversion.pm
140+
GET_VERSION_EXE=${SCRIPT_DIR}/gitversion
141+
ANNOTATE=${SCRIPT_DIR}/gitblame.pm
142+
else
143+
p4 have ... > /dev/null 2>&1
144+
if [ 0 == $? ] ; then
145+
IS_P4=1
146+
fi
147+
USE_P4=1
148+
GET_VERSION=${SCRIPT_DIR}/getp4version
149+
GET_VERSION_EXE=${SCRIPT_DIR}/getp4version
150+
ANNOTATE=${SCRIPT_DIR}/p4annotate.pm
151+
fi
152+
CRITERIA=${SCRIPT_DIR}/criteria
153+
SELECT=${SCRIPT_DIR}/select.pm
154+
155+
function clean_cover()
156+
{
157+
if [ "x$COVER" != 'x' ] && [ 0 != $LOCAL_COVERAGE ] ; then
158+
if [ -d $COVER_DB ] ; then
159+
cover -delete -db $COVER_DB
160+
fi
161+
rm -rf $PYCOV_DB
162+
fi
163+
}

0 commit comments

Comments
 (0)