1*96da41b6SDag-Erling Smørgrav# 2*96da41b6SDag-Erling Smørgrav# Copyright (c) 2024 Klara, Inc. 3*96da41b6SDag-Erling Smørgrav# 4*96da41b6SDag-Erling Smørgrav# SPDX-License-Identifier: BSD-2-Clause 5*96da41b6SDag-Erling Smørgrav# 6*96da41b6SDag-Erling Smørgrav 7*96da41b6SDag-Erling Smørgravatf_test_case noargs 8*96da41b6SDag-Erling Smørgravnoargs_head() { 9*96da41b6SDag-Erling Smørgrav atf_set descr "No arguments" 10*96da41b6SDag-Erling Smørgrav} 11*96da41b6SDag-Erling Smørgravnoargs_body() { 12*96da41b6SDag-Erling Smørgrav atf_check -s exit:1 -e match:"^usage:" \ 13*96da41b6SDag-Erling Smørgrav lorder 14*96da41b6SDag-Erling Smørgrav} 15*96da41b6SDag-Erling Smørgrav 16*96da41b6SDag-Erling Smørgravatf_test_case onearg 17*96da41b6SDag-Erling Smørgravonearg_head() { 18*96da41b6SDag-Erling Smørgrav atf_set descr "One argument" 19*96da41b6SDag-Erling Smørgrav} 20*96da41b6SDag-Erling Smørgravonearg_body() { 21*96da41b6SDag-Erling Smørgrav echo "void a(void) { }" >a.c 22*96da41b6SDag-Erling Smørgrav cc -o a.o -c a.c 23*96da41b6SDag-Erling Smørgrav echo "a.o a.o" >output 24*96da41b6SDag-Erling Smørgrav atf_check -o file:output \ 25*96da41b6SDag-Erling Smørgrav lorder *.o 26*96da41b6SDag-Erling Smørgrav} 27*96da41b6SDag-Erling Smørgrav 28*96da41b6SDag-Erling Smørgravatf_test_case dashdash 29*96da41b6SDag-Erling Smørgravdashdash_head() { 30*96da41b6SDag-Erling Smørgrav atf_set descr "One argument" 31*96da41b6SDag-Erling Smørgrav} 32*96da41b6SDag-Erling Smørgravdashdash_body() { 33*96da41b6SDag-Erling Smørgrav echo "void a(void) { }" >a.c 34*96da41b6SDag-Erling Smørgrav cc -o a.o -c a.c 35*96da41b6SDag-Erling Smørgrav echo "a.o a.o" >output 36*96da41b6SDag-Erling Smørgrav atf_check -o file:output \ 37*96da41b6SDag-Erling Smørgrav lorder -- *.o 38*96da41b6SDag-Erling Smørgrav} 39*96da41b6SDag-Erling Smørgrav 40*96da41b6SDag-Erling Smørgravatf_test_case nonexistent 41*96da41b6SDag-Erling Smørgravnonexistent_head() { 42*96da41b6SDag-Erling Smørgrav atf_set descr "Nonexistent file" 43*96da41b6SDag-Erling Smørgrav} 44*96da41b6SDag-Erling Smørgravnonexistent_body() { 45*96da41b6SDag-Erling Smørgrav atf_check -s not-exit:0 -e match:"No such file" -o empty \ 46*96da41b6SDag-Erling Smørgrav lorder nonexistent.o 47*96da41b6SDag-Erling Smørgrav} 48*96da41b6SDag-Erling Smørgrav 49*96da41b6SDag-Erling Smørgravatf_test_case invalid 50*96da41b6SDag-Erling Smørgravinvalid_head() { 51*96da41b6SDag-Erling Smørgrav atf_set descr "Invalid file" 52*96da41b6SDag-Erling Smørgrav} 53*96da41b6SDag-Erling Smørgravinvalid_body() { 54*96da41b6SDag-Erling Smørgrav echo "not an object file" >invalid.o 55*96da41b6SDag-Erling Smørgrav atf_check -s not-exit:0 -e match:"File format not" -o empty \ 56*96da41b6SDag-Erling Smørgrav lorder invalid.o 57*96da41b6SDag-Erling Smørgrav} 58*96da41b6SDag-Erling Smørgrav 59*96da41b6SDag-Erling Smørgravatf_test_case objects 60*96da41b6SDag-Erling Smørgravobjects_head() { 61*96da41b6SDag-Erling Smørgrav atf_set descr "Order objects" 62*96da41b6SDag-Erling Smørgrav} 63*96da41b6SDag-Erling Smørgravobjects_body() { 64*96da41b6SDag-Erling Smørgrav echo "void a(void) { }" >a.c 65*96da41b6SDag-Erling Smørgrav echo "void a(void); void b(void) { a(); }" >b.c 66*96da41b6SDag-Erling Smørgrav echo "void b(void); void c(void) { b(); }" >c.c 67*96da41b6SDag-Erling Smørgrav for n in a b c ; do 68*96da41b6SDag-Erling Smørgrav cc -o $n.o -c $n.c 69*96da41b6SDag-Erling Smørgrav echo "$n.o $n.o" 70*96da41b6SDag-Erling Smørgrav done >output 71*96da41b6SDag-Erling Smørgrav echo "b.o a.o" >>output 72*96da41b6SDag-Erling Smørgrav echo "c.o b.o" >>output 73*96da41b6SDag-Erling Smørgrav atf_check -o file:output \ 74*96da41b6SDag-Erling Smørgrav lorder *.o 75*96da41b6SDag-Erling Smørgrav} 76*96da41b6SDag-Erling Smørgrav 77*96da41b6SDag-Erling Smørgravatf_test_case archives 78*96da41b6SDag-Erling Smørgravarchives_head() { 79*96da41b6SDag-Erling Smørgrav atf_set descr "Order archives" 80*96da41b6SDag-Erling Smørgrav} 81*96da41b6SDag-Erling Smørgravarchives_body() { 82*96da41b6SDag-Erling Smørgrav echo "void a(void) { }" >a.c 83*96da41b6SDag-Erling Smørgrav echo "void a(void); void b(void) { a(); }" >b.c 84*96da41b6SDag-Erling Smørgrav echo "void b(void); void c(void) { b(); }" >c.c 85*96da41b6SDag-Erling Smørgrav echo "void e(void); void d(void) { e(); }" >d.c 86*96da41b6SDag-Erling Smørgrav echo "void d(void); void e(void) { d(); }" >e.c 87*96da41b6SDag-Erling Smørgrav for n in a b c d e ; do 88*96da41b6SDag-Erling Smørgrav cc -o $n.o -c $n.c 89*96da41b6SDag-Erling Smørgrav done 90*96da41b6SDag-Erling Smørgrav for n in a b c ; do 91*96da41b6SDag-Erling Smørgrav ar -crs $n.a $n.o 92*96da41b6SDag-Erling Smørgrav echo "$n.a $n.a" 93*96da41b6SDag-Erling Smørgrav done >output 94*96da41b6SDag-Erling Smørgrav ar -crs z.a d.o e.o 95*96da41b6SDag-Erling Smørgrav echo "z.a z.a" >>output 96*96da41b6SDag-Erling Smørgrav echo "b.a a.a" >>output 97*96da41b6SDag-Erling Smørgrav echo "c.a b.a" >>output 98*96da41b6SDag-Erling Smørgrav atf_check -o file:output \ 99*96da41b6SDag-Erling Smørgrav lorder *.a 100*96da41b6SDag-Erling Smørgrav} 101*96da41b6SDag-Erling Smørgrav 102*96da41b6SDag-Erling Smørgravatf_init_test_cases() 103*96da41b6SDag-Erling Smørgrav{ 104*96da41b6SDag-Erling Smørgrav atf_add_test_case noargs 105*96da41b6SDag-Erling Smørgrav atf_add_test_case onearg 106*96da41b6SDag-Erling Smørgrav atf_add_test_case dashdash 107*96da41b6SDag-Erling Smørgrav atf_add_test_case nonexistent 108*96da41b6SDag-Erling Smørgrav atf_add_test_case invalid 109*96da41b6SDag-Erling Smørgrav atf_add_test_case objects 110*96da41b6SDag-Erling Smørgrav atf_add_test_case archives 111*96da41b6SDag-Erling Smørgrav} 112