Add Google Test suite for regression testing baseline.#276
Open
fdcastel wants to merge 2 commits intoFirebirdSQL:masterfrom
Open
Add Google Test suite for regression testing baseline.#276fdcastel wants to merge 2 commits intoFirebirdSQL:masterfrom
fdcastel wants to merge 2 commits intoFirebirdSQL:masterfrom
Conversation
irodushka
reviewed
Feb 17, 2026
irodushka
reviewed
Feb 17, 2026
irodushka
reviewed
Feb 17, 2026
irodushka
reviewed
Feb 17, 2026
irodushka
reviewed
Feb 17, 2026
irodushka
reviewed
Feb 17, 2026
Member
Author
|
Pushed fixes for four issues identified in @irodushka’s review. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds a comprehensive Google Test suite (375 tests across 38 test suites) that exercises the Firebird ODBC driver through the standard ODBC API via the Driver Manager. This establishes a regression testing baseline on the current, unmodified driver — per the plan discussed in PR #275.
No driver source code is modified by this PR.
Motivation
Before making any code changes (bugfixes, build system, CI), we need a testing baseline that documents what the current driver can do and where improvements are needed. This test suite:
GTEST_SKIP()with explanations of what improvement they require (e.g., "Requires Phase 7 (OC-1): SQLCopyDesc null records crash fix").GTEST_SKIP()markers as fixes are merged, turning them into pass/fail tests.What's included
Infrastructure
tests/CMakeLists.txttests/test_main.cpptests/test_helpers.hOdbcConnectedTestfixture,TempTableRAII guard, error helperstests/README.mdTest files (30 files)
Category A — Tests that pass on vanilla master (16 files)
test_data_types.cpptest_result_conversions.cpptest_param_conversions.cpptest_prepare.cpptest_cursors.cpptest_cursor_commit.cpptest_cursor_name.cpptest_data_at_execution.cpptest_array_binding.cpptest_bindcol.cpptest_descrec.cpptest_blob.cpptest_multi_statement.cpptest_stmthandles.cpptest_wchar.cpptest_escape_sequences.cppCategory B — Mixed pass/skip (6 files)
These files contain tests that pass and tests that are
GTEST_SKIP()'d because they depend on driver improvements not yet merged.test_descriptor.cpptest_connect_options.cpptest_errors.cpptest_catalogfunctions.cpptest_server_version.cpptest_scrollable_cursor.cppCategory C — All tests SKIP'd (8 files)
These files test features that don't exist on vanilla master. Every test is
GTEST_SKIP()'d with an explanation.test_null_handles.cpptest_savepoint.cpptest_conn_settings.cpptest_odbc38_compliance.cpptest_guid_and_binary.cpptest_odbc_string.cpp__has_include)test_phase7_crusher_fixes.cpptest_phase11_typeinfo_timeout_pool.cppHow to build and run
Prerequisites
Builds/MsVc2022.win/OdbcFb.sln) and registered as an ODBC data sourceBuild
Run
Expected output
Without
FIREBIRD_ODBC_CONNECTIONset, all 375 tests skip gracefully.Design decisions
Standalone CMake project — Since there's no root
CMakeLists.txtyet (that's a future PR), the test suite is self-contained with its ownproject()declaration. It will integrate viaadd_subdirectory(tests)when a root CMake build is added.Tests via Driver Manager, not direct DLL calls — Tests link against
odbc32/odbccp32(the Windows ODBC Driver Manager) and connect using a standard connection string. This tests the driver as applications actually use it. The one exception istest_null_handles.cpp(which loads the DLL directly to test entry-point validation) — all its tests are SKIP'd.GTEST_SKIP() preserves test code — Rather than deleting tests that don't pass on vanilla, each is wrapped with
GTEST_SKIP() << "reason". The test code remains intact so that future PRs can simply remove the SKIP line to activate the test.No driver code changes — This PR adds only the
tests/directory. No existing source files are modified.Checklist