import sys import os import base64 import tempfile sys.path.append(os.path.dirname(__file__) + "/../node") import prepare_build_config def test_validate_config(): os.environ["JOB_NAME"] = "user_job" config = {} prepare_build_config.validate_config(config, "") os.environ["JOB_NAME"] = "linaro-android-private_job" config = {} try: prepare_build_config.validate_config(config, "") assert False, "Mismatch wasn't caught" except prepare_build_config.BuildConfigMismatchException: pass os.environ["JOB_NAME"] = "linaro-android-private_job" config = {"BUILD_TYPE": "build-android-restricted"} try: prepare_build_config.validate_config(config, "") assert False, "Mismatch wasn't caught" except prepare_build_config.BuildConfigMismatchException: pass os.environ["JOB_NAME"] = "linaro-android-private_job" config = {"BUILD_TYPE": "build-android-restricted"} prepare_build_config.validate_config(config, prepare_build_config.SLAVE_TYPE_RESTRICTED) os.environ["JOB_NAME"] = "linaro-android-private_job" config = {} try: prepare_build_config.validate_config(config, prepare_build_config.SLAVE_TYPE_RESTRICTED) assert False, "Mismatch wasn't caught" except prepare_build_config.BuildConfigMismatchException: pass del os.environ["JOB_NAME"] def test_convert_config_to_shell(): config_base64 = """\ TUFOSUZFU1RfUkVQTz1naXQ6Ly9hbmRyb2lkLmdpdC5saW5hcm8ub3JnL3BsYXRmb3JtL21hbmlm ZXN0LmdpdApNQU5JRkVTVF9CUkFOQ0g9bGluYXJvX2FuZHJvaWRfMi4zLjUKTUFOSUZFU1RfRklM RU5BTUU9c3RhZ2luZy1vbWFwNDQ2MC54bWwKVEFSR0VUX1BST0RVQ1Q9cGFuZGFib2FyZApUQVJH RVRfU0lNVUxBVE9SPWZhbHNlClRPT0xDSEFJTl9VUkw9aHR0cHM6Ly9hbmRyb2lkLWJ1aWxkLmxp bmFyby5vcmcvamVua2lucy9qb2IvbGluYXJvLWFuZHJvaWRfdG9vbGNoYWluLTQuNi1ienIvbGFz dFN1Y2Nlc3NmdWxCdWlsZC9hcnRpZmFjdC9idWlsZC9vdXQvYW5kcm9pZC10b29sY2hhaW4tZWFi aS00LjYtZGFpbHktbGludXgteDg2LnRhci5iejIKTEFWQV9TVUJNSVQ9MQ== """ config_dict = { 'TARGET_SIMULATOR': 'false', 'TARGET_PRODUCT': 'pandaboard', 'TOOLCHAIN_URL': 'https://android-build.linaro.org/jenkins/job/linaro-android_toolchain-4.6-bzr/lastSuccessfulBuild/artifact/build/out/android-toolchain-eabi-4.6-daily-linux-x86.tar.bz2', 'MANIFEST_BRANCH': 'linaro_android_2.3.5', 'MANIFEST_FILENAME': 'staging-omap4460.xml', 'LAVA_SUBMIT': '1', 'MANIFEST_REPO': 'git://android.git.linaro.org/platform/manifest.git' } config_text = base64.b64decode(config_base64) out_fd, out_filename = tempfile.mkstemp() os.close(out_fd) dict = prepare_build_config.convert_config_to_shell(config_text, out_filename) assert dict == config_dict def test_main(): config_base64 = """\ TUFOSUZFU1RfUkVQTz1naXQ6Ly9hbmRyb2lkLmdpdC5saW5hcm8ub3JnL3BsYXRmb3JtL21hbmlm ZXN0LmdpdApNQU5JRkVTVF9CUkFOQ0g9bGluYXJvX2FuZHJvaWRfMi4zLjUKTUFOSUZFU1RfRklM RU5BTUU9c3RhZ2luZy1vbWFwNDQ2MC54bWwKVEFSR0VUX1BST0RVQ1Q9cGFuZGFib2FyZApUQVJH RVRfU0lNVUxBVE9SPWZhbHNlClRPT0xDSEFJTl9VUkw9aHR0cHM6Ly9hbmRyb2lkLWJ1aWxkLmxp bmFyby5vcmcvamVua2lucy9qb2IvbGluYXJvLWFuZHJvaWRfdG9vbGNoYWluLTQuNi1ienIvbGFz dFN1Y2Nlc3NmdWxCdWlsZC9hcnRpZmFjdC9idWlsZC9vdXQvYW5kcm9pZC10b29sY2hhaW4tZWFi aS00LjYtZGFpbHktbGludXgteDg2LnRhci5iejIKTEFWQV9TVUJNSVQ9MQ== """ config_dict = { 'TARGET_SIMULATOR': 'false', 'TARGET_PRODUCT': 'pandaboard', 'TOOLCHAIN_URL': 'https://android-build.linaro.org/jenkins/job/linaro-android_toolchain-4.6-bzr/lastSuccessfulBuild/artifact/build/out/android-toolchain-eabi-4.6-daily-linux-x86.tar.bz2', 'MANIFEST_BRANCH': 'linaro_android_2.3.5', 'MANIFEST_FILENAME': 'staging-omap4460.xml', 'LAVA_SUBMIT': '1', 'MANIFEST_REPO': 'git://android.git.linaro.org/platform/manifest.git' } out_fd, out_filename = tempfile.mkstemp() prepare_build_config.BUILD_CONFIG_FILE = out_filename os.environ["JOB_NAME"] = "foo_bar" prepare_build_config.main(config_base64, True) dict = {} for l in open(out_filename): var, val = l.rstrip().split("=", 1) dict[var] = val assert dict == config_dict