From 7baf24a0f8e9491a55e47734d5242821a360f1bc Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Thu, 1 Dec 2022 20:24:12 +0100 Subject: [PATCH] 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 --- mysql-test/README-gcov | 15 ++++----------- mysql-test/dgcov.pl | 9 +++++---- 2 files changed, 9 insertions(+), 15 deletions(-) diff --git a/mysql-test/README-gcov b/mysql-test/README-gcov index ba22a796423..64a97ce47e2 100644 --- a/mysql-test/README-gcov +++ b/mysql-test/README-gcov @@ -2,14 +2,7 @@ To be able to see the level of coverage with the current test suite, do the following: - Make sure gcov is installed - - Compile the MySQL distribution with BUILD/compile-pentium64-gcov (if your - machine does not have a pentium CPU, hack this script, or just live with - the pentium-specific stuff) - - In the mysql-test directory, run this command: ./mysql-test-run -gcov - - 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! + - Compile the MariaDB distribution with -DENABLE_GCOV=1 + - In the mysql-test directory, run this command: `./mysql-test-run --gcov` + - see var/last_changes.dgcov for the coverage of uncommitted code + - see `./dgcov -h` for more options diff --git a/mysql-test/dgcov.pl b/mysql-test/dgcov.pl index 7ef0a918a96..4adafd552fa 100755 --- a/mysql-test/dgcov.pl +++ b/mysql-test/dgcov.pl @@ -63,14 +63,14 @@ my $cmd; if ($opt_purge) { $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"; system($cmd)==0 or die "system($cmd): $? $!"; exit 0; } 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(\&write_coverage, $root) if $opt_generate; @@ -189,11 +189,12 @@ sub gcov_one_file { } } else { use IO::Uncompress::Gunzip qw(gunzip $GunzipError); - use JSON::PP; + require JSON::PP; my $gcov_file_json; my $fname; + s/\.gcda$// if $gcc_version >= 11; 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}}) { $fname= $file->{file}; for my $line (@{$file->{lines}}){