aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDiana Picus <diana.picus@linaro.org>2018-02-15 05:52:34 +0100
committerDiana Picus <diana.picus@linaro.org>2018-02-21 13:48:24 +0000
commit49ee93aa15132f4a90a98bca433678b622a5bdb2 (patch)
treea37bf74e3c5ab79179c944979b0a9986a5a6be7a
parent6cdb516102c258904c250090b801776c2dffb919 (diff)
downloadlinaro-scripts-49ee93aa15132f4a90a98bca433678b622a5bdb2.tar.gz
build-and-test: Make it possible to customize test suite run
Allow the user to pass flags to LNT when running the test-suite. Change-Id: Idb66ac25934281613f6392750b38d5c53f99761a
-rw-r--r--scripts/llvm.py12
-rw-r--r--tests/cli/testbuildandtest.py50
2 files changed, 60 insertions, 2 deletions
diff --git a/scripts/llvm.py b/scripts/llvm.py
index bdeae85..8d9a4c1 100644
--- a/scripts/llvm.py
+++ b/scripts/llvm.py
@@ -206,6 +206,7 @@ def build_and_test(args):
enableTestSuite = args.enableTestSuite
sandboxDir = args.sandbox
+ testSuiteFlags = args.testSuiteFlags
if dryRun:
consumer = CommandPrinter()
@@ -266,7 +267,7 @@ def build_and_test(args):
lit = os.path.join(testedBuildDir, "bin", "llvm-lit")
clang = os.path.join(testedBuildDir, "bin", "clang")
run_test_suite(consumer, sandboxDir, testSuiteDir, lit,
- ["--cc={}".format(clang)])
+ ["--cc={}".format(clang)] + testSuiteFlags)
except RuntimeError as exc:
die("Failed because:\n{}".format(str(exc)))
@@ -567,6 +568,15 @@ buildAndTest.add_argument(
"--sandbox",
help="Path to the sandbox where the test-suite should be setup.")
buildAndTest.add_argument(
+ '--lnt-flag',
+ dest='testSuiteFlags',
+ metavar='FLAG',
+ default=[],
+ action='append',
+ help="Additional flags to be passed to LNT when running the test-suite."
+ "May be passed several times. If your flag starts with a '-', use "
+ "'--lnt-flag=-FLAG' to pass it.")
+buildAndTest.add_argument(
'-n', '--dry-run',
dest='dry',
action='store_true',
diff --git a/tests/cli/testbuildandtest.py b/tests/cli/testbuildandtest.py
index f7996ad..86e2203 100644
--- a/tests/cli/testbuildandtest.py
+++ b/tests/cli/testbuildandtest.py
@@ -76,7 +76,7 @@ class Testllvmbuildandtest(LLVMTestCase):
"{build}\$ ninja -j8 check-all".format(build=buildDir))
- def test_stage1_and_testsuite(self):
+ def test_stage1_and_default_testsuite(self):
"""
Test that we dump the correct commands for a single stage build of LLVM
and a run of the test-suite with the resulting compiler.
@@ -123,6 +123,54 @@ class Testllvmbuildandtest(LLVMTestCase):
"--use-lit={build}/bin/llvm-lit --cc={build}/bin/clang".format(
sandbox=sandboxDir, testsuite=testSuiteDir, build=buildDir))
+ def test_stage1_and_custom_testsuite(self):
+ """Test that we can add custom flags to our test-suite run."""
+ reposDir = "path-to-repos"
+ sourceDir = "path-to-sources"
+ buildDir = "path-to-stage1"
+ sandboxDir = "path-to-sandbox"
+
+ testSuiteDir = os.path.join(reposDir, "test-suite")
+ lntDir = os.path.join(reposDir, "lnt")
+
+ output = self.run_with_output(
+ self.llvm_build_and_test(
+ "--dry-run",
+ "--repos-dir", reposDir,
+ "--source-dir", sourceDir,
+ "--stage1-build-dir", buildDir,
+ "--enable-test-suite",
+ "--sandbox", sandboxDir,
+ "--lnt-flag=--threads=4",
+ "--lnt-flag=--cppflags",
+ "--lnt-flag", "'-mcpu=cortex-a15 -marm'"))
+
+ commands = output.splitlines()
+
+ self.assertRegex(commands[0],
+ "{build}\$ cmake -G Ninja .* {sources}".format(
+ build=buildDir, sources=sourceDir))
+
+ self.assertRegex(commands[1],
+ "{build}\$ ninja".format(build=buildDir))
+
+ self.assertRegex(
+ commands[2], ".*\$ virtualenv {sandbox}".format(sandbox=sandboxDir))
+
+ self.assertRegex(
+ commands[3],
+ ".*\$ {sandbox}/bin/python {lnt}/setup.py develop".format(
+ sandbox=sandboxDir,
+ lnt=lntDir))
+
+ self.assertRegex(
+ commands[4],
+ ".*\$ {sandbox}/bin/python {sandbox}/bin/lnt runtest test-suite "
+ "--sandbox={sandbox} --test-suite={testsuite} "
+ "--use-lit={build}/bin/llvm-lit --cc={build}/bin/clang "
+ "--threads=4 --cppflags '-mcpu=cortex-a15 -marm'".format(
+ sandbox=sandboxDir, testsuite=testSuiteDir, build=buildDir))
+
def test_default_stage2(self):
"""
Test that we dump the correct commands for a 2-stage build of LLVM.