summaryrefslogtreecommitdiff
path: root/unittests/baseplatformtests.py
diff options
context:
space:
mode:
authorDylan Baker <dylan@pnwbakers.com>2024-07-16 11:32:51 -0700
committerEli Schwartz <eschwartz93@gmail.com>2024-08-15 14:15:05 -0400
commit4b76aabe3a4dcc929edb5734b15e2468193c8879 (patch)
tree5da2d461320c17b242edb3b0f9a740ce32d32e82 /unittests/baseplatformtests.py
parente808aa161cec917aa7a6aed94fe89050950b35e1 (diff)
downloadmeson-4b76aabe3a4dcc929edb5734b15e2468193c8879.tar.gz
unittests: use setUpClass instead of setUp for class constant data
for test attributes that are class constant. This reduces the work that must be done for each test case, allowing some of the setup work to be done once for the entire class.
Diffstat (limited to 'unittests/baseplatformtests.py')
-rw-r--r--unittests/baseplatformtests.py67
1 files changed, 35 insertions, 32 deletions
diff --git a/unittests/baseplatformtests.py b/unittests/baseplatformtests.py
index 0886e5190..72ebeafe7 100644
--- a/unittests/baseplatformtests.py
+++ b/unittests/baseplatformtests.py
@@ -47,50 +47,53 @@ class BasePlatformTests(TestCase):
prefix = '/usr'
libdir = 'lib'
- def setUp(self):
- super().setUp()
- self.maxDiff = None
+ @classmethod
+ def setUpClass(cls) -> None:
+ super().setUpClass()
+ cls.maxDiff = None
src_root = str(PurePath(__file__).parents[1])
- self.src_root = src_root
+ cls.src_root = src_root
# Get the backend
- self.backend_name = os.environ.get('MESON_UNIT_TEST_BACKEND', 'ninja')
- backend_type = 'vs' if self.backend_name.startswith('vs') else self.backend_name
- self.backend = getattr(Backend, backend_type)
- self.meson_args = ['--backend=' + self.backend_name]
- self.meson_native_files = []
- self.meson_cross_files = []
- self.meson_command = python_command + [get_meson_script()]
- self.setup_command = self.meson_command + ['setup'] + self.meson_args
- self.mconf_command = self.meson_command + ['configure']
- self.mintro_command = self.meson_command + ['introspect']
- self.wrap_command = self.meson_command + ['wrap']
- self.rewrite_command = self.meson_command + ['rewrite']
+ cls.backend_name = os.environ.get('MESON_UNIT_TEST_BACKEND', 'ninja')
+ backend_type = 'vs' if cls.backend_name.startswith('vs') else cls.backend_name
+ cls.backend = getattr(Backend, backend_type)
+ cls.meson_args = ['--backend=' + cls.backend_name]
+ cls.meson_command = python_command + [get_meson_script()]
+ cls.setup_command = cls.meson_command + ['setup'] + cls.meson_args
+ cls.mconf_command = cls.meson_command + ['configure']
+ cls.mintro_command = cls.meson_command + ['introspect']
+ cls.wrap_command = cls.meson_command + ['wrap']
+ cls.rewrite_command = cls.meson_command + ['rewrite']
# Backend-specific build commands
- self.build_command, self.clean_command, self.test_command, self.install_command, \
- self.uninstall_command = get_backend_commands(self.backend)
+ cls.build_command, cls.clean_command, cls.test_command, cls.install_command, \
+ cls.uninstall_command = get_backend_commands(cls.backend)
# Test directories
- self.common_test_dir = os.path.join(src_root, 'test cases/common')
- self.python_test_dir = os.path.join(src_root, 'test cases/python')
- self.rust_test_dir = os.path.join(src_root, 'test cases/rust')
- self.vala_test_dir = os.path.join(src_root, 'test cases/vala')
- self.framework_test_dir = os.path.join(src_root, 'test cases/frameworks')
- self.unit_test_dir = os.path.join(src_root, 'test cases/unit')
- self.rewrite_test_dir = os.path.join(src_root, 'test cases/rewrite')
- self.linuxlike_test_dir = os.path.join(src_root, 'test cases/linuxlike')
- self.objc_test_dir = os.path.join(src_root, 'test cases/objc')
- self.objcpp_test_dir = os.path.join(src_root, 'test cases/objcpp')
- self.darwin_test_dir = os.path.join(src_root, 'test cases/darwin')
+ cls.common_test_dir = os.path.join(src_root, 'test cases/common')
+ cls.python_test_dir = os.path.join(src_root, 'test cases/python')
+ cls.rust_test_dir = os.path.join(src_root, 'test cases/rust')
+ cls.vala_test_dir = os.path.join(src_root, 'test cases/vala')
+ cls.framework_test_dir = os.path.join(src_root, 'test cases/frameworks')
+ cls.unit_test_dir = os.path.join(src_root, 'test cases/unit')
+ cls.rewrite_test_dir = os.path.join(src_root, 'test cases/rewrite')
+ cls.linuxlike_test_dir = os.path.join(src_root, 'test cases/linuxlike')
+ cls.objc_test_dir = os.path.join(src_root, 'test cases/objc')
+ cls.objcpp_test_dir = os.path.join(src_root, 'test cases/objcpp')
+ cls.darwin_test_dir = os.path.join(src_root, 'test cases/darwin')
# Misc stuff
- if self.backend is Backend.ninja:
- self.no_rebuild_stdout = ['ninja: no work to do.', 'samu: nothing to do']
+ if cls.backend is Backend.ninja:
+ cls.no_rebuild_stdout = ['ninja: no work to do.', 'samu: nothing to do']
else:
# VS doesn't have a stable output when no changes are done
# XCode backend is untested with unit tests, help welcome!
- self.no_rebuild_stdout = [f'UNKNOWN BACKEND {self.backend.name!r}']
+ cls.no_rebuild_stdout = [f'UNKNOWN BACKEND {cls.backend.name!r}']
os.environ['COLUMNS'] = '80'
os.environ['PYTHONIOENCODING'] = 'utf8'
+ def setUp(self):
+ super().setUp()
+ self.meson_native_files = []
+ self.meson_cross_files = []
self.new_builddir()
def change_builddir(self, newdir):