Fix sys.path setup to prepend '.', rather than append. Also, remove '..'
authorEli Bendersky <eliben@gmail.com>
Sat, 6 Apr 2013 14:00:00 +0000 (07:00 -0700)
committerEli Bendersky <eliben@gmail.com>
Sat, 6 Apr 2013 14:00:00 +0000 (07:00 -0700)
and allow running only from the root directory.

test/README [new file with mode: 0644]
test/run_examples_test.py
test/run_readelf_tests.py
test/test_arm_support.py
test/test_callframe.py
test/test_dwarf_expr.py
test/test_dwarf_lineprogram.py
test/test_dwarf_structs.py
test/test_utils.py
test/utils.py

diff --git a/test/README b/test/README
new file mode 100644 (file)
index 0000000..2ee6883
--- /dev/null
@@ -0,0 +1 @@
+All tests should be run from the root development directory of pyelftools
index 06e8585a9849c96674a86ed064b8de637d5967e4..10f8c1e38e0b1c3fa13028cdff52f600908d9616 100755 (executable)
@@ -9,7 +9,7 @@
 #-------------------------------------------------------------------------------
 import os, sys
 import logging
-sys.path.insert(0, '.')
+
 from test.utils import run_exe, is_in_rootdir, dump_output_to_temp_files
 
 
@@ -54,7 +54,7 @@ def run_example_and_compare(example_path):
     if rc != 0:
         testlog.info('.......ERROR - example returned error code %s' % rc)
         return False
-    
+
     # Comparison is done as lists of lines, to avoid EOL problems
     if example_out.split() == ref_str.split():
         return True
index d910123962e457d6e47cb141e1fbf29dd4faaf5b..fc64dbc1a9cd924c2375ae520f71e0ed48e40dbf 100755 (executable)
@@ -13,7 +13,6 @@ from difflib import SequenceMatcher
 from optparse import OptionParser
 import logging
 import platform
-sys.path.insert(0, '.') # to load *our* test, not Python's test
 from test.utils import run_exe, is_in_rootdir, dump_output_to_temp_files
 
 
index 804e1dfc746291ff1eef5b0ed0312e4f562f7301..fe35051d5068c83bd495c237b263509b8fc667ef 100644 (file)
@@ -8,15 +8,15 @@ try:
     import unittest2 as unittest
 except ImportError:
     import unittest
-import sys
 import os
 
-sys.path.extend(['.', '..'])
+from test.utils import setup_syspath; setup_syspath()
 from elftools.elf.elffile import ELFFile
 
 class TestARMSupport(unittest.TestCase):
     def test_hello(self):
-        with open(os.path.join('test', 'testfiles', 'simple_gcc.elf.arm'), 'rb') as f:
+        with open(os.path.join('test', 'testfiles',
+                               'simple_gcc.elf.arm'), 'rb') as f:
             elf = ELFFile(f)
             self.assertEqual(elf.get_machine_arch(), 'ARM')
 
@@ -26,5 +26,5 @@ class TestARMSupport(unittest.TestCase):
             self.assertEqual(elf.num_segments(), 2)
 
 if __name__ == '__main__':
-    sys.exit(unittest.main())
+    unittest.main()
 
index 6ea0aeb8a270dfa4b57efc7810e0f88c2cba4685..546ce29529f96e3f796b1a9bbe8b2215bbbf7074 100644 (file)
@@ -8,9 +8,8 @@ try:
     import unittest2 as unittest
 except ImportError:
     import unittest
-import sys
 
-sys.path.extend(['.', '..'])
+from test.utils import setup_syspath; setup_syspath()
 from elftools.common.py3compat import BytesIO
 from elftools.dwarf.callframe import (
     CallFrameInfo, CIE, FDE, instruction_name, CallFrameInstruction,
index 7c81ab302f8b5921b3a5451e0800d4906ebf9eae..031480438e8e4e65c8da72d66f76c5dcb5183089 100644 (file)
@@ -8,9 +8,8 @@ try:
     import unittest2 as unittest
 except ImportError:
     import unittest
-import sys
 
-sys.path.extend(('..', '.'))
+from test.utils import setup_syspath; setup_syspath()
 from elftools.dwarf.descriptions import ExprDumper, set_global_machine_arch
 from elftools.dwarf.structs import DWARFStructs
 
index 2a889728e4032b14f9c7015bfc6b85fc52ca8a4c..8d1b4ab730f323c93a731d138eb4f0c44e5735b0 100644 (file)
@@ -8,9 +8,8 @@ try:
     import unittest2 as unittest
 except ImportError:
     import unittest
-import sys
 
-sys.path.extend(['.', '..'])
+from test.utils import setup_syspath; setup_syspath()
 from elftools.common.py3compat import BytesIO, iteritems
 from elftools.dwarf.lineprogram import LineProgram, LineState, LineProgramEntry
 from elftools.dwarf.structs import DWARFStructs
index 9f6926aea7f563b30f457b54f35d1241ddee60e3..9ca575b12277223770aeaaa39ca5065e49b7084b 100644 (file)
@@ -8,9 +8,8 @@ try:
     import unittest2 as unittest
 except ImportError:
     import unittest
-import sys
 
-sys.path.extend(['.', '..'])
+from test.utils import setup_syspath; setup_syspath()
 from elftools.dwarf.structs import DWARFStructs
 
 
index bc54780b79835fd1558c05d97ebc495707fb11ce..00e6137e5ab3a63572741d7edea8a1dbf1ff8fc5 100644 (file)
@@ -8,10 +8,9 @@ try:
     import unittest2 as unittest
 except ImportError:
     import unittest
-import sys
 from random import randint
 
-sys.path.extend(['.', '..'])
+from test.utils import setup_syspath; setup_syspath()
 from elftools.common.py3compat import int2byte, BytesIO
 from elftools.common.utils import (parse_cstring_from_stream,
         preserve_stream_pos)
index dc6784dc02ef9180b8492076f1756271d1b23898..57ae62cc778a5edec003864efa9ea59778c0ece0 100644 (file)
@@ -10,6 +10,14 @@ import os, sys, subprocess, tempfile
 from elftools.common.py3compat import bytes2str
 
 
+def setup_syspath():
+    """ Setup sys.path so that tests pick up local pyelftools before the
+        installed one when run from development directory.
+    """
+    if sys.path[0] != '.':
+        sys.path.insert(0, '.')
+
+
 def run_exe(exe_path, args):
     """ Runs the given executable as a subprocess, given the
         list of arguments. Captures its return code (rc) and stdout and
@@ -21,14 +29,14 @@ def run_exe(exe_path, args):
     proc = subprocess.Popen(popen_cmd, stdout=subprocess.PIPE)
     proc_stdout = proc.communicate()[0]
     return proc.returncode, bytes2str(proc_stdout)
-    
+
 
 def is_in_rootdir():
     """ Check whether the current dir is the root dir of pyelftools
     """
     dirstuff = os.listdir('.')
     return 'test' in dirstuff and 'elftools' in dirstuff
-    
+
 
 def dump_output_to_temp_files(testlog, *args):
     """ Dumps the output strings given in 'args' to temp files: one for each
@@ -42,4 +50,4 @@ def dump_output_to_temp_files(testlog, *args):
         file.write(s)
         file.close()
         testlog.info('@@ Output #%s dumped to file: %s' % (i + 1, path))
-    
+