Path: blob/main/contrib/atf/atf-c++/detail/env_test.cpp
39563 views
// Copyright (c) 2007 The NetBSD Foundation, Inc.1// All rights reserved.2//3// Redistribution and use in source and binary forms, with or without4// modification, are permitted provided that the following conditions5// are met:6// 1. Redistributions of source code must retain the above copyright7// notice, this list of conditions and the following disclaimer.8// 2. Redistributions in binary form must reproduce the above copyright9// notice, this list of conditions and the following disclaimer in the10// documentation and/or other materials provided with the distribution.11//12// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND13// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,14// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF15// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.16// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY17// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL18// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE19// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS20// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER21// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR22// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN23// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.2425#include "atf-c++/detail/env.hpp"2627#include <atf-c++.hpp>2829// ------------------------------------------------------------------------30// Test cases for the free functions.31// ------------------------------------------------------------------------3233ATF_TEST_CASE(has_get);34ATF_TEST_CASE_HEAD(has_get)35{36set_md_var("descr", "Tests the has and get functions");37}38ATF_TEST_CASE_BODY(has_get)39{40ATF_REQUIRE(atf::env::has("PATH"));41ATF_REQUIRE(!atf::env::get("PATH").empty());4243ATF_REQUIRE(!atf::env::has("_UNDEFINED_VARIABLE_"));44}4546ATF_TEST_CASE(get_with_default);47ATF_TEST_CASE_HEAD(get_with_default)48{49set_md_var("descr", "Tests the get function with a default value");50}51ATF_TEST_CASE_BODY(get_with_default)52{53ATF_REQUIRE(atf::env::has("PATH"));54ATF_REQUIRE(atf::env::get("PATH", "default value") != "default value");5556ATF_REQUIRE_EQ(atf::env::get("_UNDEFINED_VARIABLE_", "foo bar"), "foo bar");57}5859ATF_TEST_CASE(set);60ATF_TEST_CASE_HEAD(set)61{62set_md_var("descr", "Tests the set function");63}64ATF_TEST_CASE_BODY(set)65{66ATF_REQUIRE(atf::env::has("PATH"));67const std::string& oldval = atf::env::get("PATH");68atf::env::set("PATH", "foo-bar");69ATF_REQUIRE(atf::env::get("PATH") != oldval);70ATF_REQUIRE_EQ(atf::env::get("PATH"), "foo-bar");7172ATF_REQUIRE(!atf::env::has("_UNDEFINED_VARIABLE_"));73atf::env::set("_UNDEFINED_VARIABLE_", "foo2-bar2");74ATF_REQUIRE_EQ(atf::env::get("_UNDEFINED_VARIABLE_"), "foo2-bar2");75}7677ATF_TEST_CASE(unset);78ATF_TEST_CASE_HEAD(unset)79{80set_md_var("descr", "Tests the unset function");81}82ATF_TEST_CASE_BODY(unset)83{84ATF_REQUIRE(atf::env::has("PATH"));85atf::env::unset("PATH");86ATF_REQUIRE(!atf::env::has("PATH"));87}8889// ------------------------------------------------------------------------90// Main.91// ------------------------------------------------------------------------9293ATF_INIT_TEST_CASES(tcs)94{95// Add the test cases for the free functions.96ATF_ADD_TEST_CASE(tcs, has_get);97ATF_ADD_TEST_CASE(tcs, get_with_default);98ATF_ADD_TEST_CASE(tcs, set);99ATF_ADD_TEST_CASE(tcs, unset);100}101102103