aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Sokolovsky <paul.sokolovsky@linaro.org>2012-04-23 17:45:03 +0300
committerPaul Sokolovsky <paul.sokolovsky@linaro.org>2012-04-23 17:45:03 +0300
commit9b14838b95943454611884a55219bf538239bba9 (patch)
treee58467058e86711eb0efad372c7594d89c34bbb4
parent5d54f9d2f5bc4053e58dc58941ccd2e3d580318d (diff)
prepare_build_config.py: Fix mistakes and add more tests.
-rwxr-xr-xnode/prepare_build_config.py28
-rw-r--r--tests/test_prepare_build_config.py58
2 files changed, 77 insertions, 9 deletions
diff --git a/node/prepare_build_config.py b/node/prepare_build_config.py
index 3086453..6949305 100755
--- a/node/prepare_build_config.py
+++ b/node/prepare_build_config.py
@@ -65,11 +65,11 @@ def validate_config(config, slave_type):
raise BuildConfigMismatchException("Incompatible slave type, job owner and build type")
-def convert_config_to_shell(config_text):
+def convert_config_to_shell(config_text, out_filename):
config = {}
- out = open(BUILD_CONFIG_FILE, "w")
+ out = open(out_filename, "w")
- for l in cfg.split("\n"):
+ for l in config_text.split("\n"):
l = l.strip()
if not l or l[0] == "#":
continue
@@ -79,15 +79,25 @@ def convert_config_to_shell(config_text):
var, val = l.split("=", 1)
val = shell_unquote(val)
config[var] = val
- print "%s=%s" % (var, pipes.quote(val))
+ out.write("%s=%s\n" % (var, pipes.quote(val)))
out.close()
+ return config
-
-if __name__ == "__main__":
- config_text = base64.b64decode(sys.argv[1])
- config = convert_config_to_shell(config_text, get_slave_type())
+def main(config_in, is_base64):
+ if is_base64:
+ config_in = base64.b64decode(config_in)
+ config = convert_config_to_shell(config_in, BUILD_CONFIG_FILE)
try:
- validate_config(config)
+ validate_config(config, get_slave_type())
except BuildConfigMismatchException, e:
print str(e)
sys.exit(1)
+
+if __name__ == "__main__":
+ optparser = optparse.OptionParser(usage="%prog")
+ optparser.add_option("--base64", action="store_true", help="Process only jobs matching regex pattern")
+ options, args = optparser.parse_args(sys.argv[1:])
+ if len(args) != 1:
+ optparser.error("Wrong number of arguments")
+ main(args[0], opts.base64)
+
diff --git a/tests/test_prepare_build_config.py b/tests/test_prepare_build_config.py
index e8692c4..ff504f7 100644
--- a/tests/test_prepare_build_config.py
+++ b/tests/test_prepare_build_config.py
@@ -1,5 +1,7 @@
import sys
import os
+import base64
+import tempfile
sys.path.append(os.path.dirname(__file__) + "/../node")
import prepare_build_config
@@ -36,3 +38,59 @@ def test_validate_config():
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