From 94c6f98a4fab50f79c08734368a504a8fd1f91a1 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