#!/bin/sh
# SPDX-License-Identifier: CC0-1.0
# Copyright 2026 Boyuan Yang <byang@debian.org>
set -eu

source_dir="$(pwd)"
test_dir="$AUTOPKGTEST_TMP/upstream-dbms"
mkdir -p "$test_dir"

# Keep the upstream test helpers, but use installed library headers and symbols.
cp "$source_dir/tkrzw_dbm_hash_test.cc" "$source_dir/tkrzw_dbm_tree_test.cc" \
    "$source_dir/tkrzw_dbm_baby_test.cc" "$source_dir/tkrzw_dbm_test_common.h" "$source_dir/tkrzw_sys_config.h" "$test_dir/"
cp "$source_dir/debian/tests/source-date-epoch.cc" "$test_dir/"
cd "$test_dir"
unset CPATH CPLUS_INCLUDE_PATH C_INCLUDE_PATH LIBRARY_PATH LD_LIBRARY_PATH LD_PRELOAD

for dbm in hash tree baby; do
    g++ -std=c++17 -O2 -pthread "tkrzw_dbm_${dbm}_test.cc" \
        -ltkrzw -lgtest -lgmock -o "${dbm}-test"
    # These original tests assert current-time behavior. Test SDE separately below.
    if test "$dbm" = baby; then
        filter="*.Basic:*.Process:*.Iterator:*.LongKeyIterator"
    else
        filter="*.EmptyDatabase:*.File:*.Basic:*.OpenClose:*.RebuildRandom:*.Restore:*.AutoRestore:*.Corruption:*.UpdateLogger:*.LongKeyIterator"
    fi
    env -u SOURCE_DATE_EPOCH "./${dbm}-test" \
        --gtest_filter="$filter"
done

g++ -std=c++17 -O2 -pthread source-date-epoch.cc -ltkrzw -o source-date-epoch
./source-date-epoch "$test_dir/sde"
