From 2d18eadd2c80a870ca86f44355e02537e0f658c4 Mon Sep 17 00:00:00 2001 From: eugene yokota Date: Sun, 1 Mar 2026 02:54:12 -0500 Subject: [PATCH] [2.x] Comments in dot files (#8841) **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 ac72d7c8b..54484275d 100644 --- a/launcher-package/integration-test/src/test/scala/RunnerScriptTest.scala +++ b/launcher-package/integration-test/src/test/scala/RunnerScriptTest.scala @@ -304,11 +304,16 @@ abstract class RunnerScriptTest extends verify.BasicTestSuite with ShellScriptUt // 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" @@ -317,6 +322,10 @@ abstract class RunnerScriptTest extends verify.BasicTestSuite with ShellScriptUt 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 911e327e9..0858d2906 100755 --- a/sbt +++ b/sbt @@ -787,7 +787,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"