Code Duplication    Length = 34-36 lines in 2 locations

tests/test_compat.py 2 locations

@@ 124-159 (lines=36) @@
121
    assert DClass().ns.footer == 3
122
123
124
def test_abstractclassmethod_basics(abc):
125
    """Test abstract classmethod works as expected.
126
127
    Adapted from Python's test suite.
128
    """
129
    @classmethod
130
    @abstractmethod
131
    def footer(cls):
132
        """Return cls. Abstract."""
133
        return cls
134
    assert footer.__isabstractmethod__
135
136
    @classmethod
137
    def barter(cls):
138
        """Return cls. Concrete."""
139
        return cls
140
    assert not getattr(barter, "__isabstractmethod__", False)
141
142
    class CClass(metaclass=abc.NamespaceableABCMeta):
143
        """A throwaway test class."""
144
        @classmethod
145
        @abstractmethod
146
        def footer(cls):
147
            """Return class name. Abstract."""
148
            return cls.__name__
149
    with pytest.raises(TypeError):
150
        print(CClass())
151
152
    class DClass(CClass):
153
        """A throwaway test class."""
154
        @classmethod
155
        def footer(cls):
156
            """Return class name. Concrete."""
157
            return super().footer()
158
    assert DClass.footer() == 'DClass'
159
    assert DClass().footer() == 'DClass'
160
161
162
def test_abstractclassmethod_namespaced(abc, namespace):
@@ 184-217 (lines=34) @@
181
                return super().ns.footer()
182
    assert DClass.ns.footer() == 'DClass'
183
    assert DClass().ns.footer() == 'DClass'
184
185
186
def test_abstractstaticmethod_basics(abc):
187
    """Test abstract staticmethod works as expected.
188
189
    Adapted from Python's test suite.
190
    """
191
    @staticmethod
192
    @abstractmethod
193
    def footer():
194
        """Do nothing. Abstract."""
195
    assert footer.__isabstractmethod__
196
197
    @staticmethod
198
    def barter():
199
        """Do nothing. Concrete."""
200
    assert not getattr(barter, "__isabstractmethod__", False)
201
202
    class CClass(metaclass=abc.NamespaceableABCMeta):
203
        """A throwaway test class."""
204
        @staticmethod
205
        @abstractmethod
206
        def footer():
207
            """Return 3. Abstract."""
208
            return 3
209
    with pytest.raises(TypeError):
210
        print(CClass())
211
212
    class DClass(CClass):
213
        """A throwaway test class."""
214
        @staticmethod
215
        def footer():
216
            """Return 4. Concrete."""
217
            return 4
218
    assert DClass.footer() == 4
219
    assert DClass().footer() == 4
220