ctdb: Ensure ‘ret’ is always initialized
[samba.git] / selftest / tests.py
1 #!/usr/bin/python
2 # This script generates a list of testsuites that should be run as part of
3 # the Samba test suite.
4
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".
8
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.
15
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.
20
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
27
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")
33
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()
44
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
55
56 planpythontestsuite("none", "samba.tests.source")
57 planpythontestsuite("none", "samba.tests.source_chars")
58
59 if have_man_pages_support:
60     planpythontestsuite("none", "samba.tests.docs")
61
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")
70
71 # LDB tests for standalone operation
72 planpythontestsuite("none", "api",
73                     name="ldb.python.api",
74                     extra_path=['lib/ldb/tests/python'],
75                     environ={'HAVE_LMDB': str(int(have_lmdb))})
76 planpythontestsuite("none", "crash",
77                     name="ldb.python.crash",
78                     extra_path=['lib/ldb/tests/python'],
79                     environ={'HAVE_LMDB': str(int(have_lmdb))})
80 planpythontestsuite("none", "index",
81                     name="ldb.python.index",
82                     extra_path=['lib/ldb/tests/python'],
83                     environ={'HAVE_LMDB': str(int(have_lmdb))})
84 planpythontestsuite("none", "repack",
85                     name="ldb.python.repack",
86                     extra_path=['lib/ldb/tests/python'],
87                     environ={'HAVE_LMDB': str(int(have_lmdb))})
88
89 # LDB tests for standalone operation, in the tr_TR.UTF-8 to cover
90 # dotless i locales, see
91 # https://bugzilla.samba.org/show_bug.cgi?id=15248
92 planpythontestsuite("none", "api",
93                     name="ldb.python.api.tr",
94                     extra_path=['lib/ldb/tests/python'],
95                     environ={'LC_ALL': 'tr_TR.UTF-8',
96                              'HAVE_LMDB': str(int(have_lmdb))})
97 planpythontestsuite("none", "index",
98                     name="ldb.python.index.tr",
99                     extra_path=['lib/ldb/tests/python'],
100                     environ={'LC_ALL': 'tr_TR.UTF-8',
101                              'HAVE_LMDB': str(int(have_lmdb))})
102
103 # LDB cmocka tests
104
105 ldb_test_exes = ['test_ldb_qsort',
106                  'test_ldb_dn',
107                  'ldb_msg_test',
108                  'ldb_tdb_mod_op_test',
109                  'ldb_tdb_guid_mod_op_test',
110                  'ldb_tdb_kv_ops_test',
111                  'ldb_tdb_test',
112                  'ldb_match_test',
113                  'ldb_key_value_test',
114                  # we currently don't run ldb_key_value_sub_txn_tdb_test as it
115                  # tests the nested/sub transaction handling
116                  # on operations which the TDB backend does not currently
117                  # support
118                  # 'ldb_key_value_sub_txn_tdb_test'
119                  'ldb_parse_test',
120                  'ldb_filter_attrs_test',
121                  'ldb_filter_attrs_in_place_test',
122                  ]
123 # if LIB_LDAP and LIB_LBER defined, then we can test ldb_ldap backend
124 # behavior regression for bz#14413
125 if have_libldap and have_liblber:
126     ldb_test_exes += ["lldb_ldap_test"]
127
128 if have_lmdb:
129     ldb_test_exes += ['ldb_mdb_mod_op_test',
130                       'ldb_lmdb_test',
131                       # we don't want to run ldb_lmdb_size_test (which proves
132                       # we can fit > 4G of data into the DB), it would fill up
133                       # the disk on many of our test instances
134                       'ldb_mdb_kv_ops_test',
135                       'ldb_key_value_sub_txn_mdb_test',
136                       'ldb_lmdb_free_list_test']
137 else:
138     ldb_test_exes += ['ldb_no_lmdb_test']
139
140 for ldb_test_exe in ldb_test_exes:
141     plantestsuite(f"ldb.unittests.{ldb_test_exe}", "none",
142                   [os.path.join(bindir(), f"default/lib/ldb/{ldb_test_exe}")])
143
144 # Shell based LDB blackbox tests and the older ldbtest C tests
145 ldbdir = os.path.join(srcdir(), "lib/ldb")
146 plantestsuite("ldb.base", "none", "%s/tests/test-tdb-subunit.sh %s" % (ldbdir, samba4bindir))
147
148 planpythontestsuite("none", "samba.tests.credentials")
149 planpythontestsuite("none", "samba.tests.registry")
150 planpythontestsuite("ad_dc_ntvfs:local", "samba.tests.auth")
151 planpythontestsuite("none", "samba.tests.get_opt")
152 planpythontestsuite("none", "samba.tests.cred_opt")
153 planpythontestsuite("none", "samba.tests.security")
154 planpythontestsuite("none", "samba.tests.dcerpc.misc")
155 planpythontestsuite("none", "samba.tests.dcerpc.integer")
156 planpythontestsuite("none", "samba.tests.param")
157 planpythontestsuite("none", "samba.tests.upgrade")
158 planpythontestsuite("none", "samba.tests.core")
159 planpythontestsuite("none", "samba.tests.common")
160 planpythontestsuite("none", "samba.tests.provision")
161 planpythontestsuite("none", "samba.tests.password_quality")
162 planpythontestsuite("none", "samba.tests.strings")
163 planpythontestsuite("none", "samba.tests.netcmd")
164 planpythontestsuite("none", "samba.tests.dcerpc.rpc_talloc")
165 planpythontestsuite("none", "samba.tests.dcerpc.array")
166 planpythontestsuite("none", "samba.tests.dcerpc.string_tests")
167 planpythontestsuite("none", "samba.tests.hostconfig")
168 planpythontestsuite("ad_dc_ntvfs:local", "samba.tests.messaging")
169 planpythontestsuite("none", "samba.tests.s3param")
170 planpythontestsuite("none", "samba.tests.s3passdb")
171 planpythontestsuite("none", "samba.tests.s3registry")
172 planpythontestsuite("none", "samba.tests.s3windb")
173 planpythontestsuite("none", "samba.tests.s3idmapdb")
174 planpythontestsuite("none", "samba.tests.samba3sam")
175 planpythontestsuite("none", "samba.tests.dsdb_api")
176 planpythontestsuite("none", "samba.tests.smbconf")
177 planpythontestsuite("none", "samba.tests.logfiles")
178 planpythontestsuite("none", "samba.tests.conditional_ace_claims")
179 planpythontestsuite(
180     "none", "wafsamba.tests.test_suite",
181     extra_path=[os.path.join(samba4srcdir, "..", "buildtools"),
182                 os.path.join(samba4srcdir, "..", "third_party", "waf")])
183 planpythontestsuite("fileserver", "samba.tests.smbd_fuzztest")
184 planpythontestsuite("nt4_dc_smb1", "samba.tests.dcerpc.binding")
185 planpythontestsuite('ad_dc:local', "samba.tests.dcerpc.samr_change_password")
186 planpythontestsuite('ad_dc_fips:local',
187                     "samba.tests.dcerpc.samr_change_password",
188                     environ={'GNUTLS_FORCE_FIPS_MODE': '1',
189                              'OPENSSL_FORCE_FIPS_MODE': '1'})
190
191 planpythontestsuite("none", "samba.tests.safe_tarfile")
192
193 def cmdline(script, *args):
194     """
195     Prefix PYTHON env var and append --configurefile option to abs script path.
196
197     script.sh arg1 arg2
198     -->
199     PYTHON=python /path/to/bbdir/script.sh arg1 arg2 \
200     --configurefile $SMB_CONF_FILE
201     """
202     return [
203         "PYTHON=%s" % python,
204         os.path.join(bbdir, script),
205     ] + list(args) + [configuration]
206
207
208 plantestsuite(
209     "samba4.blackbox.demote-saveddb", "none",
210     cmdline('demote-saveddb.sh', '$PREFIX_ABS/demote'))
211
212 plantestsuite(
213     "samba4.blackbox.dbcheck.alpha13", "none",
214     cmdline('dbcheck-oldrelease.sh', '$PREFIX_ABS/provision',
215             'alpha13'))
216
217 # same test as above but skip member link checks
218 plantestsuite(
219     "samba4.blackbox.dbcheck.alpha13.quick", "none",
220     cmdline('dbcheck-oldrelease.sh', '$PREFIX_ABS/provision',
221             'alpha13', '--quick-membership-checks'))
222
223 plantestsuite(
224     "samba4.blackbox.dbcheck.release-4-0-0", "none",
225     cmdline('dbcheck-oldrelease.sh', '$PREFIX_ABS/provision',
226             'release-4-0-0'))
227
228 # same test as above but skip member link checks
229 plantestsuite(
230     "samba4.blackbox.dbcheck.release-4-0-0.quick", "none",
231     cmdline('dbcheck-oldrelease.sh', '$PREFIX_ABS/provision',
232             'release-4-0-0', '--quick-membership-checks'))
233
234 plantestsuite(
235     "samba4.blackbox.dbcheck.release-4-1-0rc3", "none",
236     cmdline('dbcheck-oldrelease.sh', '$PREFIX_ABS/provision',
237             'release-4-1-0rc3'))
238
239 # same test as above but skip member link checks
240 plantestsuite(
241     "samba4.blackbox.dbcheck.release-4-1-0rc3.quick", "none",
242     cmdline('dbcheck-oldrelease.sh', '$PREFIX_ABS/provision',
243             'release-4-1-0rc3', '--quick-membership-checks'))
244
245 plantestsuite(
246     "samba4.blackbox.dbcheck.release-4-1-6-partial-object", "none",
247     cmdline('dbcheck-oldrelease.sh', '$PREFIX_ABS/provision',
248             'release-4-1-6-partial-object'))
249
250 # same test as above but skip member link checks
251 plantestsuite(
252     "samba4.blackbox.dbcheck.release-4-1-6-partial-object.quick", "none",
253     cmdline('dbcheck-oldrelease.sh', '$PREFIX_ABS/provision',
254             'release-4-1-6-partial-object', '--quick-membership-checks'))
255
256 plantestsuite(
257     "samba4.blackbox.dbcheck.release-4-5-0-pre1", "none",
258     cmdline('dbcheck-oldrelease.sh', '$PREFIX_ABS/provision',
259             'release-4-5-0-pre1'))
260
261 # same test as above but skip member link checks
262 plantestsuite(
263     "samba4.blackbox.dbcheck.release-4-5-0-pre1.quick", "none",
264     cmdline('dbcheck-oldrelease.sh', '$PREFIX_ABS/provision',
265             'release-4-5-0-pre1', '--quick-membership-checks'))
266
267 plantestsuite(
268     "samba4.blackbox.upgradeprovision.alpha13", "none",
269     cmdline('upgradeprovision-oldrelease.sh', '$PREFIX_ABS/provision',
270             'alpha13'))
271
272 plantestsuite(
273     "samba4.blackbox.upgradeprovision.release-4-0-0", "none",
274     cmdline('upgradeprovision-oldrelease.sh', '$PREFIX_ABS/provision',
275             'release-4-0-0'))
276
277 plantestsuite(
278     "samba4.blackbox.tombstones-expunge.release-4-5-0-pre1", "none",
279     cmdline('tombstones-expunge.sh', '$PREFIX_ABS/provision',
280             'release-4-5-0-pre1'))
281
282 plantestsuite(
283     "samba4.blackbox.dbcheck-links.release-4-5-0-pre1", "none",
284     cmdline('dbcheck-links.sh', '$PREFIX_ABS/provision',
285             'release-4-5-0-pre1'))
286
287 plantestsuite(
288     "samba4.blackbox.runtime-links.release-4-5-0-pre1", "none",
289     cmdline('runtime-links.sh', '$PREFIX_ABS/provision',
290             'release-4-5-0-pre1'))
291
292 plantestsuite(
293     "samba4.blackbox.schemaupgrade", "none",
294     cmdline('schemaupgrade.sh', '$PREFIX_ABS/provision'))
295
296 plantestsuite(
297     "samba4.blackbox.functionalprep", "none",
298     cmdline('functionalprep.sh', '$PREFIX_ABS/provision'))
299
300 plantestsuite(
301     "samba4.blackbox.test_special_group", "none",
302     cmdline('test_special_group.sh', '$PREFIX_ABS/provision'))
303
304 planpythontestsuite("fileserver", "samba.tests.blackbox.http_content")
305 planpythontestsuite("fileserver", "samba.tests.blackbox.http_chunk")
306 planpythontestsuite("none", "samba.tests.upgradeprovision")
307 planpythontestsuite("none", "samba.tests.xattr")
308 planpythontestsuite("none", "samba.tests.ntacls")
309 planpythontestsuite("none", "samba.tests.policy")
310 planpythontestsuite("none", "samba.tests.kcc.graph")
311 planpythontestsuite("none", "samba.tests.kcc.graph_utils")
312 planpythontestsuite("none", "samba.tests.kcc.ldif_import_export")
313 planpythontestsuite("none", "samba.tests.graph")
314 plantestsuite("wafsamba.duplicate_symbols", "none", [os.path.join(srcdir(), "buildtools/wafsamba/test_duplicate_symbol.sh")])
315 planpythontestsuite("none", "samba.tests.glue")
316 planpythontestsuite("none", "samba.tests.tdb_util")
317 planpythontestsuite("none", "samba.tests.samdb")
318 planpythontestsuite("none", "samba.tests.samdb_api")
319 planpythontestsuite("none", "samba.tests.ndr.gkdi")
320 planpythontestsuite("none", "samba.tests.ndr.gmsa")
321 planpythontestsuite("none", "samba.tests.ndr.wbint")
322
323 if with_pam:
324     env = "ad_member"
325     options = [
326         {
327             "description": "krb5",
328             "pam_options": "krb5_auth krb5_ccache_type=FILE:%s/krb5cc_pam_test_%%u" % (tempfile.gettempdir()),
329         },
330         {
331             "description": "default",
332             "pam_options": "",
333         },
334     ]
335     for o in options:
336         description = o["description"]
337         pam_options = "'%s'" % o["pam_options"]
338
339         plantestsuite("samba.tests.pam_winbind(local+%s)" % description, env,
340                       [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
341                        valgrindify(python), pam_wrapper_so_path,
342                        "$SERVER", "$USERNAME", "$PASSWORD",
343                        pam_options])
344         plantestsuite("samba.tests.pam_winbind(domain1+%s)" % description, env,
345                       [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
346                        valgrindify(python), pam_wrapper_so_path,
347                        "$DOMAIN", "$DC_USERNAME", "$DC_PASSWORD",
348                        pam_options])
349         plantestsuite("samba.tests.pam_winbind(domain2+%s)" % description, env,
350                       [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
351                        valgrindify(python), pam_wrapper_so_path,
352                        "$REALM", "$DC_USERNAME", "$DC_PASSWORD",
353                        pam_options])
354         plantestsuite("samba.tests.pam_winbind(domain3+%s)" % description, env,
355                       [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
356                        valgrindify(python), pam_wrapper_so_path,
357                        "''", "${DC_USERNAME}@${DOMAIN}", "$DC_PASSWORD",
358                        pam_options])
359         plantestsuite("samba.tests.pam_winbind(domain4+%s)" % description, env,
360                       [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
361                        valgrindify(python), pam_wrapper_so_path,
362                        "''", "${DC_USERNAME}@${REALM}", "$DC_PASSWORD",
363                        pam_options])
364         plantestsuite("samba.tests.pam_winbind(domain5+%s)" % description, env,
365                       [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
366                        valgrindify(python), pam_wrapper_so_path,
367                        "$REALM", "${DC_USERNAME}@${DOMAIN}", "$DC_PASSWORD",
368                        pam_options])
369         plantestsuite("samba.tests.pam_winbind(domain6+%s)" % description, env,
370                       [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
371                        valgrindify(python), pam_wrapper_so_path,
372                        "$DOMAIN", "${DC_USERNAME}@${REALM}", "$DC_PASSWORD",
373                        pam_options])
374         plantestsuite("samba.tests.pam_winbind(trust_f_both1+%s)" % description, env,
375                       [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
376                        valgrindify(python), pam_wrapper_so_path,
377                        "$TRUST_F_BOTH_DOMAIN",
378                        "$TRUST_F_BOTH_USERNAME",
379                        "$TRUST_F_BOTH_PASSWORD",
380                        pam_options])
381         plantestsuite("samba.tests.pam_winbind(trust_f_both2+%s)" % description, env,
382                       [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
383                        valgrindify(python), pam_wrapper_so_path,
384                        "$TRUST_F_BOTH_REALM",
385                        "$TRUST_F_BOTH_USERNAME",
386                        "$TRUST_F_BOTH_PASSWORD",
387                        pam_options])
388         plantestsuite("samba.tests.pam_winbind(trust_f_both3+%s)" % description, env,
389                       [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
390                        valgrindify(python), pam_wrapper_so_path,
391                        "''",
392                        "${TRUST_F_BOTH_USERNAME}@${TRUST_F_BOTH_DOMAIN}",
393                        "$TRUST_F_BOTH_PASSWORD",
394                        pam_options])
395         plantestsuite("samba.tests.pam_winbind(trust_f_both4+%s)" % description, env,
396                       [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
397                        valgrindify(python), pam_wrapper_so_path,
398                        "''",
399                        "${TRUST_F_BOTH_USERNAME}@${TRUST_F_BOTH_REALM}",
400                        "$TRUST_F_BOTH_PASSWORD",
401                        pam_options])
402         plantestsuite("samba.tests.pam_winbind(trust_f_both5+%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_REALM}",
406                        "${TRUST_F_BOTH_USERNAME}@${TRUST_F_BOTH_DOMAIN}",
407                        "$TRUST_F_BOTH_PASSWORD",
408                        pam_options])
409         plantestsuite("samba.tests.pam_winbind(trust_f_both6+%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_DOMAIN}",
413                        "${TRUST_F_BOTH_USERNAME}@${TRUST_F_BOTH_REALM}",
414                        "$TRUST_F_BOTH_PASSWORD",
415                        pam_options])
416         plantestsuite("samba.tests.pam_winbind(trust_e_both1+%s)" % description, env,
417                       [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
418                        valgrindify(python), pam_wrapper_so_path,
419                        "$TRUST_E_BOTH_DOMAIN",
420                        "$TRUST_E_BOTH_USERNAME",
421                        "$TRUST_E_BOTH_PASSWORD",
422                        pam_options])
423         plantestsuite("samba.tests.pam_winbind(trust_e_both2+%s)" % description, env,
424                       [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
425                        valgrindify(python), pam_wrapper_so_path,
426                        "$TRUST_E_BOTH_REALM",
427                        "$TRUST_E_BOTH_USERNAME",
428                        "$TRUST_E_BOTH_PASSWORD",
429                        pam_options])
430         plantestsuite("samba.tests.pam_winbind(trust_e_both3+%s)" % description, env,
431                       [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
432                        valgrindify(python), pam_wrapper_so_path,
433                        "''",
434                        "${TRUST_E_BOTH_USERNAME}@${TRUST_E_BOTH_DOMAIN}",
435                        "$TRUST_E_BOTH_PASSWORD",
436                        pam_options])
437         plantestsuite("samba.tests.pam_winbind(trust_e_both4+%s)" % description, env,
438                       [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
439                        valgrindify(python), pam_wrapper_so_path,
440                        "''",
441                        "${TRUST_E_BOTH_USERNAME}@${TRUST_E_BOTH_REALM}",
442                        "$TRUST_E_BOTH_PASSWORD",
443                        pam_options])
444         plantestsuite("samba.tests.pam_winbind(trust_e_both5+%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_REALM}",
448                        "${TRUST_E_BOTH_USERNAME}@${TRUST_E_BOTH_DOMAIN}",
449                        "$TRUST_E_BOTH_PASSWORD",
450                        pam_options])
451         plantestsuite("samba.tests.pam_winbind(trust_e_both6+%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_DOMAIN}",
455                        "${TRUST_E_BOTH_USERNAME}@${TRUST_E_BOTH_REALM}",
456                        "$TRUST_E_BOTH_PASSWORD",
457                        pam_options])
458
459         for authtok_options in ["", "use_authtok", "try_authtok"]:
460             _pam_options = "'%s %s'" % (o["pam_options"], authtok_options)
461             _description = "%s %s" % (description, authtok_options)
462             plantestsuite("samba.tests.pam_winbind_chauthtok(domain+%s)" % _description, env,
463                           [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind_chauthtok.sh"),
464                            valgrindify(python), pam_wrapper_so_path, pam_set_items_so_path,
465                            "$DOMAIN", "TestPamOptionsUser", "oldp@ssword0", "newp@ssword0",
466                            _pam_options, 'yes',
467                            "$DC_SERVER", "$DC_USERNAME", "$DC_PASSWORD"])
468
469         plantestsuite("samba.tests.pam_winbind_warn_pwd_expire(domain+%s)" % description, env,
470                       [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind_warn_pwd_expire.sh"),
471                        valgrindify(python), pam_wrapper_so_path,
472                        "$DOMAIN", "alice", "Secret007",
473                        pam_options])
474
475     description = "krb5"
476     pam_options = "'krb5_auth krb5_ccache_type=FILE:%s/krb5cc_pam_test_setcred_%%u'" % (tempfile.gettempdir())
477     plantestsuite("samba.tests.pam_winbind_setcred(domain+%s)" % description, "ad_dc:local",
478                   [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind_setcred.sh"),
479                    valgrindify(python), pam_wrapper_so_path,
480                    "${DOMAIN}", "${DC_USERNAME}", "${DC_PASSWORD}",
481                    pam_options])
482
483
484 plantestsuite("samba.unittests.krb5samba", "none",
485               [os.path.join(bindir(), "default/testsuite/unittests/test_krb5samba")])
486 plantestsuite("samba.unittests.lib_util_modules", "none",
487               [os.path.join(bindir(), "default/testsuite/unittests/test_lib_util_modules")])
488 plantestsuite("samba.unittests.background_send",
489               "none",
490               [os.path.join(
491                   bindir(),
492                   "default/testsuite/unittests/test_background_send"),
493                "$SMB_CONF_PATH"])
494
495 plantestsuite("samba.unittests.smb1cli_session", "none",
496               [os.path.join(bindir(), "default/libcli/smb/test_smb1cli_session")])
497 plantestsuite("samba.unittests.smb_util_translate", "none",
498               [os.path.join(bindir(), "default/libcli/smb/test_util_translate")])
499
500 plantestsuite("samba.unittests.talloc_keep_secret", "none",
501               [os.path.join(bindir(), "default/lib/util/test_talloc_keep_secret")])
502
503 plantestsuite("samba.unittests.tldap", "none",
504               [os.path.join(bindir(), "default/source3/test_tldap")])
505 plantestsuite("samba.unittests.rfc1738", "none",
506               [os.path.join(bindir(), "default/lib/util/test_rfc1738")])
507 plantestsuite("samba.unittests.kerberos", "none",
508               [os.path.join(bindir(), "test_kerberos")])
509 plantestsuite("samba.unittests.ms_fnmatch", "none",
510               [os.path.join(bindir(), "default/lib/util/test_ms_fnmatch")])
511 plantestsuite("samba.unittests.byteorder", "none",
512               [os.path.join(bindir(), "default/lib/util/test_byteorder")])
513 plantestsuite("samba.unittests.bytearray", "none",
514               [os.path.join(bindir(), "default/lib/util/test_bytearray")])
515 plantestsuite("samba.unittests.byteorder_verify", "none",
516               [os.path.join(bindir(), "default/lib/util/test_byteorder_verify")])
517 plantestsuite("samba.unittests.util_paths", "none",
518               [os.path.join(bindir(), "default/lib/util/test_util_paths")])
519 plantestsuite("samba.unittests.util", "none",
520               [os.path.join(bindir(), "default/lib/util/test_util")])
521 plantestsuite("samba.unittests.memcache", "none",
522               [os.path.join(bindir(), "default/lib/util/test_memcache")])
523 plantestsuite("samba.unittests.sys_rw", "none",
524               [os.path.join(bindir(), "default/lib/util/test_sys_rw")])
525 plantestsuite("samba.unittests.stable_sort", "none",
526               [os.path.join(bindir(), "default/lib/util/test_stable_sort")])
527 plantestsuite("samba.unittests.ntlm_check", "none",
528               [os.path.join(bindir(), "default/libcli/auth/test_ntlm_check")])
529 plantestsuite("samba.unittests.gnutls", "none",
530               [os.path.join(bindir(), "default/libcli/auth/test_gnutls")])
531 plantestsuite("samba.unittests.rc4_passwd_buffer", "none",
532               [os.path.join(bindir(), "default/libcli/auth/test_rc4_passwd_buffer")])
533 plantestsuite("samba.unittests.schannel", "none",
534               [os.path.join(bindir(), "default/libcli/auth/test_schannel")])
535 plantestsuite("samba.unittests.test_registry_regfio", "none",
536               [os.path.join(bindir(), "default/source3/test_registry_regfio")])
537 plantestsuite("samba.unittests.test_oLschema2ldif", "none",
538               [os.path.join(bindir(), "default/source4/utils/oLschema2ldif/test_oLschema2ldif")])
539 plantestsuite("samba.unittests.auth.sam", "none",
540               [os.path.join(bindir(), "test_auth_sam")])
541 if have_heimdal_support and not using_system_gssapi:
542     plantestsuite("samba.unittests.auth.heimdal_gensec_unwrap_des", "none",
543                   [valgrindify(os.path.join(bindir(), "test_heimdal_gensec_unwrap_des"))])
544 plantestsuite("samba.unittests.test_wsp_parser", "none",
545               [os.path.join(bindir(), "default/libcli/wsp/test_wsp_parser")] + [configuration])
546 if with_elasticsearch_backend:
547     plantestsuite("samba.unittests.mdsparser_es", "none",
548                   [os.path.join(bindir(), "default/source3/test_mdsparser_es")] + [configuration])
549     plantestsuite("samba.unittests.mdsparser_es_failures", "none",
550                   [os.path.join(bindir(), "default/source3/test_mdsparser_es"),
551                   " --option=elasticsearch:testmappingfailures=yes",
552                   " --option=elasticsearch:ignoreunknownattribute=yes",
553                   " --option=elasticsearch:ignoreunknowntype=yes"] +
554                   [configuration])
555 plantestsuite("samba.unittests.credentials", "none",
556               [os.path.join(bindir(), "default/auth/credentials/test_creds")])
557 plantestsuite("samba.unittests.tsocket_bsd_addr", "none",
558               [os.path.join(bindir(), "default/lib/tsocket/test_tsocket_bsd_addr")])
559 if ("HAVE_TCP_USER_TIMEOUT" in config_hash):
560     plantestsuite("samba.unittests.tsocket_tstream", "none",
561                   [os.path.join(bindir(), "default/lib/tsocket/test_tstream")],
562                   environ={'SOCKET_WRAPPER_DIR': ''})
563 plantestsuite("samba.unittests.adouble", "none",
564               [os.path.join(bindir(), "test_adouble")])
565 plantestsuite("samba.unittests.gnutls_aead_aes_256_cbc_hmac_sha512", "none",
566               [os.path.join(bindir(), "test_gnutls_aead_aes_256_cbc_hmac_sha512")])
567 plantestsuite("samba.unittests.gnutls_sp800_108", "none",
568               [os.path.join(bindir(), "test_gnutls_sp800_108")])
569 plantestsuite("samba.unittests.gkdi", "none",
570               [os.path.join(bindir(), "test_gkdi")])
571 plantestsuite("samba.unittests.gkdi_key_derivation", "none",
572               [os.path.join(bindir(), "test_gkdi_key_derivation")])
573 plantestsuite("samba.unittests.encode_decode", "none",
574               [os.path.join(bindir(), "test_encode_decode")])
575
576 plantestsuite("samba.unittests.compression.lzxpress_huffman", "none",
577               [os.path.join(bindir(), "default/lib/compression/test_lzx_huffman")])
578 plantestsuite("samba.unittests.compression.lzxpress_plain", "none",
579               [os.path.join(bindir(),
580                             "default/lib/compression/test_lzxpress_plain")])
581
582 plantestsuite("samba.unittests.sddl_conditional_ace", "none",
583               [os.path.join(bindir(), "test_sddl_conditional_ace")])
584 plantestsuite("samba.unittests.run_conditional_ace", "none",
585               [os.path.join(bindir(), "test_run_conditional_ace")])
586 plantestsuite("samba.unittests.claim_conversion", "none",
587               [os.path.join(bindir(), "test_claim_conversion")])