blob: 8c57e8d9c9003ccefb8930c9e3460b0f98005f82 [file] [log] [blame]
#!/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()