tests for logging
This commit is contained in:
parent
0d1c95cf9c
commit
8aa20da2f1
|
@ -1,5 +1,6 @@
|
||||||
coverage==3.7.1
|
coverage==3.7.1
|
||||||
mock==1.3.0
|
mock==1.3.0
|
||||||
nose==1.3.7
|
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-capturestderr.git@9f60083b756478258fdc800b6507f50ca6fc657c#egg=nose-capturestderr
|
||||||
-e git://github.com/alanhamlett/nose-exclude.git@f8ad6b1111e3927ecfaafd26f6952745c4b8df0c#egg=nose-exclude
|
-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
|
if isinstance(obj, bytes): # pragma: nocover
|
||||||
obj = u(obj)
|
obj = u(obj)
|
||||||
return json.dumps(obj)
|
return json.dumps(obj)
|
||||||
try:
|
try: # pragma: nocover
|
||||||
encoded = super(CustomEncoder, self).default(obj)
|
encoded = super(CustomEncoder, self).default(obj)
|
||||||
except UnicodeDecodeError:
|
except UnicodeDecodeError: # pragma: nocover
|
||||||
obj = u(obj)
|
obj = u(obj)
|
||||||
encoded = super(CustomEncoder, self).default(obj)
|
encoded = super(CustomEncoder, self).default(obj)
|
||||||
return encoded
|
return encoded
|
||||||
|
@ -83,19 +83,9 @@ def set_log_level(logger, args):
|
||||||
|
|
||||||
def setup_logging(args, version):
|
def setup_logging(args, version):
|
||||||
logger = logging.getLogger('WakaTime')
|
logger = logging.getLogger('WakaTime')
|
||||||
|
for handler in logger.handlers:
|
||||||
|
logger.removeHandler(handler)
|
||||||
set_log_level(logger, args)
|
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
|
logfile = args.logfile
|
||||||
if not logfile:
|
if not logfile:
|
||||||
logfile = '~/.wakatime.log'
|
logfile = '~/.wakatime.log'
|
||||||
|
|
Loading…
Reference in New Issue