asa: Add some unit tests.

MFC after:	1 week
Sponsored by:	Klara, Inc.
Reviewed by:	markj
Differential Revision:	https://reviews.freebsd.org/D40564
This commit is contained in:
Dag-Erling Smørgrav 2023-06-15 19:23:26 +00:00
parent f08f90e698
commit b7412da2e1
4 changed files with 108 additions and 2 deletions

View file

@ -902,6 +902,8 @@
usr.bin
apply
..
asa
..
awk
bugs-fixed
..

View file

@ -1,6 +1,7 @@
# $NetBSD: Makefile,v 1.2 1995/03/25 18:04:51 glass Exp $
# $FreeBSD$
.include <src.opts.mk>
PROG= asa
HAS_TESTS=
SUBDIR.${MK_TESTS}= tests
.include <bsd.prog.mk>

View file

@ -0,0 +1,4 @@
PACKAGE= tests
ATF_TESTS_SH= asa_test
.include <bsd.test.mk>

View file

@ -0,0 +1,99 @@
#
# Copyright (c) 2023 Klara, Inc.
#
# SPDX-License-Identifier: BSD-2-Clause
#
a="The magic words are"
b="Squeamish Ossifrage"
atf_check_asa() {
atf_check -o file:"$2" asa "$1"
atf_check -o file:"$2" asa <"$1"
atf_check -o file:"$2" asa - <"$1"
}
atf_test_case space
space_head() {
atf_set descr "First character on line is ' '"
}
space_body() {
printf " %s\n %s\n" "$a" "$b" >infile
printf "%s\n%s\n" "$a" "$b" >outfile
atf_check_asa infile outfile
}
atf_test_case zero
zero_head() {
atf_set descr "First character on line is '0'"
}
zero_body() {
printf " %s\n0%s\n" "$a" "$b" >infile
printf "%s\n\n%s\n" "$a" "$b" >outfile
atf_check_asa infile outfile
}
atf_test_case one
one_head() {
atf_set descr "First character on line is '1'"
}
one_body() {
printf " %s\n1%s\n" "$a" "$b" >infile
printf "%s\f%s\n" "$a" "$b" >outfile
atf_check_asa infile outfile
}
atf_test_case plus
plus_head() {
atf_set descr "First character on line is '+'"
}
plus_body() {
printf " %s\n+%s\n" "$a" "$b" >infile
printf "%s\r%s\n" "$a" "$b" >outfile
atf_check_asa infile outfile
}
atf_test_case plus_top
plus_top_head() {
atf_set descr "First character in input is '+'"
}
plus_top_body() {
printf "+%s\n+%s\n" "$a" "$b" >infile
printf "%s\r%s\n" "$a" "$b" >outfile
atf_check_asa infile outfile
}
atf_test_case stdout
stdout_head() {
atf_set descr "Failure to write to stdout"
}
stdout_body() {
(
trap "" PIPE
echo " $a $b" | asa 2>stderr
echo $? >result
) | true
atf_check -o inline:"1\n" cat result
atf_check -o match:"stdout" cat stderr
}
atf_test_case dashdash
dashdash_head() {
atf_set descr "Use -- to end options"
}
dashdash_body() {
echo " $a $b" >-infile
atf_check -s not-exit:0 -e match:"illegal option" asa -infile
atf_check -o inline:"$a $b\n" asa -- -infile
}
atf_init_test_cases()
{
atf_add_test_case space
atf_add_test_case zero
atf_add_test_case one
atf_add_test_case plus
atf_add_test_case plus_top
atf_add_test_case stdout
atf_add_test_case dashdash
}