All important changes of this project must be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
- Deprecated targets
- Gradle 7.5.1 -> 8.6.0
- Android Gradle Plugin 7.3.1 -> 8.2.2
- Kotlin 1.8.0 -> 1.9.22
- KSP 1.8.0-1.0.8 -> 1.9.22-1.0.17
- AtomicFu 0.19.0 -> 0.23.2
- Stately 1.2.3 -> 2.0.6
- Android Target SDK 32 -> 34
- CompilerTest 1.4.9 -> 0.4.0 (ZacSweers)
- min Java 11 -> 17
- Kotlin 1.7.22 -> 1.8.0
- AtomicFU 0.18.5 -> 0.19.0
- KSP 1.7.22-1.0.8 -> 1.8.0-1.0.8
- Kotlin 1.7.21 -> 1.7.22
- KSP 1.7.21-1.0.6 -> 1.7.22-1.0.8
- Kotlin 1.7.20 -> 1.7.21
- KSP 1.7.20-1.0.6 -> 1.7.21-1.0.8
- support for Kotlin Apple Targets and mingwX64
- Kotlin 1.7.10 -> 1.7.20
- AtomicFu 0.18.3 -> 0.18.5
- KSP 1.7.10-1.0.6 -> 1.7.20-1.0.6
- Android Gradle Plugin 7.3.0 -> 7.3.1
- Gradle 7.5 -> 7.5.1
- Kotlin 1.7.0 -> 1.7.10
- AtomicFu 0.18.2 -> 0.18.3
- Android Target SDK 32 -> 33
- KSP 1.7.0-1.0.6 -> 1.7.10-1.0.6
- Android Gradle Plugin 7.2.1 -> 7.3.0
- pseudo build-in methods are now resolved independently
- Aliases as type arguments are not correctly resolved, if the Aliases have type arguments on their own
- Generics cause AccessMethods to collide in their definition
- Stackoverflow when determine TypeVariance
- Unrelated MetaSources caused NPE
- Gradle 7.4.2 -> 7.5
- Kotlin 1.6.21 -> 1.7.0
- KotlinPoet 1.11.0 -> 1.12.0
- AtomicFu 0.17.3 -> 0.18.2
- Stately 1.2.1 -> 1.2.3
- Android Target SDK 31 -> 32
- CompilerTest 1.4.8 -> 1.4.9
- sources for
release
anddebug
for non KMP are now added via the Android extension while custom build-variant need manual setup
- Build Cache enabled, Mocks are not created
- Relaxer not picked correctly up on multiple test runs
- Multi Interface Cleanup causes compilation to fail
- Android Target SDK 31 -> 32
preventResolvingOfAliases
as workaround for AccessMethods with expect/actual Aliases which cause incremental builds to fail
- Kotlin 1.6.10 -> 1.6.21
- AtomicFu 0.17.1 -> 0.17.3
- KSP 1.6.10-1.0.4 -> 1.6.21-1.0.6
run
/runs
does not trigger SideEffect invocation
- Plugin triggered the usage of the legacy JS compiler for KotlinJs
and
ArgumentConstraintgetValue
which preserves the old behaviour of get (PropertyProxy)getValues
to replace getMany (PropertyProxy)error
to replace throws (FunProxy)errors
to replace throwsMany (FunProxy)returns
which acts as setter forgetValue
/returnValue
for ProxiesreturnsMany
which acts as setter forgetValues
/returnValues
for Proxiesthrows
(infix method) which acts as setter forerror
for FunProxiesthrowsMany
(infix method) which acts as setter forerrors
for FunProxiesrunOnGet
which acts as setter forgetSideEffect
for PropertyProxiesrunOnSet
which acts as setter forsetSideEffect
for PropertyProxieshasNoFurtherInvocations
to easeassertProxy
- The plugin can now applied directly while configuration must be done after the
kotlin
setup - AccessMethods need always a hint if the Template has type parameters
- ProxyNameResolver is capable of utilizing the actual types of generic parameters when overloaded
run
/runs
are now infix methods- Proxies have now an operator for get which means they can be accessed like Arrays
- BREAKING
get
is now responsible for the SideEffect of PropertyProxies
getMany
(PropertyProxy)throws
(FunProxy)throwsMany
(FunProxy)
- BREAKING
getSideEffect
(PropertyProxy)
vararg
eats specialised Array Types (e.g. IntArray) and covariant types when inherited- Factories for Multi-Interface-Mocks
- Multi-Boundary Parameter are not right resolved when mixed multi with regular parameter in nested types
- Collisions of type aliases with regular method signatures
or
ArgumentConstraintnot
ArgumentConstraintspiesOnly
in the Gradle extension, in order to tell the processor to only createkspy
. AlsospyOn
is not needed in this configurationspyAll
in the Gradle extension, in order to tell the processor to create for al given interfaces also a spy entryPointvararg
is now supported by MocksfreezeOnDefault
in the Gradle extension, which sets a default freeze value forkspy
andkmock
useTypePrefixFor
for overloaded names in order to ease them and avoid collisionscustomMethodNames
in order to allow complete custom names for methodsallowInterfaces
, which combinesallowInterfacesOnKmock
andallowInterfacesOnKspy
disableFactories
in order to disable the generation ofkmock
andkspy
if neededcustomAnnotationsForMeta
to provide a hook for the usage of customized annotation for meta/shared sourcesassertOrder
in order to make the names more consistent and preserves the old behaviour ofverifyStrictOrder
assertProxy
as alternative toverify
- iosSimulatorArm64 support
- Support for instrumented Android tests (aka androidAndroidTest) on KMP
- Multi-Interface Mocks support
- Interface receiver members are full supported
run
for FunProxies to mitigate the strict assignment policy in terms of a single SideEffectruns
for FunProxies to mitigate the strict assignment policy in terms of SideEffectsthrowsMany
for FunProxies to align the the FunProxy APIenableFineGrainedNames
in order to allow fine grained typing (experimental/not this will feature helps you only in a non JVM context)KMock
experimental annotation, which is agnostic in terms of source setsKMockMulti
experimental annotation, which is agnostic in terms of source sets
- Generated mocks don't contain runtime logic any longer
- Mutable properties of Proxies now separate froze/unfrozen state is cleaner to improve Runtime
kmock
andkspy
are using now a shared function to improve compile time- Non intrusive behaviour (spy & relaxation) is now resolved by proxy invocation rather then by proxy initialisation in order to cover edge cases
- Assertion-/VerificationChain is not coupled any longer directly to proxies and provide improved error messages
- Expectation Methods do not bleed into the global context any longer
verifyStrictOrder
is now used for total order of certain Proxies but allows partial order between different Proxies- Android MinSDK 23 -> 21
spyOn
is now capable of picking up KMock defined Aliaseskspy
in terms of generics not longer exposed if not declared viaspyOn
orspiesOnly
- Relaxation method gets now the return type boundaries delegated, if generic in order to resolve type conflicts
- Generic methods names get prefixed by the generic type name, if it is overloaded to avoid name collisions
- Generic methods names get prefixed by an indicator, if it is overloaded and nullable to avoid name collisions
- Meta/Shared Source Annotation are now supporting platform references (e.g. instead of metaTest you can write meta)
- Custom Source Annotation are now supporting platform references (e.g. instead of sharedTest you can write shared)
- Proxy-Access-Methods and their corresponding verification/assertion counter parts
verifer
argument is now calledcollector
inkmock
andkspy
allowedRecursiveTypes
, since it is no longer needed due to the new spy invocationallowInterfacesOnKmock
, use allowInterfaces insteadallowInterfacesOnKspy
, use allowInterfaces instead- Old experimental ProxyAssertion family, use
assertProxy
orverify
instead uselessPrefixes
in the Gradle Extension
- FunProxy names with nullable or multi-bounded types defined as generic parameter
- Annotation was not picked up when more then one Annotation was used
- Factories for Common were not created when no Template was specified
- Parallel declared shared source were eaten up by each other
- Nested Generic Types were not resolved for Proxies
- Multi-Bounded Generics caused invalid Proxy name if overloaded and a leading boundary was nullable
- KotlinPoet 1.10.2 -> 1.11.0
- Gradle 7.4.1 -> 7.4.2
- Android Gradle Plugin 7.1.2 -> 7.2.1
- Warnings for unused expression and unused parameter in MockFactory
- Gradle 7.2 -> 7.4.1
Initial release.