Support test coverage requirements via comment.
This commit is contained in:
parent
851820786c
commit
cd7f4d69f1
29 changed files with 461 additions and 1 deletions
|
@ -242,12 +242,21 @@ func runTests(testDir, privateRepo, problem string) error {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
coverageReq := getCoverageRequirements(privateRepo)
|
||||||
|
if coverageReq.Enabled {
|
||||||
|
log.Printf("required coverage: %.2f%%", coverageReq.Percent)
|
||||||
|
}
|
||||||
|
|
||||||
binariesJSON, _ := json.Marshal(binaries)
|
binariesJSON, _ := json.Marshal(binaries)
|
||||||
|
|
||||||
for testPkg := range testPkgs {
|
for testPkg := range testPkgs {
|
||||||
binPath := filepath.Join(binCache, randomName())
|
binPath := filepath.Join(binCache, randomName())
|
||||||
testBinaries[testPkg] = binPath
|
testBinaries[testPkg] = binPath
|
||||||
if err := runGo("test", "-mod", "readonly", "-tags", "private", "-c", "-o", binPath, testPkg); err != nil {
|
cmd := []string{"test", "-mod", "readonly", "-tags", "private", "-c", "-o", binPath, testPkg}
|
||||||
|
if coverageReq.Enabled {
|
||||||
|
cmd = append(cmd, "-cover")
|
||||||
|
}
|
||||||
|
if err := runGo(cmd...); err != nil {
|
||||||
return fmt.Errorf("error building test in %s: %w", testPkg, err)
|
return fmt.Errorf("error building test in %s: %w", testPkg, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -257,6 +266,9 @@ func runTests(testDir, privateRepo, problem string) error {
|
||||||
|
|
||||||
{
|
{
|
||||||
cmd := exec.Command(testBinary)
|
cmd := exec.Command(testBinary)
|
||||||
|
if coverageReq.Enabled {
|
||||||
|
cmd = exec.Command(testBinary, "-test.coverprofile", "c.out")
|
||||||
|
}
|
||||||
if currentUserIsRoot() {
|
if currentUserIsRoot() {
|
||||||
if err := sandbox(cmd); err != nil {
|
if err := sandbox(cmd); err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
|
@ -273,6 +285,20 @@ func runTests(testDir, privateRepo, problem string) error {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if coverageReq.Enabled {
|
||||||
|
log.Printf("checking coverage is at least %.2f%% for %s", coverageReq.Percent, testPkg)
|
||||||
|
|
||||||
|
percent, err := calCoverage(filepath.Join(testDir, relPath, "c.out"))
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
if percent < coverageReq.Percent {
|
||||||
|
return fmt.Errorf("poor coverage %.2f%%; expected at least %.2f%%",
|
||||||
|
percent, coverageReq.Percent)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
benchCmd := exec.Command(testBinary, "-test.bench=.", "-test.run=^$")
|
benchCmd := exec.Command(testBinary, "-test.bench=.", "-test.run=^$")
|
||||||
if currentUserIsRoot() {
|
if currentUserIsRoot() {
|
||||||
|
|
22
tools/testtool/testdata/coverage/sum/subpkg/empty_test.go
vendored
Normal file
22
tools/testtool/testdata/coverage/sum/subpkg/empty_test.go
vendored
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
// This is subpkg package comment.
|
||||||
|
package subpkg
|
||||||
|
|
||||||
|
// Incorrect coverage comments:
|
||||||
|
|
||||||
|
// min coverage: -1%
|
||||||
|
|
||||||
|
// min coverage: 100.001%
|
||||||
|
|
||||||
|
// min coverage: 100 %
|
||||||
|
|
||||||
|
// min coverage:10%
|
||||||
|
|
||||||
|
// min coverage: 19%
|
||||||
|
|
||||||
|
// Correct coverage comment:
|
||||||
|
|
||||||
|
// min coverage: 90%
|
||||||
|
|
||||||
|
// Testtool uses first matching comment.
|
||||||
|
|
||||||
|
// min coverage: 91%
|
2
tools/testtool/testdata/coverage/sum/sum.go
vendored
Normal file
2
tools/testtool/testdata/coverage/sum/sum.go
vendored
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
// This is package comment.
|
||||||
|
package sum
|
8
tools/testtool/testdata/coverage/sum/sum_test.go
vendored
Normal file
8
tools/testtool/testdata/coverage/sum/sum_test.go
vendored
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
package sum
|
||||||
|
|
||||||
|
// This is a single line comment.
|
||||||
|
|
||||||
|
/*
|
||||||
|
This is multiline
|
||||||
|
comment!
|
||||||
|
*/
|
77
tools/testtool/testdata/submissions/correct/coverme/private/.golangci.yml
vendored
Normal file
77
tools/testtool/testdata/submissions/correct/coverme/private/.golangci.yml
vendored
Normal file
|
@ -0,0 +1,77 @@
|
||||||
|
# options for analysis running
|
||||||
|
run:
|
||||||
|
# default concurrency is a available CPU number
|
||||||
|
concurrency: 8
|
||||||
|
|
||||||
|
# timeout for analysis, e.g. 30s, 5m, default is 1m
|
||||||
|
deadline: 5m
|
||||||
|
|
||||||
|
# exit code when at least one issue was found, default is 1
|
||||||
|
issues-exit-code: 1
|
||||||
|
|
||||||
|
# include test files or not, default is true
|
||||||
|
tests: true
|
||||||
|
|
||||||
|
|
||||||
|
# output configuration options
|
||||||
|
output:
|
||||||
|
# colored-line-number|line-number|json|tab|checkstyle, default is "colored-line-number"
|
||||||
|
format: colored-line-number
|
||||||
|
|
||||||
|
# print lines of code with issue, default is true
|
||||||
|
print-issued-lines: true
|
||||||
|
|
||||||
|
# print linter name in the end of issue text, default is true
|
||||||
|
print-linter-name: true
|
||||||
|
|
||||||
|
|
||||||
|
# all available settings of specific linters
|
||||||
|
linters-settings:
|
||||||
|
govet:
|
||||||
|
# report about shadowed variables
|
||||||
|
check-shadowing: true
|
||||||
|
golint:
|
||||||
|
# minimal confidence for issues, default is 0.8
|
||||||
|
min-confidence: 0.8
|
||||||
|
gofmt:
|
||||||
|
# simplify code: gofmt with `-s` option, true by default
|
||||||
|
simplify: true
|
||||||
|
goimports:
|
||||||
|
# put imports beginning with prefix after 3rd-party packages;
|
||||||
|
# it's a comma-separated list of prefixes
|
||||||
|
local-prefixes: gitlab.com
|
||||||
|
|
||||||
|
linters:
|
||||||
|
disable-all: true
|
||||||
|
enable:
|
||||||
|
- errcheck
|
||||||
|
- gofmt
|
||||||
|
- golint
|
||||||
|
- gosimple
|
||||||
|
- govet
|
||||||
|
- ineffassign
|
||||||
|
- scopelint
|
||||||
|
- staticcheck
|
||||||
|
- typecheck
|
||||||
|
- unconvert
|
||||||
|
|
||||||
|
|
||||||
|
issues:
|
||||||
|
# List of regexps of issue texts to exclude, empty list by default.
|
||||||
|
# But independently from this option we use default exclude patterns,
|
||||||
|
# it can be disabled by `exclude-use-default: false`. To list all
|
||||||
|
# excluded by default patterns execute `golangci-lint run --help`
|
||||||
|
exclude:
|
||||||
|
- Using the variable on range scope .* in function literal
|
||||||
|
|
||||||
|
# Independently from option `exclude` we use default exclude patterns,
|
||||||
|
# it can be disabled by this option. To list all
|
||||||
|
# excluded by default patterns execute `golangci-lint run --help`.
|
||||||
|
# Default value for this option is true.
|
||||||
|
exclude-use-default: true
|
||||||
|
|
||||||
|
# Maximum issues count per one linter. Set to 0 to disable. Default is 50.
|
||||||
|
max-per-linter: 0
|
||||||
|
|
||||||
|
# Maximum count of issues with the same text. Set to 0 to disable. Default is 3.
|
||||||
|
max-same-issues: 0
|
16
tools/testtool/testdata/submissions/correct/coverme/private/coverme/coverage_test.go
vendored
Normal file
16
tools/testtool/testdata/submissions/correct/coverme/private/coverme/coverage_test.go
vendored
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
// +build !change
|
||||||
|
|
||||||
|
package coverme_test
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
"gitlab.com/slon/shad-go/coverme"
|
||||||
|
)
|
||||||
|
|
||||||
|
// min coverage: 60%
|
||||||
|
|
||||||
|
func TestSum(t *testing.T) {
|
||||||
|
require.Equal(t, int64(2), coverme.Sum(1, 1))
|
||||||
|
}
|
10
tools/testtool/testdata/submissions/correct/coverme/private/coverme/service.go
vendored
Normal file
10
tools/testtool/testdata/submissions/correct/coverme/private/coverme/service.go
vendored
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
// +build !change
|
||||||
|
|
||||||
|
package coverme
|
||||||
|
|
||||||
|
func Sum(a, b int64) int64 {
|
||||||
|
if a == 0 {
|
||||||
|
return b
|
||||||
|
}
|
||||||
|
return a + b
|
||||||
|
}
|
14
tools/testtool/testdata/submissions/correct/coverme/private/coverme/solution_test.go
vendored
Normal file
14
tools/testtool/testdata/submissions/correct/coverme/private/coverme/solution_test.go
vendored
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
// +build solution
|
||||||
|
|
||||||
|
package coverme
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestSum(t *testing.T) {
|
||||||
|
require.Equal(t, int64(2), Sum(1, 1))
|
||||||
|
require.Equal(t, int64(1), Sum(0, 1))
|
||||||
|
}
|
12
tools/testtool/testdata/submissions/correct/coverme/private/coverme/subpkg/f.go
vendored
Normal file
12
tools/testtool/testdata/submissions/correct/coverme/private/coverme/subpkg/f.go
vendored
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
// +build !change
|
||||||
|
|
||||||
|
package subpkg
|
||||||
|
|
||||||
|
func AddOne(n int) int {
|
||||||
|
if n == 0 {
|
||||||
|
return 1
|
||||||
|
} else if n == 1 {
|
||||||
|
return 2
|
||||||
|
}
|
||||||
|
return n + 1
|
||||||
|
}
|
13
tools/testtool/testdata/submissions/correct/coverme/private/coverme/subpkg/f_test.go
vendored
Normal file
13
tools/testtool/testdata/submissions/correct/coverme/private/coverme/subpkg/f_test.go
vendored
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
package subpkg
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
)
|
||||||
|
|
||||||
|
// min coverage: 100%
|
||||||
|
|
||||||
|
func TestAddOne(t *testing.T) {
|
||||||
|
require.Equal(t, 1, AddOne(0))
|
||||||
|
}
|
5
tools/testtool/testdata/submissions/correct/coverme/private/go.mod
vendored
Normal file
5
tools/testtool/testdata/submissions/correct/coverme/private/go.mod
vendored
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
module gitlab.com/slon/shad-go
|
||||||
|
|
||||||
|
go 1.13
|
||||||
|
|
||||||
|
require github.com/stretchr/testify v1.5.1
|
11
tools/testtool/testdata/submissions/correct/coverme/private/go.sum
vendored
Normal file
11
tools/testtool/testdata/submissions/correct/coverme/private/go.sum
vendored
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
|
||||||
|
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
|
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||||
|
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||||
|
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||||
|
github.com/stretchr/testify v1.5.1 h1:nOGnQDM7FYENwehXlg/kFVnos3rEvtKTjRvOWSzb6H4=
|
||||||
|
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
|
||||||
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
|
||||||
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
|
gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw=
|
||||||
|
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
16
tools/testtool/testdata/submissions/correct/coverme/student/coverme/coverage_test.go
vendored
Normal file
16
tools/testtool/testdata/submissions/correct/coverme/student/coverme/coverage_test.go
vendored
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
// +build !change
|
||||||
|
|
||||||
|
package coverme_test
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
"gitlab.com/slon/shad-go/coverme"
|
||||||
|
)
|
||||||
|
|
||||||
|
// min coverage: 60%
|
||||||
|
|
||||||
|
func TestSum(t *testing.T) {
|
||||||
|
require.Equal(t, int64(2), coverme.Sum(1, 1))
|
||||||
|
}
|
10
tools/testtool/testdata/submissions/correct/coverme/student/coverme/service.go
vendored
Normal file
10
tools/testtool/testdata/submissions/correct/coverme/student/coverme/service.go
vendored
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
// +build !change
|
||||||
|
|
||||||
|
package coverme
|
||||||
|
|
||||||
|
func Sum(a, b int64) int64 {
|
||||||
|
if a == 0 {
|
||||||
|
return b
|
||||||
|
}
|
||||||
|
return a + b
|
||||||
|
}
|
12
tools/testtool/testdata/submissions/correct/coverme/student/coverme/subpkg/additional_test.go
vendored
Normal file
12
tools/testtool/testdata/submissions/correct/coverme/student/coverme/subpkg/additional_test.go
vendored
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
package subpkg
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestAddOne_2(t *testing.T) {
|
||||||
|
require.Equal(t, 2, AddOne(1))
|
||||||
|
require.Equal(t, 30, AddOne(29))
|
||||||
|
}
|
12
tools/testtool/testdata/submissions/correct/coverme/student/coverme/subpkg/f.go
vendored
Normal file
12
tools/testtool/testdata/submissions/correct/coverme/student/coverme/subpkg/f.go
vendored
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
// +build !change
|
||||||
|
|
||||||
|
package subpkg
|
||||||
|
|
||||||
|
func AddOne(n int) int {
|
||||||
|
if n == 0 {
|
||||||
|
return 1
|
||||||
|
} else if n == 1 {
|
||||||
|
return 2
|
||||||
|
}
|
||||||
|
return n + 1
|
||||||
|
}
|
13
tools/testtool/testdata/submissions/correct/coverme/student/coverme/subpkg/f_test.go
vendored
Normal file
13
tools/testtool/testdata/submissions/correct/coverme/student/coverme/subpkg/f_test.go
vendored
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
package subpkg
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
)
|
||||||
|
|
||||||
|
// min coverage: 100%
|
||||||
|
|
||||||
|
func TestAddOne(t *testing.T) {
|
||||||
|
require.Equal(t, 1, AddOne(0))
|
||||||
|
}
|
5
tools/testtool/testdata/submissions/correct/coverme/student/go.mod
vendored
Normal file
5
tools/testtool/testdata/submissions/correct/coverme/student/go.mod
vendored
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
module gitlab.com/slon/shad-go
|
||||||
|
|
||||||
|
go 1.13
|
||||||
|
|
||||||
|
require github.com/stretchr/testify v1.5.1
|
6
tools/testtool/testdata/submissions/correct/coverme/student/go.sum
vendored
Normal file
6
tools/testtool/testdata/submissions/correct/coverme/student/go.sum
vendored
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
|
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||||
|
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||||
|
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
|
||||||
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
|
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
77
tools/testtool/testdata/submissions/incorrect/poorcoverage/private/.golangci.yml
vendored
Normal file
77
tools/testtool/testdata/submissions/incorrect/poorcoverage/private/.golangci.yml
vendored
Normal file
|
@ -0,0 +1,77 @@
|
||||||
|
# options for analysis running
|
||||||
|
run:
|
||||||
|
# default concurrency is a available CPU number
|
||||||
|
concurrency: 8
|
||||||
|
|
||||||
|
# timeout for analysis, e.g. 30s, 5m, default is 1m
|
||||||
|
deadline: 5m
|
||||||
|
|
||||||
|
# exit code when at least one issue was found, default is 1
|
||||||
|
issues-exit-code: 1
|
||||||
|
|
||||||
|
# include test files or not, default is true
|
||||||
|
tests: true
|
||||||
|
|
||||||
|
|
||||||
|
# output configuration options
|
||||||
|
output:
|
||||||
|
# colored-line-number|line-number|json|tab|checkstyle, default is "colored-line-number"
|
||||||
|
format: colored-line-number
|
||||||
|
|
||||||
|
# print lines of code with issue, default is true
|
||||||
|
print-issued-lines: true
|
||||||
|
|
||||||
|
# print linter name in the end of issue text, default is true
|
||||||
|
print-linter-name: true
|
||||||
|
|
||||||
|
|
||||||
|
# all available settings of specific linters
|
||||||
|
linters-settings:
|
||||||
|
govet:
|
||||||
|
# report about shadowed variables
|
||||||
|
check-shadowing: true
|
||||||
|
golint:
|
||||||
|
# minimal confidence for issues, default is 0.8
|
||||||
|
min-confidence: 0.8
|
||||||
|
gofmt:
|
||||||
|
# simplify code: gofmt with `-s` option, true by default
|
||||||
|
simplify: true
|
||||||
|
goimports:
|
||||||
|
# put imports beginning with prefix after 3rd-party packages;
|
||||||
|
# it's a comma-separated list of prefixes
|
||||||
|
local-prefixes: gitlab.com
|
||||||
|
|
||||||
|
linters:
|
||||||
|
disable-all: true
|
||||||
|
enable:
|
||||||
|
- errcheck
|
||||||
|
- gofmt
|
||||||
|
- golint
|
||||||
|
- gosimple
|
||||||
|
- govet
|
||||||
|
- ineffassign
|
||||||
|
- scopelint
|
||||||
|
- staticcheck
|
||||||
|
- typecheck
|
||||||
|
- unconvert
|
||||||
|
|
||||||
|
|
||||||
|
issues:
|
||||||
|
# List of regexps of issue texts to exclude, empty list by default.
|
||||||
|
# But independently from this option we use default exclude patterns,
|
||||||
|
# it can be disabled by `exclude-use-default: false`. To list all
|
||||||
|
# excluded by default patterns execute `golangci-lint run --help`
|
||||||
|
exclude:
|
||||||
|
- Using the variable on range scope .* in function literal
|
||||||
|
|
||||||
|
# Independently from option `exclude` we use default exclude patterns,
|
||||||
|
# it can be disabled by this option. To list all
|
||||||
|
# excluded by default patterns execute `golangci-lint run --help`.
|
||||||
|
# Default value for this option is true.
|
||||||
|
exclude-use-default: true
|
||||||
|
|
||||||
|
# Maximum issues count per one linter. Set to 0 to disable. Default is 50.
|
||||||
|
max-per-linter: 0
|
||||||
|
|
||||||
|
# Maximum count of issues with the same text. Set to 0 to disable. Default is 3.
|
||||||
|
max-same-issues: 0
|
5
tools/testtool/testdata/submissions/incorrect/poorcoverage/private/go.mod
vendored
Normal file
5
tools/testtool/testdata/submissions/incorrect/poorcoverage/private/go.mod
vendored
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
module gitlab.com/slon/shad-go
|
||||||
|
|
||||||
|
go 1.13
|
||||||
|
|
||||||
|
require github.com/stretchr/testify v1.5.1
|
11
tools/testtool/testdata/submissions/incorrect/poorcoverage/private/go.sum
vendored
Normal file
11
tools/testtool/testdata/submissions/incorrect/poorcoverage/private/go.sum
vendored
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
|
||||||
|
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
|
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||||
|
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||||
|
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||||
|
github.com/stretchr/testify v1.5.1 h1:nOGnQDM7FYENwehXlg/kFVnos3rEvtKTjRvOWSzb6H4=
|
||||||
|
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
|
||||||
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
|
||||||
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
|
gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw=
|
||||||
|
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
16
tools/testtool/testdata/submissions/incorrect/poorcoverage/private/poorcoverage/coverage_test.go
vendored
Normal file
16
tools/testtool/testdata/submissions/incorrect/poorcoverage/private/poorcoverage/coverage_test.go
vendored
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
// +build !change
|
||||||
|
|
||||||
|
package poorcoverage_test
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
"gitlab.com/slon/shad-go/poorcoverage"
|
||||||
|
)
|
||||||
|
|
||||||
|
// min coverage: 100%
|
||||||
|
|
||||||
|
func TestSum(t *testing.T) {
|
||||||
|
require.Equal(t, int64(2), poorcoverage.Sum(1, 1))
|
||||||
|
}
|
10
tools/testtool/testdata/submissions/incorrect/poorcoverage/private/poorcoverage/service.go
vendored
Normal file
10
tools/testtool/testdata/submissions/incorrect/poorcoverage/private/poorcoverage/service.go
vendored
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
// +build !change
|
||||||
|
|
||||||
|
package poorcoverage
|
||||||
|
|
||||||
|
func Sum(a, b int64) int64 {
|
||||||
|
if a == 0 {
|
||||||
|
return b
|
||||||
|
}
|
||||||
|
return a + b
|
||||||
|
}
|
14
tools/testtool/testdata/submissions/incorrect/poorcoverage/private/poorcoverage/solution_test.go
vendored
Normal file
14
tools/testtool/testdata/submissions/incorrect/poorcoverage/private/poorcoverage/solution_test.go
vendored
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
// +build solution
|
||||||
|
|
||||||
|
package poorcoverage
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestSum(t *testing.T) {
|
||||||
|
require.Equal(t, int64(2), Sum(1, 1))
|
||||||
|
require.Equal(t, int64(1), Sum(0, 1))
|
||||||
|
}
|
5
tools/testtool/testdata/submissions/incorrect/poorcoverage/student/go.mod
vendored
Normal file
5
tools/testtool/testdata/submissions/incorrect/poorcoverage/student/go.mod
vendored
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
module gitlab.com/slon/shad-go
|
||||||
|
|
||||||
|
go 1.13
|
||||||
|
|
||||||
|
require github.com/stretchr/testify v1.5.1
|
6
tools/testtool/testdata/submissions/incorrect/poorcoverage/student/go.sum
vendored
Normal file
6
tools/testtool/testdata/submissions/incorrect/poorcoverage/student/go.sum
vendored
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
|
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||||
|
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||||
|
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
|
||||||
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
|
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
16
tools/testtool/testdata/submissions/incorrect/poorcoverage/student/poorcoverage/coverage_test.go
vendored
Normal file
16
tools/testtool/testdata/submissions/incorrect/poorcoverage/student/poorcoverage/coverage_test.go
vendored
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
// +build !change
|
||||||
|
|
||||||
|
package poorcoverage_test
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
"gitlab.com/slon/shad-go/poorcoverage"
|
||||||
|
)
|
||||||
|
|
||||||
|
// min coverage: 100%
|
||||||
|
|
||||||
|
func TestSum(t *testing.T) {
|
||||||
|
require.Equal(t, int64(2), poorcoverage.Sum(1, 1))
|
||||||
|
}
|
10
tools/testtool/testdata/submissions/incorrect/poorcoverage/student/poorcoverage/service.go
vendored
Normal file
10
tools/testtool/testdata/submissions/incorrect/poorcoverage/student/poorcoverage/service.go
vendored
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
// +build !change
|
||||||
|
|
||||||
|
package poorcoverage
|
||||||
|
|
||||||
|
func Sum(a, b int64) int64 {
|
||||||
|
if a == 0 {
|
||||||
|
return b
|
||||||
|
}
|
||||||
|
return a + b
|
||||||
|
}
|
Loading…
Reference in a new issue