-
Notifications
You must be signed in to change notification settings - Fork 5.1k
IDEA sync smoke tests #27838
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
IDEA sync smoke tests #27838
Conversation
| syncInvocationSettingsBuilder(getIdeInstallDirFromSystemProperty("ideaHome")).build() | ||
|
|
||
| sync( | ||
| "IC", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I know this might be implementation details, but "IC" sounds like "IntelliJ Community". Is it possible to make it a constant, like:
private static final INTELLIJ_COMMUNITY_TYPE = "IC";
sync(INTELLIJ_COMMUNITY_TYPE, ...)
Same to the AI above.
.teamcity/subprojects.json
Outdated
| "path": "subprojects/smoke-ide-test", | ||
| "unitTests": false, | ||
| "functionalTests": false, | ||
| "functionalTests": true, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think this will cause :smoke-ide-test subproject to be run in ALL variants, i.e.
- QuickFeedbackLinux:
:smoke-ide-test:quickTest - QuickFeedback:
:smoke-ide-test:quickTest - Platform Linux:
:smoke-ide-test:platformTest - ...
This is not intended, right?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@blindpirate Right, this is not intended. We want it to run like a smoke tests.
Also, this PR is changing source set from smokeIdeTest to a regular integTest. Will it lead to unintentional run smoke-ide-tests during other check, that involving running of all integTests?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Will it lead to unintentional run smoke-ide-tests during other check, that involving running of all integTests?
Yes. I think this should be visible if you run a build on your branch.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@blindpirate We want to avoid this. Is there other way apart from using another sourceSet? But if it's a most recommended way, we could revert that sourceSet changes back
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can you try "functionalTests": false unchanged? I think this is how we recognize regular integTest.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@blindpirate Yes, I can try it, but at the same time it will brings some implicit behavior:
When you see integTest source set, it's implies that it will run with other functional tests. And if I'll make "functionalTests": false it can be confusing a bit.
From other side, having a dedicated source set (as it was before) is explicitly tells that there is a logic to run it accordingly.
WDYT? cc @bamboo
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@blindpirate Huh, when I'm making "functionalTests": false (unchanged essentially), then :checkSubprojectsInfo is failing:
:checkSubprojectsInfo'. org.gradle.api.GradleException: New project(s) added without updating subproject JSON. Please run `:generateSubprojectsInfo`
:generateSubprojectsInfo, in it's turn, is generating "functionalTests": true for smoke-ide-test, what is breaking this condition.
So apparently, it would be correct to revert source set changes
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I see. So the problem here is the violation of our common convention:
- If
src/integTestexists, we'll consider it as"functionalTests": true. - Then we'll test it in different OS/executorType/JavaVersion combinations.
So there're a few options in my mind:
- Stop using
integTestas the location for the new IDE tests, do assmoke-testsubproject does (the old way). - Write a special
ifblock incheckSubprojectsInfoandgenerateSubprojectsInfoto handle this "exception". - Add
@Requires()annotation to your smoke ide test class, so that the test class will be skipped in the OS/executorType/JavaVersion it's not intended to be run.
Personally I like option 3).
|
@bot-gradle test prf |
|
I've triggered the following builds for you. Click here to see all build failures. |
|
@bot-gradle test prf |
|
I've triggered the following builds for you. Click here to see all build failures. |
f005e1b to
1231278
Compare
|
Is this still planned? |
|
Superseded with #28526 |
This PR is introducing project import to IDEA tests.
gradle-profilersite :Add IDEA provisioning gradle-profiler#529
Studio provisioning gradle-profiler#530
Essentially this is eliminating
android-studio-provisioningplugin usage fromsmoke-ide-testsubproject.Profiler provisioning support is in a very early alpha, since there are some decisions need to take. The main issue is that usage of
ide-starterin profiler is requiring Java 17 while profiler is a Java 8 application. This PR is using special Java 17 version of profiler, but this is not a final decision.Using
ide-starteris bringing many of transitive dependencies togradle/gradlewhat is making me unhappy. I believe we should shadeide-starterin profiler, since it's never intended(and will not I hope) to be an public API. This also leading to bloaingverification-metadata.xml.smokeIdeTestsare regularintegTests.IntegrationTestBuildContextfor providing sharedgradleUserHomeand a home for IDEs.