tests for logging
This commit is contained in:
parent
0d1c95cf9c
commit
8aa20da2f1
|
@ -1,5 +1,6 @@
|
|||
coverage==3.7.1
|
||||
mock==1.3.0
|
||||
nose==1.3.7
|
||||
testfixtures==4.2.0
|
||||
-e git://github.com/alanhamlett/nose-capturestderr.git@9f60083b756478258fdc800b6507f50ca6fc657c#egg=nose-capturestderr
|
||||
-e git://github.com/alanhamlett/nose-exclude.git@f8ad6b1111e3927ecfaafd26f6952745c4b8df0c#egg=nose-exclude
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
[settings]
|
||||
debug = true
|
||||
api_key = 1234
|
|
@ -0,0 +1,3 @@
|
|||
[settings]
|
||||
debug = false
|
||||
api_key = 1234
|
|
@ -0,0 +1,76 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
|
||||
from wakatime.main import execute
|
||||
from wakatime.packages import requests
|
||||
|
||||
import logging
|
||||
import os
|
||||
import tempfile
|
||||
import time
|
||||
import sys
|
||||
from testfixtures import log_capture
|
||||
from wakatime.compat import u
|
||||
from wakatime.packages.requests.models import Response
|
||||
from . import utils
|
||||
|
||||
|
||||
class LanguagesTestCase(utils.TestCase):
|
||||
patch_these = [
|
||||
'wakatime.packages.requests.adapters.HTTPAdapter.send',
|
||||
'wakatime.offlinequeue.Queue.push',
|
||||
['wakatime.offlinequeue.Queue.pop', None],
|
||||
'wakatime.session_cache.SessionCache.save',
|
||||
'wakatime.session_cache.SessionCache.delete',
|
||||
['wakatime.session_cache.SessionCache.get', requests.session],
|
||||
]
|
||||
|
||||
@log_capture()
|
||||
def test_default_log_file_used(self, logs):
|
||||
logging.disable(logging.NOTSET)
|
||||
|
||||
response = Response()
|
||||
response.status_code = 0
|
||||
self.patched['wakatime.packages.requests.adapters.HTTPAdapter.send'].return_value = response
|
||||
|
||||
now = u(int(time.time()))
|
||||
entity = 'tests/samples/codefiles/python.py'
|
||||
config = 'tests/samples/sample.cfg'
|
||||
args = ['--file', entity, '--config', config, '--time', now]
|
||||
|
||||
retval = execute(args)
|
||||
self.assertEquals(retval, 102)
|
||||
self.assertEquals(sys.stdout.getvalue(), '')
|
||||
self.assertEquals(sys.stderr.getvalue(), '')
|
||||
|
||||
self.assertEquals(logging.WARNING, logging.getLogger('WakaTime').level)
|
||||
logfile = os.path.realpath(os.path.expanduser('~/.wakatime.log'))
|
||||
self.assertEquals(logfile, logging.getLogger('WakaTime').handlers[0].baseFilename)
|
||||
output = u("\n").join([u(' ').join(x) for x in logs.actual()])
|
||||
self.assertEquals(output, u("WakaTime WARNING Regex error (unbalanced parenthesis) for include pattern: \\(invalid regex)\nWakaTime WARNING Regex error (unbalanced parenthesis) for exclude pattern: \\(invalid regex)"))
|
||||
|
||||
@log_capture()
|
||||
def test_log_file_location_can_be_changed(self, logs):
|
||||
logging.disable(logging.NOTSET)
|
||||
|
||||
response = Response()
|
||||
response.status_code = 0
|
||||
self.patched['wakatime.packages.requests.adapters.HTTPAdapter.send'].return_value = response
|
||||
|
||||
with tempfile.NamedTemporaryFile() as fh:
|
||||
now = u(int(time.time()))
|
||||
entity = 'tests/samples/codefiles/python.py'
|
||||
config = 'tests/samples/good_config.cfg'
|
||||
logfile = os.path.realpath(fh.name)
|
||||
args = ['--file', entity, '--config', config, '--time', now, '--logfile', logfile]
|
||||
|
||||
execute(args)
|
||||
|
||||
retval = execute(args)
|
||||
self.assertEquals(retval, 102)
|
||||
self.assertEquals(sys.stdout.getvalue(), '')
|
||||
self.assertEquals(sys.stderr.getvalue(), '')
|
||||
|
||||
self.assertEquals(logging.WARNING, logging.getLogger('WakaTime').level)
|
||||
self.assertEquals(logfile, logging.getLogger('WakaTime').handlers[0].baseFilename)
|
||||
logs.check()
|
|
@ -30,9 +30,9 @@ class CustomEncoder(json.JSONEncoder):
|
|||
if isinstance(obj, bytes): # pragma: nocover
|
||||
obj = u(obj)
|
||||
return json.dumps(obj)
|
||||
try:
|
||||
try: # pragma: nocover
|
||||
encoded = super(CustomEncoder, self).default(obj)
|
||||
except UnicodeDecodeError:
|
||||
except UnicodeDecodeError: # pragma: nocover
|
||||
obj = u(obj)
|
||||
encoded = super(CustomEncoder, self).default(obj)
|
||||
return encoded
|
||||
|
@ -83,19 +83,9 @@ def set_log_level(logger, args):
|
|||
|
||||
def setup_logging(args, version):
|
||||
logger = logging.getLogger('WakaTime')
|
||||
for handler in logger.handlers:
|
||||
logger.removeHandler(handler)
|
||||
set_log_level(logger, args)
|
||||
if len(logger.handlers) > 0:
|
||||
formatter = JsonFormatter(datefmt='%Y/%m/%d %H:%M:%S %z')
|
||||
formatter.setup(
|
||||
timestamp=args.timestamp,
|
||||
isWrite=args.isWrite,
|
||||
entity=args.entity,
|
||||
version=version,
|
||||
plugin=args.plugin,
|
||||
verbose=args.verbose,
|
||||
)
|
||||
logger.handlers[0].setFormatter(formatter)
|
||||
return logger
|
||||
logfile = args.logfile
|
||||
if not logfile:
|
||||
logfile = '~/.wakatime.log'
|
||||
|
|
Loading…
Reference in New Issue