File tree Expand file tree Collapse file tree 5 files changed +148
-0
lines changed
Utilities/ReleaseScripts/test Expand file tree Collapse file tree 5 files changed +148
-0
lines changed Original file line number Diff line number Diff line change 77<test name =" test-cmsTraceFunction-setenv" command =" gdb/test-cmsTraceFunction-setenv.sh" >
88 <use name =" gdb" />
99</test >
10+ <test name =" test-cmsTraceFunction-failure" command =" gdb/test-cmsTraceFunction-failure.sh" >
11+ <use name =" gdb" />
12+ </test >
1013<test name =" test-clang-tidy" command =" test-clang-tidy.sh" >
1114 <use name =" llvm" />
1215</test >
Original file line number Diff line number Diff line change 1+ #include < iostream>
2+ #include < cassert>
3+ #include < cstdlib>
4+
5+ class ScheduleItems {
6+ public:
7+ ScheduleItems () {}
8+ void initMisc ();
9+ };
10+
11+ void ScheduleItems::initMisc () { std::cout << " ScheduleItems::initMisc() called" << std::endl; }
12+
13+ void my_assert () { assert (false && " Intentional assert failure" ); }
14+
15+ int main (int argc, char ** argv) {
16+ if (argc > 1 ) {
17+ std::string_view opt{argv[1 ]};
18+ if (opt == " before" ) {
19+ my_assert ();
20+ } else if (opt == " after" ) {
21+ ScheduleItems obj;
22+ obj.initMisc ();
23+ my_assert ();
24+ }
25+ }
26+ return 0 ;
27+ }
Original file line number Diff line number Diff line change 1+ #! /bin/bash -ex
2+
3+ TRACE=" cmsTraceFunction --startAfterFunction ScheduleItems::initMisc setenv"
4+
5+ check_failure () {
6+ local test_name=" $1 "
7+ local check_func=" $2 "
8+ local exe_name=" test-cmsTraceFunction-${test_name} "
9+ local src_name=" ${exe_name} .cpp"
10+
11+ g++ -o " $exe_name " " $( dirname $0 ) /$src_name "
12+
13+ for when in before after; do
14+ local log=" ${test_name} _${when} .log"
15+ set +e
16+ $TRACE ./$exe_name $when 2>&1 > " $log "
17+ local ret=$?
18+ set -e
19+
20+ if [ ${ret} = 0 ]; then
21+ echo " cmsTraceFunction for ${test_name} ${when} exited with exit code 0, expected non-zero exit code"
22+ exit 1
23+ fi
24+
25+ if [ -n " ${check_func} " ]; then
26+ ${check_func} ${log}
27+ fi
28+ done
29+
30+ log_after=" ${test_name} _after.log"
31+ if ! grep -q " ScheduleItems::initMisc() called" ${log_after} ; then
32+ echo " Did not find expected ScheduleItems::initMisc call in ${log_after} "
33+ exit 1
34+ fi
35+ }
36+
37+ # Non-zero exit code
38+ check_failure " nonzero"
39+
40+ # Assertion failure
41+ check_assert_log () {
42+ local logfile=" $1 "
43+ if ! grep -q " signal SIGABRT" ${logfile} ; then
44+ echo " Did not find signal message in ${logfile} "
45+ exit 1
46+ fi
47+ if ! grep -q " in my_assert" ${logfile} ; then
48+ echo " Did not find my_assert function stack trace in ${logfile} "
49+ exit 1
50+ fi
51+ }
52+ check_failure " assert" check_assert_log
53+
54+ # Segfault
55+ check_segfault_log () {
56+ local logfile=" $1 "
57+ if ! grep -q " signal SIGSEGV" ${logfile} ; then
58+ echo " Did not find signal message in ${logfile} "
59+ exit 1
60+ fi
61+ if ! grep -q " in my_segfault" ${logfile} ; then
62+ echo " Did not find my_segfault function in stack trace in ${logfile} "
63+ exit 1
64+ fi
65+ }
66+ check_failure " segfault"
Original file line number Diff line number Diff line change 1+ #include < iostream>
2+ #include < cstdlib>
3+
4+ class ScheduleItems {
5+ public:
6+ ScheduleItems () {}
7+ void initMisc ();
8+ };
9+
10+ void ScheduleItems::initMisc () { std::cout << " ScheduleItems::initMisc() called" << std::endl; }
11+
12+ int main (int argc, char ** argv) {
13+ if (argc > 1 ) {
14+ std::string_view opt{argv[1 ]};
15+ if (opt == " before" ) {
16+ return 1 ;
17+ } else if (opt == " after" ) {
18+ ScheduleItems obj;
19+ obj.initMisc ();
20+ return 1 ;
21+ }
22+ }
23+ return 0 ;
24+ }
Original file line number Diff line number Diff line change 1+ #include < iostream>
2+ #include < cassert>
3+ #include < cstdlib>
4+ #include < csignal>
5+
6+ class ScheduleItems {
7+ public:
8+ ScheduleItems () {}
9+ void initMisc ();
10+ };
11+
12+ void ScheduleItems::initMisc () { std::cout << " ScheduleItems::initMisc() called" << std::endl; }
13+
14+ void my_segfault () { raise (SIGSEGV); }
15+
16+ int main (int argc, char ** argv) {
17+ if (argc > 1 ) {
18+ std::string_view opt{argv[1 ]};
19+ if (opt == " before" ) {
20+ my_segfault ();
21+ } else if (opt == " after" ) {
22+ ScheduleItems obj;
23+ obj.initMisc ();
24+ my_segfault ();
25+ }
26+ }
27+ return 0 ;
28+ }
You can’t perform that action at this time.
0 commit comments