summaryrefslogtreecommitdiff
path: root/tests/bug_gc.py
blob: 89d90d26e21a1be3cb9b3ce9feef1c75e5411088 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#!/usr/bin/env python

import psycopg2
import psycopg2.extensions
import time
import unittest
import gc

import sys
if sys.version_info < (3,):
    import tests
else:
    import py3tests as tests

class StolenReferenceTestCase(unittest.TestCase):
    def test_stolen_reference_bug(self):
        def fish(val, cur):
            gc.collect()
            return 42
        conn = psycopg2.connect(tests.dsn)
        UUID = psycopg2.extensions.new_type((2950,), "UUID", fish)
        psycopg2.extensions.register_type(UUID, conn)
        curs = conn.cursor()
        curs.execute("select 'b5219e01-19ab-4994-b71e-149225dc51e4'::uuid")
        curs.fetchone()

def test_suite():
    return unittest.TestLoader().loadTestsFromName(__name__)

if __name__ == "__main__":
    unittest.main()