1c989957fSWang-Yan-Hao# 2c989957fSWang-Yan-Hao# SPDX-License-Identifier: BSD-2-Clause 3c989957fSWang-Yan-Hao# 4c989957fSWang-Yan-Hao# Copyright (c) 2023 The FreeBSD Foundation 5c989957fSWang-Yan-Hao# 6*1e321457SAlan Somers# This software was developed by Yan-Hao Wang <bses30074@gmail.com> 7c989957fSWang-Yan-Hao# under sponsorship from the FreeBSD Foundation. 8c989957fSWang-Yan-Hao# 9c989957fSWang-Yan-Hao# Redistribution and use in source and binary forms, with or without 10c989957fSWang-Yan-Hao# modification, are permitted provided that the following conditions 11c989957fSWang-Yan-Hao# are met: 12c989957fSWang-Yan-Hao# 1. Redistributions of source code must retain the above copyright 13c989957fSWang-Yan-Hao# notice, this list of conditions and the following disclaimer. 14c989957fSWang-Yan-Hao# 2. Redistributions in binary form must reproduce the above copyright 15c989957fSWang-Yan-Hao# notice, this list of conditions and the following disclaimer in the 16c989957fSWang-Yan-Hao# documentation and/or other materials provided with the distribution. 17c989957fSWang-Yan-Hao# 18c989957fSWang-Yan-Hao# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS "AS IS" AND 19c989957fSWang-Yan-Hao# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20c989957fSWang-Yan-Hao# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 21c989957fSWang-Yan-Hao# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 22c989957fSWang-Yan-Hao# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23c989957fSWang-Yan-Hao# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 24c989957fSWang-Yan-Hao# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 25c989957fSWang-Yan-Hao# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 26c989957fSWang-Yan-Hao# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 27c989957fSWang-Yan-Hao# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 28c989957fSWang-Yan-Hao# SUCH DAMAGE 29c989957fSWang-Yan-Hao# 30c989957fSWang-Yan-Hao 31c989957fSWang-Yan-Haoatf_test_case base 32c989957fSWang-Yan-Haobase_head() 33c989957fSWang-Yan-Hao{ 34c989957fSWang-Yan-Hao atf_set "descr" "Check that all reported variables exist with the reported values." 35c989957fSWang-Yan-Hao} 36c989957fSWang-Yan-Haobase_body() 37c989957fSWang-Yan-Hao{ 38c989957fSWang-Yan-Hao printenv | while IFS= read -r env; do 39c989957fSWang-Yan-Hao env_name=${env%%=*} 40c989957fSWang-Yan-Hao env_value=${env#*=} 41c989957fSWang-Yan-Hao expected_value=$(eval echo "\$$env_name") 42c989957fSWang-Yan-Hao atf_check_equal "${env_value}" "${expected_value}" 43c989957fSWang-Yan-Hao done 44c989957fSWang-Yan-Hao} 45c989957fSWang-Yan-Hao 46c989957fSWang-Yan-Haoatf_test_case add_delete_env 47c989957fSWang-Yan-Haoadd_delete_env_head() 48c989957fSWang-Yan-Hao{ 49c989957fSWang-Yan-Hao atf_set "descr" "New changes to the environment should be reflected in printenv's output" 50c989957fSWang-Yan-Hao} 51c989957fSWang-Yan-Haoadd_delete_env_body() 52c989957fSWang-Yan-Hao{ 53c989957fSWang-Yan-Hao env_name=$(date +"%Y%m%d%H%M%S") 54c989957fSWang-Yan-Hao export "env_${env_name}=value" 55c989957fSWang-Yan-Hao atf_check -o inline:"value\n" printenv "env_${env_name}" 56c989957fSWang-Yan-Hao unset "env_${env_name}" 57c989957fSWang-Yan-Hao atf_check -s exit:1 printenv "env_${env_name}" 58c989957fSWang-Yan-Hao} 59c989957fSWang-Yan-Hao 60c989957fSWang-Yan-Haoatf_init_test_cases() 61c989957fSWang-Yan-Hao{ 62c989957fSWang-Yan-Hao atf_add_test_case base 63c989957fSWang-Yan-Hao atf_add_test_case add_delete_env 64c989957fSWang-Yan-Hao} 65