Skip to content

Test | Split TvpTest part1#3956

Merged
mdaigle merged 9 commits intomainfrom
dev/mdaigle/split-tvp-part1
Feb 17, 2026
Merged

Test | Split TvpTest part1#3956
mdaigle merged 9 commits intomainfrom
dev/mdaigle/split-tvp-part1

Conversation

@mdaigle
Copy link
Contributor

@mdaigle mdaigle commented Feb 12, 2026

Description

TvpTest is large an unmaintainable due to its "golden file" testing approach. We frequently see builds hang on these tests but have no way to diagnose because so much work happens under a single test case header (hundreds of individuals connections, queries, type comparisons, console logs, etc.). This PR kicks off the process of improving this test class.

The first order of business is breaking the test down into more manageable chunks. TvpTest.TestMain calls several helper test methods that can be split into their own classes and called directly as top-level tests. This requires splitting out the giant baseline files by test and updating the new tests to look only at their new targeted baseline file.

While splitting the baseline file, I ran TvpTest.TestMain on the concatenation of the split files to ensure that nothing was lost in the transition.

Testing

All test cases are preserved; this is just a refactor.

Copilot AI review requested due to automatic review settings February 12, 2026 18:41
@mdaigle mdaigle changed the title Test | Split TVPTest part1 Test | Split TvpTest part1 Feb 12, 2026
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Refactors the large TvpTest “golden file” manual test by splitting individual test groups into separate top-level test classes with their own baseline files, improving diagnosability and maintainability of the ManualTests suite.

Changes:

  • Removes the monolithic TvpTest.TestMain() runner and exposes specific helper methods/classes for reuse.
  • Adds new focused ManualTests (*Tests.cs) for QueryHints, ColumnBoundaries, StreamInputParameter, SqlVariantParameter, DateTimeVariant, and OutputParameter.
  • Splits the original baseline output into multiple per-test .bsl files and updates the ManualTests csproj content includes accordingly.

Reviewed changes

Copilot reviewed 32 out of 32 changed files in this pull request and generated 20 comments.

Show a summary per file
File Description
src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ParameterTest/TvpTest.cs Removes monolithic entrypoint and makes helpers accessible to new focused tests.
src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ParameterTest/TvpQueryHintsTests.cs New top-level test for TVP query hints with dedicated baseline comparison.
src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ParameterTest/TvpColumnBoundariesTests.cs New top-level test for TVP column boundary permutations with dedicated baseline comparison.
src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ParameterTest/StreamInputParameterTests.cs New top-level test for stream input parameter scenarios with dedicated baseline comparison.
src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ParameterTest/SqlVariantParameterTests.cs New top-level test for SQL variant parameter scenarios with dedicated baseline comparison.
src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ParameterTest/DateTimeVariantTests.cs New top-level test for DateTime variant scenarios with dedicated baseline comparison.
src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ParameterTest/OutputParameterTests.cs New top-level test for output parameter scenarios with dedicated baseline comparison.
src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ParameterTest/TvpQueryHints_DebugMode.bsl New split baseline for TVP query hints (Debug).
src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ParameterTest/TvpQueryHints_DebugMode_Azure.bsl New split baseline for TVP query hints (Debug/Azure).
src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ParameterTest/TvpQueryHints_ReleaseMode.bsl New split baseline for TVP query hints (Release).
src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ParameterTest/TvpQueryHints_ReleaseMode_Azure.bsl New split baseline for TVP query hints (Release/Azure).
src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ParameterTest/TvpColumnBoundaries_DebugMode.bsl New split baseline for TVP column boundaries (Debug).
src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ParameterTest/TvpColumnBoundaries_DebugMode_Azure.bsl New split baseline for TVP column boundaries (Debug/Azure).
src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ParameterTest/TvpColumnBoundaries_ReleaseMode.bsl New split baseline for TVP column boundaries (Release).
src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ParameterTest/TvpColumnBoundaries_ReleaseMode_Azure.bsl New split baseline for TVP column boundaries (Release/Azure).
src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ParameterTest/StreamInputParameter_ReleaseMode.bsl New split baseline for stream input parameter test (Release).
src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ParameterTest/StreamInputParameter_ReleaseMode_Azure.bsl New split baseline for stream input parameter test (Release/Azure).
src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ParameterTest/SqlVariantParameter_DebugMode.bsl New split baseline for SQL variant parameter test (Debug).
src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ParameterTest/SqlVariantParameter_DebugMode_Azure.bsl New split baseline for SQL variant parameter test (Debug/Azure).
src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ParameterTest/SqlVariantParameter_ReleaseMode.bsl New split baseline for SQL variant parameter test (Release).
src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ParameterTest/SqlVariantParameter_ReleaseMode_Azure.bsl New split baseline for SQL variant parameter test (Release/Azure).
src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ParameterTest/OutputParameter_DebugMode.bsl New split baseline for output parameter test (Debug).
src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ParameterTest/OutputParameter_DebugMode_Azure.bsl New split baseline for output parameter test (Debug/Azure).
src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ParameterTest/OutputParameter_ReleaseMode.bsl New split baseline for output parameter test (Release).
src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ParameterTest/OutputParameter_ReleaseMode_Azure.bsl New split baseline for output parameter test (Release/Azure).
src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ParameterTest/DateTimeVariant_DebugMode.bsl Baseline updated to remove content moved into other split baselines.
src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ParameterTest/DateTimeVariant_DebugMode_Azure.bsl Baseline updated to remove content moved into other split baselines.
src/Microsoft.Data.SqlClient/tests/ManualTests/Microsoft.Data.SqlClient.ManualTests.csproj Adds new test files and new baseline content items; removes old monolithic baselines.

@mdaigle mdaigle marked this pull request as ready for review February 12, 2026 19:00
@mdaigle mdaigle requested a review from a team as a code owner February 12, 2026 19:00
Copilot AI review requested due to automatic review settings February 13, 2026 17:08
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 35 out of 35 changed files in this pull request and generated 16 comments.

Copilot AI review requested due to automatic review settings February 13, 2026 19:44
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 38 out of 38 changed files in this pull request and generated 13 comments.

@codecov
Copy link

codecov bot commented Feb 13, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 67.58%. Comparing base (3ffbba7) to head (3bfed7e).
⚠️ Report is 11 commits behind head on main.

❗ There is a different number of reports uploaded between BASE (3ffbba7) and HEAD (3bfed7e). Click for more details.

HEAD has 1 upload less than BASE
Flag BASE (3ffbba7) HEAD (3bfed7e)
addons 1 0
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #3956      +/-   ##
==========================================
- Coverage   74.53%   67.58%   -6.96%     
==========================================
  Files         266      260       -6     
  Lines       42915    65724   +22809     
==========================================
+ Hits        31987    44417   +12430     
- Misses      10928    21307   +10379     
Flag Coverage Δ
addons ?
netcore 67.71% <ø> (-7.07%) ⬇️
netfx 66.41% <ø> (-7.30%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@paulmedynski paulmedynski self-assigned this Feb 17, 2026
@mdaigle mdaigle added this to the 7.0.0-preview4 milestone Feb 17, 2026
@mdaigle mdaigle merged commit d96eb70 into main Feb 17, 2026
301 checks passed
@mdaigle mdaigle deleted the dev/mdaigle/split-tvp-part1 branch February 17, 2026 17:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants