mirror of
https://github.com/catchorg/Catch2.git
synced 2024-11-04 13:19:55 +01:00
Test for --min-duration
This commit is contained in:
parent
46fde0c597
commit
53d8af8e96
@ -27,6 +27,7 @@ set(TEST_SOURCES
|
|||||||
${SELF_TEST_DIR}/IntrospectiveTests/StringManip.tests.cpp
|
${SELF_TEST_DIR}/IntrospectiveTests/StringManip.tests.cpp
|
||||||
${SELF_TEST_DIR}/IntrospectiveTests/Xml.tests.cpp
|
${SELF_TEST_DIR}/IntrospectiveTests/Xml.tests.cpp
|
||||||
${SELF_TEST_DIR}/IntrospectiveTests/ToString.tests.cpp
|
${SELF_TEST_DIR}/IntrospectiveTests/ToString.tests.cpp
|
||||||
|
${SELF_TEST_DIR}/TimingTests/Sleep.tests.cpp
|
||||||
${SELF_TEST_DIR}/UsageTests/Approx.tests.cpp
|
${SELF_TEST_DIR}/UsageTests/Approx.tests.cpp
|
||||||
${SELF_TEST_DIR}/UsageTests/BDD.tests.cpp
|
${SELF_TEST_DIR}/UsageTests/BDD.tests.cpp
|
||||||
${SELF_TEST_DIR}/UsageTests/Benchmark.tests.cpp
|
${SELF_TEST_DIR}/UsageTests/Benchmark.tests.cpp
|
||||||
|
23
projects/SelfTest/TimingTests/Sleep.tests.cpp
Normal file
23
projects/SelfTest/TimingTests/Sleep.tests.cpp
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2011 Two Blue Cubes Ltd. All rights reserved.
|
||||||
|
*
|
||||||
|
* Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
|
* file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "catch.hpp"
|
||||||
|
|
||||||
|
#include <chrono>
|
||||||
|
#include <thread>
|
||||||
|
|
||||||
|
TEST_CASE( "sleep_for_100ms", "[.min_duration_test][approvals]" )
|
||||||
|
{
|
||||||
|
std::this_thread::sleep_for( std::chrono::milliseconds( 100 ) );
|
||||||
|
CHECK( true );
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_CASE( "sleep_for_200ms", "[.min_duration_test][approvals]" )
|
||||||
|
{
|
||||||
|
std::this_thread::sleep_for( std::chrono::milliseconds( 200 ) );
|
||||||
|
CHECK( true );
|
||||||
|
}
|
41
projects/TestScripts/testTimeThreshold.py
Normal file
41
projects/TestScripts/testTimeThreshold.py
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
import subprocess
|
||||||
|
import sys
|
||||||
|
|
||||||
|
def run_tests_with_threshold(self_test_exe, threshold):
|
||||||
|
cmd = [self_test_exe, '--min-duration', str(threshold),
|
||||||
|
'[min_duration_test]']
|
||||||
|
process = subprocess.Popen(
|
||||||
|
cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
||||||
|
stdout, stderr = process.communicate()
|
||||||
|
if stderr:
|
||||||
|
raise RuntimeError("Unexpected error output:\n" +
|
||||||
|
stderr.decode())
|
||||||
|
if process.returncode != 0:
|
||||||
|
raise RuntimeError("Unexpected failure to run tests\n")
|
||||||
|
result = stdout.split(b'\n')
|
||||||
|
report_lines = [s.split() for s in result if b' s: ' in s]
|
||||||
|
tests_reported = [l[2] for l in report_lines]
|
||||||
|
times_reported = [float(l[0]) for l in report_lines]
|
||||||
|
return tests_reported, times_reported
|
||||||
|
|
||||||
|
def check_times_at_least(times_reported, minimum):
|
||||||
|
for time in times_reported:
|
||||||
|
assert time >= minimum, (
|
||||||
|
'Time {} was less that requested minimum {}' .format(
|
||||||
|
time, minimum))
|
||||||
|
|
||||||
|
def main():
|
||||||
|
self_test_exe, = sys.argv[1:]
|
||||||
|
tests, times = run_tests_with_threshold(self_test_exe, '0.15')
|
||||||
|
assert tests == [b'sleep_for_200ms'], (
|
||||||
|
"Unexpected tests reported %s" % tests)
|
||||||
|
check_times_at_least(times, 0.15)
|
||||||
|
tests,times = run_tests_with_threshold(self_test_exe, '0')
|
||||||
|
assert tests == [b'sleep_for_100ms', b'sleep_for_200ms'], (
|
||||||
|
"Unexpected tests reported %s" % tests)
|
||||||
|
check_times_at_least(times, 0)
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
sys.exit(main())
|
Loading…
Reference in New Issue
Block a user