100 Commits
Author SHA1 Message Date
Alexander.Likhachev e302420197 [BTA tests] Use arbitrary named versions instead of just numbered ones
^KT-61860 In Progress
2024-03-09 01:36:22 +00:00
Alexander.Likhachev bc85375a1e [BTA tests] Provide an optimized way for making exact log line assertions
^KT-61860 In Progress
2024-03-09 01:36:22 +00:00
Alexander.Likhachev 95b832fa8b [BTA tests] Add createFile overload for versioned source creation
^KT-61860 In Progress
2024-03-09 01:36:22 +00:00
Alexander.Likhachev d3c3e0faad Update dependency verification metadata 2024-03-09 01:36:22 +00:00
Alexander.Likhachev f319ff2c3c [BTA tests] Improve README.md
^KT-61860 In Progress
2024-03-09 01:36:22 +00:00
Alexander.Likhachev ea3d5371ef [BTA tests] Add changeFile overload for versioned source modification
^KT-61860 In Progress
2024-03-09 01:36:22 +00:00
Alexander.Likhachev 68cf1bdc57 [BTA tests] Use explicit output assertions instead of implicit ones
^KT-61860 In Progress
2024-03-09 01:36:22 +00:00
Alexander.Likhachev 4facf5ffbc [BTA tests] Move GlobalCompiledProjectsCache to a separate file
^KT-61860 In Progress
2024-03-09 01:36:22 +00:00
Alexander.Likhachev 99e13318dc [BTA tests] Allow passing strategy config once to Project instance
^KT-61860 In Progress
2024-03-09 01:36:22 +00:00
Alexander.Likhachev f634f9dacf [BTA tests] Get BTA implementation version via the API
^KT-61860 In Progress
2024-03-09 01:36:22 +00:00
Alexander.Likhachev 3f6b5ae86d [BTA tests] Introduce BaseTest providing CompilationService instance
^KT-61860 In Progress
2024-03-09 01:36:22 +00:00
Alexander.Likhachev cf8e65b3c5 [BTA tests] Specify TestDataPath/TestMetadata test data navigation
^KT-61860 In Progress
2024-03-09 01:36:22 +00:00
Alexander.Likhachev b970b87667 [BTA tests] Split compatibility tests and business logic test suits
^KT-61860 In Progress
2024-03-09 01:36:22 +00:00
Alexander.Likhachev 8051fa56f2 [BTA tests] Split test infra and actual tests
^KT-61860 In Progress
2024-03-09 01:36:22 +00:00
Alexander.Likhachev b5fbb3f925 [BTA tests] Introduce shortcut assertion expectFailWithError
^KT-61860 In Progress
2024-03-09 01:36:22 +00:00
Alexander.Likhachev 16a07e82bc [BTA tests] Add KDoc to clarify meaning of some symbols
^KT-61860 In Progress
2024-03-09 01:36:22 +00:00
Alexander.Likhachev 60ccdf0e2c [BTA tests] Add example tests
^KT-61860 In Progress
2024-03-09 01:36:22 +00:00
Alexander.Likhachev 15a24319d5 [BTA tests] Add README.md
Also rename `default` to `snapshot` in the test suit names
^KT-61860 In Progress
2024-03-09 01:36:22 +00:00
Alexander.Likhachev 2347f732db [BTA tests] Rename the compatibility tests annotation
^KT-61860 In Progress
2024-03-09 01:36:22 +00:00
Alexander.Likhachev 2a3cc758cf [BTA tests] Add a way to customize IC options
^KT-61860 In Progress
2024-03-09 01:36:22 +00:00
Alexander.Likhachev 74e5b4d844 [BTA tests] Make the module scenario DSL cache key explicit
^KT-61860 In Progress
2024-03-09 01:36:22 +00:00
Alexander.Likhachev 3466153668 [BTA tests] Cache compiled modules in scenario DSL tests
^KT-61860 In Progress
2024-03-09 01:36:22 +00:00
Alexander.Likhachev 566d9852a3 [BTA tests] Finish project compilation after a test
^KT-61860 In Progress
2024-03-09 01:36:22 +00:00
Alexander.Likhachev a234e4149b [BTA tests] Add scenario DSL for writing typical IC tests
^KT-61860 In Progress
2024-03-09 01:36:22 +00:00
Alexander.Likhachev 7141b4dcbb [BTA tests] Add base assertions DSL
^KT-61860 In Progress
2024-03-09 01:36:22 +00:00
Alexander.Likhachev c952d74f7c [BTA tests] Implement basic infrastructure for compilation tests
^KT-61860 In Progress
2024-03-09 01:36:22 +00:00
Alexander.Likhachev 90fee75eba [Build, BTA] Add the Build Tools API tests to the aggregate tasks
^KT-61860 In Progress
2024-03-09 01:36:22 +00:00
Alexander.Likhachev 4afb393ff1 [Build, BTA] Add the build tools api tests module
The module is configured to run a bunch of test suites defined as API pairs. Currently those are `CURRENT API` – `CURRENT IMPL`, `CURRENT API` – `1.9.20 IMPL`, `1.9.20 API` – `CURRENT IMPL`
^KT-61860 In Progress
2024-03-09 01:36:22 +00:00
Alexander.Likhachev 0196928af7 [BTA] Add debug logging about the used compilation strategy
^KT-61860 In Progress
2024-03-09 01:36:22 +00:00
Alexander.Likhachev dda6b92c13 [BTA] Fix incorrect default value for IncrementalJvmCompilationConfiguration.outputDirs
^KT-61860 In Progress
2024-03-09 01:36:22 +00:00
Alexander.Likhachev 9d88e90821 [BTA, Gradle] Share cached classloaders between builds
^KT-64353 Fixed
2024-03-05 10:51:10 +00:00
Alexander.Likhachev 2d161723d5 [Gradle] Regenerate Gradle compiler arguments DSL
^KT-65986 Fixed
2024-02-27 13:07:18 +00:00
Alexander.Likhachev 95fd91ae16 [CLI, Gradle] Update GradleDeprecatedOption.removeAfter values
The values updated to follow the deprecation cycle "warning -> error -> removed"
^KT-65986 In Progress
2024-02-27 13:07:18 +00:00
Alexander.Likhachev d20f31e963 [CLI, Gradle] Fix GradleDeprecatedOption.removeAfter processing
The expected format was Kotlin language version (e.g. `2.0`), however the actual passed values were Kotlin release versions (e.g. `2.0.0`)
^KT-65986 In Progress
2024-02-27 13:07:18 +00:00
Alexander.Likhachev 83a9ac62ea [Gradle] Regenerate Gradle compiler arguments DSL
^KT-65986 In Progress
2024-02-27 13:07:18 +00:00
Alexander.Likhachev d40d1316d3 [CLI, Gradle] Suppress deprecation errors in generated compiler arguments DSL
^KT-65986 In Progress
2024-02-27 13:07:18 +00:00
Alexander.Likhachev c2e0c8b2e9 [Gradle] Introduce KotlinToolingDiagnostics.DependencyDoesNotPhysicallyExist
Instead of silently ignoring the non-existing classpath entries, emit a warning to indicate possible project misconfiguration.
^KT-62101 Fixed
2024-02-09 18:33:30 +00:00
Alexander.Likhachev 5d98758645 [BTA] Add KDoc for CompilationService.calculateClasspathSnapshot 2024-02-09 18:33:30 +00:00
Alexander.Likhachev de04c62df5 [Gradle] Do not try snapshotting non-existent classpath entries
The fix changes only Gradle's side of the transformation to be consistent with general Gradle behaviour for non-existent dependencies in classpath
^KT-62101 In Progress
2024-02-09 18:33:30 +00:00
Alexander.Likhachev c5138b781f [Gradle] Remove senseless try-catch in BuildToolsApiClasspathEntrySnapshotTransform 2024-02-09 18:33:30 +00:00
Alexander.Likhachev 75df4869cc [Gradle] Add test for KT-62101 2024-02-09 18:33:30 +00:00
Alexander.Likhachev 238d5504d2 [Gradle] Add tests for KT-62921 2024-02-08 19:11:26 +00:00
Alexander.Likhachev f507b19bd3 [Gradle] Move compiler version choosing logic into testHelpers.kt
Also, migrate from custom Kotlin versions to TestVersions.Kotlin.STABLE_RELEASE to avoid adding custom repositories
2024-02-08 19:11:26 +00:00
Alexander.Likhachev a904ded5f2 [Gradle] Replace useCompilerVersion by a Provider API property
Now this property acts as the single source of truth of BTA implementation version used in KGP. It allows both read and write.
^KT-62921 Fixed
2024-02-08 19:11:26 +00:00
Alexander.Likhachev 10cedd495d [BTA] Add Kotlin version getter into CompilationService
^KT-62921 In Progress
2024-02-08 19:11:26 +00:00
Alexander.Likhachev 58f7dd1c83 [Daemon] Change default Kotlin daemon JVM options
Now, the Kotlin daemon enables parallel GC and uses code cache flushing by default. Also, the default reserved code cache size is adjusted.

