Skip to content

Commit cdcf91c

Browse files
committed
fix built-in rules: don't wrap directive values in double quotes if not necessary
1 parent 66c2d35 commit cdcf91c

File tree

4 files changed

+58
-37
lines changed

4 files changed

+58
-37
lines changed

modules/directives/src/main/scala/scala/build/preprocessing/directives/StrictDirective.scala

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,10 @@ case class StrictDirective(
4646
Seq(usingKeyString)
4747
else {
4848
val distinctValuesStrings = validValues
49-
.map(v => s"\"${v.toString}\"")
49+
.map {
50+
case s if s.toString.exists(_.isWhitespace) => s"\"$s\""
51+
case s => s.toString
52+
}
5053
.distinct
5154
.sorted
5255

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

Lines changed: 46 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ trait FixBuiltInRulesTestDefinitions { _: FixTestDefinitions =>
1717
|}
1818
|""".stripMargin,
1919
os.rel / projectFileName ->
20-
s"""//> using deps "com.lihaoyi::pprint:0.6.6"
20+
s"""//> using deps com.lihaoyi::pprint:0.6.6
2121
|""".stripMargin
2222
)
2323

@@ -52,11 +52,7 @@ trait FixBuiltInRulesTestDefinitions { _: FixTestDefinitions =>
5252
projectFileContents,
5353
"""// Main
5454
|//> using objectWrapper
55-
|
56-
|//> using dependency "com.lihaoyi::os-lib:0.9.1"
57-
|//> using dependency "com.lihaoyi::pprint:0.6.6"
58-
|//> using dependency "com.lihaoyi::upickle:3.1.2"
59-
|
55+
|//> using dependency com.lihaoyi::os-lib:0.9.1 com.lihaoyi::pprint:0.6.6 com.lihaoyi::upickle:3.1.2
6056
|""".stripMargin
6157
)
6258

@@ -89,7 +85,7 @@ trait FixBuiltInRulesTestDefinitions { _: FixTestDefinitions =>
8985
|println(os.pwd)
9086
|""".stripMargin,
9187
os.rel / projectFileName ->
92-
s"""//> using deps "com.lihaoyi::pprint:0.6.6"
88+
s"""//> using deps com.lihaoyi::pprint:0.6.6
9389
|""".stripMargin
9490
)
9591

@@ -125,11 +121,7 @@ trait FixBuiltInRulesTestDefinitions { _: FixTestDefinitions =>
125121
projectFileContents,
126122
"""// Main
127123
|//> using objectWrapper
128-
|
129-
|//> using dependency "com.lihaoyi::os-lib:0.9.1"
130-
|//> using dependency "com.lihaoyi::pprint:0.6.6"
131-
|//> using dependency "com.lihaoyi::upickle:3.1.2"
132-
|
124+
|//> using dependency com.lihaoyi::os-lib:0.9.1 com.lihaoyi::pprint:0.6.6 com.lihaoyi::upickle:3.1.2
133125
|""".stripMargin
134126
)
135127

@@ -217,11 +209,11 @@ trait FixBuiltInRulesTestDefinitions { _: FixTestDefinitions =>
217209
projectFileContents,
218210
"""// Main
219211
|//> using objectWrapper
220-
|//> using dependency "com.lihaoyi::os-lib:0.9.1" "com.lihaoyi::pprint:0.6.6"
212+
|//> using dependency com.lihaoyi::os-lib:0.9.1 com.lihaoyi::pprint:0.6.6
221213
|
222214
|// Test
223-
|//> using test.options "-Xasync" "-Xfatal-warnings"
224-
|//> using test.dependency "org.scalameta::munit::0.7.29" "org.typelevel::cats-core:2.9.0"
215+
|//> using test.options -Xasync -Xfatal-warnings
216+
|//> using test.dependency org.scalameta::munit::0.7.29 org.typelevel::cats-core:2.9.0
225217
|""".stripMargin
226218
)
227219

@@ -366,23 +358,23 @@ trait FixBuiltInRulesTestDefinitions { _: FixTestDefinitions =>
366358
assertNoDiff(
367359
projectFileContents,
368360
s"""// Main
369-
|//> using scala "3.3.0"
370-
|//> using platforms "jvm"
371-
|//> using jvm "17"
372-
|//> using options "-Werror"
373-
|//> using files "$includePath"
361+
|//> using scala 3.3.0
362+
|//> using platforms jvm
363+
|//> using jvm 17
364+
|//> using options -Werror
365+
|//> using files $includePath
374366
|//> using objectWrapper
375-
|//> using toolkit "default"
376-
|//> using dependency "com.lihaoyi::os-lib:0.9.1" "com.lihaoyi::pprint:0.6.6"
367+
|//> using toolkit default
368+
|//> using dependency com.lihaoyi::os-lib:0.9.1 com.lihaoyi::pprint:0.6.6
377369
|
378-
|//> using publish.ci.password "env:PUBLISH_PASSWORD"
379-
|//> using publish.ci.secretKey "env:PUBLISH_SECRET_KEY"
380-
|//> using publish.ci.secretKeyPassword "env:PUBLISH_SECRET_KEY_PASSWORD"
381-
|//> using publish.ci.user "env:PUBLISH_USER"
370+
|//> using publish.ci.password env:PUBLISH_PASSWORD
371+
|//> using publish.ci.secretKey env:PUBLISH_SECRET_KEY
372+
|//> using publish.ci.secretKeyPassword env:PUBLISH_SECRET_KEY_PASSWORD
373+
|//> using publish.ci.user env:PUBLISH_USER
382374
|
383375
|// Test
384-
|//> using test.options "-Xasync" "-Xfatal-warnings"
385-
|//> using test.dependency "org.scalameta::munit::0.7.29" "org.typelevel::cats-core:2.9.0"
376+
|//> using test.options -Xasync -Xfatal-warnings
377+
|//> using test.dependency org.scalameta::munit::0.7.29 org.typelevel::cats-core:2.9.0
386378
|""".stripMargin
387379
)
388380

@@ -425,4 +417,30 @@ trait FixBuiltInRulesTestDefinitions { _: FixTestDefinitions =>
425417
)
426418
}
427419
}
420+
421+
test("using directives with boolean values are handled correctly") {
422+
TestUtil.retryOnCi() {
423+
val expectedMessage = "Hello, world!"
424+
TestInputs(
425+
os.rel / "Messages.scala" ->
426+
s"""object Messages {
427+
| def hello: String = "$expectedMessage"
428+
|}
429+
|""".stripMargin,
430+
os.rel / "Main.scala" ->
431+
"""//> using nativeMultithreading true
432+
|//> using platform native
433+
|object Main extends App {
434+
| println(Messages.hello)
435+
|}
436+
|""".stripMargin
437+
).fromRoot { root =>
438+
os.proc(TestUtil.cli, "--power", "fix", ".", extraOptions)
439+
.call(cwd = root, stderr = os.Pipe)
440+
val r = os.proc(TestUtil.cli, "--power", "run", ".", extraOptions)
441+
.call(cwd = root, stderr = os.Pipe)
442+
expect(r.out.trim() == expectedMessage)
443+
}
444+
}
445+
}
428446
}

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ trait FixScalafixRulesTestDefinitions {
9090
}
9191
val expectedProjectContent: String = noCrLf {
9292
s"""// Main
93-
|//> using options "$scalafixUnusedRuleOption"
93+
|//> using options $scalafixUnusedRuleOption
9494
|
9595
|""".stripMargin
9696
}
@@ -150,7 +150,7 @@ trait FixScalafixRulesTestDefinitions {
150150
}
151151
val expectedProjectContent: String = noCrLf {
152152
s"""// Main
153-
|//> using options "$scalafixUnusedRuleOption"
153+
|//> using options $scalafixUnusedRuleOption
154154
|
155155
|""".stripMargin
156156
}
@@ -242,7 +242,7 @@ trait FixScalafixRulesTestDefinitions {
242242
}
243243

