From d4d5e72961d507877e3b8b9f47fbeb5e7448cdf6 Mon Sep 17 00:00:00 2001 From: eugene yokota Date: Sun, 1 Mar 2026 05:26:58 -0500 Subject: [PATCH] [2.x] Comments in dot files (#8841) (#8847) **Problem** Hash comments doesn't work in dot files. **Solution** This reapplies the comment removal sed, with improved inline comment handling. --- .../src/test/scala/RunnerScriptTest.scala | 13 +++++++++++-- sbt | 2 +- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/launcher-package/integration-test/src/test/scala/RunnerScriptTest.scala b/launcher-package/integration-test/src/test/scala/RunnerScriptTest.scala index a4425338d..dfc728f84 100644 --- a/launcher-package/integration-test/src/test/scala/RunnerScriptTest.scala +++ b/launcher-package/integration-test/src/test/scala/RunnerScriptTest.scala @@ -288,11 +288,16 @@ object RunnerScriptTest extends verify.BasicTestSuite with ShellScriptUtil: // Test for issue #8755: Inline comments should be supported in .jvmopts testOutput( "sbt with inline comments in .jvmopts", - jvmoptsFileContents = - "--add-opens=java.base/java.util=ALL-UNNAMED # This is an inline comment\n-Dtest.key=value # Another comment", + jvmoptsFileContents = """--add-opens=java.base/java.util=ALL-UNNAMED # This is an inline comment + |-Dtest.key=value # Another comment + |-Dtest.key2=file:/log4j2#prod.xml""".stripMargin, windowsSupport = false, )("-v"): (out: List[String]) => // Verify that options are present (comments should be stripped) + assert( + !out.contains[String]("#"), + "Comments are stripped out" + ) assert( out.contains[String]("--add-opens=java.base/java.util=ALL-UNNAMED"), "Option with inline comment should be parsed correctly" @@ -301,6 +306,10 @@ object RunnerScriptTest extends verify.BasicTestSuite with ShellScriptUtil: out.contains[String]("-Dtest.key=value"), "System property with inline comment should be parsed correctly" ) + assert( + out.contains[String]("-Dtest.key2=file:/log4j2#prod.xml"), + "System property with inline comment should be parsed correctly" + ) // Verify comments themselves are NOT present as separate arguments assert( !out.exists(_.contains("This is an inline comment")), diff --git a/sbt b/sbt index 9e3ae8cea..00398f476 100755 --- a/sbt +++ b/sbt @@ -772,7 +772,7 @@ process_args () { loadConfigFile() { # Make sure the last line is read even if it doesn't have a terminating \n # Output lines literally without shell expansion to handle special characters safely - cat "$1" | sed $'/^\#/d;s/\r$//' | while read -r line || [[ -n "$line" ]]; do + cat "$1" | sed $'/^\#/d;s/[[:space:]]\{1,\}#.*//;s/\r$//' | while read -r line || [[ -n "$line" ]]; do # Use printf with properly quoted variable to prevent shell expansion # This safely handles special characters like |, *, &, etc. printf '%s\n' "$line"