Description
Serializable analysis classes derived from AnalyzeSerializablesJUnitTestBase, intend to inform the developer to copy a generated excludedClasses.txt file over a sanctionedDataSerializables.txt in a resources directory. The paths can get long and complicated so it's nice that the analyzers provide the paths, ostensibly so that a developer can simply copy them into a cp line at the terminal.
There is a problem with one of the paths, at least as generated by AnalyzeCoreSerializablesJUnitTest, but also, I suspect in all the classes derived from AnalyzeSerializablesJUnitTestBase. Here is an example of the output generated by the former…
I ran:
± |feature/GEODE-8240-version-ordinal-type → Bill {3} ✓| → ./gradlew :geode-core:integrationTest --tests=AnalyzeCoreSerializablesJUnitTest
and it output:
If the class is not persisted or sent over the wire add it to the file /Users/bburcham/Projects/geode/geode-core/build/resources/integrationTest/org/apache/geode/codeAnalysis/excludedClasses.txt Otherwise if this doesn't break backward compatibility, copy the file /Users/bburcham/Projects/geode/geode-core/build/integrationTest/actualDataSerializables.dat to /Users/bburcham/Projects/geode/geode-core/build/resources/integrationTest/org/apache/geode/codeAnalysis/sanctionedDataSerializables.txt.
so ostensibly I should:
cp /Users/bburcham/Projects/geode/geode-core/build/integrationTest/actualDataSerializables.dat /Users/bburcham/Projects/geode/geode-core/build/resources/integrationTest/org/apache/geode/codeAnalysis/sanctionedDataSerializables.txt
But in fact the destination is wrong! Notice that it is a .../build/... directory?!?
What I really needed was:
cp /Users/bburcham/Projects/geode/geode-core/build/integrationTest/actualDataSerializables.dat /Users/bburcham/Projects/geode/geode-core/src/integrationTest/resources/org/apache/geode/codeAnalysis/sanctionedDataSerializables.txt
The prefix on the second path was:
/Users/bburcham/Projects/geode/geode-core/build/resources
but needed to be:
/Users/bburcham/Projects/geode/geode-core/src/integrationTest/resources
Reproduction
To reproduce this, modify some toData on some serializable class in the geode-core module e.g. RegionVersionVector, by adding some innocuous code like:
System.out.println("hi!");
And then run:
$ ./gradlew :geode-core:integrationTest --tests=AnalyzeCoreSerializablesJUnitTest
You'll see the an advice block like the one I provided above and you'll see the incorrect destination directory.
Attachments
Issue Links
- links to