blob: 5a31eb308dd67c7fbfad38bb4172da0b2878ac83 [file] [log] [blame]
from modules.llvm import build_llvm
import os
from shutil import rmtree
from tempfile import mkdtemp
from unittest import TestCase
from unittest.mock import MagicMock
def create_empty_dir():
return mkdtemp()
def create_dir_with_empty_file(filename):
dir = create_empty_dir()
open(os.path.join(dir, filename), "wt").close()
return dir
class TestBuildLLVM(TestCase):
def tearDown(self):
rmtree(self.buildDir)
def test_invalid_build_dir(self):
self.buildDir = create_empty_dir()
with self.assertRaises(RuntimeError) as context:
build_llvm(None, self.buildDir)
self.assertRegex(
str(context.exception),
"(.*\n)*Couldn't identify build system to use for {}(.*\n)*".format(
self.buildDir))
def test_ninja_build_dir(self):
self.buildDir = create_dir_with_empty_file("build.ninja")
consumer = MagicMock()
build_llvm(consumer, self.buildDir)
command, directory = consumer.consume.call_args[0]
self.assertEqual(command, ["ninja"])
self.assertEqual(directory, self.buildDir)
def test_make_build_dir(self):
self.buildDir = create_dir_with_empty_file("Makefile")
consumer = MagicMock()
build_llvm(consumer, self.buildDir)
command, directory = consumer.consume.call_args[0]
self.assertEqual(command, ["make"])
self.assertEqual(directory, self.buildDir)
def test_flags(self):
self.buildDir = create_dir_with_empty_file("build.ninja")
consumer = MagicMock()
build_llvm(consumer, self.buildDir, ["-t", "targets"])
command, directory = consumer.consume.call_args[0]
self.assertEqual(command, ["ninja", "-t", "targets"])
self.assertEqual(directory, self.buildDir)