From 6f03e806c43b885823de044c9e12d0d5df9995dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Wro=C5=84ski?= Date: Thu, 12 Jan 2023 09:56:02 +0100 Subject: [PATCH] Set workspace dir to os.tmp for virtual sources --- .../main/scala/scala/build/input/Inputs.scala | 5 ++++ .../scala/build/input/WorkspaceOrigin.scala | 3 ++- .../RunSnippetTestDefinitions.scala | 26 +++++++++++++++++++ .../cli/integration/RunTestDefinitions.scala | 6 +++-- 4 files changed, 37 insertions(+), 3 deletions(-) diff --git a/modules/build/src/main/scala/scala/build/input/Inputs.scala b/modules/build/src/main/scala/scala/build/input/Inputs.scala index 24e70d9fd4..0cb7f5876d 100644 --- a/modules/build/src/main/scala/scala/build/input/Inputs.scala +++ b/modules/build/src/main/scala/scala/build/input/Inputs.scala @@ -157,6 +157,11 @@ object Inputs { ) (f.path / os.up, true, WorkspaceOrigin.SourcePaths) } + }.orElse { + validElems.collectFirst { + case _: Virtual => + (os.temp.dir(), true, WorkspaceOrigin.VirtualForced) + } }.getOrElse((os.pwd, true, WorkspaceOrigin.Forced)) } diff --git a/modules/build/src/main/scala/scala/build/input/WorkspaceOrigin.scala b/modules/build/src/main/scala/scala/build/input/WorkspaceOrigin.scala index 1604770c45..2235e36362 100644 --- a/modules/build/src/main/scala/scala/build/input/WorkspaceOrigin.scala +++ b/modules/build/src/main/scala/scala/build/input/WorkspaceOrigin.scala @@ -9,5 +9,6 @@ object WorkspaceOrigin { case object ResourcePaths extends WorkspaceOrigin - case object HomeDir extends WorkspaceOrigin + case object HomeDir extends WorkspaceOrigin + case object VirtualForced extends WorkspaceOrigin } diff --git a/modules/integration/src/test/scala/scala/cli/integration/RunSnippetTestDefinitions.scala b/modules/integration/src/test/scala/scala/cli/integration/RunSnippetTestDefinitions.scala index e894168403..bd5a5bd1eb 100644 --- a/modules/integration/src/test/scala/scala/cli/integration/RunSnippetTestDefinitions.scala +++ b/modules/integration/src/test/scala/scala/cli/integration/RunSnippetTestDefinitions.scala @@ -144,4 +144,30 @@ trait RunSnippetTestDefinitions { _: RunTestDefinitions => expect(res.out.trim() == expectedOutput) } } + test("running a script snippet should not create the workspace dir in cwd") { + emptyInputs.fromRoot { root => + val quotation = TestUtil.argQuotationMark + val msg = "Hello" + os.proc(TestUtil.cli, "-e", s"println($quotation$msg$quotation)", extraOptions) + .call(cwd = root) + .out.trim() + expect(!os.exists(root / Constants.workspaceDirName)) + } + } + test("running a script snippet with one source file should create the workspace dir in cwd") { + val msg = "Hello" + val quotation = TestUtil.argQuotationMark + val inputs = TestInputs( + os.rel / "Hello.scala" -> + s"""object Hello { + | val hello = $quotation$msg$quotation + |}""".stripMargin + ) + inputs.fromRoot { root => + os.proc(TestUtil.cli, "-e", s"println($quotation$msg$quotation)", ".", extraOptions) + .call(cwd = root) + .out.trim() + expect(os.exists(root / Constants.workspaceDirName)) + } + } } diff --git a/modules/integration/src/test/scala/scala/cli/integration/RunTestDefinitions.scala b/modules/integration/src/test/scala/scala/cli/integration/RunTestDefinitions.scala index 4bcb8f7102..2b87958581 100644 --- a/modules/integration/src/test/scala/scala/cli/integration/RunTestDefinitions.scala +++ b/modules/integration/src/test/scala/scala/cli/integration/RunTestDefinitions.scala @@ -176,11 +176,13 @@ abstract class RunTestDefinitions(val scalaVersionOpt: Option[String]) passArgumentsScala3() } - test("setting root dir with no inputs") { + test("setting root dir with virtual input") { val url = "https://gist.github.com/alexarchambault/7b4ec20c4033690dd750ffd601e540ec" emptyInputs.fromRoot { root => os.proc(TestUtil.cli, extraOptions, escapedUrls(url)).call(cwd = root) - expect(os.exists(root / ".scala-build")) + expect( + !os.exists(root / ".scala-build") + ) // virtual source should not create workspace dir in cwd } }