Add error message if test suite cannot be found (#3585)

* 🚸 add error message if test suite cannot be found

Fixes #3584
pull/3592/head
Niels Lohmann 2022-07-20 12:41:33 +02:00 committed by GitHub
parent 527da54dcb
commit feef0eb595
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
17 changed files with 53 additions and 15 deletions

View File

@ -1790,6 +1790,22 @@ $ ctest --output-on-failure
Note that during the `ctest` stage, several JSON test files are downloaded from an [external repository](https://github.com/nlohmann/json_test_data). If policies forbid downloading artifacts during testing, you can download the files yourself and pass the directory with the test files via `-DJSON_TestDataDirectory=path` to CMake. Then, no Internet connectivity is required. See [issue #2189](https://github.com/nlohmann/json/issues/2189) for more information.
If the test suite is not found, several test suites will fail like this:
```
===============================================================================
json/tests/src/make_test_data_available.hpp:21:
TEST CASE: check test suite is downloaded
json/tests/src/make_test_data_available.hpp:23: FATAL ERROR: REQUIRE( utils::check_testsuite_downloaded() ) is NOT correct!
values: REQUIRE( false )
logged: Test data not found in 'json/cmake-build-debug/json_test_data'.
Please execute target 'download_test_data' before running this test suite.
See <https://github.com/nlohmann/json#execute-unit-tests> for more information.
===============================================================================
```
In case you have downloaded the library rather than checked out the code via Git, test `cmake_fetch_content_configure` will fail. Please execute `ctest -LE git_required` to skip these tests. See [issue #2189](https://github.com/nlohmann/json/issues/2189) for more information.
Some tests change the installed files and hence make the whole process not reproducible. Please execute `ctest -LE not_reproducible` to skip these tests. See [issue #2324](https://github.com/nlohmann/json/issues/2324) for more information.

View File

@ -0,0 +1,22 @@
#pragma once
#include <cstdio> // fopen, fclose, FILE
#include <memory> // unique_ptr
#include <test_data.hpp>
#include <doctest.h>
namespace utils
{
inline bool check_testsuite_downloaded()
{
std::unique_ptr<std::FILE, decltype(&std::fclose)> file(std::fopen(TEST_DATA_DIRECTORY "/README.md", "r"), &std::fclose);
return file != nullptr;
}
TEST_CASE("check test suite is downloaded")
{
REQUIRE_MESSAGE(utils::check_testsuite_downloaded(), "Test data not found in '" TEST_DATA_DIRECTORY "'. Please execute target 'download_test_data' before running this test suite. See <https://github.com/nlohmann/json#execute-unit-tests> for more information.");
}
} // namespace utils

View File

@ -12,7 +12,7 @@
using nlohmann::json;
#include <fstream>
#include <test_data.hpp>
#include "make_test_data_available.hpp"
TEST_CASE("Binary Formats" * doctest::skip())
{

View File

@ -16,7 +16,7 @@ using nlohmann::json;
#include <iostream>
#include <fstream>
#include <set>
#include <test_data.hpp>
#include "make_test_data_available.hpp"
#include "test_utils.hpp"
namespace

View File

@ -13,7 +13,7 @@ using nlohmann::json;
#include <fstream>
#include <sstream>
#include <test_data.hpp>
#include "make_test_data_available.hpp"
#include "test_utils.hpp"
TEST_CASE("BSON")

View File

@ -16,7 +16,7 @@ using nlohmann::json;
#include <iomanip>
#include <iostream>
#include <set>
#include <test_data.hpp>
#include "make_test_data_available.hpp"
#include "test_utils.hpp"
namespace

View File

@ -13,7 +13,7 @@ using nlohmann::json;
#include <fstream>
#include <sstream>
#include <test_data.hpp>
#include "make_test_data_available.hpp"
TEST_CASE("object inspection")
{

View File

@ -12,7 +12,7 @@
using nlohmann::json;
#include <fstream>
#include <test_data.hpp>
#include "make_test_data_available.hpp"
TEST_CASE("JSON patch")
{

View File

@ -15,7 +15,7 @@ using nlohmann::json;
#include <sstream>
#include <iomanip>
#include <set>
#include <test_data.hpp>
#include "make_test_data_available.hpp"
#include "test_utils.hpp"
namespace

View File

@ -19,7 +19,7 @@ using nlohmann::json;
#include <sstream>
#include <list>
#include <cstdio>
#include <test_data.hpp>
#include "make_test_data_available.hpp"
#ifdef JSON_HAS_CPP_17
#include <variant>

View File

@ -12,7 +12,7 @@
using nlohmann::json;
#include <fstream>
#include <test_data.hpp>
#include "make_test_data_available.hpp"
TEST_CASE("compliance tests from json.org")
{

View File

@ -14,7 +14,7 @@ using nlohmann::json;
#include <iostream>
#include <fstream>
#include <set>
#include <test_data.hpp>
#include "make_test_data_available.hpp"
#include "test_utils.hpp"
namespace

View File

@ -16,7 +16,7 @@ using nlohmann::json;
#include <fstream>
#include <sstream>
#include <iomanip>
#include <test_data.hpp>
#include "make_test_data_available.hpp"
TEST_CASE("Unicode (1/5)" * doctest::skip())
{

View File

@ -18,7 +18,7 @@ using nlohmann::json;
#include <sstream>
#include <iostream>
#include <iomanip>
#include <test_data.hpp>
#include "make_test_data_available.hpp"
// this test suite uses static variables with non-trivial destructors
DOCTEST_CLANG_SUPPRESS_WARNING_PUSH

View File

@ -18,7 +18,7 @@ using nlohmann::json;
#include <sstream>
#include <iostream>
#include <iomanip>
#include <test_data.hpp>
#include "make_test_data_available.hpp"
// this test suite uses static variables with non-trivial destructors
DOCTEST_CLANG_SUPPRESS_WARNING_PUSH

View File

@ -18,7 +18,7 @@ using nlohmann::json;
#include <sstream>
#include <iostream>
#include <iomanip>
#include <test_data.hpp>
#include "make_test_data_available.hpp"
// this test suite uses static variables with non-trivial destructors
DOCTEST_CLANG_SUPPRESS_WARNING_PUSH

View File

@ -18,7 +18,7 @@ using nlohmann::json;
#include <sstream>
#include <iostream>
#include <iomanip>
#include <test_data.hpp>
#include "make_test_data_available.hpp"
// this test suite uses static variables with non-trivial destructors
DOCTEST_CLANG_SUPPRESS_WARNING_PUSH