diff --git a/datasette/views/table.py b/datasette/views/table.py index a53d7701..9798174e 100644 --- a/datasette/views/table.py +++ b/datasette/views/table.py @@ -2312,8 +2312,6 @@ async def table_view_data( new_rows.append(new_row) rows = new_rows - _next = request.args.get("_next") - # Pagination next link next_value, next_url = await _next_value_and_url( datasette, diff --git a/tests/test_csv.py b/tests/test_csv.py index 7758a3c0..f6660d9a 100644 --- a/tests/test_csv.py +++ b/tests/test_csv.py @@ -229,6 +229,20 @@ async def test_table_csv_stream(ds_client): assert len([b for b in response.content.split(b"\r\n") if b]) == 1002 +@pytest.mark.asyncio +async def test_view_csv_stream(ds_client): + # Without _stream should return header + 100 rows: + response = await ds_client.get("/fixtures/paginated_view.csv?_size=max") + assert len([b for b in response.content.split(b"\r\n") if b]) == 101 + # With _stream=1 should paginate through all pages and return header + 202 rows + response = await ds_client.get("/fixtures/paginated_view.csv?_stream=1") + lines = [b for b in response.content.split(b"\r\n") if b] + assert len(lines) == 203 + # Ensure there are no duplicate rows from looping + assert len(set(lines[1:])) == 202 + assert lines[0] == b"content,content_extra" + + def test_csv_trace(app_client_with_trace): response = app_client_with_trace.get("/fixtures/simple_primary_key.csv?_trace=1") assert response.headers["content-type"] == "text/html; charset=utf-8"