244244
test("external rule") {
245-
val directive = s"//> using scalafixDependency \"com.github.xuwei-k::scalafix-rules:0.5.1\""
245+
val directive = s"//> using scalafixDependency com.github.xuwei-k::scalafix-rules:0.5.1"
246246
val original: String =
247247
s"""|$directive
248248
|

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,13 @@ abstract class FixTestDefinitions
2222
test("built-in + scalafix rules") {
2323
val mainFileName = "Main.scala"
2424
val unusedValName = "unused"
25-
val directive1 = "//> using dep \"com.lihaoyi::os-lib:0.11.3\""
26-
val directive2 = "//> using dep \"com.lihaoyi::pprint:0.9.0\""
25+
val directive1 = "//> using dep com.lihaoyi::os-lib:0.11.3"
26+
val directive2 = "//> using dep com.lihaoyi::pprint:0.9.0"
2727
val mergedDirective1And2 =
28-
"using dependency \"com.lihaoyi::os-lib:0.11.3\" \"com.lihaoyi::pprint:0.9.0\""
28+
"using dependency com.lihaoyi::os-lib:0.11.3 com.lihaoyi::pprint:0.9.0"
2929
val directive3 =
30-
if (actualScalaVersion.startsWith("2")) "//> using options \"-Xlint:unused\""
31-
else "//> using options \"-Wunused:all\""
30+
if (actualScalaVersion.startsWith("2")) "//> using options -Xlint:unused"
31+
else "//> using options -Wunused:all"
3232
TestInputs(
3333
os.rel / "Foo.scala" ->
3434
s"""$directive1

0 commit comments

Comments
 (0)