"""Command line interface tests for llvm.py build. Note that although this uses the unittest framework, it does *not* contain unit tests. """ import os from shutil import rmtree from tempfile import mkdtemp from llvmtestcase import LLVMTestCase, require_command_arg, debug def create_empty_file(path): open(path, "wt").close() class Testllvmbuild(LLVMTestCase): @classmethod def llvm_build(cls, *args, **kwargs): return cls.command_with_defaults("build", *args, **kwargs) def setUp(self): self.buildDir = mkdtemp() def tearDown(self): rmtree(self.buildDir) @require_command_arg("--build-dir") def test_build_dir_is_compulsory(self): """Test that we get an error if we don't pass the build dir.""" self.run_with_output(self.llvm_build()) def test_dry_run(self): """ Test that we at least dump the expected command. It's difficult to check whether we would actually run it correctly without depending too much on external factors. """ create_empty_file(os.path.join(self.buildDir, "build.ninja")) output = self.run_with_output( self.llvm_build( "--dry-run", "--build-dir", self.buildDir, "--build-flag=-j8", "--build-flag", "llc", "--build-flag", "llvm-mc")) self.assertEqual(output, "{}$ ninja -j8 llc llvm-mc\n".format(self.buildDir))