Skip to content

Commit

Permalink
fix: filter vaadin-core from versions pinning (#11027)
Browse files Browse the repository at this point in the history
Fixes #11025
  • Loading branch information
pleku committed May 19, 2021
1 parent 4a8dc42 commit 56f6216
Show file tree
Hide file tree
Showing 3 changed files with 57 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@
*/
package com.vaadin.flow.server.frontend;

import java.util.Objects;

import elemental.json.Json;
import elemental.json.JsonObject;
import elemental.json.JsonValue;
Expand All @@ -32,6 +34,7 @@
*/
class VersionsJsonConverter {

static final String VAADIN_CORE_NPM_PACKAGE = "@vaadin/vaadin-core";
private static final String JS_VERSION = "jsVersion";
private static final String NPM_NAME = "npmName";
private static final String NPM_VERSION = "npmVersion";
Expand Down Expand Up @@ -71,6 +74,10 @@ private void collectDependencies(JsonObject obj) {
private void addDependency(JsonObject obj) {
assert obj.hasKey(NPM_NAME);
String npmName = obj.getString(NPM_NAME);
// #11025
if (Objects.equals(npmName, VAADIN_CORE_NPM_PACKAGE)) {
return;
}
if (obj.hasKey(NPM_VERSION)) {
convertedObject.put(npmName, obj.getString(NPM_VERSION));
} else if (obj.hasKey(JS_VERSION)) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@
import static com.vaadin.flow.server.Constants.PACKAGE_JSON;
import static com.vaadin.flow.server.Constants.TARGET;
import static com.vaadin.flow.server.frontend.NodeUpdater.DEPENDENCIES;
import static com.vaadin.flow.server.frontend.VersionsJsonConverter.VAADIN_CORE_NPM_PACKAGE;
import static com.vaadin.flow.server.frontend.NodeUpdater.VAADIN_DEP_KEY;

@NotThreadSafe
public class TaskUpdatePackagesNpmTest {
Expand Down Expand Up @@ -266,6 +268,46 @@ public void npmIsInUse_packageJsonHasBadVersion_pinnedVersionUsed()
PLATFORM_OVERLAY_VERSION);
}

// #11025
@Test
public void npmIsInUse_versionsJsonHasVaadinCoreVersionPinned_vaadinCoreVersionIgnored()
throws IOException {
final String expectedElementMixinVersion = "21.0.0-alpha2";
String versionJsonString = //@formatter:off
"{ \"core\": {"
+ "\"vaadin-element-mixin\": {\n"
+ " \"jsVersion\": \""+expectedElementMixinVersion+"\",\n"
+ " \"npmName\": \""+VAADIN_ELEMENT_MIXIN+"\"\n"
+ "},\n"
+ "\"vaadin-core\": {\n"
+ " \"jsVersion\": \"21.0.0.alpha1\",\n" // broken for npm
+ " \"npmName\": \""+VAADIN_CORE_NPM_PACKAGE+"\"\n"
+ "},\n"
+"}}},\n";//@formatter:on
FileUtils.write(versionJsonFile, versionJsonString,
StandardCharsets.UTF_8);

final TaskUpdatePackages task = createTask(
createApplicationDependencies());
task.execute();
Assert.assertTrue("Updates not picked", task.modified);

verifyVersions(PLATFORM_DIALOG_VERSION, expectedElementMixinVersion,
null);
final JsonObject packageJson = getOrCreatePackageJson();
JsonObject dependencies = packageJson.getObject(DEPENDENCIES);

Assert.assertFalse(
VAADIN_CORE_NPM_PACKAGE
+ " version should not be written to package.json",
dependencies.hasKey(VAADIN_CORE_NPM_PACKAGE));
final JsonObject vaadinDependencies = packageJson
.getObject(VAADIN_DEP_KEY).getObject(DEPENDENCIES);
Assert.assertFalse(VAADIN_CORE_NPM_PACKAGE
+ " version should not be written to vaadin dependencies in package.json",
vaadinDependencies.hasKey(VAADIN_CORE_NPM_PACKAGE));
}

private void createBasicVaadinVersionsJson() {
createVaadinVersionsJson(PLATFORM_DIALOG_VERSION,
PLATFORM_ELEMENT_MIXIN_VERSION, PLATFORM_OVERLAY_VERSION);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@
import elemental.json.Json;
import elemental.json.JsonObject;

import static com.vaadin.flow.server.frontend.VersionsJsonConverter.VAADIN_CORE_NPM_PACKAGE;

public class VersionsJsonConverterTest {

@Rule
Expand Down Expand Up @@ -52,7 +54,11 @@ public void convertPlatformVersions() throws IOException {
" \"javaVersion\": \"3.0.0.beta1\",\n" +
" \"jsVersion\": \"2.0.19\"\n" +
" },"
+"\"platform\": \"foo\""
+ "\"vaadin-core\": {\n" +
" \"jsVersion\": \"21.0.0.alpha1\",\n" + // broken for npm
" \"npmName\": \""+VAADIN_CORE_NPM_PACKAGE+"\"\n" +
"},\n"
+"\"platform\": \"foo\""
+ "}";
// @formatter:on

Expand All @@ -65,6 +71,7 @@ public void convertPlatformVersions() throws IOException {

Assert.assertFalse(convertedJson.hasKey("flow"));
Assert.assertFalse(convertedJson.hasKey("core"));
Assert.assertFalse(convertedJson.hasKey(VAADIN_CORE_NPM_PACKAGE));
Assert.assertFalse(convertedJson.hasKey("platform"));

Assert.assertEquals("1.1.2",
Expand Down

0 comments on commit 56f6216

Please sign in to comment.