^KT-64283 Verification Pending
2024-01-31 15:13:02 +00:00
Alexander.Likhachev dbdcce0655 [Daemon] Fix a typo in the jvm arguments 2024-01-31 15:13:02 +00:00
Alexander.Likhachev 5c4fbcb623 [Gradle] Fix warnings in DefaultCInteropSettings
^KT-56904 In Progress
2024-01-31 12:20:06 +00:00
Alexander.Likhachev 839723e4de [Gradle] Fix warnings in KotlinCocoapodsPlugin
^KT-56904 In Progress
2024-01-31 12:20:06 +00:00
Alexander.Likhachev 8833193349 [Gradle] Fix warnings in GenerateArtifactPodspecTask
^KT-56904 In Progress
2024-01-31 12:20:05 +00:00
Alexander.Likhachev de504c9e93 [Gradle] Fix warnings in KotlinCompilationNpmResolution
^KT-56904 In Progress
2024-01-31 12:20:05 +00:00
Alexander.Likhachev 4de2f7ef27 [Gradle] Fix warnings in KotlinRootNpmResolver
^KT-56904 In Progress
2024-01-31 12:20:05 +00:00
Alexander.Likhachev e159524c43 [Gradle] Fix warnings in forAllAndroidVariants extension
^KT-56904 In Progress
2024-01-31 12:20:05 +00:00
Alexander.Likhachev 8fe65d2fee [Gradle] Fix warnings in ClassLoadersCache
This check is required due to the way of generic type declaration in the Guava code
^KT-56904 In Progress
2024-01-31 12:20:05 +00:00
Alexander.Likhachev e8be5b4b0b [Gradle] Fix "lib with tests" tests
The tests `NewMultiplatformIT.testLibWithTests` and `NewMultiplatformIT.testLibWithTestsKotlinDsl` were broken for a while, but this was unnoticed because of the TC bug. Java targets were removed from the test project in 34f4e3cbf6. The fix just removes the Java target tests from the expected test report.
2024-01-29 18:39:41 +00:00
Alexander.Likhachev a065b7adf8 [Gradle] Escape TC service messages in debug logs unconditionally
Those messages are not required for the real TC reporting. They are printed just for debugging purposes of integration with K/N and K/JS test runners.
^KT-65295 Fixed
2024-01-29 18:39:41 +00:00
Alexander.Likhachev 60080e8bb8 [Build] Remove redundant trove4j compileOnly dependencies
^KTI-1135 In Progress
2024-01-10 11:29:25 +00:00
Alexander.Likhachev 21b438f55d Replace the trove4j collections usages with the fastutil ones
The trove4j library is licensed under LGPL, and that causes some troubles while working with it. The fastutil library provides the same functionality in the context of our needs, and is licensed under the Apache license.
^KTI-1135 In Progress
2024-01-10 11:29:25 +00:00
Alexander.Likhachev aa20bcd522 [Gradle] Fix unused parameter warnings related to the legacy JS target
KT-64275
2023-12-16 15:08:38 +00:00
Alexander.Likhachev 1772620d16 [Gradle] Remove redundant suppression in KotlinJsProjectExtension 2023-12-16 15:08:37 +00:00
Alexander.Likhachev 96717c644d [Gradle] Suppress deprecation warning for KotlinCompilationToRunnableFiles usage
The actual usage was already under suppression; however, we don't have support for suppressing import statements (KT-30155)
We need to handle these suppressions within KT-58227 and KT-64273
2023-12-16 15:08:37 +00:00
Alexander.Likhachev 0d4dfbcf0c [IC] Revert the paths hashing introduced in 5562c95155
`File.hashCode()` behavior is OS-dependent. This can lead to the loss of mapping between a path and its related data in PersistentHashMap — for instance, when a map generated on Microsoft Windows is used on macOS. Notably, this can occur even though both systems use case-insensitive filesystems by default. This commit returns the hashing based on OS-independent path strings
^KT-64016 Verification Pending
2023-12-12 17:34:11 +00:00
Alexander.Likhachev 73af0fffa9 [Build] Update Gradle Enterprise plugin to 3.14.1
^KTI-1473 Fixed
2023-12-07 18:31:07 +00:00
Alexander.Likhachev 28dad289b3 [Build] Remove attributes setup for the dependency scope configurations
This behaviour makes no sense and is deprecated: https://docs.gradle.org/8.4/userguide/upgrading_version_8.html#deprecated_configuration_usage
^KTI-1473 In Progress
2023-12-07 18:31:07 +00:00
Alexander.Likhachev 5e51826050 [Build, K/N] Remove registration and usages of convention.plugins.platformInfo
The entire concept of conventions is deprecated in Gradle. Here it was making the build logic implicit and hard for understanding
^KTI-1473 In Progress
2023-12-07 18:31:07 +00:00
Alexander.Likhachev f5bcdb85a5 [Build] Migrate kotlin-stdlib-gen to Gradle Kotlin DSL 2023-12-07 18:31:07 +00:00
Alexander.Likhachev 9a0cf9c9f9 [Build] Rename kotlin-stdlib-gen/build.gradle -> build.gradle.kts 2023-12-07 18:31:06 +00:00
Alexander.Likhachev 0926ebac23 [Build] Remove BasePluginConvention usages
The entire concept of conventions is deprecated in Gradle. The proposed alternative for `BasePluginConvention` is `BasePluginExtension`
^KTI-1473 In Progress
2023-12-07 18:31:06 +00:00
Alexander.Likhachev 0fbd2e960d [Build] Remove redundant .forUseAtConfigurationTime() calls
Starting from Gradle 7.4, these calls are no longer required.
^KTI-1473 In Progress
2023-12-07 18:31:06 +00:00
Alexander.Likhachev 1dc76f0b94 [Build] Fix configuration cache issue with :repo:artifacts-tests:test
^KTI-1473 In Progress
2023-12-07 18:31:06 +00:00
Alexander.Likhachev f915efab18 [Build] Update artifacts tests test data after the Gradle 8.4 upgrade
^KTI-1473 In Progress
2023-12-07 18:31:06 +00:00
Alexander.Likhachev eab2c6b9b9 [Build] Bump gradle-node-plugin version to 7.0.1
This change is required to fix a configuration cache problem revealed after migration to Gradle 8.4
^KTI-1473 In Progress
2023-12-07 18:31:06 +00:00
Alexander.Likhachev 35960f65fb [Build] Upgrade Gradle to 8.4
^KTI-1473 In Progress
2023-12-07 18:31:06 +00:00
Alexander.Likhachev ad677cb573 [Build] Use dependencies.create instead of dependencies.module
It seems there was no actual need for a call to `dependencies.module`.Also, it's going to be deprecated in Gradle 8.3
^KTI-1473 In Progress
2023-12-07 18:31:06 +00:00
Alexander.Likhachev a19bd2ed2e [Build] Migrate most of the build logic from Project.buildDir usage
It's going to be deprecated in Gradle 8.3

