Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update coverage tool to manually filter some Fortran90 continuation lines #604

Merged
merged 2 commits into from
May 27, 2021
Merged
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
12 changes: 12 additions & 0 deletions cice.setup
Original file line number Diff line number Diff line change
Expand Up @@ -390,6 +390,18 @@ if ((${dosuite} == 1 || ${dotest} == 1) && ${testid} == ${spval}) then
exit -1
endif

# This creates a new sandbox and modifies the source code for "improved" lcov analysis
# Turn this if block off if you don't want coverage to do that
if ($coverage == 1) then
set sandbox_lcov = ${ICE_SANDBOX}/../cice_lcov_${sdate}-${stime}
cp -p -r ${ICE_SANDBOX} ${sandbox_lcov}
echo "shifting to sandbox = ${sandbox_lcov}"
set ICE_SANDBOX = ${sandbox_lcov}
set ICE_SCRIPTS = "${ICE_SANDBOX}/configuration/scripts"
cd ${ICE_SANDBOX}
${ICE_SCRIPTS}/tests/lcov_modify_source.sh
endif

#---------------------------------------------------------------------
# Setup tsfile and test suite support stuff

Expand Down
3 changes: 1 addition & 2 deletions cicecore/cicedynB/dynamics/ice_dyn_evp.F90
Original file line number Diff line number Diff line change
Expand Up @@ -361,8 +361,7 @@ subroutine evp (dt)
first_time = .false.
endif
if (trim(grid_type) == 'tripole') then
call abort_ice(trim(subname)//' &
& Kernel not tested on tripole grid. Set kevp_kernel=0')
call abort_ice(trim(subname)//' Kernel not tested on tripole grid. Set kevp_kernel=0')
endif
call ice_dyn_evp_1d_copyin( &
nx_block,ny_block,nblocks,nx_global+2*nghost,ny_global+2*nghost, &
Expand Down
44 changes: 44 additions & 0 deletions configuration/scripts/tests/lcov_modify_source.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
#!/bin/bash

filelist=`find cicecore icepack -type f -name "*.F90"`
LCOV_EXCL=" ! LCOV_EXCL_LINE"

#echo $filelist

for file in $filelist; do

echo $file
ofile=${file}.orig
nfile=${file}

mv ${file} ${file}.orig

# line by line making sure each line has a trailing newline (-n)
# preserve whitespace (IFS)
# and include backslashes (-r)
IFS=''
contblock=0
cat $ofile | while read -r line || [[ -n $line ]]; do

if [[ $contblock == 1 ]]; then
# in a continuation block
if [[ $line =~ ^.*"&".*$ ]]; then
# found another continuation line, add exclude string and write out line
echo ${line} ${LCOV_EXCL} >> ${nfile}
else
# continuation block ends, write out line
contblock=0
echo ${line} >> ${nfile}
fi
else
# not in a continuation block, write out line
echo ${line} >> ${nfile}
if [[ $line =~ ^\s*.*"&".*$ && ! $line =~ ^\s*( if ).*$ ]]; then
# new continuation block found
contblock=1
fi
fi

done

done
5 changes: 4 additions & 1 deletion doc/source/user_guide/ug_testing.rst
Original file line number Diff line number Diff line change
Expand Up @@ -715,7 +715,10 @@ This argument turns on special compiler flags including reduced optimization and
invokes the gcov tool. Once runs are complete, either lcov or codecov can be used
to analyze the results.
This option is currently only available with the gnu compiler and on a few systems
with modified Macros files.
with modified Macros files. In the current implementation, when ``--coverage`` is
invoked, the sandbox is copied to a new sandbox called something like cice_lcov_yymmdd-hhmmss.
The source code in the new sandbox is modified slightly to improve coverage statistics
and the full coverage suite is run there.

At the present time, the ``--coverage`` flag invokes the lcov analysis automatically
by running the **report_lcov.csh** script in the test suite directory. The output
Expand Down