blob: 5a31eb308dd67c7fbfad38bb4172da0b2878ac83 [file] [log] [blame]
Diana Picus37126b82018-01-19 16:14:26 +01001from modules.llvm import build_llvm
2
3import os
4
5from shutil import rmtree
6from tempfile import mkdtemp
7
8from unittest import TestCase
9from unittest.mock import MagicMock
10
11
12def create_empty_dir():
13 return mkdtemp()
14
15
16def create_dir_with_empty_file(filename):
17 dir = create_empty_dir()
18 open(os.path.join(dir, filename), "wt").close()
19 return dir
20
21
22class TestBuildLLVM(TestCase):
23
24 def tearDown(self):
25 rmtree(self.buildDir)
26
27 def test_invalid_build_dir(self):
28 self.buildDir = create_empty_dir()
29
30 with self.assertRaises(RuntimeError) as context:
31 build_llvm(None, self.buildDir)
32
33 self.assertRegex(
34 str(context.exception),
35 "(.*\n)*Couldn't identify build system to use for {}(.*\n)*".format(
36 self.buildDir))
37
38 def test_ninja_build_dir(self):
39 self.buildDir = create_dir_with_empty_file("build.ninja")
40 consumer = MagicMock()
41
42 build_llvm(consumer, self.buildDir)
43 command, directory = consumer.consume.call_args[0]
44
45 self.assertEqual(command, ["ninja"])
46 self.assertEqual(directory, self.buildDir)
47
48 def test_make_build_dir(self):
49 self.buildDir = create_dir_with_empty_file("Makefile")
50 consumer = MagicMock()
51
52 build_llvm(consumer, self.buildDir)
53 command, directory = consumer.consume.call_args[0]
54
55 self.assertEqual(command, ["make"])
56 self.assertEqual(directory, self.buildDir)
57
58 def test_flags(self):
59 self.buildDir = create_dir_with_empty_file("build.ninja")
60 consumer = MagicMock()
61
62 build_llvm(consumer, self.buildDir, ["-t", "targets"])
63 command, directory = consumer.consume.call_args[0]
64
65 self.assertEqual(command, ["ninja", "-t", "targets"])
66 self.assertEqual(directory, self.buildDir)