diff options
author | Frank Winklmeier <frank.winklmeier@cern.ch> | 2020-01-20 09:42:50 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2020-01-22 14:58:52 (GMT) |
commit | c829f0cfcaa4753743fde1900091e1233c41350b (patch) | |
tree | 319fee9604ee4f5f4c6a006855b5d055f5b81a68 /Tests | |
parent | 5e38b8f608fee599494aadd0d4b5ed9366843bda (diff) | |
download | CMake-c829f0cfcaa4753743fde1900091e1233c41350b.zip CMake-c829f0cfcaa4753743fde1900091e1233c41350b.tar.gz CMake-c829f0cfcaa4753743fde1900091e1233c41350b.tar.bz2 |
trace: Add time and stack level to JSON output format
Add the timestamp and stack depth of the function call to the JSON trace
output format. This information can be useful for cmake profiling and
call stack inspection (see e.g. https://github.com/volo-zyko/cmake-profile-stats).
Improve unit test to allow for varying set of keys to check in trace lines.
Diffstat (limited to 'Tests')
-rwxr-xr-x | Tests/RunCMake/CommandLine/trace-json-v1-check.py | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/Tests/RunCMake/CommandLine/trace-json-v1-check.py b/Tests/RunCMake/CommandLine/trace-json-v1-check.py index 14febaf..e617b76 100755 --- a/Tests/RunCMake/CommandLine/trace-json-v1-check.py +++ b/Tests/RunCMake/CommandLine/trace-json-v1-check.py @@ -46,6 +46,7 @@ required_traces = [ { 'args': msg_args, 'cmd': 'message', + 'frame': 3 if expand else 2 }, ] @@ -59,14 +60,17 @@ with open(trace_file, 'r') as fp: for i in fp.readlines(): line = json.loads(i) - assert sorted(line.keys()) == ['args', 'cmd', 'file', 'line'] + assert sorted(line.keys()) == ['args', 'cmd', 'file', 'frame', 'line', 'time'] assert isinstance(line['args'], list) assert isinstance(line['cmd'], unicode) assert isinstance(line['file'], unicode) + assert isinstance(line['frame'], int) assert isinstance(line['line'], int) + assert isinstance(line['time'], float) for j in required_traces: - if j['cmd'] == line['cmd'] and j['args'] == line['args']: - j['found'] = True + # Compare the subset of required keys with line + if {k: line[k] for k in j} == j: + required_traces.remove(j) -assert all([x.get('found', False) == True for x in required_traces]) +assert not required_traces |