Skip to content

Commit 222cd88

Browse files
committed
chore: compatibility with new python3 packages
All sqlalchemy `sess.execute` must be used with `text()` otherwise it will fail with: sqlalchemy.exc.ArgumentError: Textual SQL expression Also make all bash scripts fail fast.
1 parent 9d3f5be commit 222cd88

15 files changed

+89
-79
lines changed

nix/nginxScript.nix

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
let
44
script = ''
5+
set -euo pipefail
6+
57
export PATH=${openresty}/bin:"$PATH"
68
79
trap 'jobs -p | xargs kill -9' sigint sigterm exit

nix/pathodScript.nix

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
let
44
script = ''
5+
set -euo pipefail
6+
57
export PATH=${mitmproxy}/bin:"$PATH"
68
79
trap 'jobs -p | xargs kill -9' sigint sigterm exit

nix/pgScript.nix

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ let
55
logMin = if builtins.stringLength LOGMIN == 0 then "WARNING" else LOGMIN; # warning is the default in pg
66
ver = builtins.head (builtins.splitVersion postgresql.version);
77
script = ''
8+
set -euo pipefail
9+
810
export PATH=${postgresql}/bin:"$PATH"
911
1012
tmpdir="$(mktemp -d)"

nix/pgValgrindScript.nix

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ let
55
ver = builtins.head (builtins.splitVersion postgresql.version);
66
valgrindLogFile = "valgrindlog";
77
script = ''
8+
set -euo pipefail
9+
810
export PATH=${postgresql}/bin:"$PATH"
911
1012
tmpdir="$(mktemp -d)"

test/conftest.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import pytest
22
from sqlalchemy import create_engine
33
from sqlalchemy.orm import Session
4-
4+
from sqlalchemy import text
55

66
@pytest.fixture(scope="function")
77
def engine():
@@ -16,21 +16,21 @@ def sess(engine):
1616
session = Session(engine)
1717

1818
# Reset sequences and tables between tests
19-
session.execute(
19+
session.execute(text(
2020
"""
2121
create extension if not exists pg_net;
2222
"""
23-
)
23+
))
2424
session.commit()
2525

2626
yield session
2727

2828
session.rollback()
2929

30-
session.execute(
30+
session.execute(text(
3131
"""
3232
drop extension pg_net cascade;
3333
create extension if not exists pg_net;
3434
"""
35-
)
35+
))
3636
session.commit()

test/test_engine.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from sqlalchemy import text
2+
13
def test_connect(sess):
2-
(x,) = sess.execute("select 1").fetchone()
4+
(x,) = sess.execute(text("select 1")).fetchone()
35
assert x == 1

test/test_http_delete.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@
33
def test_http_delete_returns_id(sess):
44
"""net.http_delete returns a bigint id"""
55

6-
(request_id,) = sess.execute(
6+
(request_id,) = sess.execute(text(
77
"""
88
select net.http_get(
99
url:='http://localhost:8080/delete'
1010
);
1111
"""
12-
).fetchone()
12+
)).fetchone()
1313

1414
assert request_id == 1
1515

@@ -18,15 +18,15 @@ def test_http_delete_collect_sync_success(sess):
1818
"""Collect a response, waiting if it has not completed yet"""
1919

2020
# Create a request
21-
(request_id,) = sess.execute(
21+
(request_id,) = sess.execute(text(
2222
"""
2323
select net.http_delete(
2424
url:='http://localhost:8080/delete'
2525
, params:= '{"param-foo": "bar"}'
2626
, headers:= '{"X-Baz": "foo"}'
2727
);
2828
"""
29-
).fetchone()
29+
)).fetchone()
3030

3131
# Commit so background worker can start
3232
sess.commit()
@@ -39,7 +39,7 @@ def test_http_delete_collect_sync_success(sess):
3939
"""
4040
),
4141
{"request_id": request_id},
42-
).fetchone()
42+
).fetchone()
4343

4444
assert response is not None
4545
assert response[0] == "SUCCESS"

test/test_http_errors.py

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -7,39 +7,39 @@ def test_get_bad_url(sess):
77
"""net.http_get returns a descriptive errors for bad urls"""
88

99
with pytest.raises(Exception) as execinfo:
10-
res = sess.execute(
10+
res = sess.execute(text(
1111
"""
1212
select net.http_get('localhost:8888');
1313
"""
14-
)
14+
))
1515
assert "URL using bad/illegal format or missing URL" in str(execinfo)
1616

1717
def test_bad_post(sess):
1818
"""net.http_post with an empty url + body returns an error"""
1919

2020
with pytest.raises(Exception) as execinfo:
21-
res = sess.execute(
21+
res = sess.execute(text(
2222
"""
2323
select net.http_post(null, '{"hello": "world"}');
2424
"""
25-
)
25+
))
2626
assert "violates not-null constraint" in str(execinfo)
2727

2828
def test_it_keeps_working_after_many_connection_refused(sess):
2929
"""the worker doesn't crash on many failed responses with connection refused"""
3030

31-
res = sess.execute(
31+
res = sess.execute(text(
3232
"""
3333
select net.http_get('http://localhost:8888') from generate_series(1,10);
3434
"""
35-
)
35+
))
3636
sess.commit()
3737

