mirror of https://github.com/postgres/postgres
Make Python tests more portable
Newer Python versions randomize the hash seed for dictionaries, resulting in a random output order, which messes up the regression test diffs. Instead, use Python assert to compare the dictionaries with their expected value.
This commit is contained in:
parent
ac6f22957d
commit
75f9d17638
|
@ -43,12 +43,10 @@ CREATE FUNCTION test1arr(val hstore[]) RETURNS int
|
|||
LANGUAGE plpythonu
|
||||
TRANSFORM FOR TYPE hstore
|
||||
AS $$
|
||||
plpy.info(repr(val))
|
||||
assert(val == [{'aa': 'bb', 'cc': None}, {'dd': 'ee'}])
|
||||
return len(val)
|
||||
$$;
|
||||
SELECT test1arr(array['aa=>bb, cc=>NULL'::hstore, 'dd=>ee']);
|
||||
INFO: [{'aa': 'bb', 'cc': None}, {'dd': 'ee'}]
|
||||
CONTEXT: PL/Python function "test1arr"
|
||||
test1arr
|
||||
----------
|
||||
2
|
||||
|
@ -88,18 +86,14 @@ LANGUAGE plpythonu
|
|||
TRANSFORM FOR TYPE hstore
|
||||
AS $$
|
||||
rv = plpy.execute("SELECT 'aa=>bb, cc=>NULL'::hstore AS col1")
|
||||
plpy.info(repr(rv[0]["col1"]))
|
||||
assert(rv[0]["col1"] == {'aa': 'bb', 'cc': None})
|
||||
|
||||
val = {'a': 1, 'b': 'boo', 'c': None}
|
||||
plan = plpy.prepare("SELECT $1::text AS col1", ["hstore"])
|
||||
rv = plpy.execute(plan, [val])
|
||||
plpy.info(repr(rv[0]["col1"]))
|
||||
assert(rv[0]["col1"] == '"a"=>"1", "b"=>"boo", "c"=>NULL')
|
||||
$$;
|
||||
SELECT test3();
|
||||
INFO: {'aa': 'bb', 'cc': None}
|
||||
CONTEXT: PL/Python function "test3"
|
||||
INFO: '"a"=>"1", "b"=>"boo", "c"=>NULL'
|
||||
CONTEXT: PL/Python function "test3"
|
||||
test3
|
||||
-------
|
||||
|
||||
|
@ -118,7 +112,7 @@ CREATE FUNCTION test4() RETURNS trigger
|
|||
LANGUAGE plpythonu
|
||||
TRANSFORM FOR TYPE hstore
|
||||
AS $$
|
||||
plpy.info("Trigger row: {'a': %r, 'b': %r}" % (TD["new"]["a"], TD["new"]["b"]))
|
||||
assert(TD["new"] == {'a': 1, 'b': {'aa': 'bb', 'cc': None}})
|
||||
if TD["new"]["a"] == 1:
|
||||
TD["new"]["b"] = {'a': 1, 'b': 'boo', 'c': None}
|
||||
|
||||
|
@ -126,8 +120,6 @@ return "MODIFY"
|
|||
$$;
|
||||
CREATE TRIGGER test4 BEFORE UPDATE ON test1 FOR EACH ROW EXECUTE PROCEDURE test4();
|
||||
UPDATE test1 SET a = a;
|
||||
INFO: Trigger row: {'a': 1, 'b': {'aa': 'bb', 'cc': None}}
|
||||
CONTEXT: PL/Python function "test4"
|
||||
SELECT * FROM test1;
|
||||
a | b
|
||||
---+---------------------------------
|
||||
|
|
|
@ -37,7 +37,7 @@ CREATE FUNCTION test1arr(val hstore[]) RETURNS int
|
|||
LANGUAGE plpythonu
|
||||
TRANSFORM FOR TYPE hstore
|
||||
AS $$
|
||||
plpy.info(repr(val))
|
||||
assert(val == [{'aa': 'bb', 'cc': None}, {'dd': 'ee'}])
|
||||
return len(val)
|
||||
$$;
|
||||
|
||||
|
@ -74,12 +74,12 @@ LANGUAGE plpythonu
|
|||
TRANSFORM FOR TYPE hstore
|
||||
AS $$
|
||||
rv = plpy.execute("SELECT 'aa=>bb, cc=>NULL'::hstore AS col1")
|
||||
plpy.info(repr(rv[0]["col1"]))
|
||||
assert(rv[0]["col1"] == {'aa': 'bb', 'cc': None})
|
||||
|
||||
val = {'a': 1, 'b': 'boo', 'c': None}
|
||||
plan = plpy.prepare("SELECT $1::text AS col1", ["hstore"])
|
||||
rv = plpy.execute(plan, [val])
|
||||
plpy.info(repr(rv[0]["col1"]))
|
||||
assert(rv[0]["col1"] == '"a"=>"1", "b"=>"boo", "c"=>NULL')
|
||||
$$;
|
||||
|
||||
SELECT test3();
|
||||
|
@ -94,7 +94,7 @@ CREATE FUNCTION test4() RETURNS trigger
|
|||
LANGUAGE plpythonu
|
||||
TRANSFORM FOR TYPE hstore
|
||||
AS $$
|
||||
plpy.info("Trigger row: {'a': %r, 'b': %r}" % (TD["new"]["a"], TD["new"]["b"]))
|
||||
assert(TD["new"] == {'a': 1, 'b': {'aa': 'bb', 'cc': None}})
|
||||
if TD["new"]["a"] == 1:
|
||||
TD["new"]["b"] = {'a': 1, 'b': 'boo', 'c': None}
|
||||
|
||||
|
|
Loading…
Reference in New Issue