From 6668ab9e19fe2b7c021d55506863692cb47ff81d Mon Sep 17 00:00:00 2001 From: Alex Kasko Date: Wed, 27 May 2026 12:30:13 +0100 Subject: [PATCH] Tests cleanup, sanitized runs on CI --- .github/workflows/SQLiteTests.yml | 80 ++++++++++++ extension_config.cmake | 1 - scripts/time_tests.py | 121 ++++++++++++++++++ test/sql/scanner/tpch.test | 12 +- test/sql/storage/attach_alter.test | 2 +- test/sql/storage/attach_big.test_slow | 2 +- test/sql/storage/attach_catalog.test | 2 +- test/sql/storage/attach_checkpoint.test | 2 +- .../storage/attach_concurrent_clients.test | 6 +- test/sql/storage/attach_constraints.test | 2 +- test/sql/storage/attach_copy_index.test | 4 +- test/sql/storage/attach_create_if_exists.test | 2 +- test/sql/storage/attach_create_index.test | 2 +- .../sql/storage/attach_create_or_replace.test | 2 +- test/sql/storage/attach_database_list.test | 4 +- test/sql/storage/attach_defaults.test | 2 +- test/sql/storage/attach_delete.test | 2 +- .../sql/storage/attach_delete_hang_repro.test | 2 +- test/sql/storage/attach_delete_issue.test | 2 +- test/sql/storage/attach_describe.test | 2 +- test/sql/storage/attach_detach.test | 4 +- test/sql/storage/attach_drop.test | 2 +- test/sql/storage/attach_explain.test | 2 +- .../sql/storage/attach_index_expressions.test | 4 +- test/sql/storage/attach_keywords.test | 2 +- test/sql/storage/attach_on_conflict.test | 2 +- test/sql/storage/attach_prefix.test | 6 +- test/sql/storage/attach_rowid.test | 2 +- test/sql/storage/attach_schema_functions.test | 2 +- test/sql/storage/attach_simple.test | 2 +- test/sql/storage/attach_sqlite_query.test | 2 +- test/sql/storage/attach_transactions.test | 2 +- test/sql/storage/attach_types.test | 2 +- test/sql/storage/attach_update.test | 2 +- test/sql/storage/attach_use.test | 2 +- test/sql/storage/attach_views.test | 2 +- 36 files changed, 247 insertions(+), 47 deletions(-) create mode 100755 scripts/time_tests.py diff --git a/.github/workflows/SQLiteTests.yml b/.github/workflows/SQLiteTests.yml index 66ccf80..c2f404c 100644 --- a/.github/workflows/SQLiteTests.yml +++ b/.github/workflows/SQLiteTests.yml @@ -59,6 +59,86 @@ jobs: - name: Test extension env: LOCAL_EXTENSION_REPO: ${{ github.workspace }}/build/release/repository/ + SQLITE_TPCH_GENERATED: 1 run: | + make data/db/tpch.db ./build/release/test/unittest 'test/*' + linux-sanitized: + name: Linux ${{ matrix.sanitizer.name }} (amd64) + needs: linux + runs-on: ubuntu-latest + + strategy: + matrix: + sanitizer: + - name: ASan + threadsan_enabled: 0 + - name: TSan + threadsan_enabled: 1 + + env: + CMAKE_BUILD_PARALLEL_LEVEL: 2 + GEN: ninja + CC: 'ccache gcc' + CXX: 'ccache g++' + CCACHE_DIR: ${{ github.workspace }}/ccache + + steps: + + - name: Free disk space + uses: endersonmenezes/free-disk-space@v2.1.1 + continue-on-error: true + with: + remove_haskell: true + remove_tool_cache: true + remove_folders: "/usr/local/share/powershell /usr/share/swift" + testing: false + + - name: Checkout + uses: actions/checkout@v6 + with: + submodules: 'true' + + - name: Install required ubuntu packages + run: | + sudo apt-get update -y -q -o=Dpkg::Use-Pty=0 + sudo apt-get install -y -q -o=Dpkg::Use-Pty=0 \ + build-essential \ + ccache \ + cmake \ + mold \ + ninja-build + + - name: Cache Key + id: cache_key + working-directory: ./duckdb + run: | + DUCKDB_VERSION=$(git rev-parse --short HEAD) + KEY="${{ runner.os }}-${{ runner.arch }}-$DUCKDB_VERSION"-relassert-${{ matrix.sanitizer.name }} + echo "value=${KEY}" >> "${GITHUB_OUTPUT}" + + - name: Restore Cache + uses: actions/cache/restore@v5 + with: + path: ${{ github.workspace }}/ccache + key: ${{ steps.cache_key.outputs.value }} + + - name: Build extension + env: + THREADSAN: ${{ matrix.sanitizer.threadsan_enabled }} + run: | + make relassert + cat ./build/relassert/build.ninja | grep fsanitize | head -n 1 + + - name: Save Cache + uses: actions/cache/save@v5 + with: + path: ${{ github.workspace }}/ccache + key: ${{ steps.cache_key.outputs.value }} + + - name: Test extension + env: + LOCAL_EXTENSION_REPO: ${{ github.workspace }}/build/relassert/repository/ + run: | + ./build/relassert/test/unittest diff --git a/extension_config.cmake b/extension_config.cmake index c0c251d..f18df4c 100644 --- a/extension_config.cmake +++ b/extension_config.cmake @@ -3,7 +3,6 @@ # Extension from this repo duckdb_extension_load(sqlite_scanner SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR} - LOAD_TESTS ) # Any extra extensions that should be built diff --git a/scripts/time_tests.py b/scripts/time_tests.py new file mode 100755 index 0000000..08daa22 --- /dev/null +++ b/scripts/time_tests.py @@ -0,0 +1,121 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +import os +import subprocess +import time +import glob + +def run_and_time_unit_tests(): + """ + Discovers and runs unit tests, records their elapsed time, and returns + a list of test results sorted by elapsed time in descending order. + """ + # Assuming the script is run from the project root (e.g., duckdb-postgres/) + project_root = os.getcwd() + + # Define paths to the unittest executable and extension repository + # These paths are relative to the project_root + unittest_executable_path = os.path.join(project_root, 'build', 'release', 'test', 'unittest') + extension_repo_path = os.path.join(project_root, 'build', 'release', 'repository') + test_directory = os.path.join(project_root, 'test') + + # --- Pre-flight checks --- + if not os.path.exists(unittest_executable_path): + print(f"Error: Unittest executable not found at '{unittest_executable_path}'. " + "Please ensure the project is built and the path is correct.") + return [] + + if not os.path.exists(extension_repo_path): + print(f"Warning: Extension repository not found at '{extension_repo_path}'. " + "Tests requiring extensions might fail. Please ensure it exists if needed.") + + if not os.path.isdir(test_directory): + print(f"Error: Test directory not found at '{test_directory}'. " + "Please ensure the 'test/' directory exists in the project root.") + return [] + + # Discover all .test files recursively within the 'test/' directory + test_files = glob.glob(os.path.join(test_directory, '**', '*.test'), recursive=True) + + if not test_files: + print(f"No '.test' files found in '{test_directory}'.") + return [] + + print(f"Found {len(test_files)} test files. Running them one by one...\n") + + results = [] + # Prepare the environment variables for the subprocess + # Copy current environment and add/override LOCAL_EXTENSION_REPO + env_vars = os.environ.copy() + env_vars['LOCAL_EXTENSION_REPO'] = extension_repo_path + + test_files = sorted(test_files) + + for test_file_full_path in test_files: + # Get the path relative to the project root, as required by the unittest executable + test_name = os.path.relpath(test_file_full_path, project_root) + command = [unittest_executable_path, test_name] + + print(f"--- Running test: {test_name} ---") + start_time = time.monotonic() + process_returncode = -1 # Default to error state + + try: + # Execute the command. capture_output=True captures stdout/stderr. + # text=True decodes stdout/stderr as text. + # check=False prevents an exception for non-zero exit codes, allowing us to record time for failed tests. + process = subprocess.run( + command, + env=env_vars, + capture_output=True, + text=True, + check=False + ) + end_time = time.monotonic() + elapsed_time = end_time - start_time + process_returncode = process.returncode + + results.append({ + 'test_name': test_name, + 'elapsed_time': elapsed_time, + 'returncode': process_returncode + }) + + if process_returncode != 0: + print(f" Test FAILED (Return Code: {process_returncode}) - Elapsed: {elapsed_time:.4f} seconds") + # Uncomment the following lines to see stdout/stderr for failed tests + # print(" --- STDOUT ---") + # print(process.stdout.strip()) + # print(" --- STDERR ---") + # print(process.stderr.strip()) + else: + print(f" Test PASSED - Elapsed: {elapsed_time:.4f} seconds") + + except FileNotFoundError: + print(f" Error: Unittest executable not found or command failed to start for '{test_name}'.") + results.append({'test_name': test_name, 'elapsed_time': -1.0, 'returncode': -1}) + except Exception as e: + print(f" An unexpected error occurred while running '{test_name}': {e}") + results.append({'test_name': test_name, 'elapsed_time': -1.0, 'returncode': -1}) + print("-" * (len(test_name) + 18)) # Separator for clarity + + # Sort results by elapsed time in descending order + # Tests that errored out (elapsed_time = -1.0) will appear at the end due to sorting behavior + sorted_results = sorted(results, key=lambda x: x['elapsed_time'], reverse=True) + + print("\n\n--- Test Summary (Sorted by Elapsed Time, Descending) ---") + if not sorted_results: + print("No test results to display.") + else: + for result in sorted_results: + status = "PASSED" if result['returncode'] == 0 else "FAILED" if result['returncode'] != -1 else "ERROR" + if result['elapsed_time'] >= 0: + print(f"{result['test_name']}: {result['elapsed_time']:.4f} seconds ({status})") + else: + print(f"{result['test_name']}: Error during execution ({status})") + + return sorted_results + +if __name__ == "__main__": + run_and_time_unit_tests() diff --git a/test/sql/scanner/tpch.test b/test/sql/scanner/tpch.test index 171aa7e..245c419 100644 --- a/test/sql/scanner/tpch.test +++ b/test/sql/scanner/tpch.test @@ -14,9 +14,9 @@ require tpch loop i 1 9 query I -PRAGMA tpch(${i}) +PRAGMA tpch({i}) ---- -:duckdb/extension/tpch/dbgen/answers/sf0.1/q0${i}.csv +:duckdb/extension/tpch/dbgen/answers/sf0.1/q0{i}.csv endloop @@ -24,18 +24,18 @@ endloop loop i 10 15 query I -PRAGMA tpch(${i}) +PRAGMA tpch({i}) ---- -:duckdb/extension/tpch/dbgen/answers/sf0.1/q${i}.csv +:duckdb/extension/tpch/dbgen/answers/sf0.1/q{i}.csv endloop loop i 16 23 query I -PRAGMA tpch(${i}) +PRAGMA tpch({i}) ---- -:duckdb/extension/tpch/dbgen/answers/sf0.1/q${i}.csv +:duckdb/extension/tpch/dbgen/answers/sf0.1/q{i}.csv endloop diff --git a/test/sql/storage/attach_alter.test b/test/sql/storage/attach_alter.test index 468aef0..abdd1a4 100644 --- a/test/sql/storage/attach_alter.test +++ b/test/sql/storage/attach_alter.test @@ -5,7 +5,7 @@ require sqlite_scanner statement ok -ATTACH '__TEST_DIR__/attach_alter.db' AS s1 (TYPE SQLITE) +ATTACH '{TEST_DIR}/attach_alter.db' AS s1 (TYPE SQLITE) # add column statement ok diff --git a/test/sql/storage/attach_big.test_slow b/test/sql/storage/attach_big.test_slow index 5adcb2e..d5cf888 100644 --- a/test/sql/storage/attach_big.test_slow +++ b/test/sql/storage/attach_big.test_slow @@ -5,7 +5,7 @@ require sqlite_scanner statement ok -ATTACH '__TEST_DIR__/attach_big.db' AS s (TYPE SQLITE) +ATTACH '{TEST_DIR}/attach_big.db' AS s (TYPE SQLITE) statement ok USE s; diff --git a/test/sql/storage/attach_catalog.test b/test/sql/storage/attach_catalog.test index e367255..c2c6369 100644 --- a/test/sql/storage/attach_catalog.test +++ b/test/sql/storage/attach_catalog.test @@ -5,7 +5,7 @@ require sqlite_scanner statement ok -ATTACH '__TEST_DIR__/attach_catalog.db' AS s (TYPE SQLITE) +ATTACH '{TEST_DIR}/attach_catalog.db' AS s (TYPE SQLITE) # schemas statement error diff --git a/test/sql/storage/attach_checkpoint.test b/test/sql/storage/attach_checkpoint.test index 23c3bbe..af5afcb 100644 --- a/test/sql/storage/attach_checkpoint.test +++ b/test/sql/storage/attach_checkpoint.test @@ -5,7 +5,7 @@ require sqlite_scanner statement ok -ATTACH '__TEST_DIR__/attach_checkpoint.db' AS s (TYPE SQLITE) +ATTACH '{TEST_DIR}/attach_checkpoint.db' AS s (TYPE SQLITE) statement ok CHECKPOINT s \ No newline at end of file diff --git a/test/sql/storage/attach_concurrent_clients.test b/test/sql/storage/attach_concurrent_clients.test index cce5237..f3f3203 100644 --- a/test/sql/storage/attach_concurrent_clients.test +++ b/test/sql/storage/attach_concurrent_clients.test @@ -4,10 +4,10 @@ require sqlite_scanner -require nowindows +require notwindows statement ok -ATTACH '__TEST_DIR__/attach_concurrentclients.db' AS s1 (TYPE SQLITE) +ATTACH '{TEST_DIR}/attach_concurrentclients.db' AS s1 (TYPE SQLITE) statement ok CREATE TABLE s1.tbl(i INTEGER); @@ -18,7 +18,7 @@ concurrentloop i 0 10 loop k 0 10 statement maybe -INSERT INTO s1.tbl VALUES (${i} + ${k}) +INSERT INTO s1.tbl VALUES ({i} + {k}) ---- database is locked diff --git a/test/sql/storage/attach_constraints.test b/test/sql/storage/attach_constraints.test index 3823c20..868615c 100644 --- a/test/sql/storage/attach_constraints.test +++ b/test/sql/storage/attach_constraints.test @@ -5,7 +5,7 @@ require sqlite_scanner statement ok -ATTACH '__TEST_DIR__/attach_constraints.db' AS s1 (TYPE SQLITE) +ATTACH '{TEST_DIR}/attach_constraints.db' AS s1 (TYPE SQLITE) # FIXME: #statement ok diff --git a/test/sql/storage/attach_copy_index.test b/test/sql/storage/attach_copy_index.test index 47a3971..5c065e3 100644 --- a/test/sql/storage/attach_copy_index.test +++ b/test/sql/storage/attach_copy_index.test @@ -27,7 +27,7 @@ WHERE a1.name!=a2.name and a1.name='Checking'; 2018-02-20 10:59:00 Checking 250.00 statement ok -ATTACH '__TEST_DIR__/target.db' AS ddb; +ATTACH '{TEST_DIR}/target.db' AS ddb; statement ok COPY FROM DATABASE s to ddb; @@ -58,7 +58,7 @@ statement ok DETACH ddb statement ok -ATTACH '__TEST_DIR__/target.db' AS ddb; +ATTACH '{TEST_DIR}/target.db' AS ddb; statement ok USE ddb diff --git a/test/sql/storage/attach_create_if_exists.test b/test/sql/storage/attach_create_if_exists.test index 35ea55d..e1ee7e1 100644 --- a/test/sql/storage/attach_create_if_exists.test +++ b/test/sql/storage/attach_create_if_exists.test @@ -5,7 +5,7 @@ require sqlite_scanner statement ok -ATTACH '__TEST_DIR__/attach_create_if_exists.db' AS s1 (TYPE SQLITE) +ATTACH '{TEST_DIR}/attach_create_if_exists.db' AS s1 (TYPE SQLITE) statement ok CREATE TABLE s1.test(i INTEGER); diff --git a/test/sql/storage/attach_create_index.test b/test/sql/storage/attach_create_index.test index 396b85f..3455bca 100644 --- a/test/sql/storage/attach_create_index.test +++ b/test/sql/storage/attach_create_index.test @@ -5,7 +5,7 @@ require sqlite_scanner statement ok -ATTACH '__TEST_DIR__/attach_create_index.db' AS s (TYPE SQLITE) +ATTACH '{TEST_DIR}/attach_create_index.db' AS s (TYPE SQLITE) statement ok CREATE TABLE s.test(i INTEGER); diff --git a/test/sql/storage/attach_create_or_replace.test b/test/sql/storage/attach_create_or_replace.test index b4d8113..289c7a2 100644 --- a/test/sql/storage/attach_create_or_replace.test +++ b/test/sql/storage/attach_create_or_replace.test @@ -5,7 +5,7 @@ require sqlite_scanner statement ok -ATTACH '__TEST_DIR__/attach_unnest.sqlite' AS tmp (TYPE SQLITE); +ATTACH '{TEST_DIR}/attach_unnest.sqlite' AS tmp (TYPE SQLITE); statement ok USE tmp; diff --git a/test/sql/storage/attach_database_list.test b/test/sql/storage/attach_database_list.test index 10fdd12..764abbc 100644 --- a/test/sql/storage/attach_database_list.test +++ b/test/sql/storage/attach_database_list.test @@ -5,10 +5,10 @@ require sqlite_scanner statement ok -ATTACH '__TEST_DIR__/attach_dblist1.db' AS s1 (TYPE SQLITE) +ATTACH '{TEST_DIR}/attach_dblist1.db' AS s1 (TYPE SQLITE) statement ok -ATTACH '__TEST_DIR__/attach_dblist2.db' AS s2 (TYPE SQLITE) +ATTACH '{TEST_DIR}/attach_dblist2.db' AS s2 (TYPE SQLITE) statement ok SELECT * FROM duckdb_databases(); diff --git a/test/sql/storage/attach_defaults.test b/test/sql/storage/attach_defaults.test index edfddc2..1c807f1 100644 --- a/test/sql/storage/attach_defaults.test +++ b/test/sql/storage/attach_defaults.test @@ -5,7 +5,7 @@ require sqlite_scanner statement ok -ATTACH '__TEST_DIR__/attach_defaults.db' AS s1 (TYPE SQLITE) +ATTACH '{TEST_DIR}/attach_defaults.db' AS s1 (TYPE SQLITE) statement ok CREATE TABLE s1.test(i INTEGER DEFAULT 42, j INTEGER); diff --git a/test/sql/storage/attach_delete.test b/test/sql/storage/attach_delete.test index 6c2d634..bfc3c0a 100644 --- a/test/sql/storage/attach_delete.test +++ b/test/sql/storage/attach_delete.test @@ -5,7 +5,7 @@ require sqlite_scanner statement ok -ATTACH '__TEST_DIR__/attach_delete.db' AS s1 (TYPE SQLITE) +ATTACH '{TEST_DIR}/attach_delete.db' AS s1 (TYPE SQLITE) statement ok CREATE TABLE s1.test(i INTEGER); diff --git a/test/sql/storage/attach_delete_hang_repro.test b/test/sql/storage/attach_delete_hang_repro.test index f54f095..83eaa3d 100644 --- a/test/sql/storage/attach_delete_hang_repro.test +++ b/test/sql/storage/attach_delete_hang_repro.test @@ -8,7 +8,7 @@ statement ok SET threads=8 statement ok -ATTACH '__TEST_DIR__/attach_delete_hang_repro.db' AS s (TYPE SQLITE) +ATTACH '{TEST_DIR}/attach_delete_hang_repro.db' AS s (TYPE SQLITE) statement ok CREATE TABLE s.t(i BIGINT, p VARCHAR, b BOOLEAN, ts TIMESTAMPTZ); diff --git a/test/sql/storage/attach_delete_issue.test b/test/sql/storage/attach_delete_issue.test index 1487d23..5c86bae 100644 --- a/test/sql/storage/attach_delete_issue.test +++ b/test/sql/storage/attach_delete_issue.test @@ -5,7 +5,7 @@ require sqlite_scanner statement ok -ATTACH '__TEST_DIR__/sqlite_db.db' AS sqlite_db (TYPE SQLITE) +ATTACH '{TEST_DIR}/sqlite_db.db' AS sqlite_db (TYPE SQLITE) statement ok CREATE TABLE sqlite_db.tbl(id INTEGER, name VARCHAR); diff --git a/test/sql/storage/attach_describe.test b/test/sql/storage/attach_describe.test index 0726a9e..47a96e4 100644 --- a/test/sql/storage/attach_describe.test +++ b/test/sql/storage/attach_describe.test @@ -5,7 +5,7 @@ require sqlite_scanner statement ok -ATTACH '__TEST_DIR__/attach_describe.db' AS s1 (TYPE SQLITE) +ATTACH '{TEST_DIR}/attach_describe.db' AS s1 (TYPE SQLITE) statement ok CREATE TABLE s1.test(i BIGINT PRIMARY KEY, j BIGINT DEFAULT 42); diff --git a/test/sql/storage/attach_detach.test b/test/sql/storage/attach_detach.test index 24dc51b..68bee57 100644 --- a/test/sql/storage/attach_detach.test +++ b/test/sql/storage/attach_detach.test @@ -5,7 +5,7 @@ require sqlite_scanner statement ok -ATTACH '__TEST_DIR__/attach_detach.db' AS s1 (TYPE SQLITE) +ATTACH '{TEST_DIR}/attach_detach.db' AS s1 (TYPE SQLITE) statement ok CREATE TABLE s1.test(i INTEGER); @@ -22,7 +22,7 @@ SELECT * FROM s1.test Catalog Error: Table with name "s1.test" does not exist because schema "s1" does not exist. statement ok -ATTACH '__TEST_DIR__/attach_detach.db' AS s1 (TYPE SQLITE) +ATTACH '{TEST_DIR}/attach_detach.db' AS s1 (TYPE SQLITE) query I SELECT * FROM s1.test diff --git a/test/sql/storage/attach_drop.test b/test/sql/storage/attach_drop.test index 3cbbad8..7ace1e4 100644 --- a/test/sql/storage/attach_drop.test +++ b/test/sql/storage/attach_drop.test @@ -5,7 +5,7 @@ require sqlite_scanner statement ok -ATTACH '__TEST_DIR__/attach_drop.db' AS simple (TYPE SQLITE) +ATTACH '{TEST_DIR}/attach_drop.db' AS simple (TYPE SQLITE) statement ok CREATE TABLE simple.test(i INTEGER); diff --git a/test/sql/storage/attach_explain.test b/test/sql/storage/attach_explain.test index 2b24a11..e9c10c9 100644 --- a/test/sql/storage/attach_explain.test +++ b/test/sql/storage/attach_explain.test @@ -5,7 +5,7 @@ require sqlite_scanner statement ok -ATTACH '__TEST_DIR__/attach_explain.db' AS s1 (TYPE SQLITE) +ATTACH '{TEST_DIR}/attach_explain.db' AS s1 (TYPE SQLITE) statement ok EXPLAIN CREATE TABLE s1.test(i INTEGER); diff --git a/test/sql/storage/attach_index_expressions.test b/test/sql/storage/attach_index_expressions.test index c9a6e4c..b567dd5 100644 --- a/test/sql/storage/attach_index_expressions.test +++ b/test/sql/storage/attach_index_expressions.test @@ -13,7 +13,7 @@ SELECT expressions FROM duckdb_indexes() WHERE index_name='idx_actor_last_name'; [last_name] statement ok -ATTACH '__TEST_DIR__/sakila.duckdb' AS sakila_duck; +ATTACH '{TEST_DIR}/sakila.duckdb' AS sakila_duck; statement ok COPY FROM DATABASE s TO sakila_duck @@ -27,7 +27,7 @@ statement ok DETACH sakila_duck; statement ok -ATTACH '__TEST_DIR__/sakila.duckdb' AS sakila_duck; +ATTACH '{TEST_DIR}/sakila.duckdb' AS sakila_duck; query IIII SELECT * FROM sakila_duck.store WHERE manager_staff_id=2; diff --git a/test/sql/storage/attach_keywords.test b/test/sql/storage/attach_keywords.test index 517ff92..6210772 100644 --- a/test/sql/storage/attach_keywords.test +++ b/test/sql/storage/attach_keywords.test @@ -5,7 +5,7 @@ require sqlite_scanner statement ok -ATTACH '__TEST_DIR__/attach_keywords.db' AS s (TYPE SQLITE) +ATTACH '{TEST_DIR}/attach_keywords.db' AS s (TYPE SQLITE) statement ok CREATE TABLE s."TaBlE"("TABLE" INTEGER); diff --git a/test/sql/storage/attach_on_conflict.test b/test/sql/storage/attach_on_conflict.test index 7c13892..87b5baf 100644 --- a/test/sql/storage/attach_on_conflict.test +++ b/test/sql/storage/attach_on_conflict.test @@ -5,7 +5,7 @@ require sqlite_scanner statement ok -ATTACH '__TEST_DIR__/attach_on_conflict.db' AS s (TYPE SQLITE) +ATTACH '{TEST_DIR}/attach_on_conflict.db' AS s (TYPE SQLITE) statement ok CREATE TABLE s.tbl(i INTEGER PRIMARY KEY) diff --git a/test/sql/storage/attach_prefix.test b/test/sql/storage/attach_prefix.test index ad81fa4..4c995f2 100644 --- a/test/sql/storage/attach_prefix.test +++ b/test/sql/storage/attach_prefix.test @@ -5,7 +5,7 @@ require sqlite_scanner statement ok -ATTACH 'sqlite:__TEST_DIR__/attach_replacement.db' AS s +ATTACH 'sqlite:{TEST_DIR}/attach_replacement.db' AS s statement ok CREATE TABLE s.integers(i INTEGER) @@ -18,7 +18,7 @@ DETACH s # attach automatically finds out this is a sqlite file statement ok -ATTACH '__TEST_DIR__/attach_replacement.db' AS s +ATTACH '{TEST_DIR}/attach_replacement.db' AS s query I SELECT * FROM s.integers @@ -29,7 +29,7 @@ statement ok DETACH s statement ok -ATTACH '__TEST_DIR__/attach_replacement.db' AS s (TYPE sqlite) +ATTACH '{TEST_DIR}/attach_replacement.db' AS s (TYPE sqlite) query I SELECT * FROM s.integers diff --git a/test/sql/storage/attach_rowid.test b/test/sql/storage/attach_rowid.test index 6f64723..726e9bc 100644 --- a/test/sql/storage/attach_rowid.test +++ b/test/sql/storage/attach_rowid.test @@ -5,7 +5,7 @@ require sqlite_scanner statement ok -ATTACH '__TEST_DIR__/attach_rowid.db' AS s1 (TYPE SQLITE) +ATTACH '{TEST_DIR}/attach_rowid.db' AS s1 (TYPE SQLITE) statement ok CREATE TABLE s1.test(i INT); diff --git a/test/sql/storage/attach_schema_functions.test b/test/sql/storage/attach_schema_functions.test index 71b2459..9e4b31c 100644 --- a/test/sql/storage/attach_schema_functions.test +++ b/test/sql/storage/attach_schema_functions.test @@ -5,7 +5,7 @@ require sqlite_scanner statement ok -ATTACH '__TEST_DIR__/attach_schema_functions.db' AS s (TYPE SQLITE) +ATTACH '{TEST_DIR}/attach_schema_functions.db' AS s (TYPE SQLITE) statement ok CREATE TABLE s.integers(i BIGINT PRIMARY KEY, j BIGINT); diff --git a/test/sql/storage/attach_simple.test b/test/sql/storage/attach_simple.test index d3afff6..7a8d257 100644 --- a/test/sql/storage/attach_simple.test +++ b/test/sql/storage/attach_simple.test @@ -5,7 +5,7 @@ require sqlite_scanner statement ok -ATTACH '__TEST_DIR__/attach_simple.db' AS simple (TYPE SQLITE) +ATTACH '{TEST_DIR}/attach_simple.db' AS simple (TYPE SQLITE) statement ok CREATE TABLE simple.test(i INTEGER); diff --git a/test/sql/storage/attach_sqlite_query.test b/test/sql/storage/attach_sqlite_query.test index 71efc18..54874d9 100644 --- a/test/sql/storage/attach_sqlite_query.test +++ b/test/sql/storage/attach_sqlite_query.test @@ -5,7 +5,7 @@ require sqlite_scanner statement ok -ATTACH '__TEST_DIR__/sqlite_query_test.db' AS s (TYPE SQLITE) +ATTACH '{TEST_DIR}/sqlite_query_test.db' AS s (TYPE SQLITE) query I SELECT * FROM sqlite_query(s, 'SELECT 42 a') diff --git a/test/sql/storage/attach_transactions.test b/test/sql/storage/attach_transactions.test index 41960ec..82f57e2 100644 --- a/test/sql/storage/attach_transactions.test +++ b/test/sql/storage/attach_transactions.test @@ -5,7 +5,7 @@ require sqlite_scanner statement ok -ATTACH '__TEST_DIR__/attach_transactions.db' AS s (TYPE SQLITE) +ATTACH '{TEST_DIR}/attach_transactions.db' AS s (TYPE SQLITE) # roll back create table diff --git a/test/sql/storage/attach_types.test b/test/sql/storage/attach_types.test index 7f5634d..cbc4e4f 100644 --- a/test/sql/storage/attach_types.test +++ b/test/sql/storage/attach_types.test @@ -5,7 +5,7 @@ require sqlite_scanner statement ok -ATTACH '__TEST_DIR__/attach_types.db' AS s (TYPE SQLITE) +ATTACH '{TEST_DIR}/attach_types.db' AS s (TYPE SQLITE) statement ok CREATE TABLE s.types(i INTEGER, j BIGINT, k DOUBLE, l VARCHAR); diff --git a/test/sql/storage/attach_update.test b/test/sql/storage/attach_update.test index 3a9befc..b7db911 100644 --- a/test/sql/storage/attach_update.test +++ b/test/sql/storage/attach_update.test @@ -5,7 +5,7 @@ require sqlite_scanner statement ok -ATTACH '__TEST_DIR__/attach_update.db' AS s1 (TYPE SQLITE) +ATTACH '{TEST_DIR}/attach_update.db' AS s1 (TYPE SQLITE) statement ok CREATE TABLE s1.test(i INTEGER); diff --git a/test/sql/storage/attach_use.test b/test/sql/storage/attach_use.test index 26b4337..3952414 100644 --- a/test/sql/storage/attach_use.test +++ b/test/sql/storage/attach_use.test @@ -5,7 +5,7 @@ require sqlite_scanner statement ok -ATTACH '__TEST_DIR__/attach_use.db' AS s (TYPE SQLITE) +ATTACH '{TEST_DIR}/attach_use.db' AS s (TYPE SQLITE) statement ok USE s; diff --git a/test/sql/storage/attach_views.test b/test/sql/storage/attach_views.test index 2760076..adcc915 100644 --- a/test/sql/storage/attach_views.test +++ b/test/sql/storage/attach_views.test @@ -5,7 +5,7 @@ require sqlite_scanner statement ok -ATTACH '__TEST_DIR__/attach_views.db' AS s (TYPE SQLITE) +ATTACH '{TEST_DIR}/attach_views.db' AS s (TYPE SQLITE) statement ok USE s;