Subject: Re: [PATCH net-next] selftests: forwarding: Import top-level lib.sh through $lib_dir

From: Benjamin Poirier <[email-masked]>
Date: Tue, 12 Dec 2023 15:17:01 -0500

On 2023-12-12 18:22 +0100, Petr Machata wrote:
> 
> Hangbin Liu <[email-masked]> writes:
> 
> > On Mon, Dec 11, 2023 at 01:01:06PM +0100, Petr Machata wrote:
> >
> >> @@ -38,7 +38,7 @@ if [[ -f $relative_path/forwarding.config ]]; then
> >>  	source "$relative_path/forwarding.config"
> >>  fi
> >>  
> >> -source ../lib.sh
> >> +source ${lib_dir-.}/../lib.sh
> >>  ##############################################################################
> >>  # Sanity checks
> >
> > Hi Petr,
> >
> > Thanks for the report. However, this doesn't fix the soft link scenario. e.g.
> > The bonding tests tools/testing/selftests/drivers/net/bonding add a soft link
> > net_forwarding_lib.sh and source it directly in dev_addr_lists.sh.
> 
> I see, I didn't realize those exist.
> 
> > So how about something like:
> >
> > diff --git a/tools/testing/selftests/net/forwarding/lib.sh b/tools/testing/selftests/net/forwarding/lib.sh
> > index 8f6ca458af9a..7f90248e05d6 100755
> > --- a/tools/testing/selftests/net/forwarding/lib.sh
> > +++ b/tools/testing/selftests/net/forwarding/lib.sh
> > @@ -38,7 +38,8 @@ if [[ -f $relative_path/forwarding.config ]]; then
> >         source "$relative_path/forwarding.config"
> >  fi
> >
> > -source ../lib.sh
> > +forwarding_dir=$(dirname $(readlink -f $BASH_SOURCE))
> > +source ${forwarding_dir}/../lib.sh
> 
> Yep, that's gonna work.
> I'll pass through our tests and send later this week.
> 

There is also another related issue which is that generating a test
archive using gen_tar for the tests under drivers/net/bonding does not
include the new lib.sh. This is similar to the issue reported here:
https://lore.kernel.org/netdev/[email-masked]/

/tmp/x# ./run_kselftest.sh
TAP version 13
[...]
# timeout set to 120
# selftests: drivers/net/bonding: dev_addr_lists.sh
# ./net_forwarding_lib.sh: line 41: ../lib.sh: No such file or directory
# TEST: bonding cleanup mode active-backup                            [ OK ]
# TEST: bonding cleanup mode 802.3ad                                  [ OK ]
# TEST: bonding LACPDU multicast address to slave (from bond down)    [ OK ]
# TEST: bonding LACPDU multicast address to slave (from bond up)      [ OK ]
ok 4 selftests: drivers/net/bonding: dev_addr_lists.sh
[...]