--- # https://taskfile.dev version: '3' vars: COVERAGE_FILE: "{{.OUT_DIR}}/coverage.out" INTERNAL: "./internal/..." API: "./api/..." PKG: "./pkg/..." CMD: "./cmd/..." tasks: mocks:generate: cmds: - rm -rf mocks/* - mockery unit: cmds: - task: unit:nocoverage - task: unit:getcoverage unit:short: deps: - mocks:generate cmds: - go test -short {{.INTERNAL}} {{.API}} {{.PKG}} {{.CMD}} unit:nogen: cmds: - task: unit:cmd - task: unit:getcoverage unit:cmd: internal: true cmds: - mkdir -p {{.OUT_DIR}} - | go test {{.INTERNAL}} {{.API}} \ -coverpkg={{.INTERNAL}},{{.API}} \ -coverprofile={{.COVERAGE_FILE}} unit:nocoverage: deps: - mocks:generate cmds: - task: unit:cmd unit:getcoverage: vars: TMP_FILE: "{{.OUT_DIR}}/coverage.tmp" FILTER_COVERAGE_FILE: "{{.OUT_DIR}}/filtered_coverage.out" cmds: - grep -v ".gen.go" {{.COVERAGE_FILE}} > {{.FILTER_COVERAGE_FILE}} - go tool cover -func={{.FILTER_COVERAGE_FILE}} > {{.TMP_FILE}} - cat {{.TMP_FILE}} - | COVERAGE=$(grep total: {{.TMP_FILE}} \ | awk '{print $3}' | sed 's/%//' | bc) echo "" echo "Coverage Threshold: {{.COVERAGE_THRESHOLD}}%" echo "Total Coverage: $COVERAGE%" if (( $(echo "$COVERAGE < {{.COVERAGE_THRESHOLD}}" | bc -l) )); then echo "Total Coverage below Coverage Threshold" exit 1 fi silent: true endtoend: cmds: - task generate - task docker:build - task: endtoend:cmd:nocache endtoend:cmd:nocache: cmds: - go test -count=1 -v ./test/... endtoend:cmd:nobuild: cmds: - go test -v ./test/...