Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adding Kotlin Tests Breaks Kotlin/Java project #30061

Closed
NfNitLoop opened this issue Dec 23, 2022 · 3 comments · Fixed by #30157
Closed

Adding Kotlin Tests Breaks Kotlin/Java project #30061

NfNitLoop opened this issue Dec 23, 2022 · 3 comments · Fixed by #30157
Labels
Milestone

Comments

@NfNitLoop
Copy link

Describe the bug

I posted a more in-depth description of the issue here last night:
#30049

The summary is: Adding a Kotlin test file breaks quarkus dev. Some of my resources mysteriously disappear and aren't available at runtime.

Expected behavior

I should be able to mix Java and Kotlin code in the same project and have everything work. One of the great advantages of Kotlin is that it's usually easy to gradually introduce it to a project without rewriting everything.

(read: I'll have a much easier time getting my team to adopt this if Java and Kotlin play well together. 😄)

Actual behavior

Adding a(n empty!) Kotlin test file causes some of my resources to be (silently!) unavailable while running quarkus dev.

How to Reproduce?

> quarkus version
2.15.1.Final

> quarkus create app org.acme:rest-example --extension='resteasy-reactive-jackson' --gradle-kotlin-dsl
> cd rest-example
> quarkus dev

# At this point, the example code works. 
# can access http://localhost:8080/hello

# Save state:
> git init .
> git add .
> git commit -m "initial code"


> quarkus extension add kotlin

You'll also need to add Kotlin config to your build.gradle.kts as documented in:
https://quarkus.io/guides/kotlin#important-gradle-configuration-points

Now add a new REST endpoint in Kotlin so we can show how Java/Kotlin code
should work together.

// file: src/main/kotlin/org/acme/KotlinGreeting.kt

package org.acme

import javax.ws.rs.GET
import javax.ws.rs.Path
import javax.ws.rs.Produces
import javax.ws.rs.core.MediaType

@Path("/hello2")
class KotlinGreeting(
    private var javaResource: GreetingResource
) {
    @GET
    @Produces(MediaType.TEXT_PLAIN)
    fun hello(): String {
        return "${javaResource.hello()} -- now in Kotlin!"
    }
}

Verify this works by running quarkus dev and visiting
http://localhost:8080/hello2.

> git add .
> git commit -m "checkpoint: Java + Kotlin working"

Now add a new "test" file. (No actual test necessary)

// file: test/kotlin/org/acme/KotlinGreetingTest.kt

package org.acme

// This file left intentionally blank.

Once again run quarkus dev.

While the server starts up without error, neither /hello nor /hello2
resources are loaded. And there are no errors to let you know something has gone
wrong.

> git add .
> git commit -m "checkpoint: broken"

I'll attach the zip file (including git history) here.

rest-example.zip

Output of uname -a or ver

Windows. :p But I also originally bumped into this on macOS.

Output of java -version

openjdk version "16.0.2" 2021-07-20

GraalVM version (if different from Java)

n/a

Quarkus version or git rev

2.15.1.Final

Build tool (ie. output of mvnw --version or gradlew --version)

Gradle 7.5.1

Additional information

No response

@NfNitLoop NfNitLoop added the kind/bug Something isn't working label Dec 23, 2022
@quarkus-bot quarkus-bot bot added area/kotlin env/windows Impacts Windows machines labels Dec 23, 2022
@quarkus-bot
Copy link

quarkus-bot bot commented Dec 23, 2022

/cc @evanchooly(kotlin), @geoand(kotlin)

@geoand geoand added area/devmode and removed env/windows Impacts Windows machines labels Dec 24, 2022
@geoand
Copy link
Contributor

geoand commented Jan 3, 2023

@aloubyansky any idea what might be going on here?

@NfNitLoop

This comment was marked as outdated.

@quarkus-bot quarkus-bot bot added this to the 2.16 - main milestone Jan 4, 2023
@gsmet gsmet modified the milestones: 2.16 - main, 2.15.3.Final Jan 5, 2023
benkard added a commit to benkard/mulkcms2 that referenced this issue Jan 14, 2023
This MR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [io.quarkus:quarkus-maven-plugin](https://github.com/quarkusio/quarkus) | build | patch | `2.15.2.Final` -> `2.15.3.Final` |
| [io.quarkus:quarkus-universe-bom](https://github.com/quarkusio/quarkus-platform) | import | patch | `2.15.2.Final` -> `2.15.3.Final` |

---

### Release Notes

<details>
<summary>quarkusio/quarkus</summary>

### [`v2.15.3.Final`](https://github.com/quarkusio/quarkus/releases/tag/2.15.3.Final)

[Compare Source](quarkusio/quarkus@2.15.2.Final...2.15.3.Final)

##### Complete changelog

-   [#&#8203;30255](quarkusio/quarkus#30255) - Introduce a JSON Stream parser for the reactive rest client
-   [#&#8203;30242](quarkusio/quarkus#30242) - Throw an IllegalStateException with basic info about the provider that failed to provide a resource
-   [#&#8203;30227](quarkusio/quarkus#30227) - SmallRye GraphQL 1.9.1/2.0.1 + config property to control Federation
-   [#&#8203;30218](quarkusio/quarkus#30218) - OIDC documentation fixes
-   [#&#8203;30200](quarkusio/quarkus#30200) - Ensure that Kotlin implementation of QuarkusApplication works properly
-   [#&#8203;30195](quarkusio/quarkus#30195) - Log graphql.execution.AbortExecutionException when it occurs
-   [#&#8203;30190](quarkusio/quarkus#30190) - 2.15.2.Final breaks command mode with main class extends from QuarkusApplication in kotlin
-   [#&#8203;30187](quarkusio/quarkus#30187) - Bump xstream from 1.4.19 to 1.4.20
-   [#&#8203;30183](quarkusio/quarkus#30183) - Fixing typos in security overview doc
-   [#&#8203;30177](quarkusio/quarkus#30177) - Properly handle SSE comments in RESTEasy Reactive client and server code
-   [#&#8203;30172](quarkusio/quarkus#30172) - Codestarts - Fix flattening of log levels
-   [#&#8203;30169](quarkusio/quarkus#30169) - NullPointerException when sending SSE with comment only
-   [#&#8203;30161](quarkusio/quarkus#30161) - Align behavior for getDeferredIdentity and getIdentity in TestIdentityAssociation
-   [#&#8203;30160](quarkusio/quarkus#30160) - Different behavior in TestIdentityAssociation for getDeferredIdentity and getIdentity
-   [#&#8203;30157](quarkusio/quarkus#30157) - Gradle quarkusDev: don't use test classes dir for app classes
-   [#&#8203;30155](quarkusio/quarkus#30155) - Show how to verify smallrye-jwt issuer in a shared network
-   [#&#8203;30154](quarkusio/quarkus#30154) - Remove remaining references to javax classes
-   [#&#8203;30152](quarkusio/quarkus#30152) - Improve error handling of AbortExecutionException in smallrye-graphql extension
-   [#&#8203;30146](quarkusio/quarkus#30146) - Properly segregate Json MessageBodyReader/Writer classes for server and client
-   [#&#8203;30145](quarkusio/quarkus#30145) - GraphQL federation directives, which allow multiple values, do not match Apollo contract
-   [#&#8203;30142](quarkusio/quarkus#30142) - When disabling name and version for label selectod in k8s, don't remove from labels
-   [#&#8203;30138](quarkusio/quarkus#30138) - Keycloak Dev Services
-   [#&#8203;30132](quarkusio/quarkus#30132) - Register REST Client body parameters for reflection
-   [#&#8203;30119](quarkusio/quarkus#30119) - Enable/disable GraphQL Federation automatically (+ add a config property for it)
-   [#&#8203;30100](quarkusio/quarkus#30100) - Setting `add-version-to-label-selectors: false` removes the app.kubernetes.io/version label
-   [#&#8203;30078](quarkusio/quarkus#30078) - Quarkus Kotlin Native Reactive REST Client not working properly
-   [#&#8203;30061](quarkusio/quarkus#30061) - Adding Kotlin Tests Breaks Kotlin/Java project
-   [#&#8203;30044](quarkusio/quarkus#30044) - Resteasy Reactive Rest Client fails to re-construct large chunks of streamed json (stream+json) and fails deserialization
-   [#&#8203;29998](quarkusio/quarkus#29998) - Bump to smallrye-config 2.13.1
-   [#&#8203;29918](quarkusio/quarkus#29918) - smallrye-config: Converter<Int> throws IllegalStateException
-   [#&#8203;29609](quarkusio/quarkus#29609) - Remove Reflection replacements, now supported by GraalVM

</details>

<details>
<summary>quarkusio/quarkus-platform</summary>

### [`v2.15.3.Final`](quarkusio/quarkus-platform@2.15.2.Final...2.15.3.Final)

[Compare Source](quarkusio/quarkus-platform@2.15.2.Final...2.15.3.Final)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever MR is behind base branch, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this MR and you won't be reminded about these updates again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box

---

This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNC4yNC4wIiwidXBkYXRlZEluVmVyIjoiMzQuMjQuMCJ9-->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants