コード例 #1
0
ファイル: test_injections.py プロジェクト: Raniac/NEURO-LEARN
def test_injector_delayed_del():
    # interesting case -- if we still have an instance of injector hanging around
    # and then create a new one, activate it but then finally delete/gc old one
    # it would (currently) reset import back (because atm defined as class var)
    # which would ruin operation of the new injector
    orig__import__ = __builtin__.__import__
    try:
        due = DueCreditCollector()

        inj = DueCreditInjector(collector=due)
        inj.activate(retrospect=False)
        assert __builtin__.__import__ is not orig__import__
        assert inj._orig_import is not None
        inj.deactivate()
        assert __builtin__.__import__ is orig__import__
        assert inj._orig_import is None

        # create 2nd one
        inj2 = DueCreditInjector(collector=due)
        inj2.activate(retrospect=False)
        assert __builtin__.__import__ is not orig__import__
        assert inj2._orig_import is not None
        del inj
        inj = None
        gc.collect()  # To cause __del__
        assert __builtin__.__import__ is not orig__import__  # would fail if del had side-effect
        assert inj2._orig_import is not None
        inj2.deactivate()
        assert __builtin__.__import__ is orig__import__
        import abc  # and new imports work just fine
    finally:
        __builtin__.__import__ = orig__import__
コード例 #2
0
ファイル: test_injections.py プロジェクト: Raniac/NEURO-LEARN
 def setup(self):
     lgr.log(5, "Setting up for a TestActiveInjector test")
     self._cleanup_modules()
     self.due = DueCreditCollector()
     self.injector = DueCreditInjector(collector=self.due)
     self.injector.activate(
         retrospect=False)  # numpy might be already loaded...
コード例 #3
0
 def setup(self):
     """Not an EPA File, Skipping Doc."""
     lgr.log(5, "Setting up for a TestActiveInjector test")
     self._cleanup_modules()
     self.due = DueCreditCollector()
     self.injector = DueCreditInjector(collector=self.due)
     self.injector.activate(retrospect=False)
コード例 #4
0
def test_cover_our_injections():
    """This one tests only import/syntax/api for the injections."""
    due = DueCreditCollector()
    inj = DueCreditInjector(collector=due)
    for modname in get_modules_for_injection():
        mod = __import__('duecredit.injections.' + modname, fromlist=["duecredit.injections"])
        mod.inject(inj)
コード例 #5
0
ファイル: test_injections.py プロジェクト: Raniac/NEURO-LEARN
def test_no_double_activation():
    orig__import__ = __builtin__.__import__
    try:
        due = DueCreditCollector()
        injector = DueCreditInjector(collector=due)
        injector.activate()
        assert __builtin__.__import__ is not orig__import__
        duecredited__import__ = __builtin__.__import__
        # TODO: catch/analyze/swallow warning
        injector.activate()
        assert __builtin__.__import__ is duecredited__import__  # we didn't decorate again
    finally:
        injector.deactivate()
        __builtin__.__import__ = orig__import__
コード例 #6
0
def test_no_double_activation():
    """Not an EPA File, Skipping Doc."""
    orig__import__ = __builtin__.__import__
    try:
        due = DueCreditCollector()
        injector = DueCreditInjector(collector=due)
        injector.activate()
        assert __builtin__.__import__ is not orig__import__
        duecredited__import__ = __builtin__.__import__
        # TODO: catch/analyze/swallow warning
        injector.activate()
        assert __builtin__.__import__ is duecredited__import__
        # We did not decorate again.
    finally:
        injector.deactivate()
        __builtin__.__import__ = orig__import__
コード例 #7
0
ファイル: test_injections.py プロジェクト: Raniac/NEURO-LEARN
def test_injector_del():
    orig__import__ = __builtin__.__import__
    try:
        due = DueCreditCollector()
        inj = DueCreditInjector(collector=due)
        del inj  # delete inactive
        assert __builtin__.__import__ is orig__import__
        inj = DueCreditInjector(collector=due)
        inj.activate(retrospect=False)
        assert __builtin__.__import__ is not orig__import__
        assert inj._orig_import is not None
        del inj  # delete active but not used
        inj = None
        __builtin__.__import__ = None  # We need to do that since otherwise gc will not pick up inj
        gc.collect()  # To cause __del__
        assert __builtin__.__import__ is orig__import__
        import abc  # and new imports work just fine
    finally:
        __builtin__.__import__ = orig__import__
コード例 #8
0
def _get_active_due():
    from .config import CACHE_DIR, DUECREDIT_FILE
    from duecredit.collector import CollectorSummary, DueCreditCollector
    from .io import load_due

    # TODO:  this needs to move to atexit handling, that we load previous
    # one and them merge with new ones.  Informative bits could be -- how
    # many new citations we got
    if os.path.exists(DUECREDIT_FILE):
        try:
            due_ = load_due(DUECREDIT_FILE)
        except Exception as e:
            lgr.warning("Failed to load previously collected %s. "
                        "DueCredit will not be active for this session." %
                        DUECREDIT_FILE)
            return _get_inactive_due()
    else:
        due_ = DueCreditCollector()

    return due_
コード例 #9
0
def test_api():
    yield _test_api, DueCreditCollector()
    yield _test_api, InactiveDueCreditCollector()
コード例 #10
0
 def setup(self):
     self._cleanup_modules()
     self.due = DueCreditCollector()
     self.injector = DueCreditInjector(collector=self.due)
     self.injector.activate(
         retrospect=False)  # numpy might be already loaded...