gson-comments/shrinker-test
Marcono1234 5187808233
Enable additional Error Prone checks & fix violations (#2561)
* Enable additional Error Prone checks & fix violations

Some of them also enforce additional Google Java Format requirements which
are not handled by google-java-format, such as disallowing wildcard imports.

Not all experimental checks have been listed because some are not applicable,
such as Dependency Injection framework checks, or checks related to Guava's
immutable collections (since Gson's main code does not have a dependency on
Guava).

Other checks have been omitted because they are probably not relevant
(this was a subjective choice), or would require larger refactoring or
would flag issues with the public API, which cannot be changed easily.

* Address review feedback

---------

Co-authored-by: Éamonn McManus <emcmanus@google.com>
2024-01-09 10:19:09 -08:00
..
src Enable additional Error Prone checks & fix violations (#2561) 2024-01-09 10:19:09 -08:00
common.pro Add shrinker-test examples with never-referenced constructors (#2478) 2023-09-05 06:47:54 -07:00
pom.xml Bump com.android.tools:r8 from 8.2.33 to 8.2.42 (#2593) 2024-01-09 06:58:22 -08:00
proguard.pro Add shrinker-test examples with never-referenced constructors (#2478) 2023-09-05 06:47:54 -07:00
r8.pro Add shrinker-test examples with never-referenced constructors (#2478) 2023-09-05 06:47:54 -07:00
README.md Add ProGuard / R8 integration tests & add default ProGuard rules (#2397) 2023-05-28 12:24:05 -07:00

shrinker-test

This Maven module contains integration tests which check the behavior of Gson when used in combination with code shrinking and obfuscation tools, such as ProGuard or R8.

The code which is shrunken is under src/main/java; it should not contain any important assertions in case the code shrinking tools affect these assertions in any way. The test code under src/test/java executes the shrunken and obfuscated JAR and verifies that it behaves as expected.

The tests might be a bit brittle, especially the R8 test setup. Future ProGuard and R8 versions might cause the tests to behave differently. In case tests fail the ProGuard and R8 mapping files created in the target directory can help with debugging. If necessary rewrite tests or even remove them if they cannot be implemented anymore for newer ProGuard or R8 versions.

Important: Because execution of the code shrinking tools is performed during the Maven build, trying to directly run the integration tests from the IDE might not work, or might use stale results if you changed the configuration in between. Run mvn clean verify before trying to run the integration tests from the IDE.