1"""Test suite for distutils.
2
3This test suite consists of a collection of test modules in the
4distutils.tests package.  Each test module has a name starting with
5'test' and contains a function test_suite().  The function is expected
6to return an initialized unittest.TestSuite instance.
7
8Tests for the command classes in the distutils.command package are
9included in distutils.tests as well, instead of using a separate
10distutils.command.tests package, since command identification is done
11by import rather than matching pre-defined names.
12
13"""
14
15import os
16import sys
17import unittest
18from test.support import run_unittest, save_restore_warnings_filters
19
20
21here = os.path.dirname(__file__) or os.curdir
22
23
24def test_suite():
25    suite = unittest.TestSuite()
26    for fn in os.listdir(here):
27        if fn.startswith("test") and fn.endswith(".py"):
28            modname = "distutils.tests." + fn[:-3]
29            # bpo-40055: Save/restore warnings filters to leave them unchanged.
30            # Importing tests imports docutils which imports pkg_resources
31            # which adds a warnings filter.
32            with save_restore_warnings_filters():
33                __import__(modname)
34            module = sys.modules[modname]
35            suite.addTest(module.test_suite())
36    return suite
37
38
39if __name__ == "__main__":
40    run_unittest(test_suite())
41