tests/passwords: Test that LDAP password changes work for Protected Users
[Samba.git] / selftest / tests.py
blobe35c3fff3c1206fac21aae7771eea864bb3df4d3
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
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 try:
29 config_h = os.environ["CONFIG_H"]
30 except KeyError:
31 samba4bindir = bindir()
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")
51 planpythontestsuite("none", "samba.tests.source")
52 planpythontestsuite("none", "samba.tests.source_chars")
54 if have_man_pages_support:
55 planpythontestsuite("none", "samba.tests.docs")
57 try:
58 import testscenarios
59 except ImportError:
60 skiptestsuite("subunit", "testscenarios not available")
61 else:
62 planpythontestsuite("none", "subunit.tests.test_suite")
63 planpythontestsuite("none", "samba.tests.blackbox.ndrdump")
64 planpythontestsuite("none", "samba.tests.blackbox.check_output")
65 planpythontestsuite("none", "api", name="ldb.python", extra_path=['lib/ldb/tests/python'])
66 planpythontestsuite("none", "samba.tests.credentials")
67 planpythontestsuite("none", "samba.tests.registry")
68 planpythontestsuite("ad_dc_ntvfs:local", "samba.tests.auth")
69 planpythontestsuite("none", "samba.tests.get_opt")
70 planpythontestsuite("none", "samba.tests.cred_opt")
71 planpythontestsuite("none", "samba.tests.security")
72 planpythontestsuite("none", "samba.tests.dcerpc.misc")
73 planpythontestsuite("none", "samba.tests.dcerpc.integer")
74 planpythontestsuite("none", "samba.tests.param")
75 planpythontestsuite("none", "samba.tests.upgrade")
76 planpythontestsuite("none", "samba.tests.core")
77 planpythontestsuite("none", "samba.tests.common")
78 planpythontestsuite("none", "samba.tests.provision")
79 planpythontestsuite("none", "samba.tests.password_quality")
80 planpythontestsuite("none", "samba.tests.strings")
81 planpythontestsuite("none", "samba.tests.netcmd")
82 planpythontestsuite("none", "samba.tests.dcerpc.rpc_talloc")
83 planpythontestsuite("none", "samba.tests.dcerpc.array")
84 planpythontestsuite("none", "samba.tests.dcerpc.string_tests")
85 planpythontestsuite("none", "samba.tests.hostconfig")
86 planpythontestsuite("ad_dc_ntvfs:local", "samba.tests.messaging")
87 planpythontestsuite("none", "samba.tests.s3param")
88 planpythontestsuite("none", "samba.tests.s3passdb")
89 planpythontestsuite("none", "samba.tests.s3registry")
90 planpythontestsuite("none", "samba.tests.s3windb")
91 planpythontestsuite("none", "samba.tests.s3idmapdb")
92 planpythontestsuite("none", "samba.tests.samba3sam")
93 planpythontestsuite("none", "samba.tests.dsdb_api")
94 planpythontestsuite(
95 "none", "wafsamba.tests.test_suite",
96 extra_path=[os.path.join(samba4srcdir, "..", "buildtools"),
97 os.path.join(samba4srcdir, "..", "third_party", "waf")])
98 planpythontestsuite("fileserver", "samba.tests.smbd_fuzztest")
99 planpythontestsuite("nt4_dc_smb1", "samba.tests.dcerpc.binding")
100 planpythontestsuite('ad_dc:local', "samba.tests.dcerpc.samr_change_password")
101 planpythontestsuite('ad_dc_fips:local',
102 "samba.tests.dcerpc.samr_change_password",
103 environ={'GNUTLS_FORCE_FIPS_MODE': '1',
104 'OPENSSL_FORCE_FIPS_MODE': '1'})
107 def cmdline(script, *args):
109 Prefix PYTHON env var and append --configurefile option to abs script path.
111 script.sh arg1 arg2
113 PYTHON=python /path/to/bbdir/script.sh arg1 arg2 \
114 --configurefile $SMB_CONF_FILE
116 return [
117 "PYTHON=%s" % python,
118 os.path.join(bbdir, script),
119 ] + list(args) + [configuration]
122 plantestsuite(
123 "samba4.blackbox.demote-saveddb", "none",
124 cmdline('demote-saveddb.sh', '$PREFIX_ABS/demote'))
126 plantestsuite(
127 "samba4.blackbox.dbcheck.alpha13", "none",
128 cmdline('dbcheck-oldrelease.sh', '$PREFIX_ABS/provision',
129 'alpha13'))
131 # same test as above but skip member link checks
132 plantestsuite(
133 "samba4.blackbox.dbcheck.alpha13.quick", "none",
134 cmdline('dbcheck-oldrelease.sh', '$PREFIX_ABS/provision',
135 'alpha13', '--quick-membership-checks'))
137 plantestsuite(
138 "samba4.blackbox.dbcheck.release-4-0-0", "none",
139 cmdline('dbcheck-oldrelease.sh', '$PREFIX_ABS/provision',
140 'release-4-0-0'))
142 # same test as above but skip member link checks
143 plantestsuite(
144 "samba4.blackbox.dbcheck.release-4-0-0.quick", "none",
145 cmdline('dbcheck-oldrelease.sh', '$PREFIX_ABS/provision',
146 'release-4-0-0', '--quick-membership-checks'))
148 plantestsuite(
149 "samba4.blackbox.dbcheck.release-4-1-0rc3", "none",
150 cmdline('dbcheck-oldrelease.sh', '$PREFIX_ABS/provision',
151 'release-4-1-0rc3'))
153 # same test as above but skip member link checks
154 plantestsuite(
155 "samba4.blackbox.dbcheck.release-4-1-0rc3.quick", "none",
156 cmdline('dbcheck-oldrelease.sh', '$PREFIX_ABS/provision',
157 'release-4-1-0rc3', '--quick-membership-checks'))
159 plantestsuite(
160 "samba4.blackbox.dbcheck.release-4-1-6-partial-object", "none",
161 cmdline('dbcheck-oldrelease.sh', '$PREFIX_ABS/provision',
162 'release-4-1-6-partial-object'))
164 # same test as above but skip member link checks
165 plantestsuite(
166 "samba4.blackbox.dbcheck.release-4-1-6-partial-object.quick", "none",
167 cmdline('dbcheck-oldrelease.sh', '$PREFIX_ABS/provision',
168 'release-4-1-6-partial-object', '--quick-membership-checks'))
170 plantestsuite(
171 "samba4.blackbox.dbcheck.release-4-5-0-pre1", "none",
172 cmdline('dbcheck-oldrelease.sh', '$PREFIX_ABS/provision',
173 'release-4-5-0-pre1'))
175 # same test as above but skip member link checks
176 plantestsuite(
177 "samba4.blackbox.dbcheck.release-4-5-0-pre1.quick", "none",
178 cmdline('dbcheck-oldrelease.sh', '$PREFIX_ABS/provision',
179 'release-4-5-0-pre1', '--quick-membership-checks'))
181 plantestsuite(
182 "samba4.blackbox.upgradeprovision.alpha13", "none",
183 cmdline('upgradeprovision-oldrelease.sh', '$PREFIX_ABS/provision',
184 'alpha13'))
186 plantestsuite(
187 "samba4.blackbox.upgradeprovision.release-4-0-0", "none",
188 cmdline('upgradeprovision-oldrelease.sh', '$PREFIX_ABS/provision',
189 'release-4-0-0'))
191 plantestsuite(
192 "samba4.blackbox.tombstones-expunge.release-4-5-0-pre1", "none",
193 cmdline('tombstones-expunge.sh', '$PREFIX_ABS/provision',
194 'release-4-5-0-pre1'))
196 plantestsuite(
197 "samba4.blackbox.dbcheck-links.release-4-5-0-pre1", "none",
198 cmdline('dbcheck-links.sh', '$PREFIX_ABS/provision',
199 'release-4-5-0-pre1'))
201 plantestsuite(
202 "samba4.blackbox.runtime-links.release-4-5-0-pre1", "none",
203 cmdline('runtime-links.sh', '$PREFIX_ABS/provision',
204 'release-4-5-0-pre1'))
206 plantestsuite(
207 "samba4.blackbox.schemaupgrade", "none",
208 cmdline('schemaupgrade.sh', '$PREFIX_ABS/provision'))
210 plantestsuite(
211 "samba4.blackbox.functionalprep", "none",
212 cmdline('functionalprep.sh', '$PREFIX_ABS/provision'))
214 planpythontestsuite("none", "samba.tests.upgradeprovision")
215 planpythontestsuite("none", "samba.tests.xattr")
216 planpythontestsuite("none", "samba.tests.ntacls")
217 planpythontestsuite("none", "samba.tests.policy")
218 planpythontestsuite("none", "samba.tests.kcc.graph")
219 planpythontestsuite("none", "samba.tests.kcc.graph_utils")
220 planpythontestsuite("none", "samba.tests.kcc.ldif_import_export")
221 planpythontestsuite("none", "samba.tests.graph")
222 plantestsuite("wafsamba.duplicate_symbols", "none", [os.path.join(srcdir(), "buildtools/wafsamba/test_duplicate_symbol.sh")])
223 planpythontestsuite("none", "samba.tests.glue")
224 planpythontestsuite("none", "samba.tests.tdb_util")
225 planpythontestsuite("none", "samba.tests.samdb")
226 planpythontestsuite("none", "samba.tests.samdb_api")
227 planpythontestsuite("none", "samba.tests.ndr")
229 if with_pam:
230 env = "ad_member"
231 options = [
233 "description": "krb5",
234 "pam_options": "krb5_auth krb5_ccache_type=FILE",
237 "description": "default",
238 "pam_options": "",
241 for o in options:
242 description = o["description"]
243 pam_options = "'%s'" % o["pam_options"]
245 plantestsuite("samba.tests.pam_winbind(local+%s)" % description, env,
246 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
247 valgrindify(python), pam_wrapper_so_path,
248 "$SERVER", "$USERNAME", "$PASSWORD",
249 pam_options])
250 plantestsuite("samba.tests.pam_winbind(domain1+%s)" % description, env,
251 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
252 valgrindify(python), pam_wrapper_so_path,
253 "$DOMAIN", "$DC_USERNAME", "$DC_PASSWORD",
254 pam_options])
255 plantestsuite("samba.tests.pam_winbind(domain2+%s)" % description, env,
256 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
257 valgrindify(python), pam_wrapper_so_path,
258 "$REALM", "$DC_USERNAME", "$DC_PASSWORD",
259 pam_options])
260 plantestsuite("samba.tests.pam_winbind(domain3+%s)" % description, env,
261 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
262 valgrindify(python), pam_wrapper_so_path,
263 "''", "${DC_USERNAME}@${DOMAIN}", "$DC_PASSWORD",
264 pam_options])
265 plantestsuite("samba.tests.pam_winbind(domain4+%s)" % description, env,
266 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
267 valgrindify(python), pam_wrapper_so_path,
268 "''", "${DC_USERNAME}@${REALM}", "$DC_PASSWORD",
269 pam_options])
270 plantestsuite("samba.tests.pam_winbind(domain5+%s)" % description, env,
271 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
272 valgrindify(python), pam_wrapper_so_path,
273 "$REALM", "${DC_USERNAME}@${DOMAIN}", "$DC_PASSWORD",
274 pam_options])
275 plantestsuite("samba.tests.pam_winbind(domain6+%s)" % description, env,
276 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
277 valgrindify(python), pam_wrapper_so_path,
278 "$DOMAIN", "${DC_USERNAME}@${REALM}", "$DC_PASSWORD",
279 pam_options])
280 plantestsuite("samba.tests.pam_winbind(trust_f_both1+%s)" % description, env,
281 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
282 valgrindify(python), pam_wrapper_so_path,
283 "$TRUST_F_BOTH_DOMAIN",
284 "$TRUST_F_BOTH_USERNAME",
285 "$TRUST_F_BOTH_PASSWORD",
286 pam_options])
287 plantestsuite("samba.tests.pam_winbind(trust_f_both2+%s)" % description, env,
288 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
289 valgrindify(python), pam_wrapper_so_path,
290 "$TRUST_F_BOTH_REALM",
291 "$TRUST_F_BOTH_USERNAME",
292 "$TRUST_F_BOTH_PASSWORD",
293 pam_options])
294 plantestsuite("samba.tests.pam_winbind(trust_f_both3+%s)" % description, env,
295 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
296 valgrindify(python), pam_wrapper_so_path,
297 "''",
298 "${TRUST_F_BOTH_USERNAME}@${TRUST_F_BOTH_DOMAIN}",
299 "$TRUST_F_BOTH_PASSWORD",
300 pam_options])
301 plantestsuite("samba.tests.pam_winbind(trust_f_both4+%s)" % description, env,
302 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
303 valgrindify(python), pam_wrapper_so_path,
304 "''",
305 "${TRUST_F_BOTH_USERNAME}@${TRUST_F_BOTH_REALM}",
306 "$TRUST_F_BOTH_PASSWORD",
307 pam_options])
308 plantestsuite("samba.tests.pam_winbind(trust_f_both5+%s)" % description, env,
309 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
310 valgrindify(python), pam_wrapper_so_path,
311 "${TRUST_F_BOTH_REALM}",
312 "${TRUST_F_BOTH_USERNAME}@${TRUST_F_BOTH_DOMAIN}",
313 "$TRUST_F_BOTH_PASSWORD",
314 pam_options])
315 plantestsuite("samba.tests.pam_winbind(trust_f_both6+%s)" % description, env,
316 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
317 valgrindify(python), pam_wrapper_so_path,
318 "${TRUST_F_BOTH_DOMAIN}",
319 "${TRUST_F_BOTH_USERNAME}@${TRUST_F_BOTH_REALM}",
320 "$TRUST_F_BOTH_PASSWORD",
321 pam_options])
322 plantestsuite("samba.tests.pam_winbind(trust_e_both1+%s)" % description, env,
323 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
324 valgrindify(python), pam_wrapper_so_path,
325 "$TRUST_E_BOTH_DOMAIN",
326 "$TRUST_E_BOTH_USERNAME",
327 "$TRUST_E_BOTH_PASSWORD",
328 pam_options])
329 plantestsuite("samba.tests.pam_winbind(trust_e_both2+%s)" % description, env,
330 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
331 valgrindify(python), pam_wrapper_so_path,
332 "$TRUST_E_BOTH_REALM",
333 "$TRUST_E_BOTH_USERNAME",
334 "$TRUST_E_BOTH_PASSWORD",
335 pam_options])
336 plantestsuite("samba.tests.pam_winbind(trust_e_both3+%s)" % description, env,
337 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
338 valgrindify(python), pam_wrapper_so_path,
339 "''",
340 "${TRUST_E_BOTH_USERNAME}@${TRUST_E_BOTH_DOMAIN}",
341 "$TRUST_E_BOTH_PASSWORD",
342 pam_options])
343 plantestsuite("samba.tests.pam_winbind(trust_e_both4+%s)" % description, env,
344 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
345 valgrindify(python), pam_wrapper_so_path,
346 "''",
347 "${TRUST_E_BOTH_USERNAME}@${TRUST_E_BOTH_REALM}",
348 "$TRUST_E_BOTH_PASSWORD",
349 pam_options])
350 plantestsuite("samba.tests.pam_winbind(trust_e_both5+%s)" % description, env,
351 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
352 valgrindify(python), pam_wrapper_so_path,
353 "${TRUST_E_BOTH_REALM}",
354 "${TRUST_E_BOTH_USERNAME}@${TRUST_E_BOTH_DOMAIN}",
355 "$TRUST_E_BOTH_PASSWORD",
356 pam_options])
357 plantestsuite("samba.tests.pam_winbind(trust_e_both6+%s)" % description, env,
358 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
359 valgrindify(python), pam_wrapper_so_path,
360 "${TRUST_E_BOTH_DOMAIN}",
361 "${TRUST_E_BOTH_USERNAME}@${TRUST_E_BOTH_REALM}",
362 "$TRUST_E_BOTH_PASSWORD",
363 pam_options])
365 for authtok_options in ["", "use_authtok", "try_authtok"]:
366 _pam_options = "'%s %s'" % (o["pam_options"], authtok_options)
367 _description = "%s %s" % (description, authtok_options)
368 plantestsuite("samba.tests.pam_winbind_chauthtok(domain+%s)" % _description, env,
369 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind_chauthtok.sh"),
370 valgrindify(python), pam_wrapper_so_path, pam_set_items_so_path,
371 "$DOMAIN", "TestPamOptionsUser", "oldp@ssword0", "newp@ssword0",
372 _pam_options, 'yes',
373 "$DC_SERVER", "$DC_USERNAME", "$DC_PASSWORD"])
375 plantestsuite("samba.tests.pam_winbind_warn_pwd_expire(domain+%s)" % description, env,
376 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind_warn_pwd_expire.sh"),
377 valgrindify(python), pam_wrapper_so_path,
378 "$DOMAIN", "alice", "Secret007",
379 pam_options])
382 plantestsuite("samba.unittests.krb5samba", "none",
383 [os.path.join(bindir(), "default/testsuite/unittests/test_krb5samba")])
384 plantestsuite("samba.unittests.lib_util_modules", "none",
385 [os.path.join(bindir(), "default/testsuite/unittests/test_lib_util_modules")])
386 plantestsuite("samba.unittests.background_send",
387 "none",
388 [os.path.join(
389 bindir(),
390 "default/testsuite/unittests/test_background_send"),
391 "$SMB_CONF_PATH"])
393 plantestsuite("samba.unittests.smb1cli_session", "none",
394 [os.path.join(bindir(), "default/libcli/smb/test_smb1cli_session")])
395 plantestsuite("samba.unittests.smb_util_translate", "none",
396 [os.path.join(bindir(), "default/libcli/smb/test_util_translate")])
398 plantestsuite("samba.unittests.talloc_keep_secret", "none",
399 [os.path.join(bindir(), "default/lib/util/test_talloc_keep_secret")])
401 plantestsuite("samba.unittests.tldap", "none",
402 [os.path.join(bindir(), "default/source3/test_tldap")])
403 plantestsuite("samba.unittests.rfc1738", "none",
404 [os.path.join(bindir(), "default/lib/util/test_rfc1738")])
405 plantestsuite("samba.unittests.kerberos", "none",
406 [os.path.join(bindir(), "test_kerberos")])
407 plantestsuite("samba.unittests.ms_fnmatch", "none",
408 [os.path.join(bindir(), "default/lib/util/test_ms_fnmatch")])
409 plantestsuite("samba.unittests.byteorder", "none",
410 [os.path.join(bindir(), "default/lib/util/test_byteorder")])
411 plantestsuite("samba.unittests.bytearray", "none",
412 [os.path.join(bindir(), "default/lib/util/test_bytearray")])
413 plantestsuite("samba.unittests.byteorder_verify", "none",
414 [os.path.join(bindir(), "default/lib/util/test_byteorder_verify")])
415 plantestsuite("samba.unittests.util_paths", "none",
416 [os.path.join(bindir(), "default/lib/util/test_util_paths")])
417 plantestsuite("samba.unittests.util", "none",
418 [os.path.join(bindir(), "default/lib/util/test_util")])
419 plantestsuite("samba.unittests.memcache", "none",
420 [os.path.join(bindir(), "default/lib/util/test_memcache")])
421 plantestsuite("samba.unittests.sys_rw", "none",
422 [os.path.join(bindir(), "default/lib/util/test_sys_rw")])
423 plantestsuite("samba.unittests.ntlm_check", "none",
424 [os.path.join(bindir(), "default/libcli/auth/test_ntlm_check")])
425 plantestsuite("samba.unittests.gnutls", "none",
426 [os.path.join(bindir(), "default/libcli/auth/test_gnutls")])
427 plantestsuite("samba.unittests.rc4_passwd_buffer", "none",
428 [os.path.join(bindir(), "default/libcli/auth/test_rc4_passwd_buffer")])
429 plantestsuite("samba.unittests.schannel", "none",
430 [os.path.join(bindir(), "default/libcli/auth/test_schannel")])
431 plantestsuite("samba.unittests.test_registry_regfio", "none",
432 [os.path.join(bindir(), "default/source3/test_registry_regfio")])
433 plantestsuite("samba.unittests.test_oLschema2ldif", "none",
434 [os.path.join(bindir(), "default/source4/utils/oLschema2ldif/test_oLschema2ldif")])
435 if with_elasticsearch_backend:
436 plantestsuite("samba.unittests.mdsparser_es", "none",
437 [os.path.join(bindir(), "default/source3/test_mdsparser_es")] + [configuration])
438 plantestsuite("samba.unittests.mdsparser_es_failures", "none",
439 [os.path.join(bindir(), "default/source3/test_mdsparser_es"),
440 " --option=elasticsearch:testmappingfailures=yes",
441 " --option=elasticsearch:ignoreunknownattribute=yes",
442 " --option=elasticsearch:ignoreunknowntype=yes"] +
443 [configuration])
444 plantestsuite("samba.unittests.credentials", "none",
445 [os.path.join(bindir(), "default/auth/credentials/test_creds")])
446 plantestsuite("samba.unittests.tsocket_bsd_addr", "none",
447 [os.path.join(bindir(), "default/lib/tsocket/test_tsocket_bsd_addr")])
448 plantestsuite("samba.unittests.adouble", "none",
449 [os.path.join(bindir(), "test_adouble")])