def test_set_build_dir(self): host = Host() with self.assertRaises(Host.ConfigError): host.set_fuzzers_json('no_such_build_dir') if not os.getenv('FUCHSIA_DIR'): return build_dir = host.find_build_dir() ssh_config = Host.join(build_dir, 'ssh-keys', 'ssh_config') zxtools = Host.join(build_dir + '.zircon', 'tools') platform = 'mac-x64' if os.uname()[0] == 'Darwin' else 'linux-x64' executable = Host.join(host.get_host_out_dir(), 'symbolize') symbolizer = Host.join( 'prebuilt', 'third_party', 'clang', platform, 'bin', 'llvm-symbolizer', ) host.set_build_dir(build_dir) self.assertNotEqual(len(host._ids), 0) for id in host._ids: self.assertTrue(os.path.exists(id)) self.assertIsNotNone(host._zxtools) self.assertTrue(os.path.exists(host._symbolizer_exec)) self.assertTrue(os.path.exists(host._llvm_symbolizer))
def test_set_fuzzers_json(self): host = Host() with self.assertRaises(Host.ConfigError): host.set_fuzzers_json('no_such_json') if not os.getenv('FUCHSIA_DIR'): return build_dir = host.find_build_dir() json_file = Host.join(build_dir, 'fuzzers.json') if not os.path.exists(json_file): return # No guarantee of contents; just ensure it parses without crashing host.set_fuzzers_json(json_file)
def test_set_fuzzers_json(self): host = Host() with self.assertRaises(Host.ConfigError): host.set_fuzzers_json('no_such_json') if not os.getenv('FUCHSIA_DIR'): return build_dir = host.find_build_dir() json_file = Host.join(build_dir, 'fuzzers.json') # No guarantee of contents; just ensure it parses without crashing. if os.path.exists(json_file): host.set_fuzzers_json(json_file) # Construct and parse both fuchisa and zircon style fuzzer metadata. data = [ { 'fuzz_host': False, 'fuzzers': ['foo_fuzzer'], 'fuzzers_package': 'foo_fuzzers' }, { 'fuzz_host': False, 'fuzzers': ['zx_fuzzer.asan', 'zx_fuzzer.ubsan'], 'fuzzers_package': 'zircon_fuzzers' }, ] with tempfile.NamedTemporaryFile() as f: f.write(json.dumps(data)) f.seek(0) host.set_fuzzers_json(f.name) self.assertIn(('foo_fuzzers', 'foo_fuzzer'), host.fuzzers) self.assertIn(('zircon_fuzzers', 'zx_fuzzer.asan'), host.fuzzers) self.assertIn(('zircon_fuzzers', 'zx_fuzzer.ubsan'), host.fuzzers)
def test_set_build_dir(self): host = Host() with self.assertRaises(Host.ConfigError): host.set_fuzzers_json('no_such_build_dir') if not os.getenv('FUCHSIA_DIR'): return build_dir = host.find_build_dir() ssh_config = Host.join(build_dir, 'ssh-keys', 'ssh_config') build_ids = Host.join(build_dir, 'ids.txt') zxtools = Host.join(build_dir + '.zircon', 'tools') platform = 'mac-x64' if os.uname()[0] == 'Darwin' else 'linux-x64' executable = Host.join('zircon', 'prebuilt', 'downloads', 'symbolize') symbolizer = Host.join('buildtools', platform, 'clang', 'bin', 'llvm-symbolizer') if not os.path.exists(ssh_config) or not os.path.exists( build_ids) or not os.path.isdir(zxtools): return host.set_build_dir(build_dir) self.assertEqual(host._ids, build_ids) self.assertEqual(host._zxtools, zxtools) self.assertEqual(host._platform, platform) self.assertEqual(host._symbolizer_exec, executable) self.assertEqual(host._llvm_symbolizer, symbolizer)