Environment variables

Configuring environment variables

Orbital supports using environment variables inside annotations, which can lead to compilation errors if not provided.

Global config

To use default, global config, simply drop an env.conf file in the test-resources directory:

/
├── src
│   └── schema.taxi
├── test
│   └── SchemaSpec.kt
└── test-resources
    └── env.conf <--- env.conf goes here
taxi.conf

Orbital uses HOCON format for config files. You can read more about configuring Orbital here

Here’s a sample config file:

TransactionsTopicName = Transactions

Hocon is very flexible, you can use a variety of styles:

  • foo.bar=10
  • foo : 10
  • foo=10, bar=10

Read more in the HOCON docs

Overriding environment variables per-spec

Environment variables can be overridden within a spec by calling one of these functions:

    fun environmentVariables(vararg pairs: Pair<String, String>)
    fun environmentVariables(env: Map<String, String>)
    fun env(key: String, value: String)
💡
Environment variables are set per-spec, and must be set before the describe() block. Attempting to modify environment variables in a describe or it( .. ) block will result in an error
class OverridingGlobalEnvVariablesSpec : OrbitalSpec({
    // Override a single env variable
    env("click-events-topic-name", "clickstream")
 
    // alternatively, override a bunch:
    environmentVariables(
        "MyTopic" to "Foo",
        "AnotherTopic" to "Bar"
    )
    describe("overriding global env config variables") {
        it("should compile using the overridden env variable") {
            // test continues
        }
    }
})