test: run the two ITs that have been compiled but never executed - #6684
Merged
Conversation
tests-integrations keeps its tests under src/main/java, and failsafe is
configured for that: testClassesDirectory=${project.build.outputDirectory}
with includes **/*IT.java. Surefire has no such override, so it looks in
target/test-classes, which this module never produces. A *Test class there is
therefore compiled by every build and executed by neither runner - it reports
no failure and no skip, so nothing distinguishes it from a passing test.
Two classes were in that state:
- CsvProcessorTest (4 tests) - strict/non-strict CSV import, incl. the column
order and extra-column behavior of the header path.
- DatabaseMetadataHelperTest (1 test).
Renamed to CsvProcessorIT / DatabaseMetadataHelperIT so failsafe picks them up.
No test body changed; only the class names, to keep the reason for the rename
legible in the diff. All 5 pass against master.
The other two *Test names under that tree are correct and stay as they are:
MultitenancyUserInterfaceIntegrationTest declares no tests and is the base class
of BpmnMultitenancyIT and MultitenancyHarmoniaIT, matching the tests-framework
naming; repository-api-test's RepositoryGeneric*Test classes are shared bases
whose concrete subclasses run under surefire in the repository implementations.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
delchev
pushed a commit
that referenced
this pull request
Aug 13, 2026
CsvProcessorIT and CsvimReimportIT create their fixture tables with unquoted DDL (CREATE TABLE CSV_A ...) and then look them up by the literal uppercase name with a null schema. Unquoted identifiers fold to UPPERCASE on H2 but to lowercase on PostgreSQL, and DatabaseNameNormalizer does not fold case, so the metadata lookup in CsvimProcessor.process misses on the PostgreSQL CI leg and throws "Table metadata was not found for table [CSV_A] in schema [null]" (5 failures once #6684 wired these previously-never-executed ITs in). Quote the table and column identifiers in the DDL/DML so both databases store them in the same case, matching the uppercase name passed to CsvFile and the uppercase CSV headers. This mirrors how the real .table synchronizer path stores identifiers and the convention already used by every other JDBC-style IT (DatabaseCrudNullValuesIT, SchemaRepublishTypeToleranceIT, NumberingSdkIT). Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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.
Found while adding coverage for #6676 (PR #6683): the test I wanted to extend had never run a single time.
tests-integrationskeeps its tests undersrc/main/java, and failsafe is configured for exactly that —testClassesDirectory=${project.build.outputDirectory}withincludes **/*IT.java. Surefire has no such override, so it looks intarget/test-classes, which this module never produces. A*Testclass there is compiled by every build and executed by neither runner. It reports no failure and no skip, so nothing in the build output distinguishes it from a passing test.Two classes were in that state:
CsvProcessorTestDatabaseMetadataHelperTestRenamed to
CsvProcessorIT/DatabaseMetadataHelperITso failsafe picks them up. No test body changed — only the class names, so the diff stays legible as what it is. All 5 pass againstmaster:(Re-run with a pristine
data-csvimbuilt frommaster, so this is independent of #6683 — those four tests exercise header-based inserts, which that PR does not touch.)The two other
*Testnames under that tree are correct and stayMultitenancyUserInterfaceIntegrationTestdeclares no tests; it is the base class ofBpmnMultitenancyITandMultitenancyHarmoniaIT, matching thetests-frameworknaming (IntegrationTest,UserInterfaceIntegrationTest).repository-api-test'sRepositoryGeneric*Testclasses are shared bases in a test-support module; their concrete subclasses run under surefire in the repository implementations.Worth considering separately
Nothing stops this from recurring — a new
*Testin this module is still silently inert. A failsafe/surefirefailIfNoSpecifiedTests-style guard, or a build check that no*Test.javaexists undertests-integrations/src/main/java, would make the next one loud. I did not add one here to keep this PR to the observation and its fix.