Skip to content

Commit da025a0

Browse files
authored
fix built-in rules: don't wrap directive values in double quotes if not necessary (#3414)
1 parent 1e7ef4e commit da025a0

File tree

4 files changed

+62
-37
lines changed

4 files changed

+62
-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: 50 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ package scala.cli.integration
22

33
import com.eed3si9n.expecty.Expecty.expect
44

5+
import scala.util.Properties
6+
57
trait FixBuiltInRulesTestDefinitions { _: FixTestDefinitions =>
68
test("basic built-in rules") {
79
val mainFileName = "Main.scala"
@@ -17,7 +19,7 @@ trait FixBuiltInRulesTestDefinitions { _: FixTestDefinitions =>
1719
|}
1820
|""".stripMargin,
1921
os.rel / projectFileName ->
20-
s"""//> using deps "com.lihaoyi::pprint:0.6.6"
22+
s"""//> using deps com.lihaoyi::pprint:0.6.6
2123
|""".stripMargin
2224
)
2325

@@ -52,11 +54,7 @@ trait FixBuiltInRulesTestDefinitions { _: FixTestDefinitions =>
5254
projectFileContents,
5355
"""// Main
5456
|//> 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-
|
57+
|//> using dependency com.lihaoyi::os-lib:0.9.1 com.lihaoyi::pprint:0.6.6 com.lihaoyi::upickle:3.1.2
6058
|""".stripMargin
6159
)
6260

@@ -89,7 +87,7 @@ trait FixBuiltInRulesTestDefinitions { _: FixTestDefinitions =>
8987
|println(os.pwd)
9088
|""".stripMargin,
9189
os.rel / projectFileName ->
92-
s"""//> using deps "com.lihaoyi::pprint:0.6.6"
90+
s"""//> using deps com.lihaoyi::pprint:0.6.6
9391
|""".stripMargin
9492
)
9593

@@ -125,11 +123,7 @@ trait FixBuiltInRulesTestDefinitions { _: FixTestDefinitions =>
125123
projectFileContents,
126124
"""// Main
127125
|//> 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-
|
126+
|//> using dependency com.lihaoyi::os-lib:0.9.1 com.lihaoyi::pprint:0.6.6 com.lihaoyi::upickle:3.1.2
133127
|""".stripMargin
134128
)
135129

@@ -217,11 +211,11 @@ trait FixBuiltInRulesTestDefinitions { _: FixTestDefinitions =>
217211
projectFileContents,
218212
"""// Main
219213
|//> using objectWrapper
220-
|//> using dependency "com.lihaoyi::os-lib:0.9.1" "com.lihaoyi::pprint:0.6.6"
214+
|//> using dependency com.lihaoyi::os-lib:0.9.1 com.lihaoyi::pprint:0.6.6
221215
|
222216
|// 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"
217+
|//> using test.options -Xasync -Xfatal-warnings
218+
|//> using test.dependency org.scalameta::munit::0.7.29 org.typelevel::cats-core:2.9.0
225219
|""".stripMargin
226220
)
227221

@@ -366,23 +360,23 @@ trait FixBuiltInRulesTestDefinitions { _: FixTestDefinitions =>
366360
assertNoDiff(
367361
projectFileContents,
368362
s"""// Main
369-
|//> using scala "3.3.0"
370-
|//> using platforms "jvm"
371-
|//> using jvm "17"
372-
|//> using options "-Werror"
373-
|//> using files "$includePath"
363+
|//> using scala 3.3.0
364+
|//> using platforms jvm
365+
|//> using jvm 17
366+
|//> using options -Werror
367+
|//> using files $includePath
374368
|//> using objectWrapper
375-
|//> using toolkit "default"
376-
|//> using dependency "com.lihaoyi::os-lib:0.9.1" "com.lihaoyi::pprint:0.6.6"
369+
|//> using toolkit default
370+
|//> using dependency com.lihaoyi::os-lib:0.9.1 com.lihaoyi::pprint:0.6.6
377371
|
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"
372+
|//> using publish.ci.password env:PUBLISH_PASSWORD
373+
|//> using publish.ci.secretKey env:PUBLISH_SECRET_KEY
374+
|//> using publish.ci.secretKeyPassword env:PUBLISH_SECRET_KEY_PASSWORD
375+
|//> using publish.ci.user env:PUBLISH_USER
382376
|
383377
|// 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"
378+
|//> using test.options -Xasync -Xfatal-warnings
379+
|//> using test.dependency org.scalameta::munit::0.7.29 org.typelevel::cats-core:2.9.0
386380
|""".stripMargin
387381
)
388382

@@ -425,4 +419,32 @@ trait FixBuiltInRulesTestDefinitions { _: FixTestDefinitions =>
425419
)
426420
}
427421
}
422+
423+
if (!Properties.isWin) // TODO: fix this test for Windows CI
424+
test("using directives with boolean values are handled correctly") {
425+
val expectedMessage = "Hello, world!"
426+
def maybeScalapyPrefix =
427+
if (actualScalaVersion.startsWith("2.13.")) ""
428+
else "import me.shadaj.scalapy.py" + System.lineSeparator()
429+
TestInputs(
430+
os.rel / "Messages.scala" ->
431+
s"""object Messages {
432+
| def hello: String = "$expectedMessage"
433+
|}
434+
|""".stripMargin,
435+
os.rel / "Main.scala" ->
436+
s"""//> using python true
437+
|$maybeScalapyPrefix
438+
|object Main extends App {
439+
| py.Dynamic.global.print(Messages.hello, flush = true)
440+
|}
441+
|""".stripMargin
442+
).fromRoot { root =>
443+
os.proc(TestUtil.cli, "--power", "fix", ".", extraOptions)
444+
.call(cwd = root, stderr = os.Pipe)
445+
val r = os.proc(TestUtil.cli, "--power", "run", ".", extraOptions)
446+
.call(cwd = root, stderr = os.Pipe)
447+
expect(r.out.trim() == expectedMessage)
448+
}
449+
}
428450
}

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)