xref: /freebsd/usr.bin/printenv/tests/printenv_test.sh (revision 1e3214571b78a659ccf8174e1528546d5c385a20)
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