Пример #1
0
    def test_spec_callback_malformed(self):
        def cb(sideeffect, *a, **kw):
            sideeffect.append((a, kw))

        check = []

        spec = Spec()
        spec.add_callback('cleanup', cb, check, 1, keyword='foo')
        # malformed data shouldn't be added, but just in case.
        spec._callbacks['cleanup'].append((cb, ))
        spec._callbacks['cleanup'].append((cb, [], []))
        spec._callbacks['cleanup'].append((cb, {}, {}))
        spec._callbacks['cleanup'].append((None, [], {}))

        spec.do_callbacks('cleanup')
        self.assertEqual(check, [
            ((1, ), {
                'keyword': 'foo'
            }),
        ])
Пример #2
0
    def test_spec_callback(self):
        def cb(sideeffect, *a, **kw):
            sideeffect.append((a, kw))

        check = []

        spec = Spec()
        spec.add_callback('cleanup', cb, check, 1, keyword='foo')
        spec.add_callback('cleanup', cb, check, 2, keyword='bar')

        spec.do_callbacks('foo')
        self.assertEqual(check, [])

        spec.do_callbacks('cleanup')
        # cleanup done lifo
        self.assertEqual(check, [
            ((2, ), {
                'keyword': 'bar'
            }),
            ((1, ), {
                'keyword': 'foo'
            }),
        ])
Пример #3
0
 def test_spec_callback_broken(self):
     spec = Spec()
     spec.add_callback('cleanup', fake_error(Exception))
     with pretty_logging(stream=StringIO()) as s:
         spec.do_callbacks('cleanup')
     self.assertIn('Traceback', s.getvalue())