All Downloads are FREE. Search and download functionalities are using the official Maven repository.

coursier.clitests.InstallTests.scala Maven / Gradle / Ivy

There is a newer version: 2.1.13
Show newest version
package coursier.clitests

import java.io.File

import utest._

import scala.util.Properties

abstract class InstallTests extends TestSuite {

  def launcher: String

  def overrideProguarded: Option[Boolean] =
    None

  private val extraOptions =
    overrideProguarded match {
      case None        => Nil
      case Some(value) => Seq(s"--proguarded=$value")
    }

  val tests = Tests {

    def inlineApp(): Unit =
      TestUtil.withTempDir { tmpDir =>
        os.proc(
          launcher,
          "install",
          "--install-dir",
          tmpDir.getAbsolutePath,
          """echo:{"dependencies": ["io.get-coursier:echo:1.0.1"], "repositories": ["central"]}""",
          extraOptions
        ).call(cwd = os.Path(tmpDir, os.pwd))
        val output = os.proc(new File(tmpDir, "echo").getAbsolutePath, "foo")
          .call(cwd = os.Path(tmpDir, os.pwd))
          .out.text()
        val expectedOutput = "foo" + System.lineSeparator()
        assert(output == expectedOutput)
      }
    test("inline app") {
      if (Properties.isWin) "disabled"
      else { inlineApp(); "" }
    }

    def jnaPython(): Unit =
      TestUtil.withTempDir { tmpDir =>
        LauncherTestUtil.run(
          args = Seq(
            launcher,
            "install",
            "--install-dir",
            tmpDir.getAbsolutePath,
            s"""props:{"dependencies": ["${TestUtil.propsDepStr}"], "repositories": ["central"], "jna": ["python-jep"]}"""
          ) ++ extraOptions,
          directory = tmpDir
        )
        val propsLauncher = new File(tmpDir, "props").getAbsolutePath

        val jnaNosysOutput = LauncherTestUtil.output(
          Seq(propsLauncher, "jna.nosys"),
          keepErrorOutput = false,
          directory = tmpDir
        )
        val expectedJnaNosysOutput = "false" + System.lineSeparator()
        assert(jnaNosysOutput == expectedJnaNosysOutput)

        val jnaLibraryPathOutput = LauncherTestUtil.output(
          Seq(propsLauncher, "jna.library.path"),
          keepErrorOutput = false,
          directory = tmpDir
        )
        assert(jnaLibraryPathOutput.trim.nonEmpty)
      }
    test("JNA Python") {
      if (Properties.isWin) "disabled"
      else { jnaPython(); "" }
    }
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy