{"id":21969465,"url":"https://github.com/rnett/kotlin-future-testing","last_synced_at":"2026-04-15T19:35:41.557Z","repository":{"id":57722427,"uuid":"376230377","full_name":"rnett/kotlin-future-testing","owner":"rnett","description":"Gradle settings plugin to automatically use the latest Kotlin bootstrap or EAP versions","archived":false,"fork":false,"pushed_at":"2021-07-03T22:08:07.000Z","size":732,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-01-28T02:15:44.453Z","etag":null,"topics":["bootstrap","eap","kotlin"],"latest_commit_sha":null,"homepage":"https://rnett.github.io/kotlin-future-testing/","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rnett.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-06-12T07:35:40.000Z","updated_at":"2021-07-03T21:54:04.000Z","dependencies_parsed_at":"2022-08-29T23:02:00.906Z","dependency_job_id":null,"html_url":"https://github.com/rnett/kotlin-future-testing","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rnett%2Fkotlin-future-testing","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rnett%2Fkotlin-future-testing/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rnett%2Fkotlin-future-testing/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rnett%2Fkotlin-future-testing/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rnett","download_url":"https://codeload.github.com/rnett/kotlin-future-testing/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245027638,"owners_count":20549350,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bootstrap","eap","kotlin"],"created_at":"2024-11-29T14:20:49.303Z","updated_at":"2026-04-15T19:35:36.529Z","avatar_url":"https://github.com/rnett.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Kotlin Future Testing\n\n[![Maven Central](https://img.shields.io/maven-central/v/com.github.rnett.kotlin-future-testing/kotlin-future-testing)](https://search.maven.org/artifact/com.github.rnett.kotlin-future-testing/kotlin-future-testing)\n[![Sonatype Nexus (Snapshots)](https://img.shields.io/nexus/s/com.github.rnett.kotlin-future-testing/kotlin-future-testing?server=https%3A%2F%2Foss.sonatype.org)](https://oss.sonatype.org/content/repositories/snapshots/com/github/rnett/kotlin-future-testing/)\n[![GitHub Repo](https://img.shields.io/badge/GitHub-kotlin--future--testing-blue?logo=github)](https://github.com/rnett/kotlin-future-testing)\n[![License](https://img.shields.io/badge/License-Apache%202.0-yellowgreen.svg)](https://opensource.org/licenses/Apache-2.0)\n\n[comment]: \u003c\u003e ([![Changelog]\u0026#40;https://img.shields.io/badge/Changelog-CHANGELOG.md-green\u0026#41;]\u0026#40;./CHANGELOG.md#changelog\u0026#41;)\n\nA Gradle **settings** plugin to easily test your code with the latest Kotlin bootstrap or EAP version.\n\nPlugin: `com.github.rnett.kotlin-future-testing`\n\nWill not work if you are using multiple Kotlin versions.\n\n### [Docs](https://rnett.github.io/kotlin-future-testing/release/)\n\n[For latest SNAPSHOT build](https://rnett.github.io/kotlin-future-testing/snapshot/)\n\n## Usage\n\nApply the plugin to your settings file.\n\nThe plugin can be configured in the `kotlinFutureTesting` block. For an overview of what can be configured,\nsee [the extension's docs](https://rnett.github.io/kotlin-future-testing/release/-kotlin%20-future%20-testing/com.rnett.future.testing/-kotlin-future-testing-extension/index.html)\n.\n\nTo use a bootstrap or eap version, either call `forceBootstrap()` or `forceEap()` in the extension configuration, or\npass the `kotlinBootstrap` or `kotlinEap` gradle properties to the build. Note that the properties can be passed with no\nvalue to use the latest version, i.e. `-PkotlinBootstrap`.\n\nIf the value of the passed version property is blank, `auto`, or `latest` the latest version (matching filters and\nclamping)\nwill be used. Otherwise, the value will be used as the value if it passes the configured clamping.\n\n### Using the future version\n\nIf a future version is successfully found, all plugins with ids starting with `org.jetbrains.kotlin.` will have their\nversions set to the future version. The bootstrap repository will be added if necessary.\n\nIf `substituteDependencies` (in the extension) is true, any dependencies with the group `org.jetbrains.kotlin` or a\nsubgroup will also have their versions set to the future versions. The bootstrap repository will be added if necessary.\n\nRegardless of whether a future version is found or not, all projects will have the extra property\nof `kotlinFutureVersion` set to the current `KotlinFutureTestingVersion`. This can be accessed through\nthe `kotlinFutureVersion` accessor. It provides information on the current Kotlin version, and utilities for selecting\ndifferent versions (or anything)\ndepending on whether a future version is being used or not.\nSee [its docs](https://rnett.github.io/kotlin-future-testing/release/-kotlin%20-future%20-testing/com.rnett.future.testing/-kotlin-future-testing-version/index.html)\n.\n\n## ICE Reporting\n\nIn addition to using future versions, the plugin provides support for reporting Internal Compiler Errors. If enabled,\nreports will be made in `$rootDir/build/kotlin-future-testing-ICE-report` when an internal compiler error happens.\n\nWhether reports are made is controlled by the extension's `reportICEs` property, which has three states:\n\n* `Always` - always make a report\n* `IfProperty` - if the `reportICEs` gradle property is present and not equal to `false`.\n* `Never` - never make a report.\n\nIt is `Always` by default.\n\nThese reports are made to provide enough information to reproduce the ICE if the project is provided or in a public git\nrepo, **without directly providing any code**. Note that code can still sometimes end up in the compiler error\nstacktraces, which are reported, so if you have sensitive code you will want to manually check or disable these reports.\n\nEach report contains:\n\n* the root project name\n* the failing task's path\n* the task's input properties\n* the Kotlin version used, and it's kind\n* the stderr of the failing task, usually just the exception's stacktrace\n\nAdditionally, if the plugin can find a git root by walking up the directory tree, the following will be added:\n\n* the path to the root project from the git root\n* the current git ref\n* the git remotes\n\nAnd if the build is being ran in Github actions, the URL of the workflow run report will be added.\n\nYou can see the schema\nyourself [here](https://github.com/rnett/kotlin-future-testing/blob/main/src/main/kotlin/com/rnett/future/testing/ice/IceListener.kt#L35)\n.\n\nExample reports are [here](./example-ice-reports), generated from the [test](./test) project.\n\nFor now, this only applies to things reported as internal compiler errors, i.e. not linker errors.\n\n## GitHub workflow generation\n\nAn experimental\nfunction [`generateGithubWorkflows`](https://rnett.github.io/kotlin-future-testing/release/-kotlin%20-future%20-testing/com.rnett.future.testing/-kotlin-future-testing-extension/generate-github-workflows.html)\nis provided in the extension to generate GitHub workflows to run tests with bootstrap and/or eap versions, on command\nand/or a schedule. It is capable of generating workflows with custom steps, a set branch, and multiple runners, but\nmakes generating the most common setups easy. ICE reports will be uploaded as an artifact unless disabled (\nthe `reportICEs` property is set). The workflow will be manually trigger-able, and can be passed a schedule (the default\nis weekly).\n\nNote that the generation is experimental, so you should manually inspect the generated workflows. They make good\nstarting points if you have a complicated setup.\n\nAlso note that generation is done immediately when generation is called, so if `force` is true it will be re-generated\nevery time the gradle project is loaded.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frnett%2Fkotlin-future-testing","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frnett%2Fkotlin-future-testing","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frnett%2Fkotlin-future-testing/lists"}