From bbc4e42d1df9126a37d6a4d9ae7de6594c27962e 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 +++++++++++++++++++ 3 files changed, 33 insertions(+), 1 deletion(-) 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..141d39edc3 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 inputs = TestInputs( + os.rel / "Hello.scala" -> + s"""object Hello { + | val hello = $msg + |}""".stripMargin + ) + inputs.fromRoot { root => + val quotation = TestUtil.argQuotationMark + os.proc(TestUtil.cli, "-e", s"println($quotation$msg$quotation)", ".", extraOptions) + .call(cwd = root) + .out.trim() + expect(os.exists(root / Constants.workspaceDirName)) + } + } }