1# -*- coding: utf-8 -*-
2'''
3Runs MultiprocessTest with all warnings including traceback...
4'''
5#
6# https://stackoverflow.com/questions/22373927/get-traceback-of-warnings
7import traceback
8import warnings
9import sys
10
11
12def warn_with_traceback(message, category, filename, lineno, file=None, line=None):
13    log = file if hasattr(file, 'write') else sys.stderr
14    if 'music21' in filename:
15        # do not give stack trace for matplotlib PendingDeprecation, etc.
16        traceback.print_stack(file=log)
17    log.write(warnings.formatwarning(message, category, filename, lineno, line))
18
19
20if __name__ == '__main__':
21    warnings.showwarning = warn_with_traceback
22    warnings.simplefilter("always")
23    from music21.test import multiprocessTest
24    multiprocessTest.mainPoolRunner()
25