diff --git a/lib/modules/manager/sbt/extract.ts b/lib/modules/manager/sbt/extract.ts index 8be2b047dcec72c6bff3b3c0d15e08cb0235cc94..747245f1ae14ee298cfb7376af7b9276b5ec9181 100644 --- a/lib/modules/manager/sbt/extract.ts +++ b/lib/modules/manager/sbt/extract.ts @@ -201,16 +201,12 @@ function depHandler(ctx: Ctx): Ctx { delete ctx.variableName; const depName = `${groupId!}:${artifactId!}`; - const isScala3 = scalaVersion?.[0] === '3'; - const scalaVersionForPackageName = isScala3 ? '3' : scalaVersion; const dep: PackageDependency = { datasource: SbtPackageDatasource.id, depName, packageName: - scalaVersionForPackageName && useScalaVersion - ? `${depName}_${scalaVersionForPackageName}` - : depName, + scalaVersion && useScalaVersion ? `${depName}_${scalaVersion}` : depName, currentValue, }; diff --git a/lib/modules/manager/sbt/util.spec.ts b/lib/modules/manager/sbt/util.spec.ts index b4cdb90b7b408d28b455e6c032b01bc338687211..83f959fba397e44698c99a4da24d009abbeb834a 100644 --- a/lib/modules/manager/sbt/util.spec.ts +++ b/lib/modules/manager/sbt/util.spec.ts @@ -1,4 +1,4 @@ -import { sortPackageFiles } from './util'; +import { normalizeScalaVersion, sortPackageFiles } from './util'; describe('modules/manager/sbt/util', () => { describe('sortPackageFiles()', () => { @@ -15,4 +15,41 @@ describe('modules/manager/sbt/util', () => { ]); }); }); + + describe('normalizeScalaVersion()', () => { + it('does not normalize prior to 2.10', () => { + const version = '2.9.3'; + expect(normalizeScalaVersion(version)).toBe('2.9.3'); + }); + + it('normalizes a Scala 2.10 version number', () => { + const version = '2.10.7'; + expect(normalizeScalaVersion(version)).toBe('2.10'); + }); + + it('normalizes a Scala 2.11 version number', () => { + const version = '2.11.12'; + expect(normalizeScalaVersion(version)).toBe('2.11'); + }); + + it('normalizes a Scala 2.12 version number', () => { + const version = '2.12.19'; + expect(normalizeScalaVersion(version)).toBe('2.12'); + }); + + it('normalizes a Scala 2.13 version number', () => { + const version = '2.13.14'; + expect(normalizeScalaVersion(version)).toBe('2.13'); + }); + + it('normalizes a Scala 3 LTS version number', () => { + const version = '3.3.3'; + expect(normalizeScalaVersion(version)).toBe('3'); + }); + + it('normalizes a Scala 3 current version number', () => { + const version = '3.4.2'; + expect(normalizeScalaVersion(version)).toBe('3'); + }); + }); }); diff --git a/lib/modules/manager/sbt/util.ts b/lib/modules/manager/sbt/util.ts index aa85d9bcbe1f54fe5c03bc9851e8ea275e6b4a2a..a7d1dbce8afb5e8080e49fcb1895355db8883543 100644 --- a/lib/modules/manager/sbt/util.ts +++ b/lib/modules/manager/sbt/util.ts @@ -21,8 +21,13 @@ export function normalizeScalaVersion(str: string): string { return str; } } + const isScala3 = versioning.isGreaterThan(str, '3.0.0'); if (regEx(/^\d+\.\d+\.\d+$/).test(str)) { - return str.replace(regEx(/^(\d+)\.(\d+)\.\d+$/), '$1.$2'); + if (isScala3) { + return str.replace(regEx(/^(\d+)\.(\d+)\.\d+$/), '$1'); + } else { + return str.replace(regEx(/^(\d+)\.(\d+)\.\d+$/), '$1.$2'); + } } // istanbul ignore next return str;