mirror of
git://sourceware.org/git/libabigail.git
synced 2025-02-13 03:57:33 +00:00
This patch adds the Catch [1] unit test framework in version v1.12.2 [2] along with its integration into the existing build and test definition. While there is version v2 available, v1 still supports C++98, hence we can make use of it. The framework is distributed as a single header file. And since it is less then 500k and it comes with a permissive license, I decided to directly add the file rather than requiring users/developers/distributors to satisfy the new dependency. The integration is fairly simple: A new library libcatch.a provides the `main` for the tests that run with Catch. The tests themselves require to include the header as well and to link against said library. As an example I migrated the test-kmi-whitelist test to Catch. The test becomes a bit more structured and error reporting significantly improved. E.g. see this intentional breakage: | --- a/tests/test-kmi-whitelist.cc | +++ b/tests/test-kmi-whitelist.cc | @@ -140,5 +140,5 @@ TEST_CASE("WhitelistWithTwoSections", "[whitelists]") | suppressions_type suppr | = gen_suppr_spec_from_kernel_abi_whitelists(abi_whitelist_paths); | REQUIRE(!suppr.empty()); | - test_suppressions_are_consistent(suppr, "^test_symbol1$|^test_symbol2$"); | + test_suppressions_are_consistent(suppr, "^test_symbol$|^test_symbol2$"); It leads to this test output: | --------------------------------------------------------------------------- | WhitelistWithTwoSections | --------------------------------------------------------------------------- | ../../tests/test-kmi-whitelist.cc:136 | ........................................................................... | | ../../tests/test-kmi-whitelist.cc:81: FAILED: | REQUIRE( left->get_symbol_name_not_regex_str() == expr ) | with expansion: | "^test_symbol1$|^test_symbol2$" | == | "^test_symbol$|^test_symbol2$" | | =========================================================================== | test cases: 6 | 5 passed | 1 failed | assertions: 41 | 40 passed | 1 failed [1] https://github.com/catchorg/Catch2 [2] https://github.com/catchorg/Catch2/releases/tag/v1.12.2 * tests/.gitignore: Add entry for .dirstamp * tests/Makefile.am: Add libcatch test library and use it for runtestkmiwhitelist. * tests/lib/catch.cc: New test driver implementation. * tests/lib/catch.hpp: Add Catch v1.12.2 header only test library. * tests/test-kmi-whitelist.cc: Migrate to use Catch test framework. Reviewed-by: Dodji Seketeli <dodji@seketeli.org> Signed-off-by: Matthias Maennich <maennich@google.com>
29 lines
1021 B
C++
29 lines
1021 B
C++
// -*- Mode: C++ -*-
|
|
//
|
|
// Copyright (C) 2020 Google, Inc.
|
|
//
|
|
// This file is part of the GNU Application Binary Interface Generic
|
|
// Analysis and Instrumentation Library (libabigail). This library is
|
|
// free software; you can redistribute it and/or modify it under the
|
|
// terms of the GNU Lesser General Public License as published by the
|
|
// Free Software Foundation; either version 3, or (at your option) any
|
|
// later version.
|
|
|
|
// This library is distributed in the hope that it will be useful, but
|
|
// WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
// General Lesser Public License for more details.
|
|
|
|
// You should have received a copy of the GNU Lesser General Public
|
|
// License along with this program; see the file COPYING-LGPLV3. If
|
|
// not, see <http://www.gnu.org/licenses/>.
|
|
|
|
// Author: Matthias Maennich
|
|
|
|
/// @file
|
|
///
|
|
/// This implements `main` for catch based test programs.
|
|
|
|
#define CATCH_CONFIG_MAIN
|
|
#include "lib/catch.hpp"
|