From 00a8bf683e3f215c147a43af0c135cc5b0844e56 Mon Sep 17 00:00:00 2001 From: Sebastien Binet Date: Mon, 10 Jan 2022 17:06:28 +0100 Subject: [PATCH 1/2] ci: update CI scaffolding --- ci/run-tests.go | 76 +++++++++++++++++++++++++++++++++---------------- 1 file changed, 52 insertions(+), 24 deletions(-) diff --git a/ci/run-tests.go b/ci/run-tests.go index 031a08ab..42558564 100644 --- a/ci/run-tests.go +++ b/ci/run-tests.go @@ -1,7 +1,8 @@ -// Copyright 2018 The go-python Authors. All rights reserved. +// Copyright ©2018 The go-python Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build ignore // +build ignore package main @@ -10,32 +11,33 @@ import ( "bufio" "bytes" "flag" - "io/ioutil" + "fmt" "log" "os" "os/exec" "strings" + "time" ) func main() { log.SetPrefix("ci: ") log.SetFlags(0) + start := time.Now() + defer func() { + log.Printf("elapsed time: %v\n", time.Since(start)) + }() + var ( - race = flag.Bool("race", false, "enable race detector") - cover = flag.Bool("cover", false, "enable code coverage") - tags = flag.String("tags", "", "build tags") + race = flag.Bool("race", false, "enable race detector") + cover = flag.String("coverpkg", "", "apply coverage analysis in each test to packages matching the patterns.") + tags = flag.String("tags", "", "build tags") + verbose = flag.Bool("v", false, "enable verbose output") ) flag.Parse() - out := new(bytes.Buffer) - cmd := exec.Command("go", "list", "./...") - cmd.Stdout = out - cmd.Stderr = os.Stderr - cmd.Stdin = os.Stdin - - err := cmd.Run() + pkgs, err := pkgList() if err != nil { log.Fatal(err) } @@ -48,23 +50,24 @@ func main() { args := []string{"test"} - if *cover { - args = append(args, "-coverprofile=profile.out", "-covermode=atomic") + if *verbose { + args = append(args, "-v") + } + if *cover != "" { + args = append(args, "-coverprofile=profile.out", "-covermode=atomic", "-coverpkg="+*cover) } if *tags != "" { args = append(args, "-tags="+*tags) } - if *race { - args = append(args, "-race") + switch { + case *race: + args = append(args, "-race", "-timeout=20m") + default: + args = append(args, "-timeout=10m") } args = append(args, "") - scan := bufio.NewScanner(out) - for scan.Scan() { - pkg := scan.Text() - if strings.Contains(pkg, "vendor") { - continue - } + for _, pkg := range pkgs { args[len(args)-1] = pkg cmd := exec.Command("go", args...) cmd.Stdin = os.Stdin @@ -74,8 +77,8 @@ func main() { if err != nil { log.Fatal(err) } - if *cover { - profile, err := ioutil.ReadFile("profile.out") + if *cover != "" { + profile, err := os.ReadFile("profile.out") if err != nil { log.Fatal(err) } @@ -92,3 +95,28 @@ func main() { log.Fatal(err) } } + +func pkgList() ([]string, error) { + out := new(bytes.Buffer) + cmd := exec.Command("go", "list", "./...") + cmd.Stdout = out + cmd.Stderr = os.Stderr + cmd.Stdin = os.Stdin + + err := cmd.Run() + if err != nil { + return nil, fmt.Errorf("could not get package list: %w", err) + } + + var pkgs []string + scan := bufio.NewScanner(out) + for scan.Scan() { + pkg := scan.Text() + if strings.Contains(pkg, "vendor") { + continue + } + pkgs = append(pkgs, pkg) + } + + return pkgs, nil +} From 4dc023db62c4bb7bcd10da9aa2aa00ba4cbdc989 Mon Sep 17 00:00:00 2001 From: Sebastien Binet Date: Mon, 10 Jan 2022 17:18:51 +0100 Subject: [PATCH 2/2] ci: drop python3.4 pytest --- .github/workflows/ci.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d8ded89c..289009df 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -80,7 +80,8 @@ jobs: run: | GOARCH=386 go test $TAGS ./... GOARCH=amd64 go run ./ci/run-tests.go $TAGS -race $COVERAGE - python3 py3test.py + ## FIXME(sbinet): bring back python3.4 or upgrade gpython to python3.x + ## python3 py3test.py - name: Test Windows if: matrix.platform == 'windows-latest' run: |