1
0
mirror of https://blitiri.com.ar/repos/chasquid synced 2026-01-27 20:45:56 +00:00

test: Improve layout of helper binaries

This patch moves the test helper binaries to a "one directory per
helper" layout, and also makes them to be ignored in the coverage build
instead of all builds.

With this change, "go build ./..." will build all binaries including the
test helpers, which helps make sure that module manage automation also
considers them. In particular, this makes "go mod tidy" work fine.
This commit is contained in:
Alberto Bertogli
2022-08-27 18:33:33 +01:00
parent 567ad35122
commit 21e8d50df6
11 changed files with 37 additions and 27 deletions

View File

@@ -0,0 +1,92 @@
//usr/bin/env go run "$0" "$@"; exit $?
//
// From: https://git.lukeshu.com/go/cmd/gocovcat/
//
//go:build !coverage
// +build !coverage
// Copyright 2017 Luke Shumaker <lukeshu@parabola.nu>
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
// Command gocovcat combines multiple go cover runs, and prints the
// result on stdout.
package main
import (
"bufio"
"fmt"
"os"
"sort"
"strconv"
"strings"
)
func handleErr(err error) {
if err != nil {
fmt.Fprintf(os.Stderr, "%v\n", err)
os.Exit(1)
}
}
func main() {
modeBool := false
blocks := map[string]int{}
for _, filename := range os.Args[1:] {
file, err := os.Open(filename)
handleErr(err)
buf := bufio.NewScanner(file)
for buf.Scan() {
line := buf.Text()
if strings.HasPrefix(line, "mode: ") {
m := strings.TrimPrefix(line, "mode: ")
switch m {
case "set":
modeBool = true
case "count", "atomic":
// do nothing
default:
fmt.Fprintf(os.Stderr, "Unrecognized mode: %s\n", m)
os.Exit(1)
}
} else {
sp := strings.LastIndexByte(line, ' ')
block := line[:sp]
cntStr := line[sp+1:]
cnt, err := strconv.Atoi(cntStr)
handleErr(err)
blocks[block] += cnt
}
}
handleErr(buf.Err())
}
keys := make([]string, 0, len(blocks))
for key := range blocks {
keys = append(keys, key)
}
sort.Strings(keys)
modeStr := "count"
if modeBool {
modeStr = "set"
}
fmt.Printf("mode: %s\n", modeStr)
for _, block := range keys {
cnt := blocks[block]
if modeBool && cnt > 1 {
cnt = 1
}
fmt.Printf("%s %d\n", block, cnt)
}
}