diff --git a/.travis.yml b/.travis.yml index fc01da26..baa21838 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,4 +5,4 @@ python: - 3.6 script: - - python setup.py test + - pip install pytest aiohttp beautifulsoup4 && python setup.py install && pytest -vv 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) 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 ] == [