There's currently no way to pass a `org.gradle.api.provider.Provider` to the JavaExec.systemProperty or Test.systemProperty. There's a workaround using `org.gradle.process.CommandLineArgumentProvider`, but I intentionally don't rework these calls as Gradle is going to allow passing providers to configure system properties: https://github.com/gradle/gradle/issues/12247#issuecomment-1568427242
^KTI-1473 In Progress
2023-12-07 18:31:06 +00:00
Alexander.Likhachev b784544f8d [Gradle] Migrate functional tests from Project.buildDir usage
It's going to be deprecated in Gradle 8.3
^KTI-1473 In Progress
2023-12-07 18:31:06 +00:00
Alexander.Likhachev 209dbae893 [Daemon] Make daemon port validator more precise
Previously, the validation was that the port is within the [1, 65535) range. Considering the defined range [17001, 18000) for the random port selector, it makes more sense to check that range instead.
2023-12-05 13:51:14 +00:00
Alexander.Likhachev 2c8501eb10 [Daemon] Add unit tests for LastDaemonCliOutputsTest 2023-12-05 13:51:14 +00:00
Alexander.Likhachev 3ca1249926 [Daemon] Add unit tests for LimitedLinkedList 2023-12-05 13:51:14 +00:00
Alexander.Likhachev f7b139466d [Build] Move the daemon client sources into the default directory 2023-12-05 13:51:14 +00:00
Alexander.Likhachev d8c416f818 [Gradle] Replace the deprecated K/JS plugin in ExecutionStrategyIT.kt 2023-12-05 13:51:14 +00:00
Alexander.Likhachev b000b66ef7 [Daemon] Improve some daemon log messages
A few messages were improved:
  * If the daemon process died at the startup, add its last 10 lines of the output to the log and report to the EXCEPTION (ERROR in the case of Gradle) level
  * If some exception occurs during connection attempt, add its stacktrace and report to the EXCEPTION (ERROR in the case of Gradle) level
  * Added more DEBUG level messages
  * Some important messages are moved to the INFO level
  * Added a suggestion to report issue to kotl.in/issue
