import os import sys import semmle import unittest import shutil import re from contextlib import contextmanager import semmle.populator import subprocess BUILTIN_TRAP = "builtins.trap.gz" PY_PATTERN = re.compile(r"(\w+)\.py.[A-Za-z0-9=_\-]+\.trap\.gz") FOLDER_PATTERN = re.compile(r"(\w+).[A-Za-z0-9=_\-]+\.trap\.gz") @contextmanager def environment(key, value): os.environ[key] = value try: yield finally: del os.environ[key] class ExtractorTest(unittest.TestCase): def __init__(self, name): unittest.TestCase.__init__(self, name) self.here = os.path.dirname(__file__) self.module_path = os.path.abspath(os.path.join(self.here, "data")) self.trap_path = os.path.abspath(os.path.join(self.here, "traps")) self.src_archive = None def setUp(self): try: os.makedirs(self.trap_path) except: if os.path.exists(self.trap_path): return raise def tearDown(self): shutil.rmtree(self.trap_