Skip to content

Commit

Permalink
Merge pull request #247 from macbre/improve-code-coverage
Browse files Browse the repository at this point in the history
Improve code coverage
  • Loading branch information
macbre committed Jun 11, 2021
2 parents 5d2feb2 + 367caa8 commit e745cfe
Show file tree
Hide file tree
Showing 10 changed files with 43 additions and 15 deletions.
5 changes: 5 additions & 0 deletions .coveragerc
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
[run]
# https://coverage.readthedocs.io/en/latest/source.html#source
omit =
indexdigest/cli/add_linter.py
indexdigest/test/*
4 changes: 2 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ test:
pytest -vv -o log_cli=true -o log_cli_level=warning

coverage:
pytest -vv --cov=indexdigest --cov-report=term-missing --cov-report=html --cov-fail-under=93
pytest -vv --cov=indexdigest --cov-report=term-missing --cov-report=html --cov-fail-under=96

lint:
pylint indexdigest/ --ignore=test
Expand All @@ -14,7 +14,7 @@ demo:
docker run --network=host -t macbre/index-digest:latest mysql://index_digest:qwerty@127.0.0.1/index_digest --analyze-data --skip-checks=non_utf_columns --skip-tables=0028_no_time

sql-console:
mysql --prompt='mysql@\h[\d]>' --protocol=tcp -uindex_digest -pqwerty index_digest
mysql --prompt='mysql@\h[\d]>' --protocol=tcp --port=53306 -uindex_digest -pqwerty index_digest

publish:
# run git tag -a v0.0.0 before running make publish
Expand Down
2 changes: 1 addition & 1 deletion indexdigest/cli/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

from os import getenv

if getenv('DEBUG') == '1':
if getenv('DEBUG') == '1': # pragma: no cover
logging.basicConfig(
level=logging.DEBUG,
format='%(asctime)s %(name)-35s %(levelname)-8s %(message)s',
Expand Down
2 changes: 1 addition & 1 deletion indexdigest/cli/script.py
Original file line number Diff line number Diff line change
Expand Up @@ -198,7 +198,7 @@ def filter_reports_by_table(reports, tables=None, skip_tables=None):
return reports


def main():
def main(): # pragma: no cover
""" Main entry point for CLI"""
logger = logging.getLogger(__name__)

Expand Down
4 changes: 2 additions & 2 deletions indexdigest/formatters/syslog.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
import indexdigest


def format_report(database, report):
def _format_report(database, report):
"""
:type database indexdigest.database.Database
:type report indexdigest.utils.LinterEntry
Expand Down Expand Up @@ -48,7 +48,7 @@ def format_syslog(database, reports, ident='index-digest'):
syslog.openlog(ident=ident, logoption=syslog.LOG_PID, facility=syslog.LOG_USER)

for report in reports:
syslog.syslog(format_report(database, report))
syslog.syslog(_format_report(database, report))

syslog.closelog()
return ''
2 changes: 1 addition & 1 deletion indexdigest/linters/linter_0028_data_too_old.py
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ def check_data_too_old(database, env=None):
for (table_name, column) in get_time_columns(database):
timestamps = get_boundary_times(database, table_name, column)

if timestamps is None or timestamps.get('min') is None:
if timestamps is None:
continue

diff = now - timestamps.get('min')
Expand Down
Empty file.
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
from unittest import TestCase

from indexdigest.cli.script import filter_reports_by_type, filter_reports_by_table
from _pytest.monkeypatch import MonkeyPatch

from indexdigest import VERSION
from indexdigest.cli.script import filter_reports_by_type, filter_reports_by_table, get_version
from indexdigest.utils import LinterEntry


Expand Down Expand Up @@ -124,3 +127,8 @@ def test_skip_tables_switch(self):
assert len(filtered) == 2
assert filtered[0].table_name == 'bar'
assert filtered[1].table_name == 'foobar'


def test_get_version(monkeypatch: MonkeyPatch):
monkeypatch.setenv('COMMIT_SHA', '1234567890abc')
assert get_version() == f'{VERSION} (git 1234567)'
19 changes: 12 additions & 7 deletions indexdigest/test/formatters/test_syslog.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from unittest import TestCase
from unittest import TestCase, mock

from indexdigest import VERSION
from indexdigest.formatters.syslog import format_report
from indexdigest.formatters.syslog import _format_report, format_syslog
from . import FormatterTestMixin

from indexdigest.cli.script import get_reports
Expand All @@ -11,7 +11,7 @@ class TestFormatter(TestCase, FormatterTestMixin):

def test_format_report_helper(self):
report = next(self.get_reports_mock())
out = format_report(self.get_database_mock(), report)
out = _format_report(self.get_database_mock(), report)
print(out, report)

self.assertEqual(
Expand All @@ -32,7 +32,12 @@ def test_format_for_real_reports(self):

# pass all reports via syslog formatter
for report in get_reports(database, analyze_data=True):
try:
format_report(database, report)
except Exception:
self.fail('Failed to format the following report {}'.format(str(report)))
_format_report(database, report)

@mock.patch('syslog.syslog')
def test_format_syslog(self, mocked_syslog: mock.MagicMock):
reports = list(self.get_reports_mock())
format_syslog(database=self.get_database_mock(), reports=reports)

assert mocked_syslog.called, 'syslog.syslog has been called'
assert mocked_syslog.call_count == len(reports)
10 changes: 10 additions & 0 deletions indexdigest/test/test_schema.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
from indexdigest.schema import Column


def test_column_int_column_normalization():
col = Column(name='foo', column_type='int')
assert col.type == 'int'

# normalize int(N) from MySQL 8.0.16 and older to int
col = Column(name='foo', column_type='int(11)')
assert col.type == 'int'

0 comments on commit e745cfe

Please sign in to comment.