xref: /freebsd/usr.bin/lorder/tests/lorder_test.sh (revision aa80cfadff0bb715ca090cbd1b3561a1619251d5)
196da41b6SDag-Erling Smørgrav#
296da41b6SDag-Erling Smørgrav# Copyright (c) 2024 Klara, Inc.
396da41b6SDag-Erling Smørgrav#
496da41b6SDag-Erling Smørgrav# SPDX-License-Identifier: BSD-2-Clause
596da41b6SDag-Erling Smørgrav#
696da41b6SDag-Erling Smørgrav
796da41b6SDag-Erling Smørgravatf_test_case noargs
896da41b6SDag-Erling Smørgravnoargs_head() {
996da41b6SDag-Erling Smørgrav	atf_set descr "No arguments"
1096da41b6SDag-Erling Smørgrav}
1196da41b6SDag-Erling Smørgravnoargs_body() {
1296da41b6SDag-Erling Smørgrav	atf_check -s exit:1 -e match:"^usage:" \
1396da41b6SDag-Erling Smørgrav		  lorder
1496da41b6SDag-Erling Smørgrav}
1596da41b6SDag-Erling Smørgrav
1696da41b6SDag-Erling Smørgravatf_test_case onearg
1796da41b6SDag-Erling Smørgravonearg_head() {
1896da41b6SDag-Erling Smørgrav	atf_set descr "One argument"
1996da41b6SDag-Erling Smørgrav}
2096da41b6SDag-Erling Smørgravonearg_body() {
2196da41b6SDag-Erling Smørgrav	echo "void a(void) { }" >a.c
2296da41b6SDag-Erling Smørgrav	cc -o a.o -c a.c
2396da41b6SDag-Erling Smørgrav	echo "a.o a.o" >output
2496da41b6SDag-Erling Smørgrav	atf_check -o file:output \
2596da41b6SDag-Erling Smørgrav		  lorder *.o
2696da41b6SDag-Erling Smørgrav}
2796da41b6SDag-Erling Smørgrav
2896da41b6SDag-Erling Smørgravatf_test_case dashdash
2996da41b6SDag-Erling Smørgravdashdash_head() {
3096da41b6SDag-Erling Smørgrav	atf_set descr "One argument"
3196da41b6SDag-Erling Smørgrav}
3296da41b6SDag-Erling Smørgravdashdash_body() {
3396da41b6SDag-Erling Smørgrav	echo "void a(void) { }" >a.c
3496da41b6SDag-Erling Smørgrav	cc -o a.o -c a.c
3596da41b6SDag-Erling Smørgrav	echo "a.o a.o" >output
3696da41b6SDag-Erling Smørgrav	atf_check -o file:output \
3796da41b6SDag-Erling Smørgrav		  lorder -- *.o
3896da41b6SDag-Erling Smørgrav}
3996da41b6SDag-Erling Smørgrav
4096da41b6SDag-Erling Smørgravatf_test_case nonexistent
4196da41b6SDag-Erling Smørgravnonexistent_head() {
4296da41b6SDag-Erling Smørgrav	atf_set descr "Nonexistent file"
4396da41b6SDag-Erling Smørgrav}
4496da41b6SDag-Erling Smørgravnonexistent_body() {
4596da41b6SDag-Erling Smørgrav	atf_check -s not-exit:0 -e match:"No such file" -o empty \
4696da41b6SDag-Erling Smørgrav		  lorder nonexistent.o
4796da41b6SDag-Erling Smørgrav}
4896da41b6SDag-Erling Smørgrav
4996da41b6SDag-Erling Smørgravatf_test_case invalid
5096da41b6SDag-Erling Smørgravinvalid_head() {
5196da41b6SDag-Erling Smørgrav	atf_set descr "Invalid file"
5296da41b6SDag-Erling Smørgrav}
5396da41b6SDag-Erling Smørgravinvalid_body() {
5496da41b6SDag-Erling Smørgrav	echo "not an object file" >invalid.o
55*aa80cfadSDag-Erling Smørgrav	atf_check -s not-exit:0 -e match:"not recognized" -o empty \
5696da41b6SDag-Erling Smørgrav		  lorder invalid.o
5796da41b6SDag-Erling Smørgrav}
5896da41b6SDag-Erling Smørgrav
5996da41b6SDag-Erling Smørgravatf_test_case objects
6096da41b6SDag-Erling Smørgravobjects_head() {
6196da41b6SDag-Erling Smørgrav	atf_set descr "Order objects"
6296da41b6SDag-Erling Smørgrav}
6396da41b6SDag-Erling Smørgravobjects_body() {
6496da41b6SDag-Erling Smørgrav	echo "void a(void) { }" >a.c
6596da41b6SDag-Erling Smørgrav	echo "void a(void); void b(void) { a(); }" >b.c
6696da41b6SDag-Erling Smørgrav	echo "void b(void); void c(void) { b(); }" >c.c
6796da41b6SDag-Erling Smørgrav	for n in a b c ; do
6896da41b6SDag-Erling Smørgrav		cc -o $n.o -c $n.c
6996da41b6SDag-Erling Smørgrav		echo "$n.o $n.o"
7096da41b6SDag-Erling Smørgrav	done >output
7196da41b6SDag-Erling Smørgrav	echo "b.o a.o" >>output
7296da41b6SDag-Erling Smørgrav	echo "c.o b.o" >>output
7396da41b6SDag-Erling Smørgrav	atf_check -o file:output \
7496da41b6SDag-Erling Smørgrav		  lorder *.o
7596da41b6SDag-Erling Smørgrav}
7696da41b6SDag-Erling Smørgrav
7796da41b6SDag-Erling Smørgravatf_test_case archives
7896da41b6SDag-Erling Smørgravarchives_head() {
7996da41b6SDag-Erling Smørgrav	atf_set descr "Order archives"
8096da41b6SDag-Erling Smørgrav}
8196da41b6SDag-Erling Smørgravarchives_body() {
8296da41b6SDag-Erling Smørgrav	echo "void a(void) { }" >a.c
8396da41b6SDag-Erling Smørgrav	echo "void a(void); void b(void) { a(); }" >b.c
8496da41b6SDag-Erling Smørgrav	echo "void b(void); void c(void) { b(); }" >c.c
8596da41b6SDag-Erling Smørgrav	echo "void e(void); void d(void) { e(); }" >d.c
8696da41b6SDag-Erling Smørgrav	echo "void d(void); void e(void) { d(); }" >e.c
8796da41b6SDag-Erling Smørgrav	for n in a b c d e ; do
8896da41b6SDag-Erling Smørgrav		cc -o $n.o -c $n.c
8996da41b6SDag-Erling Smørgrav	done
9096da41b6SDag-Erling Smørgrav	for n in a b c ; do
9196da41b6SDag-Erling Smørgrav		ar -crs $n.a $n.o
9296da41b6SDag-Erling Smørgrav		echo "$n.a $n.a"
9396da41b6SDag-Erling Smørgrav	done >output
9496da41b6SDag-Erling Smørgrav	ar -crs z.a d.o e.o
9596da41b6SDag-Erling Smørgrav	echo "z.a z.a" >>output
9696da41b6SDag-Erling Smørgrav	echo "b.a a.a" >>output
9796da41b6SDag-Erling Smørgrav	echo "c.a b.a" >>output
9896da41b6SDag-Erling Smørgrav	atf_check -o file:output \
9996da41b6SDag-Erling Smørgrav		  lorder *.a
10096da41b6SDag-Erling Smørgrav}
10196da41b6SDag-Erling Smørgrav
10296da41b6SDag-Erling Smørgravatf_init_test_cases()
10396da41b6SDag-Erling Smørgrav{
10496da41b6SDag-Erling Smørgrav	atf_add_test_case noargs
10596da41b6SDag-Erling Smørgrav	atf_add_test_case onearg
10696da41b6SDag-Erling Smørgrav	atf_add_test_case dashdash
10796da41b6SDag-Erling Smørgrav	atf_add_test_case nonexistent
10896da41b6SDag-Erling Smørgrav	atf_add_test_case invalid
10996da41b6SDag-Erling Smørgrav	atf_add_test_case objects
11096da41b6SDag-Erling Smørgrav	atf_add_test_case archives
11196da41b6SDag-Erling Smørgrav}
112