def test_process_log(mocker, mock_config, dry_run): test_log_def = {'garbage': [_Pattern('crap')], 'ignore': {_Pattern('foo'): [_Pattern('boring')], _Pattern('bar'): [_Pattern('zzz')]}, 'regexps': ['test'], 'files': ['foo']} config = {'verbosity': 0, 'debug': False, 'dry_run': dry_run, 'regexps': {'test': re.compile('^(?P<source>[^/]+)/(?P<message>.+)$')}, 'logs': {'test': test_log_def}} dummy_logs = textwrap.dedent(''' crap foo/zzz foo/123 foo/boring bar/boring bar/456 bar/zzz wtf ''') mock_config(config) mocker.patch('logstapo.logs.debug_echo') mocker.patch('logstapo.logs.verbose_echo') mocker.patch('logstapo.logs.warning_echo') logtail = mocker.patch('logstapo.logs.logtail', return_value=dummy_logs.strip().split('\n')) other, invalid = process_log('test') expected = [(x, dict(zip(('source', 'message'), x.split('/')))) for x in ['foo/zzz', 'foo/123', 'bar/boring', 'bar/456']] assert other == expected assert invalid == ['wtf'] logtail.assert_called_once_with('foo', dry_run=dry_run)
def test_process_log(mocker, mock_config, dry_run): test_log_def = { 'garbage': [_Pattern('crap')], 'ignore': { _Pattern('foo'): [_Pattern('boring')], _Pattern('bar'): [_Pattern('zzz')] }, 'regexps': ['test'], 'files': ['foo'] } config = { 'verbosity': 0, 'debug': False, 'dry_run': dry_run, 'regexps': { 'test': re.compile('^(?P<source>[^/]+)/(?P<message>.+)$') }, 'logs': { 'test': test_log_def } } dummy_logs = textwrap.dedent(''' crap foo/zzz foo/123 foo/boring bar/boring bar/456 bar/zzz wtf ''') mock_config(config) mocker.patch('logstapo.logs.debug_echo') mocker.patch('logstapo.logs.verbose_echo') mocker.patch('logstapo.logs.warning_echo') logtail = mocker.patch('logstapo.logs.logtail', return_value=dummy_logs.strip().split('\n')) other, invalid = process_log('test') expected = [(x, dict(zip(('source', 'message'), x.split('/')))) for x in ['foo/zzz', 'foo/123', 'bar/boring', 'bar/456']] assert other == expected assert invalid == ['wtf'] logtail.assert_called_once_with('foo', dry_run=dry_run)
def test_pattern_test(pattern, string, expected): patternobj = config._Pattern(pattern) assert patternobj.test(string) == expected
def test_pattern_none(): patternobj = config._Pattern() assert not patternobj.negate assert patternobj.always_match
def test_pattern_wildcard(negate): prefix = '^' if negate else '' patternobj = config._Pattern(prefix + '*') assert patternobj.negate == negate assert patternobj.always_match
def test_pattern(pattern, regex, negate): prefix = '^' if negate else '' patternobj = config._Pattern(prefix + pattern) assert patternobj.negate == negate assert patternobj.regex.pattern == regex assert not patternobj.always_match