From 1720fd206282086c996c6bbca0aebd688c866bc2 Mon Sep 17 00:00:00 2001 From: jholdstock Date: Wed, 29 May 2024 10:47:29 +0100 Subject: [PATCH] ci: Simplify run_test.sh script. 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. --- run_tests.sh | 43 +++++++++++++++++++++++-------------------- 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/run_tests.sh b/run_tests.sh index 40d98c2e..cadf1762 100755 --- a/run_tests.sh +++ b/run_tests.sh @@ -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. # @@ -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