cat (2551B)
- #!/usr/bin/env atf-sh
 - # SPDX-FileCopyrightText: 2017-2022 Haelwenn (lanodan) Monnier <contact+utils@hacktivis.me>
 - # SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only
 - atf_test_case allfile
 - allfile_body() {
 - atf_check -o file:inputs/all_bytes ../bin/cat inputs/all_bytes
 - }
 - atf_test_case allinput
 - allinput_body() {
 - atf_check -o file:inputs/all_bytes ../bin/cat <inputs/all_bytes
 - }
 - atf_test_case alldashinput
 - alldashinput_body() {
 - atf_check -o file:inputs/all_bytes ../bin/cat - <inputs/all_bytes
 - }
 - atf_test_case devnull
 - devnull_body() {
 - atf_check ../bin/cat /dev/null
 - atf_check ../bin/cat </dev/null
 - atf_check ../bin/cat - </dev/null
 - }
 - atf_test_case noperm cleanup
 - noperm_body() {
 - touch inputs/chmod_000 || atf_fail "touching chmod_000"
 - chmod 0000 inputs/chmod_000 || atf_fail "chmod 0000 chmod_000"
 - # shellcheck disable=SC1112
 - atf_check -s exit:1 -e 'inline:\nError opening ‘inputs/chmod_000’: Permission denied\n' ../bin/cat inputs/chmod_000
 - }
 - noperm_cleanup() {
 - chmod 0600 inputs/chmod_000 || atf_fail "chmod 0600 chmod_000"
 - rm inputs/chmod_000 || atf_fail "rm chmod_000"
 - }
 - atf_test_case devfull
 - devfull_body() {
 - atf_check -s exit:1 -e 'inline:\nError writing: No space left on device\n' sh -c '../bin/cat inputs/all_bytes >/dev/full'
 - atf_check -s exit:1 -e 'inline:\nError writing: No space left on device\n' sh -c '../bin/cat <inputs/all_bytes >/dev/full'
 - atf_check -s exit:1 -e 'inline:\nError writing: No space left on device\n' sh -c '../bin/cat - <inputs/all_bytes >/dev/full'
 - }
 - atf_test_case readslash
 - readslash_body() {
 - [ "$(uname -s)" = "NetBSD" ] && atf_skip "NetBSD allows to read directories"
 - # shellcheck disable=SC1112
 - atf_check -s exit:1 -e 'inline:\nError reading ‘/’: Is a directory\n' ../bin/cat /
 - }
 - atf_test_case enoent
 - enoent_body() {
 - # shellcheck disable=SC1112
 - atf_check -s exit:1 -e 'inline:\nError opening ‘/var/empty/e/no/ent’: No such file or directory\n' ../bin/cat /var/empty/e/no/ent
 - }
 - atf_test_case doubledash
 - doubledash_body() {
 - atf_check -o file:inputs/all_bytes -- ../bin/cat -- inputs/all_bytes
 - # shellcheck disable=SC1112
 - atf_check -s exit:1 -e 'inline:\nError opening ‘---’: No such file or directory\n' -o empty -- ../bin/cat --- inputs/all_bytes
 - }
 - atf_init_test_cases() {
 - cd "$(atf_get_srcdir)" || exit 1
 - atf_add_test_case allfile
 - atf_add_test_case allinput
 - atf_add_test_case alldashinput
 - atf_add_test_case devnull
 - atf_add_test_case noperm
 - atf_add_test_case devfull
 - atf_add_test_case readslash
 - atf_add_test_case enoent
 - atf_add_test_case doubledash
 - }