Sha256: 3ffdbb2e03f14f0a42d5e215bb3af5c295abd5519de04199213c5f123bacb284

Contents?: true

Size: 1.67 KB

Versions: 16

Compression:

Stored size: 1.67 KB

Contents

#include <catch.hpp>
#include <leatherman/util/environment.hpp>
#include <leatherman/util/scoped_env.hpp>

using namespace std;
using namespace leatherman::util;

SCENARIO("scoping an environment variable") {
    string value;
    REQUIRE_FALSE(environment::get("LEATH_ENV_TEST", value));
    REQUIRE(value.empty());

    WHEN("the variable does not exist") {
        AND_WHEN("the variable is scoped") {
            scoped_env foo("LEATH_ENV_TEST", "FOO");
            THEN("the new value is set") {
                REQUIRE(environment::get("LEATH_ENV_TEST", value));
                REQUIRE(value == "FOO");
            }
        }
        AND_WHEN("the variable is scoped as unset") {
            scoped_env foo("LEATH_ENV_TEST");
            THEN("the variable is not set") {
                REQUIRE_FALSE(environment::get("LEATH_ENV_TEST", value));
            }
        }
    }
    WHEN("the variable exists")
    {
        environment::set("LEATH_ENV_TEST", "bar");

        AND_WHEN("the variable is scoped") {
            scoped_env foo("LEATH_ENV_TEST", "FOO");
            THEN("the new value is set") {
                REQUIRE(environment::get("LEATH_ENV_TEST", value));
                REQUIRE(value == "FOO");
            }
        }
        AND_WHEN("the variable is scoped as unset") {
            scoped_env foo("LEATH_ENV_TEST");
            THEN("the variable is not set") {
                REQUIRE_FALSE(environment::get("LEATH_ENV_TEST", value));
            }
        }
        THEN("the variable should be restored") {
            REQUIRE(environment::get("LEATH_ENV_TEST", value));
            REQUIRE(value == "bar");
        }

        environment::clear("LEATH_ENV_TEST");
    }
}

Version data entries

16 entries across 16 versions & 2 rubygems

Version Path
facter-3.12.2.cfacter.20181217 ext/facter/leatherman/util/tests/scoped_env.cc
facter-3.12.1.cfacter.20181031 ext/facter/leatherman/util/tests/scoped_env.cc
facter-3.11.6.cfacter.20181031 ext/facter/leatherman/util/tests/scoped_env.cc
facter-3.12.1.cfacter.20181023 ext/facter/leatherman/util/tests/scoped_env.cc
facter-3.11.5.cfacter.20181022 ext/facter/leatherman/util/tests/scoped_env.cc
facter-3.12.0.cfacter.20181004 ext/facter/leatherman/util/tests/scoped_env.cc
facter-3.12.0.cfacter.20181001 ext/facter/leatherman/util/tests/scoped_env.cc
facter-3.12.0.cfacter.20180918 ext/facter/leatherman/util/tests/scoped_env.cc
facter-3.11.4.cfacter.20180821 ext/facter/leatherman/util/tests/scoped_env.cc
facter-3.11.3.cfacter.20180716 ext/facter/leatherman/util/tests/scoped_env.cc
facter-3.11.2.cfacter.20180612 ext/facter/leatherman/util/tests/scoped_env.cc
facter-3.9.6.cfacter.20180612 ext/facter/leatherman/util/tests/scoped_env.cc
facter-3.11.2.cfacter.20180606 ext/facter/leatherman/util/tests/scoped_env.cc
facter-3.9.6.cfacter.20180606 ext/facter/leatherman/util/tests/scoped_env.cc
facter-3.11.0.cfacter.20180319 ext/facter/leatherman/util/tests/scoped_env.cc
cfacter-3.11.0.rc.20180314 ext/facter/leatherman/util/tests/scoped_env.cc