Skip to content

Commit

Permalink
Merge pull request #1917 from lwronski/config-tests
Browse files Browse the repository at this point in the history
Change default home directory for tests integration and docs-test modules to avoid overriding global user config
  • Loading branch information
lwronski committed Mar 10, 2023
2 parents 0592af4 + 7c58945 commit 64aef86
Show file tree
Hide file tree
Showing 4 changed files with 38 additions and 31 deletions.
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

0 comments on commit 64aef86

Please sign in to comment.