selftest: add "smb2.dirlease" test suite
[samba4-gss.git] / selftest / tests.py
blobf55c90750c860f66e0511eb919de5e70008124ad
1 #!/usr/bin/python
2 # This script generates a list of testsuites that should be run as part of
3 # the Samba test suite.
5 # The output of this script is parsed by selftest.pl, which then decides
6 # which of the tests to actually run. It will, for example, skip all tests
7 # listed in selftest/skip or only run a subset during "make quicktest".
9 # The idea is that this script outputs all of the tests of Samba, not
10 # just those that are known to pass, and list those that should be skipped
11 # or are known to fail in selftest/skip or selftest/knownfail. This makes it
12 # very easy to see what functionality is still missing in Samba and makes
13 # it possible to run the testsuite against other servers, such as
14 # Windows that have a different set of features.
16 # The syntax for a testsuite is "-- TEST --" on a single line, followed
17 # by the name of the test, the environment it needs and the command to run, all
18 # three separated by newlines. All other lines in the output are considered
19 # comments.
21 import os, tempfile
22 from selftesthelpers import bindir, srcdir, python
23 from selftesthelpers import planpythontestsuite, samba4srcdir
24 from selftesthelpers import plantestsuite, bbdir
25 from selftesthelpers import configuration, valgrindify
26 from selftesthelpers import skiptestsuite
28 samba4bindir = bindir()
29 try:
30 config_h = os.environ["CONFIG_H"]
31 except KeyError:
32 config_h = os.path.join(samba4bindir, "default/include/config.h")
34 # check available features
35 config_hash = dict()
36 f = open(config_h, 'r')
37 try:
38 lines = f.readlines()
39 config_hash = dict((x[0], ' '.join(x[1:]))
40 for x in map(lambda line: line.strip().split(' ')[1:],
41 list(filter(lambda line: (line[0:7] == '#define') and (len(line.split(' ')) > 2), lines))))
42 finally:
43 f.close()
45 have_man_pages_support = ("XSLTPROC_MANPAGES" in config_hash)
46 with_pam = ("WITH_PAM" in config_hash)
47 with_elasticsearch_backend = ("HAVE_SPOTLIGHT_BACKEND_ES" in config_hash)
48 pam_wrapper_so_path = config_hash.get("LIBPAM_WRAPPER_SO_PATH")
49 pam_set_items_so_path = config_hash.get("PAM_SET_ITEMS_SO_PATH")
50 have_heimdal_support = "SAMBA4_USES_HEIMDAL" in config_hash
51 using_system_gssapi = "USING_SYSTEM_GSSAPI" in config_hash
52 have_lmdb = "HAVE_LMDB" in config_hash
53 have_libldap = "HAVE_LIBLDAP" in config_hash
54 have_liblber = "HAVE_LIBLBER" in config_hash
56 planpythontestsuite("none", "samba.tests.source")
57 planpythontestsuite("none", "samba.tests.source_chars")
59 if have_man_pages_support:
60 planpythontestsuite("none", "samba.tests.docs")
62 try:
63 import testscenarios
64 except ImportError:
65 skiptestsuite("subunit", "testscenarios not available")
66 else:
67 planpythontestsuite("none", "subunit.tests.test_suite")
68 planpythontestsuite("none", "samba.tests.blackbox.ndrdump")
69 planpythontestsuite("none", "samba.tests.blackbox.check_output")
71 # LDB tests for standalone operation
72 planpythontestsuite("none", "api_misc",
73 name="ldb.python.api_misc",
74 extra_path=['lib/ldb/tests/python'],
75 environ={'HAVE_LMDB': str(int(have_lmdb))})
76 planpythontestsuite("none", "api_search",
77 name="ldb.python.api_search",
78 extra_path=['lib/ldb/tests/python'],
79 environ={'HAVE_LMDB': str(int(have_lmdb))})
80 planpythontestsuite("none", "api_add_modify",
81 name="ldb.python.api_add_modify",
82 extra_path=['lib/ldb/tests/python'],
83 environ={'HAVE_LMDB': str(int(have_lmdb))})
84 planpythontestsuite("none", "api_simple",
85 name="ldb.python.api_simple",
86 extra_path=['lib/ldb/tests/python'],
87 environ={'HAVE_LMDB': str(int(have_lmdb))})
88 planpythontestsuite("none", "crash",
89 name="ldb.python.crash",
90 extra_path=['lib/ldb/tests/python'],
91 environ={'HAVE_LMDB': str(int(have_lmdb))})
92 planpythontestsuite("none", "index",
93 name="ldb.python.index",
94 extra_path=['lib/ldb/tests/python'],
95 environ={'HAVE_LMDB': str(int(have_lmdb))})
96 planpythontestsuite("none", "repack",
97 name="ldb.python.repack",
98 extra_path=['lib/ldb/tests/python'],
99 environ={'HAVE_LMDB': str(int(have_lmdb))})
101 # LDB tests for standalone operation, in the tr_TR.UTF-8 to cover
102 # dotless i locales, see
103 # https://bugzilla.samba.org/show_bug.cgi?id=15248
104 planpythontestsuite("none", "api_misc",
105 name="ldb.python.api_misc.tr",
106 extra_path=['lib/ldb/tests/python'],
107 environ={'LC_ALL': 'tr_TR.UTF-8',
108 'HAVE_LMDB': str(int(have_lmdb))})
109 planpythontestsuite("none", "api_search",
110 name="ldb.python.api_search.tr",
111 extra_path=['lib/ldb/tests/python'],
112 environ={'LC_ALL': 'tr_TR.UTF-8',
113 'HAVE_LMDB': str(int(have_lmdb))})
114 planpythontestsuite("none", "api_add_modify",
115 name="ldb.python.api_add_modify.tr",
116 extra_path=['lib/ldb/tests/python'],
117 environ={'LC_ALL': 'tr_TR.UTF-8',
118 'HAVE_LMDB': str(int(have_lmdb))})
119 planpythontestsuite("none", "api_simple",
120 name="ldb.python.api_simple.tr",
121 extra_path=['lib/ldb/tests/python'],
122 environ={'LC_ALL': 'tr_TR.UTF-8',
123 'HAVE_LMDB': str(int(have_lmdb))})
124 planpythontestsuite("none", "index",
125 name="ldb.python.index.tr",
126 extra_path=['lib/ldb/tests/python'],
127 environ={'LC_ALL': 'tr_TR.UTF-8',
128 'HAVE_LMDB': str(int(have_lmdb))})
130 # LDB cmocka tests
132 ldb_test_exes = ['test_ldb_qsort',
133 'test_ldb_dn',
134 'ldb_msg_test',
135 'ldb_tdb_mod_op_test',
136 'ldb_tdb_guid_mod_op_test',
137 'ldb_tdb_kv_ops_test',
138 'ldb_tdb_test',
139 'ldb_match_test',
140 'ldb_key_value_test',
141 "test_ldb_comparison_fold",
142 # we currently don't run ldb_key_value_sub_txn_tdb_test as it
143 # tests the nested/sub transaction handling
144 # on operations which the TDB backend does not currently
145 # support
146 # 'ldb_key_value_sub_txn_tdb_test'
147 'ldb_parse_test',
148 'ldb_filter_attrs_test',
149 'ldb_filter_attrs_in_place_test',
151 # if LIB_LDAP and LIB_LBER defined, then we can test ldb_ldap backend
152 # behavior regression for bz#14413
153 if have_libldap and have_liblber:
154 ldb_test_exes += ["lldb_ldap_test"]
156 if have_lmdb:
157 ldb_test_exes += ['ldb_mdb_mod_op_test',
158 'ldb_lmdb_test',
159 # we don't want to run ldb_lmdb_size_test (which proves
160 # we can fit > 4G of data into the DB), it would fill up
161 # the disk on many of our test instances
162 'ldb_mdb_kv_ops_test',
163 'ldb_key_value_sub_txn_mdb_test',
164 'ldb_lmdb_free_list_test']
165 else:
166 ldb_test_exes += ['ldb_no_lmdb_test']
168 for ldb_test_exe in ldb_test_exes:
169 plantestsuite(f"ldb.unittests.{ldb_test_exe}", "none",
170 [os.path.join(bindir(), f"default/lib/ldb/{ldb_test_exe}")])
172 # Shell based LDB blackbox tests and the older ldbtest C tests
173 ldbdir = os.path.join(srcdir(), "lib/ldb")
174 plantestsuite("ldb.base", "none", "%s/tests/test-tdb-subunit.sh %s" % (ldbdir, samba4bindir))
176 planpythontestsuite("none", "samba.tests.credentials")
177 planpythontestsuite("none", "samba.tests.registry")
178 planpythontestsuite("ad_dc_ntvfs:local", "samba.tests.auth")
179 planpythontestsuite("none", "samba.tests.get_opt")
180 planpythontestsuite("none", "samba.tests.cred_opt")
181 planpythontestsuite("none", "samba.tests.security")
182 planpythontestsuite("none", "samba.tests.dcerpc.misc")
183 planpythontestsuite("none", "samba.tests.dcerpc.integer")
184 planpythontestsuite("none", "samba.tests.param")
185 planpythontestsuite("none", "samba.tests.upgrade")
186 planpythontestsuite("none", "samba.tests.core")
187 planpythontestsuite("none", "samba.tests.common")
188 planpythontestsuite("none", "samba.tests.provision")
189 planpythontestsuite("none", "samba.tests.password_quality")
190 planpythontestsuite("none", "samba.tests.strings")
191 planpythontestsuite("none", "samba.tests.netcmd")
192 planpythontestsuite("none", "samba.tests.dcerpc.rpc_talloc")
193 planpythontestsuite("none", "samba.tests.dcerpc.array")
194 planpythontestsuite("none", "samba.tests.dcerpc.string_tests")
195 planpythontestsuite("none", "samba.tests.hostconfig")
196 planpythontestsuite("ad_dc_ntvfs:local", "samba.tests.messaging")
197 planpythontestsuite("none", "samba.tests.s3param")
198 planpythontestsuite("none", "samba.tests.s3passdb")
199 planpythontestsuite("none", "samba.tests.s3registry")
200 planpythontestsuite("none", "samba.tests.s3windb")
201 planpythontestsuite("none", "samba.tests.s3idmapdb")
202 planpythontestsuite("none", "samba.tests.samba3sam")
203 planpythontestsuite("none", "samba.tests.dsdb_api")
204 planpythontestsuite("none", "samba.tests.smbconf")
205 planpythontestsuite("none", "samba.tests.logfiles")
206 planpythontestsuite("none", "samba.tests.conditional_ace_claims")
207 planpythontestsuite(
208 "none", "wafsamba.tests.test_suite",
209 extra_path=[os.path.join(samba4srcdir, "..", "buildtools"),
210 os.path.join(samba4srcdir, "..", "third_party", "waf")])
211 planpythontestsuite("fileserver", "samba.tests.smbd_fuzztest")
212 planpythontestsuite("nt4_dc_smb1", "samba.tests.dcerpc.binding")
213 planpythontestsuite('ad_dc:local', "samba.tests.dcerpc.samr_change_password")
214 planpythontestsuite('ad_dc_fips:local',
215 "samba.tests.dcerpc.samr_change_password",
216 environ={'GNUTLS_FORCE_FIPS_MODE': '1',
217 'OPENSSL_FORCE_FIPS_MODE': '1'})
219 planpythontestsuite("none", "samba.tests.safe_tarfile")
221 def cmdline(script, *args):
223 Prefix PYTHON env var and append --configurefile option to abs script path.
225 script.sh arg1 arg2
227 PYTHON=python /path/to/bbdir/script.sh arg1 arg2 \
228 --configurefile $SMB_CONF_FILE
230 return [
231 "PYTHON=%s" % python,
232 os.path.join(bbdir, script),
233 ] + list(args) + [configuration]
236 plantestsuite(
237 "samba4.blackbox.demote-saveddb", "none",
238 cmdline('demote-saveddb.sh', '$PREFIX_ABS/demote'))
240 plantestsuite(
241 "samba4.blackbox.dbcheck.alpha13", "none",
242 cmdline('dbcheck-oldrelease.sh', '$PREFIX_ABS/provision',
243 'alpha13'))
245 # same test as above but skip member link checks
246 plantestsuite(
247 "samba4.blackbox.dbcheck.alpha13.quick", "none",
248 cmdline('dbcheck-oldrelease.sh', '$PREFIX_ABS/provision',
249 'alpha13', '--quick-membership-checks'))
251 plantestsuite(
252 "samba4.blackbox.dbcheck.release-4-0-0", "none",
253 cmdline('dbcheck-oldrelease.sh', '$PREFIX_ABS/provision',
254 'release-4-0-0'))
256 # same test as above but skip member link checks
257 plantestsuite(
258 "samba4.blackbox.dbcheck.release-4-0-0.quick", "none",
259 cmdline('dbcheck-oldrelease.sh', '$PREFIX_ABS/provision',
260 'release-4-0-0', '--quick-membership-checks'))
262 plantestsuite(
263 "samba4.blackbox.dbcheck.release-4-1-0rc3", "none",
264 cmdline('dbcheck-oldrelease.sh', '$PREFIX_ABS/provision',
265 'release-4-1-0rc3'))
267 # same test as above but skip member link checks
268 plantestsuite(
269 "samba4.blackbox.dbcheck.release-4-1-0rc3.quick", "none",
270 cmdline('dbcheck-oldrelease.sh', '$PREFIX_ABS/provision',
271 'release-4-1-0rc3', '--quick-membership-checks'))
273 plantestsuite(
274 "samba4.blackbox.dbcheck.release-4-1-6-partial-object", "none",
275 cmdline('dbcheck-oldrelease.sh', '$PREFIX_ABS/provision',
276 'release-4-1-6-partial-object'))
278 # same test as above but skip member link checks
279 plantestsuite(
280 "samba4.blackbox.dbcheck.release-4-1-6-partial-object.quick", "none",
281 cmdline('dbcheck-oldrelease.sh', '$PREFIX_ABS/provision',
282 'release-4-1-6-partial-object', '--quick-membership-checks'))
284 plantestsuite(
285 "samba4.blackbox.dbcheck.release-4-5-0-pre1", "none",
286 cmdline('dbcheck-oldrelease.sh', '$PREFIX_ABS/provision',
287 'release-4-5-0-pre1'))
289 # same test as above but skip member link checks
290 plantestsuite(
291 "samba4.blackbox.dbcheck.release-4-5-0-pre1.quick", "none",
292 cmdline('dbcheck-oldrelease.sh', '$PREFIX_ABS/provision',
293 'release-4-5-0-pre1', '--quick-membership-checks'))
295 plantestsuite(
296 "samba4.blackbox.upgradeprovision.alpha13", "none",
297 cmdline('upgradeprovision-oldrelease.sh', '$PREFIX_ABS/provision',
298 'alpha13'))
300 plantestsuite(
301 "samba4.blackbox.upgradeprovision.release-4-0-0", "none",
302 cmdline('upgradeprovision-oldrelease.sh', '$PREFIX_ABS/provision',
303 'release-4-0-0'))
305 plantestsuite(
306 "samba4.blackbox.tombstones-expunge.release-4-5-0-pre1", "none",
307 cmdline('tombstones-expunge.sh', '$PREFIX_ABS/provision',
308 'release-4-5-0-pre1'))
310 plantestsuite(
311 "samba4.blackbox.dbcheck-links.release-4-5-0-pre1", "none",
312 cmdline('dbcheck-links.sh', '$PREFIX_ABS/provision',
313 'release-4-5-0-pre1'))
315 plantestsuite(
316 "samba4.blackbox.runtime-links.release-4-5-0-pre1", "none",
317 cmdline('runtime-links.sh', '$PREFIX_ABS/provision',
318 'release-4-5-0-pre1'))
320 plantestsuite(
321 "samba4.blackbox.schemaupgrade", "none",
322 cmdline('schemaupgrade.sh', '$PREFIX_ABS/provision'))
324 plantestsuite(
325 "samba4.blackbox.functionalprep", "none",
326 cmdline('functionalprep.sh', '$PREFIX_ABS/provision'))
328 plantestsuite(
329 "samba4.blackbox.test_special_group", "none",
330 cmdline('test_special_group.sh', '$PREFIX_ABS/provision'))
332 planpythontestsuite("fileserver", "samba.tests.blackbox.http_content")
333 planpythontestsuite("fileserver", "samba.tests.blackbox.http_chunk")
334 planpythontestsuite("none", "samba.tests.upgradeprovision")
335 planpythontestsuite("none", "samba.tests.xattr")
336 planpythontestsuite("none", "samba.tests.ntacls")
337 planpythontestsuite("none", "samba.tests.policy")
338 planpythontestsuite("none", "samba.tests.kcc.graph")
339 planpythontestsuite("none", "samba.tests.kcc.graph_utils")
340 planpythontestsuite("none", "samba.tests.kcc.ldif_import_export")
341 planpythontestsuite("none", "samba.tests.graph")
342 plantestsuite("wafsamba.duplicate_symbols", "none", [os.path.join(srcdir(), "buildtools/wafsamba/test_duplicate_symbol.sh")])
343 planpythontestsuite("none", "samba.tests.glue")
344 planpythontestsuite("none", "samba.tests.tdb_util")
345 planpythontestsuite("none", "samba.tests.samdb")
346 planpythontestsuite("none", "samba.tests.samdb_api")
347 planpythontestsuite("none", "samba.tests.ndr.gkdi")
348 planpythontestsuite("none", "samba.tests.ndr.gmsa")
349 planpythontestsuite("none", "samba.tests.ndr.wbint")
351 if with_pam:
352 env = "ad_member"
353 options = [
355 "description": "krb5",
356 "pam_options": "krb5_auth krb5_ccache_type=FILE:%s/krb5cc_pam_test_%%u" % (tempfile.gettempdir()),
359 "description": "default",
360 "pam_options": "",
363 for o in options:
364 description = o["description"]
365 pam_options = "'%s'" % o["pam_options"]
367 plantestsuite("samba.tests.pam_winbind(local+%s)" % description, env,
368 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
369 valgrindify(python), pam_wrapper_so_path,
370 "$SERVER", "$USERNAME", "$PASSWORD",
371 pam_options])
372 plantestsuite("samba.tests.pam_winbind(domain1+%s)" % description, env,
373 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
374 valgrindify(python), pam_wrapper_so_path,
375 "$DOMAIN", "$DC_USERNAME", "$DC_PASSWORD",
376 pam_options])
377 plantestsuite("samba.tests.pam_winbind(domain2+%s)" % description, env,
378 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
379 valgrindify(python), pam_wrapper_so_path,
380 "$REALM", "$DC_USERNAME", "$DC_PASSWORD",
381 pam_options])
382 plantestsuite("samba.tests.pam_winbind(domain3+%s)" % description, env,
383 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
384 valgrindify(python), pam_wrapper_so_path,
385 "''", "${DC_USERNAME}@${DOMAIN}", "$DC_PASSWORD",
386 pam_options])
387 plantestsuite("samba.tests.pam_winbind(domain4+%s)" % description, env,
388 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
389 valgrindify(python), pam_wrapper_so_path,
390 "''", "${DC_USERNAME}@${REALM}", "$DC_PASSWORD",
391 pam_options])
392 plantestsuite("samba.tests.pam_winbind(domain5+%s)" % description, env,
393 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
394 valgrindify(python), pam_wrapper_so_path,
395 "$REALM", "${DC_USERNAME}@${DOMAIN}", "$DC_PASSWORD",
396 pam_options])
397 plantestsuite("samba.tests.pam_winbind(domain6+%s)" % description, env,
398 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
399 valgrindify(python), pam_wrapper_so_path,
400 "$DOMAIN", "${DC_USERNAME}@${REALM}", "$DC_PASSWORD",
401 pam_options])
402 plantestsuite("samba.tests.pam_winbind(trust_f_both1+%s)" % description, env,
403 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
404 valgrindify(python), pam_wrapper_so_path,
405 "$TRUST_F_BOTH_DOMAIN",
406 "$TRUST_F_BOTH_USERNAME",
407 "$TRUST_F_BOTH_PASSWORD",
408 pam_options])
409 plantestsuite("samba.tests.pam_winbind(trust_f_both2+%s)" % description, env,
410 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
411 valgrindify(python), pam_wrapper_so_path,
412 "$TRUST_F_BOTH_REALM",
413 "$TRUST_F_BOTH_USERNAME",
414 "$TRUST_F_BOTH_PASSWORD",
415 pam_options])
416 plantestsuite("samba.tests.pam_winbind(trust_f_both3+%s)" % description, env,
417 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
418 valgrindify(python), pam_wrapper_so_path,
419 "''",
420 "${TRUST_F_BOTH_USERNAME}@${TRUST_F_BOTH_DOMAIN}",
421 "$TRUST_F_BOTH_PASSWORD",
422 pam_options])
423 plantestsuite("samba.tests.pam_winbind(trust_f_both4+%s)" % description, env,
424 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
425 valgrindify(python), pam_wrapper_so_path,
426 "''",
427 "${TRUST_F_BOTH_USERNAME}@${TRUST_F_BOTH_REALM}",
428 "$TRUST_F_BOTH_PASSWORD",
429 pam_options])
430 plantestsuite("samba.tests.pam_winbind(trust_f_both5+%s)" % description, env,
431 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
432 valgrindify(python), pam_wrapper_so_path,
433 "${TRUST_F_BOTH_REALM}",
434 "${TRUST_F_BOTH_USERNAME}@${TRUST_F_BOTH_DOMAIN}",
435 "$TRUST_F_BOTH_PASSWORD",
436 pam_options])
437 plantestsuite("samba.tests.pam_winbind(trust_f_both6+%s)" % description, env,
438 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
439 valgrindify(python), pam_wrapper_so_path,
440 "${TRUST_F_BOTH_DOMAIN}",
441 "${TRUST_F_BOTH_USERNAME}@${TRUST_F_BOTH_REALM}",
442 "$TRUST_F_BOTH_PASSWORD",
443 pam_options])
444 plantestsuite("samba.tests.pam_winbind(trust_e_both1+%s)" % description, env,
445 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
446 valgrindify(python), pam_wrapper_so_path,
447 "$TRUST_E_BOTH_DOMAIN",
448 "$TRUST_E_BOTH_USERNAME",
449 "$TRUST_E_BOTH_PASSWORD",
450 pam_options])
451 plantestsuite("samba.tests.pam_winbind(trust_e_both2+%s)" % description, env,
452 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
453 valgrindify(python), pam_wrapper_so_path,
454 "$TRUST_E_BOTH_REALM",
455 "$TRUST_E_BOTH_USERNAME",
456 "$TRUST_E_BOTH_PASSWORD",
457 pam_options])
458 plantestsuite("samba.tests.pam_winbind(trust_e_both3+%s)" % description, env,
459 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
460 valgrindify(python), pam_wrapper_so_path,
461 "''",
462 "${TRUST_E_BOTH_USERNAME}@${TRUST_E_BOTH_DOMAIN}",
463 "$TRUST_E_BOTH_PASSWORD",
464 pam_options])
465 plantestsuite("samba.tests.pam_winbind(trust_e_both4+%s)" % description, env,
466 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
467 valgrindify(python), pam_wrapper_so_path,
468 "''",
469 "${TRUST_E_BOTH_USERNAME}@${TRUST_E_BOTH_REALM}",
470 "$TRUST_E_BOTH_PASSWORD",
471 pam_options])
472 plantestsuite("samba.tests.pam_winbind(trust_e_both5+%s)" % description, env,
473 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
474 valgrindify(python), pam_wrapper_so_path,
475 "${TRUST_E_BOTH_REALM}",
476 "${TRUST_E_BOTH_USERNAME}@${TRUST_E_BOTH_DOMAIN}",
477 "$TRUST_E_BOTH_PASSWORD",
478 pam_options])
479 plantestsuite("samba.tests.pam_winbind(trust_e_both6+%s)" % description, env,
480 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
481 valgrindify(python), pam_wrapper_so_path,
482 "${TRUST_E_BOTH_DOMAIN}",
483 "${TRUST_E_BOTH_USERNAME}@${TRUST_E_BOTH_REALM}",
484 "$TRUST_E_BOTH_PASSWORD",
485 pam_options])
487 for authtok_options in ["", "use_authtok", "try_authtok"]:
488 _pam_options = "'%s %s'" % (o["pam_options"], authtok_options)
489 _description = "%s %s" % (description, authtok_options)
490 plantestsuite("samba.tests.pam_winbind_chauthtok(domain+%s)" % _description, env,
491 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind_chauthtok.sh"),
492 valgrindify(python), pam_wrapper_so_path, pam_set_items_so_path,
493 "$DOMAIN", "TestPamOptionsUser", "oldp@ssword0", "newp@ssword0",
494 _pam_options, 'yes',
495 "$DC_SERVER", "$DC_USERNAME", "$DC_PASSWORD"])
497 plantestsuite("samba.tests.pam_winbind_warn_pwd_expire(domain+%s)" % description, env,
498 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind_warn_pwd_expire.sh"),
499 valgrindify(python), pam_wrapper_so_path,
500 "$DOMAIN", "alice", "Secret007",
501 pam_options])
503 description = "krb5"
504 pam_options = "'krb5_auth krb5_ccache_type=FILE:%s/krb5cc_pam_test_setcred_%%u'" % (tempfile.gettempdir())
505 plantestsuite("samba.tests.pam_winbind_setcred(domain+%s)" % description, "ad_dc:local",
506 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind_setcred.sh"),
507 valgrindify(python), pam_wrapper_so_path,
508 "${DOMAIN}", "${DC_USERNAME}", "${DC_PASSWORD}",
509 pam_options])
512 plantestsuite("samba.unittests.krb5samba", "none",
513 [os.path.join(bindir(), "default/testsuite/unittests/test_krb5samba")])
514 plantestsuite("samba.unittests.lib_util_modules", "none",
515 [os.path.join(bindir(), "default/testsuite/unittests/test_lib_util_modules")])
516 plantestsuite("samba.unittests.background_send",
517 "none",
518 [os.path.join(
519 bindir(),
520 "default/testsuite/unittests/test_background_send"),
521 "$SMB_CONF_PATH"])
523 plantestsuite("samba.unittests.smb1cli_session", "none",
524 [os.path.join(bindir(), "default/libcli/smb/test_smb1cli_session")])
525 plantestsuite("samba.unittests.smb_util_translate", "none",
526 [os.path.join(bindir(), "default/libcli/smb/test_util_translate")])
528 plantestsuite("samba.unittests.talloc_keep_secret", "none",
529 [os.path.join(bindir(), "default/lib/util/test_talloc_keep_secret")])
531 plantestsuite("samba.unittests.tldap", "none",
532 [os.path.join(bindir(), "default/source3/test_tldap")])
533 plantestsuite("samba.unittests.rfc1738", "none",
534 [os.path.join(bindir(), "default/lib/util/test_rfc1738")])
535 plantestsuite("samba.unittests.kerberos", "none",
536 [os.path.join(bindir(), "test_kerberos")])
537 plantestsuite("samba.unittests.ms_fnmatch", "none",
538 [os.path.join(bindir(), "default/lib/util/test_ms_fnmatch")])
539 plantestsuite("samba.unittests.byteorder", "none",
540 [os.path.join(bindir(), "default/lib/util/test_byteorder")])
541 plantestsuite("samba.unittests.bytearray", "none",
542 [os.path.join(bindir(), "default/lib/util/test_bytearray")])
543 plantestsuite("samba.unittests.byteorder_verify", "none",
544 [os.path.join(bindir(), "default/lib/util/test_byteorder_verify")])
545 plantestsuite("samba.unittests.util_paths", "none",
546 [os.path.join(bindir(), "default/lib/util/test_util_paths")])
547 plantestsuite("samba.unittests.util", "none",
548 [os.path.join(bindir(), "default/lib/util/test_util")])
549 plantestsuite("samba.unittests.memcache", "none",
550 [os.path.join(bindir(), "default/lib/util/test_memcache")])
551 plantestsuite("samba.unittests.sys_rw", "none",
552 [os.path.join(bindir(), "default/lib/util/test_sys_rw")])
553 plantestsuite("samba.unittests.stable_sort", "none",
554 [os.path.join(bindir(), "default/lib/util/test_stable_sort")])
555 plantestsuite("samba.unittests.ntlm_check", "none",
556 [os.path.join(bindir(), "default/libcli/auth/test_ntlm_check")])
557 plantestsuite("samba.unittests.gnutls", "none",
558 [os.path.join(bindir(), "default/libcli/auth/test_gnutls")])
559 plantestsuite("samba.unittests.rc4_passwd_buffer", "none",
560 [os.path.join(bindir(), "default/libcli/auth/test_rc4_passwd_buffer")])
561 plantestsuite("samba.unittests.schannel", "none",
562 [os.path.join(bindir(), "default/libcli/auth/test_schannel")])
563 plantestsuite("samba.unittests.test_registry_regfio", "none",
564 [os.path.join(bindir(), "default/source3/test_registry_regfio")])
565 plantestsuite("samba.unittests.test_oLschema2ldif", "none",
566 [os.path.join(bindir(), "default/source4/utils/oLschema2ldif/test_oLschema2ldif")])
567 plantestsuite("samba.unittests.auth.sam", "none",
568 [os.path.join(bindir(), "test_auth_sam")])
569 if have_heimdal_support and not using_system_gssapi:
570 plantestsuite("samba.unittests.auth.heimdal_gensec_unwrap_des", "none",
571 [valgrindify(os.path.join(bindir(), "test_heimdal_gensec_unwrap_des"))])
572 plantestsuite("samba.unittests.test_wsp_parser", "none",
573 [os.path.join(bindir(), "default/libcli/wsp/test_wsp_parser")] + [configuration])
574 if with_elasticsearch_backend:
575 plantestsuite("samba.unittests.mdsparser_es", "none",
576 [os.path.join(bindir(), "default/source3/test_mdsparser_es")] + [configuration])
577 plantestsuite("samba.unittests.mdsparser_es_failures", "none",
578 [os.path.join(bindir(), "default/source3/test_mdsparser_es"),
579 " --option=elasticsearch:testmappingfailures=yes",
580 " --option=elasticsearch:ignoreunknownattribute=yes",
581 " --option=elasticsearch:ignoreunknowntype=yes"] +
582 [configuration])
583 plantestsuite("samba.unittests.credentials", "none",
584 [os.path.join(bindir(), "default/auth/credentials/test_creds")])
585 plantestsuite("samba.unittests.tsocket_bsd_addr", "none",
586 [os.path.join(bindir(), "default/lib/tsocket/test_tsocket_bsd_addr")])
587 if ("HAVE_TCP_USER_TIMEOUT" in config_hash):
588 plantestsuite("samba.unittests.tsocket_tstream", "none",
589 [os.path.join(bindir(), "default/lib/tsocket/test_tstream")],
590 environ={'SOCKET_WRAPPER_DIR': ''})
591 plantestsuite("samba.unittests.adouble", "none",
592 [os.path.join(bindir(), "test_adouble")])
593 plantestsuite("samba.unittests.gnutls_aead_aes_256_cbc_hmac_sha512", "none",
594 [os.path.join(bindir(), "test_gnutls_aead_aes_256_cbc_hmac_sha512")])
595 plantestsuite("samba.unittests.gnutls_sp800_108", "none",
596 [os.path.join(bindir(), "test_gnutls_sp800_108")])
597 plantestsuite("samba.unittests.gkdi", "none",
598 [os.path.join(bindir(), "test_gkdi")])
599 plantestsuite("samba.unittests.gkdi_key_derivation", "none",
600 [os.path.join(bindir(), "test_gkdi_key_derivation")])
601 plantestsuite("samba.unittests.encode_decode", "none",
602 [os.path.join(bindir(), "test_encode_decode")])
604 plantestsuite("samba.unittests.compression.lzxpress_huffman", "none",
605 [os.path.join(bindir(), "default/lib/compression/test_lzx_huffman")])
606 plantestsuite("samba.unittests.compression.lzxpress_plain", "none",
607 [os.path.join(bindir(),
608 "default/lib/compression/test_lzxpress_plain")])
610 plantestsuite("samba.unittests.sddl_conditional_ace", "none",
611 [os.path.join(bindir(), "test_sddl_conditional_ace")])
612 plantestsuite("samba.unittests.run_conditional_ace", "none",
613 [os.path.join(bindir(), "test_run_conditional_ace")])
614 plantestsuite("samba.unittests.claim_conversion", "none",
615 [os.path.join(bindir(), "test_claim_conversion")])
616 plantestsuite("samba.unittests.cmdline", "none",
617 [os.path.join(bindir(), "test_cmdline")])
619 # Run the Rust cargo tests
620 planpythontestsuite("none", "samba.tests.rust")