Move build_llvm into LLVMBuildConfig
This makes it possible to know what build tool to use in dry run mode
when the build directory has not been configured yet.
Change-Id: Ib620167c62f4c290621ace582d6ad893ad475bc3
diff --git a/tests/unittests/testbuildllvm.py b/tests/unittests/testbuildllvm.py
index 5a31eb3..a1f9282 100644
--- a/tests/unittests/testbuildllvm.py
+++ b/tests/unittests/testbuildllvm.py
@@ -1,4 +1,4 @@
-from modules.llvm import build_llvm
+from modules.llvm import LLVMBuildConfig
import os
@@ -27,8 +27,9 @@
def test_invalid_build_dir(self):
self.buildDir = create_empty_dir()
+ buildConfig = LLVMBuildConfig(None, self.buildDir, None)
with self.assertRaises(RuntimeError) as context:
- build_llvm(None, self.buildDir)
+ buildConfig.build()
self.assertRegex(
str(context.exception),
@@ -39,7 +40,8 @@
self.buildDir = create_dir_with_empty_file("build.ninja")
consumer = MagicMock()
- build_llvm(consumer, self.buildDir)
+ buildConfig = LLVMBuildConfig(None, self.buildDir, consumer)
+ buildConfig.build()
command, directory = consumer.consume.call_args[0]
self.assertEqual(command, ["ninja"])
@@ -49,7 +51,8 @@
self.buildDir = create_dir_with_empty_file("Makefile")
consumer = MagicMock()
- build_llvm(consumer, self.buildDir)
+ buildConfig = LLVMBuildConfig(None, self.buildDir, consumer)
+ buildConfig.build()
command, directory = consumer.consume.call_args[0]
self.assertEqual(command, ["make"])
@@ -59,8 +62,25 @@
self.buildDir = create_dir_with_empty_file("build.ninja")
consumer = MagicMock()
- build_llvm(consumer, self.buildDir, ["-t", "targets"])
+ buildConfig = LLVMBuildConfig(None, self.buildDir, consumer)
+ buildConfig.build(["-t", "targets"])
command, directory = consumer.consume.call_args[0]
self.assertEqual(command, ["ninja", "-t", "targets"])
self.assertEqual(directory, self.buildDir)
+
+ def test_cmake_then_build(self):
+ """
+ Test that when using the same build config to both configure and build,
+ we use the build tool corresponding to the generator used for cmake
+ regardless of what the build directory already contains.
+ """
+ self.buildDir = create_dir_with_empty_file("Makefile")
+ sourceConfig = MagicMock()
+ consumer = MagicMock()
+
+ buildConfig = LLVMBuildConfig(sourceConfig, self.buildDir, consumer)
+ buildConfig.cmake([], "Ninja")
+ buildConfig.build()
+
+ consumer.consume.assert_called_with(["ninja"], self.buildDir)
diff --git a/tests/unittests/testllvmbuildconfig.py b/tests/unittests/testllvmbuildconfig.py
index 509e8a4..efc7bfa 100644
--- a/tests/unittests/testllvmbuildconfig.py
+++ b/tests/unittests/testllvmbuildconfig.py
@@ -25,10 +25,11 @@
def test_configure_generator(self):
"""Test that we can use a custom generator for our CMake command."""
- buildConfig = LLVMBuildConfig(self.sourceConfig, self.buildPath)
-
consumer = MagicMock()
- buildConfig.cmake(consumer, [], "Unix Makefiles")
+ buildConfig = LLVMBuildConfig(self.sourceConfig, self.buildPath,
+ consumer)
+
+ buildConfig.cmake([], "Unix Makefiles")
command, directory = consumer.consume.call_args[0]
self.assertEqual(directory, self.buildPath)
@@ -41,12 +42,13 @@
def test_configure_definitions(self):
"""Test that we can define custom CMake variables."""
- buildConfig = LLVMBuildConfig(self.sourceConfig, self.buildPath)
+ consumer = MagicMock()
+ buildConfig = LLVMBuildConfig(self.sourceConfig, self.buildPath,
+ consumer)
flags = ["-DCMAKE_BUILD_TYPE=Release",
"-DCMAKE_CXX_FLAGS=\"-Oz -g\""]
- consumer = MagicMock()
- buildConfig.cmake(consumer, flags, "Ninja")
+ buildConfig.cmake(flags, "Ninja")
command, directory = consumer.consume.call_args[0]
self.assertEqual(directory, self.buildPath)
@@ -74,10 +76,11 @@
self.sourceConfig.for_each_subproj.side_effect = for_each_subproj
- buildConfig = LLVMBuildConfig(self.sourceConfig, self.buildPath)
-
consumer = MagicMock()
- buildConfig.cmake(consumer, [], "Ninja")
+ buildConfig = LLVMBuildConfig(self.sourceConfig, self.buildPath,
+ consumer)
+
+ buildConfig.cmake([], "Ninja")
command, directory = consumer.consume.call_args[0]
self.assertEqual(directory, self.buildPath)