#!/usr/bin/env python # Copyright 2014 The Chromium Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. import os import sys import unittest SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) PARENT_DIR = os.path.dirname(SCRIPT_DIR) DATA_DIR = os.path.join(SCRIPT_DIR, 'data') sys.path.append(PARENT_DIR) import elf class TestIsDynamicElf(unittest.TestCase): def test_arm(self): static_nexe = os.path.join(DATA_DIR, 'test_static_arm.nexe') self.assertFalse(elf.IsDynamicElf(static_nexe, False)) def test_x86_32(self): dyn_nexe = os.path.join(DATA_DIR, 'test_dynamic_x86_32.nexe') static_nexe = os.path.join(DATA_DIR, 'test_static_x86_32.nexe') self.assertTrue(elf.IsDynamicElf(dyn_nexe, False)) self.assertFalse(elf.IsDynamicElf(static_nexe, False)) def test_x86_64(self): dyn_nexe = os.path.join(DATA_DIR, 'test_dynamic_x86_64.nexe') static_nexe = os.path.join(DATA_DIR, 'test_static_x86_64.nexe') self.assertTrue(elf.IsDynamicElf(dyn_nexe, True)) self.assertFalse(elf.IsDynamicElf(static_nexe, True)) class TestParseElfHeader(unittest.TestCase): def test_invalid_elf(self): self.assertRaises(elf.Error, elf.ParseElfHeader, __file__) def test_arm_elf_parse(self): """Test parsing of ARM elf header.""" static_nexe = os.path.join(DATA_DIR, 'test_static_arm.nexe') arch, dynamic = elf.ParseElfHeader(static_nexe) self.assertEqual(arch, 'arm') self.assertFalse(dynamic) def test_x86_32_elf_parse(self): """Test parsing of x86-32 elf header.""" dyn_nexe = os.path.join(DATA_DIR, 'test_dynamic_x86_32.nexe') static_nexe = os.path.join(DATA_DIR, 'test_static_x86_32.nexe') arch, dynamic = elf.ParseElfHeader(dyn_nexe) self.assertEqual(arch, 'x86-32') self.assertTrue(dynamic) arch, dynamic = elf.ParseElfHeader(static_nexe) self.assertEqual(arch, 'x86-32') self.assertFalse(dynamic) def test_x86_64_elf_parse(self): """Test parsing of x86-64 elf header.""" dyn_nexe = os.path.join(DATA_DIR, 'test_dynamic_x86_64.nexe') static_nexe = os.path.join(DATA_DIR, 'test_static_x86_64.nexe') arch, dynamic = elf.ParseElfHeader(dyn_nexe) self.assertEqual(arch, 'x86-64') self.assertTrue(dynamic) arch, dynamic = elf.ParseElfHeader(static_nexe) self.assertEqual(arch, 'x86-64') self.assertFalse(dynamic) if __name__ == '__main__': unittest.main()