env_test.c revision 240120
1138568Ssam/* 2138568Ssam * Automated Testing Framework (atf) 3170360Ssam * 4138568Ssam * Copyright (c) 2007 The NetBSD Foundation, Inc. 5138568Ssam * All rights reserved. 6138568Ssam * 7138568Ssam * Redistribution and use in source and binary forms, with or without 8138568Ssam * modification, are permitted provided that the following conditions 9138568Ssam * are met: 10138568Ssam * 1. Redistributions of source code must retain the above copyright 11138568Ssam * notice, this list of conditions and the following disclaimer. 12138568Ssam * 2. Redistributions in binary form must reproduce the above copyright 13138568Ssam * notice, this list of conditions and the following disclaimer in the 14138568Ssam * documentation and/or other materials provided with the distribution. 15138568Ssam * 16138568Ssam * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND 17138568Ssam * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, 18138568Ssam * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 19138568Ssam * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 20138568Ssam * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY 21138568Ssam * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 22138568Ssam * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 23138568Ssam * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24138568Ssam * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 25138568Ssam * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 26138568Ssam * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN 27138568Ssam * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28138568Ssam */ 29138568Ssam 30138568Ssam#include <stdlib.h> 31138568Ssam#include <string.h> 32138568Ssam 33138568Ssam#include <atf-c.h> 34138568Ssam 35138568Ssam#include "env.h" 36170530Ssam#include "test_helpers.h" 37138568Ssam#include "text.h" 38138568Ssam 39138568Ssam/* --------------------------------------------------------------------- 40138568Ssam * Test cases for the free functions. 41138568Ssam * --------------------------------------------------------------------- */ 42138568Ssam 43138568SsamATF_TC(has); 44138568SsamATF_TC_HEAD(has, tc) 45138568Ssam{ 46138568Ssam atf_tc_set_md_var(tc, "descr", "Tests the atf_env_has function"); 47138568Ssam} 48138568SsamATF_TC_BODY(has, tc) 49170530Ssam{ 50170530Ssam ATF_REQUIRE(atf_env_has("PATH")); 51170530Ssam ATF_REQUIRE(!atf_env_has("_UNDEFINED_VARIABLE_")); 52138568Ssam} 53170530Ssam 54138568SsamATF_TC(get); 55138568SsamATF_TC_HEAD(get, tc) 56138568Ssam{ 57138568Ssam atf_tc_set_md_var(tc, "descr", "Tests the atf_env_get function"); 58138568Ssam} 59138568SsamATF_TC_BODY(get, tc) 60170530Ssam{ 61170530Ssam const char *val; 62138568Ssam 63167283Ssam ATF_REQUIRE(atf_env_has("PATH")); 64138568Ssam 65138568Ssam val = atf_env_get("PATH"); 66170530Ssam ATF_REQUIRE(strlen(val) > 0); 67138568Ssam ATF_REQUIRE(strchr(val, ':') != NULL); 68138568Ssam} 69138568Ssam 70138568SsamATF_TC(set); 71138568SsamATF_TC_HEAD(set, tc) 72138568Ssam{ 73138568Ssam atf_tc_set_md_var(tc, "descr", "Tests the atf_env_set function"); 74138568Ssam} 75138568SsamATF_TC_BODY(set, tc) 76138568Ssam{ 77138568Ssam char *oldval; 78138568Ssam 79138568Ssam ATF_REQUIRE(atf_env_has("PATH")); 80138568Ssam RE(atf_text_format(&oldval, "%s", atf_env_get("PATH"))); 81138568Ssam RE(atf_env_set("PATH", "foo-bar")); 82138568Ssam ATF_REQUIRE(strcmp(atf_env_get("PATH"), oldval) != 0); 83138568Ssam ATF_REQUIRE(strcmp(atf_env_get("PATH"), "foo-bar") == 0); 84138568Ssam free(oldval); 85138568Ssam 86138568Ssam ATF_REQUIRE(!atf_env_has("_UNDEFINED_VARIABLE_")); 87138568Ssam RE(atf_env_set("_UNDEFINED_VARIABLE_", "foo2-bar2")); 88138568Ssam ATF_REQUIRE(strcmp(atf_env_get("_UNDEFINED_VARIABLE_"), 89138568Ssam "foo2-bar2") == 0); 90138568Ssam} 91138568Ssam 92138568SsamATF_TC(unset); 93138568SsamATF_TC_HEAD(unset, tc) 94138568Ssam{ 95138568Ssam atf_tc_set_md_var(tc, "descr", "Tests the atf_env_unset function"); 96138568Ssam} 97138568SsamATF_TC_BODY(unset, tc) 98138568Ssam{ 99138568Ssam ATF_REQUIRE(atf_env_has("PATH")); 100138568Ssam RE(atf_env_unset("PATH")); 101138568Ssam ATF_REQUIRE(!atf_env_has("PATH")); 102138568Ssam} 103138568Ssam 104138568Ssam/* --------------------------------------------------------------------- 105138568Ssam * Main. 106170530Ssam * --------------------------------------------------------------------- */ 107170530Ssam 108170530SsamATF_TP_ADD_TCS(tp) 109170530Ssam{ 110170530Ssam ATF_TP_ADD_TC(tp, has); 111170530Ssam ATF_TP_ADD_TC(tp, get); 112172056Ssam ATF_TP_ADD_TC(tp, set); 113172056Ssam ATF_TP_ADD_TC(tp, unset); 114138568Ssam 115138568Ssam return atf_no_error(); 116138568Ssam} 117138568Ssam