From 2aa9d4a09716433c04377aff97082de47d8d9727 Mon Sep 17 00:00:00 2001 From: Simon Willison Date: Mon, 16 Apr 2018 17:27:11 -0700 Subject: [PATCH 1/5] Run pytest -vv in Travis --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index fc01da26..5480edde 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,4 +5,4 @@ python: - 3.6 script: - - python setup.py test + - pytest -vv From 00de2e82358a7c1417f8fb05dd77c44ac81b6bfb Mon Sep 17 00:00:00 2001 From: Simon Willison Date: Mon, 16 Apr 2018 17:28:37 -0700 Subject: [PATCH 2/5] Run python setup.py install first --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 5480edde..796f8a1c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,4 +5,4 @@ python: - 3.6 script: - - pytest -vv + - python setup.py install && pytest -vv From 97cf5151bada4a8a09107257b54b0bcf98a7f965 Mon Sep 17 00:00:00 2001 From: Simon Willison Date: Mon, 16 Apr 2018 17:34:47 -0700 Subject: [PATCH 3/5] pip install test dependencies --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 796f8a1c..baa21838 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,4 +5,4 @@ python: - 3.6 script: - - python setup.py install && pytest -vv + - pip install pytest aiohttp beautifulsoup4 && python setup.py install && pytest -vv From 59a3aa859c0e782aeda9a515b1b52c358e8458a2 Mon Sep 17 00:00:00 2001 From: Simon Willison Date: Mon, 16 Apr 2018 17:37:57 -0700 Subject: [PATCH 4/5] Print more information on failing test --- tests/test_api.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/test_api.py b/tests/test_api.py index 7d9548b0..d1119365 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -460,6 +460,9 @@ def test_sortable(app_client, query_string, sort_key, human_description_en): assert 5 == page expected = list(generate_sortable_rows(201)) expected.sort(key=sort_key) + import json + print('expected = {}'.format(json.dumps(expected))) + print('fetched = {}'.format(json.dumps(fetched))) assert [ r['content'] for r in expected ] == [ From db23da7ae1682fecc92d12bb871b928b51d7807a Mon Sep 17 00:00:00 2001 From: Simon Willison Date: Mon, 16 Apr 2018 18:39:16 -0700 Subject: [PATCH 5/5] Add primary keys back to order by clause for sorting, refs #216 --- datasette/app.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/datasette/app.py b/datasette/app.py index cc16ae97..e09e4fa5 100644 --- a/datasette/app.py +++ b/datasette/app.py @@ -619,9 +619,11 @@ class TableView(RowTableShared): if use_rowid: select = 'rowid, *' order_by = 'rowid' + order_by_pks = 'rowid' else: select = '*' - order_by = ', '.join(pks) + order_by_pks = ', '.join([escape_sqlite(pk) for pk in pks]) + order_by = order_by_pks if is_view: order_by = '' @@ -792,6 +794,9 @@ class TableView(RowTableShared): ) ) params['p{}'.format(len(params))] = sort_value + order_by = '{}, {}'.format( + order_by, order_by_pks + ) else: where_clauses.extend(next_by_pk_clauses)