I've just discovered the ctest -T memcheck command! And it's great.
When I run it on my science code, I get a bunch of defects, but ctest still returns an error code of 0:
-- Processing memory checking output:
2/76 MemCheck: #2: test_ixgb2_4 ..................... Defects: 1
3/76 MemCheck: #3: test_getg2ir_4 ................... Defects: 2
4/76 MemCheck: #4: test_getidx_4 .................... Defects: 3
5/76 MemCheck: #5: test_getgb2s_4 ................... Defects: 1
6/76 MemCheck: #6: test_getgb2p_4 ................... Defects: 4
7/76 MemCheck: #7: test_getgb2r_4 ................... Defects: 1
8/76 MemCheck: #8: test_getgb2ir_4 .................. Defects: 1
9/76 MemCheck: #9: test_getgb2_mem_4 ................ Defects: 4
11/76 MemCheck: #11: test_ixgb2_d ..................... Defects: 1
12/76 MemCheck: #12: test_getg2ir_d ................... Defects: 2
13/76 MemCheck: #13: test_getidx_d .................... Defects: 3
14/76 MemCheck: #14: test_getgb2s_d ................... Defects: 1
15/76 MemCheck: #15: test_getgb2p_d ................... Defects: 4
16/76 MemCheck: #16: test_getgb2r_d ................... Defects: 1
17/76 MemCheck: #17: test_getgb2ir_d .................. Defects: 1
18/76 MemCheck: #18: test_getgb2_mem_d ................ Defects: 4
21/76 MemCheck: #21: test_g2_encode_4 ................. Defects: 24
29/76 MemCheck: #29: test_getgb2_4 .................... Defects: 2
37/76 MemCheck: #37: test_index_gdas_4 ................ Defects: 10
38/76 MemCheck: #38: test_getgb2p_gdas_4 .............. Defects: 4
43/76 MemCheck: #43: test_getfield_4 .................. Defects: 7
46/76 MemCheck: #46: test_files_4 ..................... Defects: 8
47/76 MemCheck: #47: test_gdt2gds_4 ................... Defects: 22
50/76 MemCheck: #50: test_g2_encode_d ................. Defects: 24
58/76 MemCheck: #58: test_getgb2_d .................... Defects: 2
66/76 MemCheck: #66: test_index_gdas_d ................ Defects: 10
67/76 MemCheck: #67: test_getgb2p_gdas_d .............. Defects: 4
72/76 MemCheck: #72: test_getfield_d .................. Defects: 7
75/76 MemCheck: #75: test_files_d ..................... Defects: 8
76/76 MemCheck: #76: test_gdt2gds_d ................... Defects: 22
MemCheck log files can be found here: (<#> corresponds to test number)
/home/ed/g4/b/Testing/Temporary/MemoryChecker.<#>.log
Memory checking results:
Potential Memory Leak - 32
Uninitialized Memory Conditional - 152
Uninitialized Memory Read - 4
ed@mikado:~/g4/b$ echo $?
0
So how do I set up my CI system to cause memory defects to fail CI?