^KT-55322 Fixed
2023-12-05 13:51:14 +00:00
Alexander.Likhachev 95bc49054f [BT] Release daemon compile session right after compilation is finished
^KT-55322 In Progress
2023-12-05 13:51:14 +00:00
Alexander.Likhachev 3ccca58bb0 [Gradle] Release daemon compile session at a compilation task's finish
Before this change, some long-running tasks like `run` might cause the Kotlin daemon to go into the LastSession state and stay in that state until the long-running tasks and therefore the Gradle build are finished.
The reason for that behaviour is that if we don't release sessions explicitly, the created "session is alive" marker files are cleaned up by `KotlinGradleFinishBuildHandler.buildFinished` at the end of the build.
^KT-55322 In Progress
2023-12-05 13:51:14 +00:00
Alexander.Likhachev 8ceee3e8b9 [Daemon] Improve daemon connection algorithm
Before this change, the logic was to find the most suitable daemon and try connecting to it in a loop, ignoring the fact that it could be dying. Now, instead of trying to connect to the daemon dying daemon in a loop, we will make only 1 attemp and then skip if it's already dying.
^KT-55322 In Progress
2023-12-05 13:51:14 +00:00
Alexander.Likhachev 44d6807aba [Daemon] Fix deprecation warning in KotlinCompilerClient.kt 2023-12-05 13:51:14 +00:00
Alexander.Likhachev 3172e74a90 [Daemon] Apply autoformatting to ClientUtils.kt 2023-12-05 13:51:14 +00:00
Alexander.Likhachev 02b1f9854f [Daemon] Apply autoformatting to KotlinCompilerClient.kt 2023-12-05 13:51:14 +00:00
Alexander.Likhachev 628f6e981d [Daemon] Add test for KT-55322 2023-12-05 13:51:14 +00:00
Alexander.Likhachev b8d1398bdb [Daemon] Use JUnit Vintage engine to run JUnit4 tests 2023-12-05 13:51:14 +00:00
Alexander.Likhachev 2bd77d5cdc [IGS] Add a non-interactive way to make a consent decision for IDEA builds
When running builds from IDEA, especially tests, the interactive consent request is barely noticeable. Also, some of the tools windows are non-interactive terminals. Thus, we detect the IDEA builds and fail fast to make it noticeable.
^KTI-1443 Fixed
2023-11-28 15:32:23 +00:00
Alexander.Likhachev ab5699f106 [IGS] Ask for consent only 5 times
^KTI-1443 In Progress
2023-11-28 15:32:23 +00:00
Alexander.Likhachev b0254add6d [Gradle] Add a check for the SNAPSHOT_SIZE metric 2023-11-28 15:22:43 +00:00
Alexander.Likhachev a7e3f7b3a6 [Gradle] Apply IDEA suggestions to BuildReportsIT.kt 2023-11-28 15:22:43 +00:00
Alexander.Likhachev 71320d2439 [IC] Add a check for the CACHE_DIRECTORY_SIZE metric
^KT-63010 Fixed
2023-11-28 15:22:43 +00:00
Alexander.Likhachev 06c1bcdc5d [IC] Add filter on files for the CACHE_DIRECTORY_SIZE metric
Without the filter, we were walking both through subdirectories and their files, so some files might be counted twice. Moreover, the behaviour of `File.length` is unspecified for directories.
^KT-63010 In Progress
2023-11-28 15:22:43 +00:00
Alexander.Likhachev 4eccbd75c3 [IC] Measure IC size metrics after the caches are closed
Before this fix, the size metrics were measured after the compilation is finished, but before the caches are closed. In many cases it might lead to incorrect measurements. After flipping the default value of the `keepIncrementalCompilationCachesInMemory` flag for Gradle builds, it started to cause always incorrect results.
^KT-63010 In Progress
2023-11-28 15:22:43 +00:00
Alexander.Likhachev 9f89e7f94f [Gradle] Flip the IC backup optimizations flags in the tests
^KT-62758 Fixed
2023-11-28 15:22:43 +00:00
Alexander.Likhachev 0f245ef3c6 [Gradle] Enable the IC backup optimizations by default
^KT-62758 In Progress
2023-11-28 15:22:43 +00:00
Alexander.Likhachev f0c643a887 [Gradle] Remove warning about experimental IC backup optimizations
This commit is part of the optimizations stabilization
^KT-62758 In Progress
2023-11-28 15:22:43 +00:00