Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Change default home directory for tests integration and docs-test modules to avoid overriding global user config #1917

Merged
merged 2 commits into from Mar 10, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
12 changes: 9 additions & 3 deletions build.sc
Expand Up @@ -112,9 +112,14 @@ object `docs-tests` extends SbtModule with ScalaCliScalafixModule with HasTests
Deps.osLib,
Deps.pprint
)

def tmpDirBase = T.persistent {
PathRef(T.dest / "working-dir")
}
def extraEnv = T {
Seq("SCLICHECK_SCALA_CLI" -> cli.standaloneLauncher().path.toString)
Seq(
"SCLICHECK_SCALA_CLI" -> cli.standaloneLauncher().path.toString,
"SCALA_CLI_CONFIG" -> (tmpDirBase().path / "config" / "config.json").toString
)
}
def forkEnv = super.forkEnv() ++ extraEnv()

Expand Down Expand Up @@ -869,7 +874,8 @@ trait CliIntegration extends SbtModule with ScalaCliPublishModule with HasTests
)
def forkEnv = super.forkEnv() ++ Seq(
"SCALA_CLI_TMP" -> tmpDirBase().path.toString,
"SCALA_CLI_PRINT_STACK_TRACES" -> "1"
"SCALA_CLI_PRINT_STACK_TRACES" -> "1",
"SCALA_CLI_CONFIG" -> (tmpDirBase().path / "config" / "config.json").toString
)
private def updateRef(name: String, ref: PathRef): PathRef = {
val rawPath = ref.path.toString.replace(
Expand Down
Expand Up @@ -9,67 +9,68 @@ class ConfigTests extends ScalaCliSuite {
override def group: ScalaCliSuite.TestGroup = ScalaCliSuite.TestGroup.First

test("simple") {
val homeDir = os.rel / "home"
val homeEnv = Map("SCALA_CLI_HOME" -> homeDir.toString())
val name = "Alex"
val configFile = os.rel / "config" / "config.json"
val configEnv = Map("SCALA_CLI_CONFIG" -> configFile.toString())
val name = "Alex"
TestInputs.empty.fromRoot { root =>
val before =
os.proc(TestUtil.cli, "config", "publish.user.name").call(cwd = root, env = homeEnv)
os.proc(TestUtil.cli, "config", "publish.user.name").call(cwd = root, env = configEnv)
expect(before.out.trim().isEmpty)

os.proc(TestUtil.cli, "config", "publish.user.name", name).call(cwd = root, env = homeEnv)
val res = os.proc(TestUtil.cli, "config", "publish.user.name").call(cwd = root, env = homeEnv)
os.proc(TestUtil.cli, "config", "publish.user.name", name).call(cwd = root, env = configEnv)
val res =
os.proc(TestUtil.cli, "config", "publish.user.name").call(cwd = root, env = configEnv)
expect(res.out.trim() == name)

os.proc(TestUtil.cli, "config", "publish.user.name", "--unset").call(
cwd = root,
env = homeEnv
env = configEnv
)
val after =
os.proc(TestUtil.cli, "config", "publish.user.name").call(cwd = root, env = homeEnv)
os.proc(TestUtil.cli, "config", "publish.user.name").call(cwd = root, env = configEnv)
expect(after.out.trim().isEmpty)
}
}

test("password") {
val homeDir = os.rel / "home"
val homeEnv = Map("SCALA_CLI_HOME" -> homeDir.toString)
val password = "1234"
val key = "httpProxy.password"
val configFile = os.rel / "config" / "config.json"
val configEnv = Map("SCALA_CLI_CONFIG" -> configFile.toString)
val password = "1234"
val key = "httpProxy.password"
TestInputs.empty.fromRoot { root =>

def emptyCheck(): Unit = {
val value = os.proc(TestUtil.cli, "config", key)
.call(cwd = root, env = homeEnv)
.call(cwd = root, env = configEnv)
expect(value.out.trim().isEmpty)
}

def unset(): Unit =
os.proc(TestUtil.cli, "config", key, "--unset")
.call(cwd = root, env = homeEnv)
.call(cwd = root, env = configEnv)

def read(): String = {
val res = os.proc(TestUtil.cli, "config", key)
.call(cwd = root, env = homeEnv)
.call(cwd = root, env = configEnv)
res.out.trim()
}
def readDecoded(env: Map[String, String] = Map.empty): String = {
val res = os.proc(TestUtil.cli, "--power", "config", key, "--password")
.call(cwd = root, env = homeEnv ++ env)
.call(cwd = root, env = configEnv ++ env)
res.out.trim()
}

emptyCheck()

os.proc(TestUtil.cli, "config", key, s"value:$password")
.call(cwd = root, env = homeEnv)
.call(cwd = root, env = configEnv)
expect(read() == s"value:$password")
expect(readDecoded() == password)
unset()
emptyCheck()

os.proc(TestUtil.cli, "config", key, "env:MY_PASSWORD")
.call(cwd = root, env = homeEnv)
.call(cwd = root, env = configEnv)
expect(read() == "env:MY_PASSWORD")
expect(readDecoded(env = Map("MY_PASSWORD" -> password)) == password)
unset()
Expand All @@ -83,7 +84,7 @@ class ConfigTests extends ScalaCliSuite {
"env:MY_PASSWORD",
"--password-value"
)
.call(cwd = root, env = Map("MY_PASSWORD" -> password) ++ homeEnv)
.call(cwd = root, env = Map("MY_PASSWORD" -> password) ++ configEnv)
expect(read() == s"value:$password")
expect(readDecoded() == password)
unset()
Expand Down
Expand Up @@ -18,8 +18,8 @@ class PublishSetupTests extends ScalaCliSuite {
private def devMail = "alex@alex.me"
private def devUrl = "https://alex.me"

private def configSetup(homeDir: os.Path, root: os.Path): Unit = {
val envs = Map("SCALA_CLI_HOME" -> homeDir.toString)
private def configSetup(configFile: os.Path, root: os.Path): Unit = {
val envs = Map("SCALA_CLI_CONFIG" -> configFile.toString)
os.proc(TestUtil.cli, "--power", "config", "publish.user.name", devName)
.call(cwd = root, stdout = os.Inherit, env = envs)
os.proc(TestUtil.cli, "--power", "config", "publish.user.email", devMail)
Expand All @@ -46,8 +46,8 @@ class PublishSetupTests extends ScalaCliSuite {
"""object Foo
|""".stripMargin
)
private val homeDir = os.rel / "home"
private val envs = Map("SCALA_CLI_HOME" -> homeDir.toString)
private val configFile = os.rel / "config" / "config.json"
private val envs = Map("SCALA_CLI_CONFIG" -> configFile.toString)

private def gitInit(dir: os.Path): Git = {
val git = Git.init().setDirectory(dir.toIO).call()
Expand Down Expand Up @@ -99,7 +99,7 @@ class PublishSetupTests extends ScalaCliSuite {
)
val expectedGhSecrets = Set.empty[String]
testInputs.fromRoot { root =>
configSetup(root / homeDir, root)
configSetup(root / configFile, root)
gitInit(root / projDir)
val res = os.proc(TestUtil.cli, "--power", "publish", "setup", projDir).call(
cwd = root,
Expand Down Expand Up @@ -136,7 +136,7 @@ class PublishSetupTests extends ScalaCliSuite {
val expectedGhSecrets =
Set("PUBLISH_USER", "PUBLISH_PASSWORD", "PUBLISH_SECRET_KEY", "PUBLISH_SECRET_KEY_PASSWORD")
testInputs.fromRoot { root =>
configSetup(root / homeDir, root)
configSetup(root / configFile, root)
gitInit(root / projDir)
val res =
os.proc(TestUtil.cli, "--power", "publish", "setup", "--ci", "--dummy", projDir).call(
Expand Down Expand Up @@ -169,7 +169,7 @@ class PublishSetupTests extends ScalaCliSuite {
)
val expectedGhSecrets = Set.empty[String]
testInputs.fromRoot { root =>
configSetup(root / homeDir, root)
configSetup(root / configFile, root)
gitInit(root / projDir)
val res = os.proc(
TestUtil.cli,
Expand Down Expand Up @@ -211,7 +211,7 @@ class PublishSetupTests extends ScalaCliSuite {
)
val expectedGhSecrets = Set("PUBLISH_USER", "PUBLISH_PASSWORD")
testInputs.fromRoot { root =>
configSetup(root / homeDir, root)
configSetup(root / configFile, root)
gitInit(root / projDir)
val res = os.proc(
TestUtil.cli,
Expand Down
Expand Up @@ -138,7 +138,7 @@ class SipScalaTests extends ScalaCliSuite {

test("power config turn on power features") {
TestInputs.empty.fromRoot { root =>
val homeEnv = Map("SCALA_CLI_HOME" -> root.toString())
val homeEnv = Map("SCALA_CLI_CONFIG" -> (root / "config" / "config.json").toString())
// disable power features
os.proc(TestUtil.cli, "config", "power", "false").call(cwd = root, env = homeEnv).out.trim()
val output = os.proc(TestUtil.cli, "package").call(
Expand Down