コード例 #1
0
    def test_duplicate_comment(self):
        diff = read_patch('0001-add-line.patch')
        m1 = create_email(diff, listid=self.listid, msgid='*****@*****.**')
        _parse_mail(m1)

        m2 = create_email('test', listid=self.listid, msgid='*****@*****.**',
                          in_reply_to='*****@*****.**')
        self._test_duplicate_mail(m2)

        self.assertEqual(Patch.objects.count(), 1)
        self.assertEqual(PatchComment.objects.count(), 1)
コード例 #2
0
    def _test_duplicate_mail(self, mail):
        errors = []

        def log_query_errors(execute, sql, params, many, context):
            try:
                result = execute(sql, params, many, context)
            except Exception as e:
                errors.append(e)
                raise
            return result

        _parse_mail(mail)

        with self.assertRaises(DuplicateMailError):
            with connection.execute_wrapper(log_query_errors):
                # If we see any database errors from the duplicate insert
                # (typically an IntegrityError), the insert will abort the
                # current transaction. This atomic() ensures that we can
                # recover, and perform subsequent queries.
                with atomic():
                    _parse_mail(mail)

        self.assertEqual(errors, [])
コード例 #3
0
ファイル: test_parser.py プロジェクト: Aleks1966/patchwork
def parse_mail(*args, **kwargs):
    create_state()
    return _parse_mail(*args, **kwargs)
コード例 #4
0
ファイル: test_parser.py プロジェクト: getpatchwork/patchwork
def parse_mail(*args, **kwargs):
    create_state()
    return _parse_mail(*args, **kwargs)