You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
2.2 KiB
54 lines
2.2 KiB
2 years ago
|
## Run:
|
||
|
|
||
|
`./gradlew build -Pcompose.kotlinCompilerPluginVersion=1.4.2-rc03 -Pkotlin.version=1.8.10`
|
||
|
to build and run the tests,
|
||
|
|
||
|
or
|
||
|
`./gradlew allTests -Pcompose.kotlinCompilerPluginVersion=1.4.2-rc03 -Pkotlin.version=1.8.10`
|
||
|
to only run the tests.
|
||
|
|
||
|
It will build and run the tests for all available targets (depends on a host machine).
|
||
|
See [TargetsConfiguration](./buildSrc/src/main/kotlin/TargetsConfiguration.kt) to update the targets.
|
||
|
|
||
|
|
||
|
## Test cases
|
||
|
|
||
|
#### Directory: `./testcases`
|
||
|
|
||
|
Every test case contains a simple project with 2 or more modules with applied Compose plugin.
|
||
|
The goal of such a project is to check a specific case of Composable usage.
|
||
|
A test case ensures that the code compiles and behaves as expected when running.
|
||
|
A test case contains 2 or more modules to check crossmodule compilation (the test dependencies should be placed in a `...-lib` module).
|
||
|
|
||
|
See a test case [template](./testcases/template) for an example.
|
||
|
Splitting the test cases into separate small projects helps in distinguishing the potential compilation bugs.
|
||
|
|
||
|
The behaviour is checked by the tests in a `...-main` module of a test case.
|
||
|
The tests create a simple text Composition and then compares the text dump with an expected value.
|
||
|
Example:
|
||
|
```kotlin
|
||
|
@Test
|
||
|
fun testExample2() = runTest {
|
||
|
val root = composeText {
|
||
|
TextLeafNode("Leaf")
|
||
|
TextContainerNode("node") {
|
||
|
TextLeafNode("child1")
|
||
|
TextLeafNode("child2")
|
||
|
TextLeafNode("child3")
|
||
|
}
|
||
|
}
|
||
|
|
||
|
assertEquals("root:{Leaf, node:{child1, child2, child3}}", root.dump())
|
||
|
}
|
||
|
```
|
||
|
The API for the text Composition is implemented in the [common](./common) module.
|
||
|
More test examples (including recomposition cases) can be found [here](./common/src/commonTest).
|
||
|
|
||
|
### To add a new test case:
|
||
|
- Use `/testcases/template` as a starting point (copy it and rename). Place a new testcase in `/testcases` folder.
|
||
|
- Add new modules in `settings.gradle.kts`
|
||
|
- Please follow the naming convention for modules. Their names should end with `-lib` or `-main`.
|
||
|
We need 2 modules (`...-lib` and `...-main`) to test crossmodule compilation.
|
||
|
Place the test dependencies in a `...-lib` module.
|
||
|
|