Skip to content

Commit d3305bf

Browse files
authored
Take into consideration --project-version when creating BuildInfo (#2548)
1 parent fb04bc3 commit d3305bf

File tree

4 files changed

+49
-5
lines changed

4 files changed

+49
-5
lines changed

modules/cli/src/main/scala/scala/cli/commands/shared/SharedOptions.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -326,6 +326,7 @@ final case class SharedOptions(
326326
bo.BuildOptions(
327327
sourceGeneratorOptions = bo.SourceGeneratorOptions(
328328
useBuildInfo = sourceGenerator.useBuildInfo,
329+
projectVersion = sharedVersionOptions.projectVersion,
329330
computeVersion = value {
330331
sharedVersionOptions.computeVersion
331332
.map(Positioned.commandLine)

modules/integration/src/test/scala/scala/cli/integration/RunTestDefinitions.scala

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1662,6 +1662,46 @@ abstract class RunTestDefinitions(val scalaVersionOpt: Option[String])
16621662
}
16631663
}
16641664

1665+
test("BuildInfo should take into account --project-version") {
1666+
val inputs = TestInputs(
1667+
os.rel / "Main.scala" ->
1668+
s"""//> using buildInfo
1669+
|
1670+
|import scala.cli.build.BuildInfo
1671+
|
1672+
|object Main extends App {
1673+
| assert(BuildInfo.projectVersion == Some("35.0.1"))
1674+
|}
1675+
|""".stripMargin
1676+
)
1677+
1678+
inputs.fromRoot { root =>
1679+
TestUtil.initializeGit(root, "v1.0.0")
1680+
1681+
val res =
1682+
os.proc(
1683+
TestUtil.cli,
1684+
"--power",
1685+
extraOptions,
1686+
".",
1687+
"--compute-version",
1688+
"git",
1689+
"--project-version",
1690+
"35.0.1"
1691+
).call(cwd = root)
1692+
val output = res.out.trim()
1693+
1694+
val projectDir = os.list(root / ".scala-build").filter(
1695+
_.baseName.startsWith(root.baseName + "_")
1696+
)
1697+
expect(projectDir.size == 1)
1698+
val buildInfoPath = projectDir.head / "src_generated" / "main" / "BuildInfo.scala"
1699+
expect(os.isFile(buildInfoPath))
1700+
1701+
expect(output == "")
1702+
}
1703+
}
1704+
16651705
// Credentials tests
16661706
test("repository credentials passed to coursier") {
16671707
val testOrg = "test-org"

modules/options/src/main/scala/scala/build/info/BuildInfo.scala

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -104,11 +104,13 @@ object BuildInfo {
104104
Seq(
105105
BuildInfo(
106106
mainClass = options.mainClass,
107-
projectVersion = options.sourceGeneratorOptions.computeVersion
108-
.map(cv => value(cv.get(workspace)))
109-
.orElse(
110-
ComputeVersion.GitTag(os.rel, dynVer = false, positions = Nil).get(workspace).toOption
111-
)
107+
projectVersion = options.sourceGeneratorOptions.projectVersion.orElse(
108+
options.sourceGeneratorOptions.computeVersion
109+
.map(cv => value(cv.get(workspace)))
110+
.orElse(
111+
ComputeVersion.GitTag(os.rel, dynVer = false, positions = Nil).get(workspace).toOption
112+
)
113+
)
112114
),
113115
scalaVersionSettings(options),
114116
platformSettings(options)

modules/options/src/main/scala/scala/build/options/SourceGeneratorOptions.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package scala.build.options
22

33
final case class SourceGeneratorOptions(
44
useBuildInfo: Option[Boolean] = None,
5+
projectVersion: Option[String] = None,
56
computeVersion: Option[ComputeVersion] = None
67
)
78

0 commit comments

Comments
 (0)