diff --git a/.coveragerc b/.coveragerc new file mode 100644 index 0000000..3d5fc07 --- /dev/null +++ b/.coveragerc @@ -0,0 +1,8 @@ +# http://nedbatchelder.com/code/coverage/config.html#config + +[run] +branch = True +omit = */tests/* + +[report] +omit = */tests/* diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..505b9ff --- /dev/null +++ b/.travis.yml @@ -0,0 +1,15 @@ +language: python +python: + - "2.6" + - "2.7" + - "3.2" + - "3.3" + - "3.4" +# command to install dependencies, e.g. pip install -r requirements.txt --use-mirrors +install: + - "pip install --use-mirrors -e ." + - "pip install coverage coveralls" +script: + - "python ./setup.py nosetests" +after_success: + - coveralls diff --git a/README.md b/README.md index a455bc3..f1352af 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # A Python structured logger for Fluentd +[![Build Status](https://travis-ci.org/EvaSDK/fluent-logger-python.svg?branch=master)](https://travis-ci.org/EvaSDK/fluent-logger-python) +[![Coverage Status](https://coveralls.io/repos/EvaSDK/fluent-logger-python/badge.png)](https://coveralls.io/r/EvaSDK/fluent-logger-python) Many web/mobile applications generate huge amount of event logs (c,f. login, logout, purchase, follow, etc). To analyze these event logs could be really valuable for improving the service. However, the challenge is collecting these logs easily and reliably. diff --git a/fluent/handler.py b/fluent/handler.py index edcf840..9bf214d 100644 --- a/fluent/handler.py +++ b/fluent/handler.py @@ -5,9 +5,14 @@ try: import simplejson as json -except ImportError: +except ImportError: # pragma: no cover import json +try: + basestring +except NameError: # pragma: no cover + basestring = (str, bytes) + from fluent import sender @@ -75,4 +80,4 @@ def close(self): self.sender._close() logging.Handler.close(self) finally: - self.release() \ No newline at end of file + self.release() diff --git a/run_tests.py b/run_tests.py deleted file mode 100644 index 93482eb..0000000 --- a/run_tests.py +++ /dev/null @@ -1,6 +0,0 @@ -import unittest - -from tests import * - -if __name__ == '__main__': - unittest.main() diff --git a/setup.cfg b/setup.cfg new file mode 100644 index 0000000..633f7f5 --- /dev/null +++ b/setup.cfg @@ -0,0 +1,8 @@ +[nosetests] +match = ^test_ +cover-package = fluent +with-coverage = 1 +cover-erase = 1 +cover-branches = 1 +cover-inclusive = 1 +cover-min-percentage = 70 diff --git a/tests/__init__.py b/tests/__init__.py index 7bcee4d..e69de29 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -1,6 +0,0 @@ -# -*- coding: utf-8 -*- - -from tests.test_event import * -from tests.test_handler import * -from tests.test_sender import * -from tests.test_unix_domain_socket_sender import * diff --git a/tests/test_event.py b/tests/test_event.py index ef11dd0..8a0669b 100644 --- a/tests/test_event.py +++ b/tests/test_event.py @@ -9,7 +9,7 @@ class TestEvent(unittest.TestCase): - def testLogging(self): + def test_logging(self): # send event with tag app.follow event.Event('follow', { 'from': 'userA', diff --git a/tests/test_handler.py b/tests/test_handler.py index e964294..7f944a8 100644 --- a/tests/test_handler.py +++ b/tests/test_handler.py @@ -42,5 +42,5 @@ def test_simple(self): eq('app.follow', data[0][0]) eq('userA', data[0][2]['from']) eq('userB', data[0][2]['to']) - self.assert_(data[0][1]) - self.assert_(isinstance(data[0][1], int)) + self.assertTrue(data[0][1]) + self.assertTrue(isinstance(data[0][1], int)) diff --git a/tests/test_sender.py b/tests/test_sender.py index ae47592..e2e4335 100644 --- a/tests/test_sender.py +++ b/tests/test_sender.py @@ -32,5 +32,5 @@ def test_simple(self): eq(3, len(data[0])) eq('test.foo', data[0][0]) eq({'bar': 'baz'}, data[0][2]) - self.assert_(data[0][1]) - self.assert_(isinstance(data[0][1], int)) + self.assertTrue(data[0][1]) + self.assertTrue(isinstance(data[0][1], int)) diff --git a/tox.ini b/tox.ini index 262a74c..21cc4a2 100644 --- a/tox.ini +++ b/tox.ini @@ -1,14 +1,9 @@ [tox] -envlist = py26, py27, py32 +minversion = 1.7.2 +envlist = py26, py27, py32, py33, py34 +skip_missing_interpreters = True [testenv] -commands=python setup.py test - -[testenv:py26] -basepython = python2.6 - -[testenv:py27] -basepython = python2.7 - -[testenv:py32] -basepython = python3.2 +deps = nose + coverage +commands = python setup.py nosetests