Skip to content
Original file line number Diff line number Diff line change
Expand Up @@ -157,9 +157,21 @@ boolean lockVersionForNpm(ObjectNode packageJson) throws IOException {
// Already locked with a dependency reference, skip
continue;
}
// By the time the platform overrides are applied here, existing
// dependency versions are expected to be up-to-date already.
// So if there exists a dependency with a different version in
// package.json at this point, we assume it to be an explicit
// user opt-out. Skip such dependencies to avoid overriding them
// with a different version, both for "dependencies"
// and "devDependencies".
if (dependencies.has(dependency)
|| devDependencies.has(dependency)) {
// Skip platform overrides for existing dependencies
&& !dependencies.get(dependency).asString()
.equals(frontendVersion.getFullVersion())) {
continue;
}
if (devDependencies.has(dependency)
&& !devDependencies.get(dependency).asString()
.equals(frontendVersion.getFullVersion())) {
continue;
}
// Lock with a version number
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,33 @@ void shouldNotUpdatesOverrides_whenHasUserModification()
packageJson.get(OVERRIDES).get(TEST_DEPENDENCY).stringValue());
}

@Test
void shouldUpdatePlatformOverride_whenDependencyVersionBumped()
throws IOException {
TaskUpdatePackages packageUpdater = createPackageUpdater();

// Simulate existing platform override from a previous Flow version
ObjectNode packageJson = packageUpdater.getPackageJson();
ObjectNode overridesSection = JacksonUtils.createObjectNode();
packageJson.set(OVERRIDES, overridesSection);

((ObjectNode) packageJson.get(DEPENDENCIES)).put(TEST_DEPENDENCY,
PLATFORM_PINNED_DEPENDENCY_VERSION);
overridesSection.put(TEST_DEPENDENCY, "0.0.1");

// vaadin.overrides tracks what Flow last wrote
ObjectNode vaadinSection = (ObjectNode) packageJson.get(VAADIN_DEP_KEY);
vaadinSection.set(OVERRIDES,
JacksonUtils.createObjectNode().put(TEST_DEPENDENCY, "0.0.1"));

packageUpdater.generateVersionsJson(packageJson);
packageUpdater.lockVersionForNpm(packageJson);

// Override is updated to the new platform version
assertEquals(PLATFORM_PINNED_DEPENDENCY_VERSION,
packageJson.get(OVERRIDES).get(TEST_DEPENDENCY).stringValue());
}

@Test
void shouldUpdatesOverrides_whenNoVaadinOverrides_changingVersion()
throws IOException {
Expand Down
Loading