code: def test_sql_time_limit(app_client_shorter_time_limit):
      response = app_client_shorter_time_limit.get(
          "/fixtures.json?sql=select+sleep(0.5)"
      )
      assert 400 == response.status
      assert response.json == {
          "ok": False,
          "error": (
              "<p>SQL query took too long. The time limit is controlled by the\n"
              '<a href="https://docs.datasette.io/en/stable/settings.html#sql-time-limit-ms">sql_time_limit_ms</a>\n'
              "configuration option.</p>\n"
              '<textarea style="width: 90%">select sleep(0.5)</textarea>\n'
              "<script>\n"
              'let ta = document.querySelector("textarea");\n'
              'ta.style.height = ta.scrollHeight + "px";\n'
              "</script>"
          ),
          "status": 400,
          "title": "SQL Interrupted",
      }
  
file_path: datasette/tests/test_api.py
imports: from datasette.app import Datasette
  from datasette.plugins import DEFAULT_PLUGINS
  from datasette.utils.sqlite import supports_table_xinfo
  from datasette.version import __version__
  from .fixtures import app_client, app_client_no_files, app_client_with_dot, app_client_shorter_time_limit, app_client_two_attached_databases_one_immutable, app_client_larger_cache_size, app_client_with_cors, app_client_two_attached_databases, app_client_conflicting_database_names, app_client_immutable_and_inspect_file, make_app_client, EXPECTED_PLUGINS, METADATA
  import pathlib
  import pytest
  import sys
  import urllib
label_desc: Use image node_id 4 for calling a global function with example usage: test_sql_time_limit(app_client_shorter_time_limit) without return types