Research
Security News
Malicious npm Package Targets Solana Developers and Hijacks Funds
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
dev.petuska:klip-runner-mingwx86
Advanced tools
Kotlin multiplatform snapshot (klip) testing. Common test runner.
Kotlin Multiplatform snapshot ((c|k)lip) manager for tests. Automatically generates and asserts against a
persistent @kotlinx.serialization.Serializable
representation of the object until you explicitly trigger an update.
Powered by kotlin compiler plugin to inject relevant keys and paths.
The plugin only works on targets using new IR kotlin compiler (which is pretty much all of them since kotlin 1.5 except JS which still defaults to legacy compiler).
The current version was built using the following tooling versions and is guaranteed to work with this setup. Given the experimental nature of kotlin compiler plugin API, the plugin powering this library is likely to stop working on projects using newer/older kotlin versions.
1.7.0
7.4.2
11
Bellow is a list of currently supported targets and planned targets:
There's also a subset of targets that you currently cannot run tests on (and as such making the library redundant). These targets will use a fallback implementation that throws an error on native api access (since those targets will not execute tests) to enable the general library usage in commonMain source set. If you have a valid use-case of the library for these targets, please raise an issue to discuss a real implementation.
dev.petuska:klip
marker dependency, you'll also need to add an appropriate ktor-client-engine
for each platformplugins {
kotlin("multiplatform")
id("dev.petuska.klip") version "<<version>>"
kotlin {
sourceSets {
commonTest {
dependencies {
implementation("dev.petuska:klip")
}
}
}
}
}
klip {
enabled.set(true) // Turns the compiler plugin on/off
update.set(false) // Whether to overwrite the existing klips while running tests
klipAnnotations.set(setOf("dev.petuska.klip.core.Klippable")) // Takes full control of annotations
klipAnnotation("dev.petuska.klip.core.Klippable") // Appends the annotation to the default ones
scopeAnnotations.set(
setOf(
// Takes full control of annotations
"kotlin.test.Test",
"org.junit.Test",
"org.junit.jupiter.api.Test",
"org.testng.annotations.Test",
"io.kotest.core.spec.style.AnnotationSpec.Test",
)
)
scopeAnnotation("kotlin.test.Test") // Appends the annotation to the default ones
scopeFunctions.set(
setOf(
// Takes full control of functions
"io.kotest.core.spec.style.scopes.FunSpecRootScope.test",
"io.kotest.core.spec.style.scopes.DescribeSpecContainerScope.it",
"io.kotest.core.spec.style.scopes.BehaviorSpecWhenContainerScope.Then",
"io.kotest.core.spec.style.scopes.BehaviorSpecWhenContainerScope.then",
"io.kotest.core.spec.style.scopes.WordSpecShouldContainerScope.invoke",
"io.kotest.core.spec.style.scopes.FreeSpecContainerScope.invoke",
"io.kotest.core.spec.style.scopes.FeatureSpecContainerScope.scenario",
"io.kotest.core.spec.style.scopes.ExpectSpecContainerScope.expect",
)
)
scopeFunction("io.kotest.core.spec.style.scopes.FunSpecRootContext.test") // Appends the function to the default ones
}
scopeAnnotations
or scopeFunctions
.class MyTest {
data class DomainObject(val name: String, val value: String?)
@Test
fun test1() = runTest {
assertMatchesKlip(DomainObject("Dick", "Dickens"))
DomainObject("John", "Doe").assertKlip()
}
@Test
fun test2() = runTest {
doAssertions()
}
private suspend fun doAssertions() {
assertMatchesKlip(DomainObject("Joe", "Mama"))
DomainObject("Ben", "Dover").assertKlip()
}
}
Most of the DSL configuration options can also be set/overridden via gradle properties
./gradlew <some-task> -Pprop.name=propValue
, gradle.properties
or ~/.gradle/gradle.properties
. Environment
variables are also supported, however gradle properties take precedence over them. Bellow is the full list of supported
properties:
klip.enabled (KLIP_ENABLED)
- toggles the compiler processing on/off.klip.update (KLIP_UPDATE)
- if true, will override and update all previous klips during test run.assertMatchesKlip(myObject)
or myObject.assertKlip()
. New klips will always be written to file, whereas existing ones (identified by test class
scope and given id) will be read and used for assertions../gradlew test -Pklip.update
,
setting an environment variable KLIP_UPDATE=true ./gradlew test
.:library:klip-core
- main runtime library:library:klip-api
- shared api and utility DSLs:library:klip-assertions
- assertion api:library:klip-runner
- abstraction over kotlinx-coroutines-test
to provide truly multiplatform way to run
suspending tests:plugin:klip-gradle-plugin
- gradle plugin to manage kotlin compiler plugins:plugin:klip-kotlin-plugin
- kotlin compiler plugin for jvm & js that does the actual work:plugin:klip-kotlin-plugin-native
- kotlin compiler plugin for native that does the actual workklip-sandbox
- a playground to test local changes from consumer endFAQs
Kotlin multiplatform snapshot (klip) testing. Common test runner.
We found that dev.petuska:klip-runner-mingwx86 demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
Security News
Research
Socket researchers have discovered malicious npm packages targeting crypto developers, stealing credentials and wallet data using spyware delivered through typosquats of popular cryptographic libraries.
Security News
Socket's package search now displays weekly downloads for npm packages, helping developers quickly assess popularity and make more informed decisions.