mirror of
https://github.com/MariaDB/server.git
synced 2025-07-17 12:02:09 +03:00
MDEV-26102 followup
* update README * fix version regex to support versions with two digits * die if the version cannot be parsed * support gcc versions 11+ * require JSON::PP not use, to avoid introducing new rpm dependency into MariaDB-test
This commit is contained in:
@ -2,14 +2,7 @@ To be able to see the level of coverage with the current test suite,
|
|||||||
do the following:
|
do the following:
|
||||||
|
|
||||||
- Make sure gcov is installed
|
- Make sure gcov is installed
|
||||||
- Compile the MySQL distribution with BUILD/compile-pentium64-gcov (if your
|
- Compile the MariaDB distribution with -DENABLE_GCOV=1
|
||||||
machine does not have a pentium CPU, hack this script, or just live with
|
- In the mysql-test directory, run this command: `./mysql-test-run --gcov`
|
||||||
the pentium-specific stuff)
|
- see var/last_changes.dgcov for the coverage of uncommitted code
|
||||||
- In the mysql-test directory, run this command: ./mysql-test-run -gcov
|
- see `./dgcov -h` for more options
|
||||||
- To see the level of coverage for a given source file:
|
|
||||||
grep -1 source_file_name ../mysql-test-gcov.msg
|
|
||||||
- To see which lines are not yet covered, look at source_file_name.gcov in
|
|
||||||
the source tree. You can find this by doing something like:
|
|
||||||
find source-directory -name "mysqld.cc.gcov"
|
|
||||||
Then think hard about a test case that will cover those lines, and write
|
|
||||||
one!
|
|
||||||
|
@ -63,14 +63,14 @@ my $cmd;
|
|||||||
if ($opt_purge)
|
if ($opt_purge)
|
||||||
{
|
{
|
||||||
$cmd= "find . -name '*.da' -o -name '*.gcda*' -o -name '*.gcov' -o ".
|
$cmd= "find . -name '*.da' -o -name '*.gcda*' -o -name '*.gcov' -o ".
|
||||||
"-name '*.dgcov' | grep -v 'README\.gcov' | xargs rm -f ''";
|
"-name '*.dgcov' | xargs rm -f ''";
|
||||||
logv "Running: $cmd";
|
logv "Running: $cmd";
|
||||||
system($cmd)==0 or die "system($cmd): $? $!";
|
system($cmd)==0 or die "system($cmd): $? $!";
|
||||||
exit 0;
|
exit 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
my $gcc_version= `gcc -dumpversion`;
|
my $gcc_version= `gcc -dumpversion`;
|
||||||
$gcc_version=~ s/(\d).*$/$1/;
|
$gcc_version=~ s/^(\d+)\..*$/$1/ or die "Cannot parse gcc -dumpversion: $gcc_version";
|
||||||
|
|
||||||
find(\&gcov_one_file, $root);
|
find(\&gcov_one_file, $root);
|
||||||
find(\&write_coverage, $root) if $opt_generate;
|
find(\&write_coverage, $root) if $opt_generate;
|
||||||
@ -189,11 +189,12 @@ sub gcov_one_file {
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
use IO::Uncompress::Gunzip qw(gunzip $GunzipError);
|
use IO::Uncompress::Gunzip qw(gunzip $GunzipError);
|
||||||
use JSON::PP;
|
require JSON::PP;
|
||||||
my $gcov_file_json;
|
my $gcov_file_json;
|
||||||
my $fname;
|
my $fname;
|
||||||
|
s/\.gcda$// if $gcc_version >= 11;
|
||||||
gunzip "$_.gcov.json.gz" => \$gcov_file_json or die "gunzip($_.gcov.json.gz): $GunzipError";
|
gunzip "$_.gcov.json.gz" => \$gcov_file_json or die "gunzip($_.gcov.json.gz): $GunzipError";
|
||||||
my $obj= decode_json $gcov_file_json;
|
my $obj= JSON::PP::decode_json $gcov_file_json;
|
||||||
for my $file (@{$obj->{files}}) {
|
for my $file (@{$obj->{files}}) {
|
||||||
$fname= $file->{file};
|
$fname= $file->{file};
|
||||||
for my $line (@{$file->{lines}}){
|
for my $line (@{$file->{lines}}){
|
||||||
|
Reference in New Issue
Block a user