Skip to content

Commit

Permalink
ci: Simplify run_test.sh script.
Browse files Browse the repository at this point in the history
Run tests and linters against a hard-coded set of local submodules
instead of attempting to find submodules dynamically.

While this has the obvious drawback of needing to manually update the
list of submodules, it greatly simplifies the script by removing a bunch
of regexes and string manipulation. This trade-off seems worthwhile
because the list of submodules in this repo will not be something which
changes often.

This change makes the script less brittle because it is hard-coded to
always run against the local code, regardless of any changes to module
versionining or project dependencies.
  • Loading branch information
jholdstock committed May 29, 2024
1 parent 6e558fb commit 1720fd2
Showing 1 changed file with 23 additions and 20 deletions.
43 changes: 23 additions & 20 deletions run_tests.sh
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#!/usr/bin/env bash
#
# Copyright (c) 2020-2023 The Decred developers
# Copyright (c) 2020-2024 The Decred developers
# Use of this source code is governed by an ISC
# license that can be found in the LICENSE file.
#
Expand All @@ -11,30 +11,33 @@ set -e

go version

# Run tests on root module and all submodules.
echo "==> test all modules"
ROOTPKG="github.com/decred/vspd"
GORACE="halt_on_error=1" go test -race $ROOTPKG/...
# This list needs to be updated if new submodules are added to the vspd repo.
submodules="client types"

# Find submodules.
ROOTPKGPATTERN=$(echo $ROOTPKG | sed 's/\\/\\\\/g' | sed 's/\//\\\//g')
MODPATHS=$(go list -m all | grep "^$ROOTPKGPATTERN" | cut -d' ' -f1)
# Test main module.
echo "==> test main module"
GORACE="halt_on_error=1" go test -race ./...

for module in $MODPATHS; do

echo "==> lint ${module}"
# Test all submodules in a subshell.
for module in $submodules
do
echo "==> test ${module}"
(
cd $module
GORACE="halt_on_error=1" go test -race .
)
done

# Get the path of the module.
MODNAME=$(echo $module | sed -E -e "s/^$ROOTPKGPATTERN//" \
-e 's,^/,,' -e 's,/v[0-9]+$,,')
if [ -z "$MODNAME" ]; then
MODNAME=.
fi
# Lint main module.
echo "==> lint main module"
golangci-lint run

# Run commands in the module directory as a subshell.
# Lint all submodules in a subshell.
for module in $submodules
do
echo "==> lint ${module}"
(
cd $MODNAME

cd $module
golangci-lint run
)
done
Expand Down

0 comments on commit 1720fd2

Please sign in to comment.