{"id":28539879,"url":"https://github.com/karmakrafts/iridium","last_synced_at":"2026-04-11T23:11:54.046Z","repository":{"id":295157367,"uuid":"989342482","full_name":"karmakrafts/Iridium","owner":"karmakrafts","description":"Testing framework for Kotlin compiler plugins using a custom compiler driver.","archived":false,"fork":false,"pushed_at":"2025-12-18T00:18:25.000Z","size":256,"stargazers_count":5,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-02-16T19:33:30.009Z","etag":null,"topics":["api","junit","junit-jupiter","junit5","kotlin","kotlin-compiler","kotlin-compiler-plugin","kotlin-framework","kotlin-jvm","test","test-api","testing","testing-library","unit-testing"],"latest_commit_sha":null,"homepage":"https://git.karmakrafts.dev/kk/iridium","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/karmakrafts.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-05-23T23:03:58.000Z","updated_at":"2025-12-18T00:18:28.000Z","dependencies_parsed_at":"2025-05-24T00:24:46.580Z","dependency_job_id":"b72c1279-964d-4ca6-8a0a-c2e5c1243065","html_url":"https://github.com/karmakrafts/Iridium","commit_stats":null,"previous_names":["karmakrafts/iridium"],"tags_count":33,"template":false,"template_full_name":null,"purl":"pkg:github/karmakrafts/Iridium","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/karmakrafts%2FIridium","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/karmakrafts%2FIridium/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/karmakrafts%2FIridium/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/karmakrafts%2FIridium/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/karmakrafts","download_url":"https://codeload.github.com/karmakrafts/Iridium/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/karmakrafts%2FIridium/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31698209,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-11T21:17:31.016Z","status":"ssl_error","status_checked_at":"2026-04-11T21:17:24.556Z","response_time":54,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["api","junit","junit-jupiter","junit5","kotlin","kotlin-compiler","kotlin-compiler-plugin","kotlin-framework","kotlin-jvm","test","test-api","testing","testing-library","unit-testing"],"created_at":"2025-06-09T19:07:09.105Z","updated_at":"2026-04-11T23:11:54.038Z","avatar_url":"https://github.com/karmakrafts.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Iridium\n\n[![](https://git.karmakrafts.dev/kk/iridium/badges/master/pipeline.svg)](https://git.karmakrafts.dev/kk/iridium/-/pipelines)\n[![](https://img.shields.io/maven-metadata/v?metadataUrl=https%3A%2F%2Frepo.maven.apache.org%2Fmaven2%2Fdev%2Fkarmakrafts%2Firidium%2Firidium%2Fmaven-metadata.xml\n)](https://git.karmakrafts.dev/kk/iridium/-/packages)\n[![](https://img.shields.io/maven-metadata/v?metadataUrl=https%3A%2F%2Fcentral.sonatype.com%2Frepository%2Fmaven-snapshots%2Fdev%2Fkarmakrafts%2Firidium%2Firidium%2Fmaven-metadata.xml\n)](https://git.karmakrafts.dev/kk/iridium/-/packages)\n[![](https://img.shields.io/badge/2.3.20-blue?logo=kotlin\u0026label=kotlin)](https://kotlinlang.org/)\n[![](https://img.shields.io/badge/documentation-black?logo=kotlin)](https://docs.karmakrafts.dev/iridium)\n\nIridium is an in-process compiler testing framework for Kotlin using the Kotlin embeddable compiler and Kotlin Test.  \nIt allows testing compiler behaviour and FIR/IR compiler plugins.  \n\nIt currently has the following main features:\n\n* Support for Kotlin/JVM, Kotlin/JS and Kotlin/Native\n* Fully integrated test compiler pipeline using the new `Fir2IrPipeline` with DSL\n* Assertion matchers for compiler reports with DSL\n* Assertion matchers for Kotlin IR with DSL\n* Assertion matchers for Kotlin FIR with DSL\n* Colored Kotlin IR highlighting in assertion errors and available as test API\n* Automatic scope tracking to add more context to assertion errors\n* Add dependencies by mentioning a library type once\n\n### How to use it\n\nFirst, add the official Maven Central repository to your `settings.gradle.kts`:\n\n```kotlin\ndependencyResolutionManagement {\n    repositories {\n        mavenCentral()\n    }\n}\n```\n\nThen add a dependency on the library in your root buildscript:\n\n```kotlin\ndependencies {\n    testImplementation(\"dev.karmakrafts.iridium:iridium:\u003cversion\u003e\")\n}\n```\n\n### Test DSL for reports, FIR and IR\n\n```kotlin\n@Test\nfun `My compiler IR test`() = runCompilerTest {\n    pipeline {\n        defaultPipelineSpec()\n    }\n    source(\"\"\"\n        @Suppress(\"UNCHECKED_CAST\")\n        fun \u003cT\u003e test(value: T): T = value\n        fun main(args: Array\u003cString\u003e) {\n            println(\"Hello, World\")\n        }\n    \"\"\".trimIndent()) // *1\n    compiler shouldNotReport { error() }\n    result irMatches {\n        getChild\u003cIrFunction\u003e { it.name.asString() == \"main\" }.matches(\"main\") {\n            returns { unit() }\n            hasValueParameter(\"args\") { type(types.stringType.array()) }\n        }\n        getChild\u003cIrFunction\u003e { it.name.asString() == \"test\" }.matches(\"test\") {\n            hasAnnotation(type(\"kotlin/Suppress\"))\n            hasTypeParameter(\"T\")\n            returns { typeParameter(\"T\") }\n            hasValueParameter(\"value\") { typeParameter(\"T\") }\n        }\n        containsChild\u003cIrCall\u003e { it.target.name.asString() == \"println\" }\n    }\n}\n```\n**\\*1: The source code assigned in the multiline string will have highlighting in supported IDEs.**","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkarmakrafts%2Firidium","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkarmakrafts%2Firidium","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkarmakrafts%2Firidium/lists"}