1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
import SCons.Util, os
def generate(env) :
def registerTest(env, target, type = "unit", is_checker = False) :
if env["TEST_TYPE"] == "all" or env["TEST_TYPE"] == type :
if SCons.Util.is_List(target) :
cmd = target[0].abspath
else :
cmd = target.abspath
params = ""
# Special support for unittest checker
if is_checker and env.get("checker_report", False) :
params = " --xml > " + os.path.join(target[0].dir.path, "checker-report.xml")
ignore_prefix = ""
if env.get("TEST_IGNORE_RESULT", False) :
ignore_prefix = "-"
# Set environment variables for running the test
test_env = env.Clone()
for i in ["HOME", "USERPROFILE", "APPDATA", "ASAN_OPTIONS", "LSAN_OPTIONS", "SWIFT_NETWORK_TEST_IPV4", "SWIFT_NETWORK_TEST_IPV6"]:
if os.environ.get(i, "") :
test_env["ENV"][i] = os.environ[i]
if env["target"] == "android" :
test_env["ENV"]["PATH"] = env["android_sdk_bin"] + ";" + test_env["ENV"]["PATH"]
else :
if test_env["PLATFORM"] == "darwin" :
test_env["ENV"]["DYLD_FALLBACK_LIBRARY_PATH"] = ":".join(map(lambda x : str(x), test_env.get("LIBPATH", [])))
elif test_env["PLATFORM"] == "win32" :
test_env["ENV"]["PATH"] = ";".join(map(lambda x : str(x), test_env.get("LIBRUNPATH", []))) + ";" + test_env["ENV"]["PATH"]
# Run the test
if env["target"] == "android":
exec_name = os.path.basename(cmd)
test_env.Command("**dummy**", target, SCons.Action.Action(
["adb shell mount -o rw,remount /system",
"adb push " + cmd + " /system/bin/" + exec_name,
"adb shell SWIFT_CLIENTTEST_JID=\"" + os.getenv("SWIFT_CLIENTTEST_JID") + "\" SWIFT_CLIENTTEST_PASS=\"" + os.getenv("SWIFT_CLIENTTEST_PASS") + "\" " + env.get("TEST_RUNNER", "") + "/system/bin/" + exec_name], cmdstr = "$TESTCOMSTR"))
else :
test_env.Command("**dummy**", target,
SCons.Action.Action(ignore_prefix + env.get("TEST_RUNNER", "") + cmd + " " + params, cmdstr = "$TESTCOMSTR"))
def registerScriptTests(env, scripts, name, type) :
if env["TEST_TYPE"] == "all" or env["TEST_TYPE"] == type :
pass
env.AddMethod(registerTest, "Test")
env.AddMethod(registerScriptTests, "ScriptTests")
def exists(env) :
return True
|