mirror of
https://github.com/opnsense/src.git
synced 2026-06-04 14:26:03 -04:00
touch: Add unit tests.
MFC after: 1 week Reviewed by: bapt Differential Revision: https://reviews.freebsd.org/D44505
This commit is contained in:
parent
aa69e0f212
commit
74a4aa9b15
4 changed files with 166 additions and 0 deletions
|
|
@ -1187,6 +1187,8 @@
|
|||
..
|
||||
tftp
|
||||
..
|
||||
touch
|
||||
..
|
||||
tr
|
||||
..
|
||||
truncate
|
||||
|
|
|
|||
|
|
@ -1,4 +1,7 @@
|
|||
.include <src.opts.mk>
|
||||
|
||||
PROG= touch
|
||||
HAS_TESTS=
|
||||
SUBDIR.${MK_TESTS}= tests
|
||||
|
||||
.include <bsd.prog.mk>
|
||||
|
|
|
|||
4
usr.bin/touch/tests/Makefile
Normal file
4
usr.bin/touch/tests/Makefile
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
PACKAGE= tests
|
||||
ATF_TESTS_SH= touch_test
|
||||
|
||||
.include <bsd.test.mk>
|
||||
157
usr.bin/touch/tests/touch_test.sh
Normal file
157
usr.bin/touch/tests/touch_test.sh
Normal file
|
|
@ -0,0 +1,157 @@
|
|||
#
|
||||
# Copyright (c) 2024 Dag-Erling Smørgrav
|
||||
#
|
||||
# SPDX-License-Identifier: BSD-2-Clause
|
||||
#
|
||||
|
||||
export TZ=UTC
|
||||
|
||||
atf_check_mtime()
|
||||
{
|
||||
local mtime=$1 filename=$2
|
||||
atf_check -o inline:"$((mtime))\n" stat -f%m "$filename"
|
||||
}
|
||||
|
||||
atf_test_case touch_none
|
||||
touch_none_head()
|
||||
{
|
||||
atf_set descr "No arguments"
|
||||
}
|
||||
touch_none_body()
|
||||
{
|
||||
atf_check -s exit:1 -e match:"^usage" touch
|
||||
}
|
||||
|
||||
atf_test_case touch_one
|
||||
touch_one_head()
|
||||
{
|
||||
atf_set descr "One argument"
|
||||
}
|
||||
touch_one_body()
|
||||
{
|
||||
atf_check touch foo
|
||||
atf_check test -f foo
|
||||
}
|
||||
|
||||
atf_test_case touch_multiple
|
||||
touch_multiple_head()
|
||||
{
|
||||
atf_set descr "Multiple arguments"
|
||||
}
|
||||
touch_multiple_body()
|
||||
{
|
||||
atf_check touch foo bar baz
|
||||
atf_check test -f foo -a -f bar -a -f baz
|
||||
}
|
||||
|
||||
atf_test_case touch_absolute
|
||||
touch_absolute_head()
|
||||
{
|
||||
atf_set descr "Absolute date / time"
|
||||
}
|
||||
touch_absolute_body()
|
||||
{
|
||||
atf_check touch -t 7001010101 foo
|
||||
atf_check_mtime 3660 foo
|
||||
atf_check rm foo
|
||||
|
||||
atf_check touch -t 7001010101.01 foo
|
||||
atf_check_mtime 3661 foo
|
||||
atf_check rm foo
|
||||
|
||||
atf_check touch -t 196912312359 foo
|
||||
atf_check_mtime -60 foo
|
||||
atf_check rm foo
|
||||
|
||||
atf_check touch -t 196912312359.58 foo
|
||||
atf_check_mtime -2 foo
|
||||
atf_check rm foo
|
||||
|
||||
atf_check touch -t 196912312359.59 foo
|
||||
atf_expect_fail "VFS interprets -1 as “do not set”"
|
||||
atf_check_mtime -1 foo
|
||||
atf_check rm foo
|
||||
|
||||
atf_check touch -d1969-12-31T23:59:58 foo
|
||||
atf_check_mtime -2 foo
|
||||
atf_check rm foo
|
||||
|
||||
atf_check touch -d1969-12-31\ 23:59:58 foo
|
||||
atf_check_mtime -2 foo
|
||||
atf_check rm foo
|
||||
|
||||
atf_check env TZ=CET touch -d1970-01-01T00:59:58 foo
|
||||
atf_check_mtime -2 foo
|
||||
atf_check rm foo
|
||||
|
||||
atf_check env TZ=CET touch -d1970-01-01T00:59:58Z foo
|
||||
atf_check_mtime 3598 foo
|
||||
atf_check rm foo
|
||||
|
||||
atf_check touch -d1969-12-31T23:59:59Z foo
|
||||
atf_expect_fail "VFS interprets -1 as “do not set”"
|
||||
atf_check_mtime -1 foo
|
||||
atf_check rm foo
|
||||
}
|
||||
|
||||
atf_test_case touch_relative
|
||||
touch_relative_head()
|
||||
{
|
||||
atf_set descr "Relative date / time"
|
||||
}
|
||||
touch_relative_body()
|
||||
{
|
||||
atf_check touch -t 202403241234.56 foo
|
||||
atf_check_mtime 1711283696 foo
|
||||
atf_check touch -A -36 foo
|
||||
atf_check_mtime 1711283660 foo
|
||||
atf_check touch -A -0100 foo
|
||||
atf_check_mtime 1711283600 foo
|
||||
atf_check touch -A -010000 foo
|
||||
atf_check_mtime 1711280000 foo
|
||||
atf_check touch -A 010136 foo
|
||||
atf_check_mtime 1711283696 foo
|
||||
}
|
||||
|
||||
atf_test_case touch_copy
|
||||
touch_copy_head()
|
||||
{
|
||||
atf_set descr "Copy time from another file"
|
||||
}
|
||||
touch_copy_body()
|
||||
{
|
||||
atf_check touch -t 202403241234.56 foo
|
||||
atf_check_mtime 1711283696 foo
|
||||
atf_check touch -t 7001010000 bar
|
||||
atf_check_mtime 0 bar
|
||||
atf_check touch -r foo bar
|
||||
atf_check_mtime 1711283696 bar
|
||||
}
|
||||
|
||||
atf_test_case touch_nocreate
|
||||
touch_nocreate_head()
|
||||
{
|
||||
atf_set descr "Do not create file"
|
||||
}
|
||||
touch_nocreate_body()
|
||||
{
|
||||
atf_check touch -t 202403241234.56 foo
|
||||
atf_check_mtime 1711283696 foo
|
||||
atf_check touch -c -t 7001010000 foo bar
|
||||
atf_check_mtime 0 foo
|
||||
atf_check -s exit:1 test -f bar
|
||||
atf_check touch -c bar
|
||||
atf_check -s exit:1 test -f bar
|
||||
}
|
||||
|
||||
atf_init_test_cases()
|
||||
{
|
||||
atf_add_test_case touch_none
|
||||
atf_add_test_case touch_one
|
||||
atf_add_test_case touch_multiple
|
||||
atf_add_test_case touch_absolute
|
||||
atf_add_test_case touch_relative
|
||||
atf_add_test_case touch_copy
|
||||
atf_add_test_case touch_nocreate
|
||||
# TODO: add test cases for -a, -h, -m
|
||||
}
|
||||
Loading…
Reference in a new issue