Let's make this behave more like all the rest of the meson stuff.
This also is the first step to making it a bit more flexible so we
can define integration tests in different ways as will be seen in
the next commits.
--- /dev/null
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+integration_tests += [
+ integration_test_template + {
+ 'name' : 'TEST-01-BASIC',
+ },
+]
# SPDX-License-Identifier: LGPL-2.1-or-later
-test_params += {
- 'mkosi_args': test_params['mkosi_args'] + [
- '--kernel-command-line-extra=' + ' '.join([
- '''
+integration_tests += [
+ integration_test_template + {
+ 'name' : fs.name(meson.current_source_dir()),
+ 'mkosi_args' : integration_test_template['mkosi_args'] + [
+ '''--kernel-command-line-extra=
+
frobnicate!
systemd.setenv=TEST_CMDLINE_NEWLINE=foo
systemd.setenv=TEST_CMDLINE_NEWLINE=bar
''',
- ]),
- ],
-}
+ ],
+ },
+]
--- /dev/null
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+integration_tests += [
+ integration_test_template + {
+ 'name' : fs.name(meson.current_source_dir()),
+ },
+]
# SPDX-License-Identifier: LGPL-2.1-or-later
-test_params += {
- 'storage': 'persistent',
-}
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+integration_tests += [
+ integration_test_template + {
+ 'name' : fs.name(meson.current_source_dir()),
+ 'storage' : 'persistent',
+ },
+]
--- /dev/null
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+integration_tests += [
+ integration_test_template + {
+ 'name' : 'TEST-05-RLIMITS',
+ },
+]
# SPDX-License-Identifier: LGPL-2.1-or-later
-test_params += {
- 'mkosi_args' : ['--kernel-command-line-extra=apparmor=0 selinux=1 enforcing=0 lsm=selinux systemd.wants=autorelabel.service systemd.wants=firstboot-autorelabel.service'],
- # FIXME; Figure out why reboot sometimes hangs with 'linux' firmware.
- 'firmware' : 'uefi',
-}
+integration_tests += [
+ integration_test_template + {
+ 'name' : fs.name(meson.current_source_dir()),
+ 'mkosi_args' : integration_test_template['mkosi_args'] + [
+ '--kernel-command-line-extra=apparmor=0 selinux=1 enforcing=0 lsm=selinux systemd.wants=autorelabel.service systemd.wants=firstboot-autorelabel.service'
+ ],
+ # FIXME; Figure out why reboot sometimes hangs with 'linux' firmware.
+ 'firmware' : 'uefi',
+ },
+]
--- /dev/null
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+integration_tests += [
+ integration_test_template + {
+ 'name' : fs.name(meson.current_source_dir()),
+ },
+]
# SPDX-License-Identifier: LGPL-2.1-or-later
-test_params += {
- 'storage': 'persistent',
- # FIXME; Figure out why reboot sometimes hangs with 'linux' firmware.
- 'firmware' : 'uefi',
-}
+integration_tests += [
+ integration_test_template + {
+ 'name' : fs.name(meson.current_source_dir()),
+ 'storage' : 'persistent',
+ # FIXME; Figure out why reboot sometimes hangs with 'linux' firmware.
+ 'firmware' : 'uefi',
+ },
+]
--- /dev/null
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+integration_tests += [
+ integration_test_template + {
+ 'name' : fs.name(meson.current_source_dir()),
+ },
+]
--- /dev/null
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+integration_tests += [
+ integration_test_template + {
+ 'name' : fs.name(meson.current_source_dir()),
+ },
+]
--- /dev/null
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+integration_tests += [
+ integration_test_template + {
+ 'name' : fs.name(meson.current_source_dir()),
+ },
+]
--- /dev/null
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+integration_tests += [
+ integration_test_template + {
+ 'name' : fs.name(meson.current_source_dir()),
+ },
+]
# SPDX-License-Identifier: LGPL-2.1-or-later
-test_params += {
- # FIXME; Figure out why reboot sometimes hangs with 'linux' firmware.
- 'firmware' : 'uefi',
-}
+integration_tests += [
+ integration_test_template + {
+ 'name' : fs.name(meson.current_source_dir()),
+ # FIXME; Figure out why reboot sometimes hangs with 'linux' firmware.
+ 'firmware' : 'uefi',
+ },
+]
--- /dev/null
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+integration_tests += [
+ integration_test_template + {
+ 'name' : fs.name(meson.current_source_dir()),
+ },
+]
# SPDX-License-Identifier: LGPL-2.1-or-later
-test_params += {
- 'timeout' : 3600,
- 'priority' : -50,
- 'slow' : true,
-}
+integration_tests += [
+ integration_test_template + {
+ 'name' : fs.name(meson.current_source_dir()),
+ 'timeout' : 3600,
+ 'priority' : -50,
+ 'slow' : true,
+ },
+]
--- /dev/null
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+integration_tests += [
+ integration_test_template + {
+ 'name' : fs.name(meson.current_source_dir()),
+ },
+]
--- /dev/null
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+integration_tests += [
+ integration_test_template + {
+ 'name' : fs.name(meson.current_source_dir()),
+ },
+]
--- /dev/null
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+integration_tests += [
+ integration_test_template + {
+ 'name' : fs.name(meson.current_source_dir()),
+ },
+]
--- /dev/null
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+integration_tests += [
+ integration_test_template + {
+ 'name' : fs.name(meson.current_source_dir()),
+ },
+]
--- /dev/null
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+integration_tests += [
+ integration_test_template + {
+ 'name' : fs.name(meson.current_source_dir()),
+ },
+]
--- /dev/null
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+integration_tests += [
+ integration_test_template + {
+ 'name' : fs.name(meson.current_source_dir()),
+ },
+]
--- /dev/null
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+integration_tests += [
+ integration_test_template + {
+ 'name' : fs.name(meson.current_source_dir()),
+ },
+]
--- /dev/null
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+integration_tests += [
+ integration_test_template + {
+ 'name' : fs.name(meson.current_source_dir()),
+ },
+]
--- /dev/null
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+integration_tests += [
+ integration_test_template + {
+ 'name' : fs.name(meson.current_source_dir()),
+ },
+]
--- /dev/null
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+integration_tests += [
+ integration_test_template + {
+ 'name' : fs.name(meson.current_source_dir()),
+ },
+]
--- /dev/null
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+integration_tests += [
+ integration_test_template + {
+ 'name' : fs.name(meson.current_source_dir()),
+ },
+]
--- /dev/null
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+integration_tests += [
+ integration_test_template + {
+ 'name' : fs.name(meson.current_source_dir()),
+ },
+]
--- /dev/null
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+integration_tests += [
+ integration_test_template + {
+ 'name' : fs.name(meson.current_source_dir()),
+ },
+]
--- /dev/null
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+integration_tests += [
+ integration_test_template + {
+ 'name' : fs.name(meson.current_source_dir()),
+ },
+]
--- /dev/null
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+integration_tests += [
+ integration_test_template + {
+ 'name' : fs.name(meson.current_source_dir()),
+ },
+]
--- /dev/null
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+integration_tests += [
+ integration_test_template + {
+ 'name' : fs.name(meson.current_source_dir()),
+ },
+]
--- /dev/null
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+integration_tests += [
+ integration_test_template + {
+ 'name' : fs.name(meson.current_source_dir()),
+ },
+]
--- /dev/null
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+integration_tests += [
+ integration_test_template + {
+ 'name' : fs.name(meson.current_source_dir()),
+ },
+]
# SPDX-License-Identifier: LGPL-2.1-or-later
-test_params += {
- 'mkosi_args' : test_params['mkosi_args'] + [
- '--configure-script', meson.current_source_dir() / 'mkosi.configure',
- ],
-}
+integration_tests += [
+ integration_test_template + {
+ 'name' : fs.name(meson.current_source_dir()),
+ 'mkosi_args' : integration_test_template['mkosi_args'] + [
+ '--configure-script', meson.current_source_dir() / 'mkosi.configure',
+ ],
+ },
+]
# SPDX-License-Identifier: LGPL-2.1-or-later
-test_params += {
- 'mkosi_args' : test_params['mkosi_args'] + [
- '--credential=@0@'.format(meson.current_source_dir() / 'systemd.unit-dropin.init.scope')
- ]
-}
+integration_tests += [
+ integration_test_template + {
+ 'name' : fs.name(meson.current_source_dir()),
+ 'mkosi_args' : integration_test_template['mkosi_args'] + [
+ '--credential=@0@'.format(meson.current_source_dir() / 'systemd.unit-dropin.init.scope')
+ ]
+ },
+]
--- /dev/null
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+integration_tests += [
+ integration_test_template + {
+ 'name' : fs.name(meson.current_source_dir()),
+ },
+]
--- /dev/null
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+integration_tests += [
+ integration_test_template + {
+ 'name' : fs.name(meson.current_source_dir()),
+ },
+]
--- /dev/null
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+integration_tests += [
+ integration_test_template + {
+ 'name' : fs.name(meson.current_source_dir()),
+ },
+]
--- /dev/null
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+integration_tests += [
+ integration_test_template + {
+ 'name' : fs.name(meson.current_source_dir()),
+ },
+]
--- /dev/null
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+integration_tests += [
+ integration_test_template + {
+ 'name' : fs.name(meson.current_source_dir()),
+ },
+]
--- /dev/null
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+integration_tests += [
+ integration_test_template + {
+ 'name' : fs.name(meson.current_source_dir()),
+ },
+]
--- /dev/null
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+integration_tests += [
+ integration_test_template + {
+ 'name' : fs.name(meson.current_source_dir()),
+ },
+]
--- /dev/null
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+integration_tests += [
+ integration_test_template + {
+ 'name' : fs.name(meson.current_source_dir()),
+ },
+]
--- /dev/null
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+integration_tests += [
+ integration_test_template + {
+ 'name' : fs.name(meson.current_source_dir()),
+ },
+]
--- /dev/null
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+integration_tests += [
+ integration_test_template + {
+ 'name' : fs.name(meson.current_source_dir()),
+ },
+]
--- /dev/null
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+integration_tests += [
+ integration_test_template + {
+ 'name' : fs.name(meson.current_source_dir()),
+ },
+]
--- /dev/null
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+integration_tests += [
+ integration_test_template + {
+ 'name' : fs.name(meson.current_source_dir()),
+ },
+]
--- /dev/null
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+integration_tests += [
+ integration_test_template + {
+ 'name' : fs.name(meson.current_source_dir()),
+ },
+]
# SPDX-License-Identifier: LGPL-2.1-or-later
-test_params += {
- 'storage': 'persistent',
-}
+integration_tests += [
+ integration_test_template + {
+ 'name' : fs.name(meson.current_source_dir()),
+ 'storage': 'persistent',
+ },
+]
--- /dev/null
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+integration_tests += [
+ integration_test_template + {
+ 'name' : fs.name(meson.current_source_dir()),
+ },
+]
--- /dev/null
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+integration_tests += [
+ integration_test_template + {
+ 'name' : fs.name(meson.current_source_dir()),
+ },
+]
--- /dev/null
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+integration_tests += [
+ integration_test_template + {
+ 'name' : fs.name(meson.current_source_dir()),
+ },
+]
--- /dev/null
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+integration_tests += [
+ integration_test_template + {
+ 'name' : fs.name(meson.current_source_dir()),
+ },
+]
--- /dev/null
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+integration_tests += [
+ integration_test_template + {
+ 'name' : fs.name(meson.current_source_dir()),
+ },
+]
--- /dev/null
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+integration_tests += [
+ integration_test_template + {
+ 'name' : fs.name(meson.current_source_dir()),
+ },
+]
--- /dev/null
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+integration_tests += [
+ integration_test_template + {
+ 'name' : fs.name(meson.current_source_dir()),
+ },
+]
--- /dev/null
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+integration_tests += [
+ integration_test_template + {
+ 'name' : fs.name(meson.current_source_dir()),
+ },
+]
############################################################
integration_test_wrapper = find_program('integration-test-wrapper.py')
-integration_tests = {
- '01': 'TEST-01-BASIC',
- '02': 'TEST-02-UNITTESTS',
- '03': 'TEST-03-JOBS',
- '04': 'TEST-04-JOURNAL',
- '05': 'TEST-05-RLIMITS',
- '06': 'TEST-06-SELINUX',
- '07': 'TEST-07-PID1',
- # '08': 'TEST-08-INITRD',
- '09': 'TEST-09-REBOOT',
- '13': 'TEST-13-NSPAWN',
- '15': 'TEST-15-DROPIN',
- '16': 'TEST-16-EXTEND-TIMEOUT',
- '17': 'TEST-17-UDEV',
- '18': 'TEST-18-FAILUREACTION',
- '19': 'TEST-19-CGROUP',
- '21': 'TEST-21-DFUZZER',
- '22': 'TEST-22-TMPFILES',
- '23': 'TEST-23-UNIT-FILE',
- # '24': 'TEST-24-CRYPTSETUP',
- '25': 'TEST-25-IMPORT',
- '26': 'TEST-26-SYSTEMCTL',
- '29': 'TEST-29-PORTABLE',
- '30': 'TEST-30-ONCLOCKCHANGE',
- '31': 'TEST-31-DEVICE-ENUMERATION',
- '32': 'TEST-32-OOMPOLICY',
- '34': 'TEST-34-DYNAMICUSERMIGRATE',
- '35': 'TEST-35-LOGIN',
- '36': 'TEST-36-NUMAPOLICY',
- '38': 'TEST-38-FREEZER',
- '43': 'TEST-43-PRIVATEUSER-UNPRIV',
- '44': 'TEST-44-LOG-NAMESPACE',
- '45': 'TEST-45-TIMEDATE',
- '46': 'TEST-46-HOMED',
- '50': 'TEST-50-DISSECT',
- '52': 'TEST-52-HONORFIRSTSHUTDOWN',
- '53': 'TEST-53-ISSUE-16347',
- # '54': 'TEST-54-CREDS',
- '55': 'TEST-55-OOMD',
- '58': 'TEST-58-REPART',
- '59': 'TEST-59-RELOADING-RESTART',
- '60': 'TEST-60-MOUNT-RATELIMIT',
- '62': 'TEST-62-RESTRICT-IFACES',
- '63': 'TEST-63-PATH',
- # '64': 'TEST-64-UDEV-STORAGE',
- '65': 'TEST-65-ANALYZE',
- '66': 'TEST-66-DEVICE-ISOLATION',
- '67': 'TEST-67-INTEGRITY',
- '68': 'TEST-68-PROPAGATE-EXIT-STATUS',
- # '69': 'TEST-69-SHUTDOWN',
- '70': 'TEST-70-TPM2',
- '71': 'TEST-71-HOSTNAME',
- '72': 'TEST-72-SYSUPDATE',
- '73': 'TEST-73-LOCALE',
- '74': 'TEST-74-AUX-UTILS',
- '75': 'TEST-75-RESOLVED',
- '76': 'TEST-76-SYSCTL',
- '78': 'TEST-78-SIGQUEUE',
- '79': 'TEST-79-MEMPRESS',
- '80': 'TEST-80-NOTIFYACCESS',
- '81': 'TEST-81-GENERATORS',
- # '82': 'TEST-82-SOFTREBOOT',
- '83': 'TEST-83-BTRFS',
- '84': 'TEST-84-STORAGETM',
+integration_tests = []
+integration_test_template = {
+ 'mkosi_args' : [],
+ 'timeout' : 1800,
+ 'storage' : 'volatile',
+ 'priority' : 0,
+ 'firmware' : 'linux',
+ 'slow' : false,
}
-foreach test_number, dirname : integration_tests
- test_params = {
- 'mkosi_args' : [],
- 'timeout' : 1800,
- 'storage' : 'volatile',
- 'priority' : 0,
- 'firmware' : 'linux',
- 'slow' : false,
- }
-
- # TODO: This fs.exists call isn't included in rebuild logic
- # so if you add a new meson.build in a subdir
- # you need to touch another build file to get it to reparse.
- if fs.exists(dirname / 'meson.build')
- subdir(dirname)
- endif
- args = [
+foreach dirname : [
+ 'TEST-01-BASIC',
+ 'TEST-02-UNITTESTS',
+ 'TEST-03-JOBS',
+ 'TEST-04-JOURNAL',
+ 'TEST-05-RLIMITS',
+ 'TEST-06-SELINUX',
+ 'TEST-07-PID1',
+ # 'TEST-08-INITRD',
+ 'TEST-09-REBOOT',
+ 'TEST-13-NSPAWN',
+ 'TEST-15-DROPIN',
+ 'TEST-16-EXTEND-TIMEOUT',
+ 'TEST-17-UDEV',
+ 'TEST-18-FAILUREACTION',
+ 'TEST-19-CGROUP',
+ 'TEST-21-DFUZZER',
+ 'TEST-22-TMPFILES',
+ 'TEST-23-UNIT-FILE',
+ # 'TEST-24-CRYPTSETUP',
+ 'TEST-25-IMPORT',
+ 'TEST-26-SYSTEMCTL',
+ 'TEST-29-PORTABLE',
+ 'TEST-30-ONCLOCKCHANGE',
+ 'TEST-31-DEVICE-ENUMERATION',
+ 'TEST-32-OOMPOLICY',
+ 'TEST-34-DYNAMICUSERMIGRATE',
+ 'TEST-35-LOGIN',
+ 'TEST-36-NUMAPOLICY',
+ 'TEST-38-FREEZER',
+ 'TEST-43-PRIVATEUSER-UNPRIV',
+ 'TEST-44-LOG-NAMESPACE',
+ 'TEST-45-TIMEDATE',
+ 'TEST-46-HOMED',
+ 'TEST-50-DISSECT',
+ 'TEST-52-HONORFIRSTSHUTDOWN',
+ 'TEST-53-ISSUE-16347',
+ # 'TEST-54-CREDS',
+ 'TEST-55-OOMD',
+ 'TEST-58-REPART',
+ 'TEST-59-RELOADING-RESTART',
+ 'TEST-60-MOUNT-RATELIMIT',
+ 'TEST-62-RESTRICT-IFACES',
+ 'TEST-63-PATH',
+ # 'TEST-64-UDEV-STORAGE',
+ 'TEST-65-ANALYZE',
+ 'TEST-66-DEVICE-ISOLATION',
+ 'TEST-67-INTEGRITY',
+ 'TEST-68-PROPAGATE-EXIT-STATUS',
+ # 'TEST-69-SHUTDOWN',
+ 'TEST-70-TPM2',
+ 'TEST-71-HOSTNAME',
+ 'TEST-72-SYSUPDATE',
+ 'TEST-73-LOCALE',
+ 'TEST-74-AUX-UTILS',
+ 'TEST-75-RESOLVED',
+ 'TEST-76-SYSCTL',
+ 'TEST-78-SIGQUEUE',
+ 'TEST-79-MEMPRESS',
+ 'TEST-80-NOTIFYACCESS',
+ 'TEST-81-GENERATORS',
+ # 'TEST-82-SOFTREBOOT',
+ 'TEST-83-BTRFS',
+ 'TEST-84-STORAGETM',
+]
+ subdir(dirname)
+endforeach
+
+foreach integration_test : integration_tests
+ integration_test_number = integration_test['name'].split('-')[1]
+
+ integration_test_args = [
'--meson-source-dir', meson.project_source_root(),
'--meson-build-dir', meson.project_build_root(),
- '--test-name', dirname,
- '--test-number', test_number,
- '--storage', test_params['storage'],
- '--firmware', test_params['firmware'],
+ '--test-name', integration_test['name'],
+ '--test-number', integration_test_number,
+ '--storage', integration_test['storage'],
+ '--firmware', integration_test['firmware'],
]
- if test_params['slow']
- args += ['--slow']
+ if integration_test['slow']
+ integration_test_args += ['--slow']
endif
- args += ['--'] + test_params['mkosi_args']
+ integration_test_args += ['--'] + integration_test['mkosi_args']
integration_test_env = {}
integration_test_env += {'SYSTEMD_SLOW_TESTS': '1'}
endif
- # We don't explicitly depend on the "mkosi" target because that means the image is rebuilt
- # on every "ninja -C build". Instead, the mkosi target has to be rebuilt manually before
- # running the integration tests with mkosi.
- test(dirname,
- integration_test_wrapper,
- env : integration_test_env,
- args : args,
- timeout : test_params['timeout'],
- priority : test_params['priority'],
- suite : 'integration-tests')
+ # We don't explicitly depend on the "mkosi" target because that means the image is rebuilt on every
+ # "ninja -C build". Instead, the mkosi target has to be rebuilt manually before running the
+ # integration tests with mkosi.
+ test(
+ integration_test['name'],
+ integration_test_wrapper,
+ env : integration_test_env,
+ args : integration_test_args,
+ timeout : integration_test['timeout'],
+ priority : integration_test['priority'],
+ suite : 'integration-tests',
+ )
endforeach