summaryrefslogtreecommitdiff
blob: eb1f8625d34e9529db272f215a50a2b4848ce588 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
https://bugs.gentoo.org/874345
https://github.com/doctest/doctest/pull/770
https://github.com/doctest/doctest/issues/711

commit 1ffb66bff7533f7ea42d801facf1b87d72621ac5
Author: matoro <matoro@users.noreply.github.com>
Date:   Sat Apr 15 11:15:25 2023 -0400

    Add sleep of one clock-resolution to test which should trigger timeout
    
    Fixes https://github.com/doctest/doctest/issues/711 under HPPA, and
    partially under alpha.

diff --git a/examples/all_features/CMakeLists.txt b/examples/all_features/CMakeLists.txt
index ebc75c2..4556227 100644
--- a/examples/all_features/CMakeLists.txt
+++ b/examples/all_features/CMakeLists.txt
@@ -39,6 +39,12 @@ set(files_all
 # add the executable
 add_executable(all_features ${files_all})
 target_link_libraries(all_features doctest ${CMAKE_THREAD_LIBS_INIT})
+if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
+    target_link_options(all_features PRIVATE "-rtlib=compiler-rt")
+    if(LINUX)
+        target_link_libraries(all_features "-lgcc_s")
+    endif()
+endif()
 
 # easy way to fix test coverage - disable colors and crash handling
 target_compile_definitions(all_features PRIVATE
@@ -124,6 +130,12 @@ function(add_test_all_features test_name flags)
     add_executable(${test_name} ${files_with_output})
     target_compile_definitions(${test_name} PRIVATE ${flags})
     target_link_libraries(${test_name} doctest ${CMAKE_THREAD_LIBS_INIT})
+    if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
+        target_link_options(${test_name} PRIVATE "-rtlib=compiler-rt")
+        if(LINUX)
+            target_link_libraries(${test_name} "-lgcc_s")
+        endif()
+    endif()
 
     doctest_add_test_impl(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}> --no-skipped-summary --no-version -ob=name)
 endfunction()
diff --git a/examples/all_features/test_cases_and_suites.cpp b/examples/all_features/test_cases_and_suites.cpp
index 13b316d..d87f2fd 100644
--- a/examples/all_features/test_cases_and_suites.cpp
+++ b/examples/all_features/test_cases_and_suites.cpp
@@ -2,6 +2,12 @@
 
 #include "header.h"
 
+DOCTEST_MAKE_STD_HEADERS_CLEAN_FROM_WARNINGS_ON_WALL_BEGIN
+#include <chrono>
+#include <ctime>
+#include <thread>
+DOCTEST_MAKE_STD_HEADERS_CLEAN_FROM_WARNINGS_ON_WALL_END
+
 static int doStuff() {
     int a = 5;
     a += 2;
@@ -46,6 +52,11 @@ TEST_CASE_FIXTURE(SomeFixture, "fixtured test - not part of a test suite") {
 
 TEST_CASE("normal test in a test suite from a decorator" * doctest::test_suite("ts1") *
           doctest::timeout(0.000001)) {
+#ifndef _WIN32
+    struct timespec res{};
+    clock_getres(CLOCK_MONOTONIC, &res);
+    std::this_thread::sleep_for(std::chrono::nanoseconds(res.tv_nsec));
+#endif
     MESSAGE("failing because of the timeout decorator!");
 }