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