38-
(request_id,) = sess.execute(
38+
(request_id,) = sess.execute(text(
3939
"""
4040
select net.http_get('http://localhost:9999/p/200');
4141
"""
42-
).fetchone()
42+
)).fetchone()
4343

4444
sess.commit()
4545

@@ -59,39 +59,39 @@ def test_it_keeps_working_after_many_connection_refused(sess):
5959
def test_it_keeps_working_after_server_returns_nothing(sess):
6060
"""the worker doesn't crash on many failed responses with server returned nothing"""
6161

62-
sess.execute(
62+
sess.execute(text(
6363
"""
6464
select net.http_get('http://localhost:9999/p/200:d1') from generate_series(1,10);
6565
"""
66-
)
66+
))
6767
sess.commit()
6868

6969
time.sleep(1.5)
7070

71-
(error_msg,count) = sess.execute(
71+
(error_msg,count) = sess.execute(text(
7272
"""
7373
select error_msg, count(*) from net._http_response where status_code is null group by error_msg;
7474
"""
75-
).fetchone()
75+
)).fetchone()
7676

7777
assert error_msg == "Server returned nothing (no headers, no data)"
7878
assert count == 10
7979

80-
sess.execute(
80+
sess.execute(text(
8181
"""
8282
select net.http_get('http://localhost:9999/p/200:b"still_working"') from generate_series(1,10);
8383
"""
84-
).fetchone()
84+
)).fetchone()
8585

8686
sess.commit()
8787

8888
time.sleep(1.5)
8989

90-
(status_code,count) = sess.execute(
90+
(status_code,count) = sess.execute(text(
9191
"""
9292
select status_code, count(*) from net._http_response where status_code = 200 group by status_code;
9393
"""
94-
).fetchone()
94+
)).fetchone()
9595

9696
assert status_code == 200
9797
assert count == 10

test/test_http_get_collect.py

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@
55
def test_http_get_returns_id(sess):
66
"""net.http_get returns a bigint id"""
77

8-
(request_id,) = sess.execute(
8+
(request_id,) = sess.execute(text(
99
"""
1010
select net.http_get('https://news.ycombinator.com');
1111
"""
12-
).fetchone()
12+
)).fetchone()
1313

1414
assert request_id == 1
1515

@@ -18,18 +18,17 @@ def test_http_get_collect_sync_success(sess):
1818
"""Collect a response, waiting if it has not completed yet"""
1919

2020
# Create a request
21-
(request_id,) = sess.execute(
21+
(request_id,) = sess.execute(text(
2222
"""
2323
select net.http_get('https://news.ycombinator.com');
2424
"""
25-
).fetchone()
25+
)).fetchone()
2626

2727
# Commit so background worker can start
2828
sess.commit()
2929

3030
# Collect the response, waiting as needed
31-
response = sess.execute(
32-
text(
31+
response = sess.execute(text(
3332
"""
3433
select * from net._http_collect_response(:request_id, async:=false);
3534
"""
@@ -78,11 +77,11 @@ def test_http_collect_response_async_does_not_exist(sess):
7877
"""Collect a non-existent response with async true"""
7978

8079
# Collect the response, waiting as needed
81-
response = sess.execute(
80+
response = sess.execute(text(
8281
"""
8382
select * from net._http_collect_response(1, async:=true);
8483
"""
85-
).fetchone()
84+
)).fetchone()
8685

8786
assert response[0] == "ERROR"
8887
assert "not found" in response[1]
@@ -91,37 +90,37 @@ def test_http_collect_response_async_does_not_exist(sess):
9190
def test_http_get_responses_have_different_created_times(sess):
9291
"""Ensure the rows in net._http_response have different created times"""
9392

94-
sess.execute(
93+
sess.execute(text(
9594
"""
9695
select net.http_get('http://localhost:8080/echo-method')
9796
"""
98-
)
97+
))
9998
sess.commit()
10099

101100
time.sleep(1)
102101

103-
sess.execute(
102+
sess.execute(text(
104103
"""
105104
select net.http_get('http://localhost:8080/echo-method')
106105
"""
107-
)
106+
))
108107
sess.commit()
109108

110109
time.sleep(1)
111110

112-
sess.execute(
111+
sess.execute(text(
113112
"""
114113
select net.http_get('http://localhost:8080/echo-method')
115114
"""
116-
)
115+
))
117116
sess.commit()
118117

119118
time.sleep(1)
120119

121-
count = sess.execute(
120+
count = sess.execute(text(
122121
"""
123122
select count(distinct created) from net._http_response;
124123
"""
125-
).scalar()
124+
)).scalar()
126125

127126
assert count == 3

test/test_http_headers.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,14 @@
44
def test_http_headers_set(sess):
55
"""Check that headers are being set"""
66
# Create a request
7-
(request_id,) = sess.execute(
7+
(request_id,) = sess.execute(text(
88
"""
99
select net.http_get(
1010
url:='http://localhost:8080/headers',
1111
headers:='{"pytest-header": "pytest-header", "accept": "application/json"}'
1212
);
1313
"""
14-
).fetchone()
14+
)).fetchone()
1515

1616
# Commit so background worker can start
1717
sess.commit()

0 commit comments

Comments
 (0)