OLD | NEW |
1 #!/usr/bin/python | 1 #!/usr/bin/python |
2 # | 2 # |
3 # Copyright 2009 the V8 project authors. All rights reserved. | 3 # Copyright 2009 the V8 project authors. All rights reserved. |
4 # Redistribution and use in source and binary forms, with or without | 4 # Redistribution and use in source and binary forms, with or without |
5 # modification, are permitted provided that the following conditions are | 5 # modification, are permitted provided that the following conditions are |
6 # met: | 6 # met: |
7 # | 7 # |
8 # * Redistributions of source code must retain the above copyright | 8 # * Redistributions of source code must retain the above copyright |
9 # notice, this list of conditions and the following disclaimer. | 9 # notice, this list of conditions and the following disclaimer. |
10 # * Redistributions in binary form must reproduce the above | 10 # * Redistributions in binary form must reproduce the above |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
49 code = process.wait(); | 49 code = process.wait(); |
50 errors = process.stderr.readlines(); | 50 errors = process.stderr.readlines(); |
51 | 51 |
52 # If valgrind produced an error, we report that to the user. | 52 # If valgrind produced an error, we report that to the user. |
53 if code != 0: | 53 if code != 0: |
54 sys.stderr.writelines(errors) | 54 sys.stderr.writelines(errors) |
55 sys.exit(code) | 55 sys.exit(code) |
56 | 56 |
57 # Look through the leak details and make sure that we don't | 57 # Look through the leak details and make sure that we don't |
58 # have any definitely, indirectly, and possibly lost bytes. | 58 # have any definitely, indirectly, and possibly lost bytes. |
59 LEAK_RE = r"(?:definitely|indirectly|possibly) lost: \d+ bytes in \d+ blocks." | 59 LEAK_RE = r"(?:definitely|indirectly|possibly) lost: " |
60 LEAK_LINE_MATCHER = re.compile(LEAK_RE) | 60 LEAK_LINE_MATCHER = re.compile(LEAK_RE) |
61 LEAK_OKAY_MATCHER = re.compile(r"lost: 0 bytes in 0 blocks.") | 61 LEAK_OKAY_MATCHER = re.compile(r"lost: 0 bytes in 0 blocks.") |
62 leaks = [] | 62 leaks = [] |
63 for line in errors: | 63 for line in errors: |
64 if LEAK_LINE_MATCHER.search(line): | 64 if LEAK_LINE_MATCHER.search(line): |
65 leaks.append(line) | 65 leaks.append(line) |
66 if not LEAK_OKAY_MATCHER.search(line): | 66 if not LEAK_OKAY_MATCHER.search(line): |
67 sys.stderr.writelines(errors) | 67 sys.stderr.writelines(errors) |
68 sys.exit(1) | 68 sys.exit(1) |
69 | 69 |
70 # Make sure we found between 2 and 3 leak lines. | 70 # Make sure we found between 2 and 3 leak lines. |
71 if len(leaks) < 2 or len(leaks) > 3: | 71 if len(leaks) < 2 or len(leaks) > 3: |
72 sys.stderr.writelines(errors) | 72 sys.stderr.writelines(errors) |
73 sys.stderr.write('\n\n#### Malformed valgrind output.\n#### Exiting.\n') | 73 sys.stderr.write('\n\n#### Malformed valgrind output.\n#### Exiting.\n') |
74 sys.exit(1) | 74 sys.exit(1) |
75 | 75 |
76 # No leaks found. | 76 # No leaks found. |
77 sys.exit(0) | 77 sys.exit(0) |
OLD | NEW |