1#!/usr/bin/env python
2# -*- coding: utf-8 -*-
3# pylint: disable=no-self-use, pointless-statement, missing-docstring, protected-access, invalid-name, len-as-condition
4
5from .default_rules_module import RuleRemove0
6from .. import debug
7from ..match import Match
8from ..pattern import StringPattern
9from ..rebulk import Rebulk
10
11
12class TestDebug(object):
13    # request.addfinalizer(disable_debug)
14
15    debug.DEBUG = True
16    pattern = StringPattern(1, 3, value="es")
17
18    match = Match(1, 3, value="es")
19    rule = RuleRemove0()
20
21    input_string = "This is a debug test"
22    rebulk = Rebulk().string("debug") \
23        .string("is")
24
25    matches = rebulk.matches(input_string)
26    debug.DEBUG = False
27
28    @classmethod
29    def setup_class(cls):
30        debug.DEBUG = True
31
32    @classmethod
33    def teardown_class(cls):
34        debug.DEBUG = False
35
36    def test_pattern(self):
37        assert self.pattern.defined_at.lineno > 0
38        assert self.pattern.defined_at.name == 'rebulk.test.test_debug'
39        assert self.pattern.defined_at.filename.endswith('test_debug.py')
40
41        assert str(self.pattern.defined_at).startswith('test_debug.py#L')
42        assert repr(self.pattern).startswith('<StringPattern@test_debug.py#L')
43
44    def test_match(self):
45        assert self.match.defined_at.lineno > 0
46        assert self.match.defined_at.name == 'rebulk.test.test_debug'
47        assert self.match.defined_at.filename.endswith('test_debug.py')
48
49        assert str(self.match.defined_at).startswith('test_debug.py#L')
50
51    def test_rule(self):
52        assert self.rule.defined_at.lineno > 0
53        assert self.rule.defined_at.name == 'rebulk.test.test_debug'
54        assert self.rule.defined_at.filename.endswith('test_debug.py')
55
56        assert str(self.rule.defined_at).startswith('test_debug.py#L')
57        assert repr(self.rule).startswith('<RuleRemove0@test_debug.py#L')
58
59    def test_rebulk(self):
60        """
61        This test fails on travis CI, can't find out why there's 1 line offset ...
62        """
63        assert self.rebulk._patterns[0].defined_at.lineno > 0
64        assert self.rebulk._patterns[0].defined_at.name == 'rebulk.test.test_debug'
65        assert self.rebulk._patterns[0].defined_at.filename.endswith('test_debug.py')
66
67        assert str(self.rebulk._patterns[0].defined_at).startswith('test_debug.py#L')
68
69        assert self.rebulk._patterns[1].defined_at.lineno > 0
70        assert self.rebulk._patterns[1].defined_at.name == 'rebulk.test.test_debug'
71        assert self.rebulk._patterns[1].defined_at.filename.endswith('test_debug.py')
72
73        assert str(self.rebulk._patterns[1].defined_at).startswith('test_debug.py#L')
74
75        assert self.matches[0].defined_at == self.rebulk._patterns[0].defined_at
76        assert self.matches[1].defined_at == self.rebulk._patterns[1].defined_at
77
78    def test_repr(self):
79        str(self.matches)
80