61 lines
1.6 KiB
Python
61 lines
1.6 KiB
Python
# -*- coding: utf-8 -*-
|
|
"""PyVISA testsuite.
|
|
|
|
"""
|
|
import logging
|
|
from logging.handlers import BufferingHandler
|
|
|
|
import pytest
|
|
|
|
from pyvisa import ResourceManager, logger
|
|
|
|
try:
|
|
ResourceManager()
|
|
except ValueError:
|
|
VISA_PRESENT = False
|
|
else:
|
|
VISA_PRESENT = True
|
|
|
|
require_visa_lib = pytest.mark.skipif(
|
|
not VISA_PRESENT,
|
|
reason="Requires an installed VISA library. Run on PyVISA buildbot.",
|
|
)
|
|
|
|
|
|
class TestHandler(BufferingHandler):
|
|
def __init__(self, only_warnings=False):
|
|
# BufferingHandler takes a "capacity" argument
|
|
# so as to know when to flush. As we're overriding
|
|
# shouldFlush anyway, we can set a capacity of zero.
|
|
# You can call flush() manually to clear out the
|
|
# buffer.
|
|
self.only_warnings = only_warnings
|
|
BufferingHandler.__init__(self, 0)
|
|
|
|
def shouldFlush(self, record):
|
|
return False
|
|
|
|
def emit(self, record):
|
|
if self.only_warnings and record.level != logging.WARNING:
|
|
return
|
|
self.buffer.append(record.__dict__)
|
|
|
|
|
|
class BaseTestCase:
|
|
|
|
CHECK_NO_WARNING = True
|
|
|
|
def setup_method(self):
|
|
self._test_handler = None
|
|
if self.CHECK_NO_WARNING:
|
|
self._test_handler = th = TestHandler()
|
|
th.setLevel(logging.WARNING)
|
|
logger.addHandler(th)
|
|
|
|
def teardown_method(self):
|
|
if self._test_handler is not None:
|
|
buf = self._test_handler.buffer
|
|
length = len(buf)
|
|
msg = "\n".join(record.get("msg", str(record)) for record in buf)
|
|
assert length == 0, "%d warnings raised.\n%s" % (length, msg)
|