kotlinx-resources
kotlinx-resources copied to clipboard
Kotlin Multiplatform (KMP) library for reading resources in tests
kotlinx-resources
Kotlin Multiplatform (KMP) plugin and library that add support for reading resources in tests.
The plugin and a library work in tandem to provide a unified API across platforms for reading resources from each source set's resources folder.
Usage
List the plugin in your build.gradle.kts:
plugins {
id("com.goncalossilva.resources") version "<version>"
}
And add the dependency to your commonTest source set:
kotlin {
sourceSets {
val commonTest by getting {
dependencies {
implementation("com.goncalossilva:resources:<version>")
}
}
}
}
Once that's done, a Resource class becomes available in all test sources, with a simple API:
class Resource(path: String) {
fun exists(): Boolean
fun readText(): String
fun readBytes(): ByteArray
}
To setup resources correctly and avoid FilNotFoundException & co:
- Put them in the resources folder of a source set. For example,
src/commonTest/resources/orsrc/jsTest/resources/. - Specify the path relative to the project's directory. For example,
src/commonTest/resources/a-folder/a-file.txt.
With these in mind, you're ready to go.
Example
Library tests use the library itself, so they serve as a practical example.
See ResourceTest for example usage, and resources-test/src/commonTest/resources for the associated folder structure for resources.
Acknowledgements
This library is inspired by this gist by @dellisd.
License
Released under the MIT License.