Skip to content

Commit

Permalink
fix: add unit test coverage (#1166)
Browse files Browse the repository at this point in the history
Signed-off-by: Shubharanshu Mahapatra <[email protected]>
  • Loading branch information
Shubhranshu153 authored Nov 5, 2024
1 parent 9c72ad1 commit 507d636
Show file tree
Hide file tree
Showing 2 changed files with 69 additions and 1 deletion.
4 changes: 3 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -251,9 +251,11 @@ check-licenses:
GOBIN=$(GOBIN) go install github.com/google/go-licenses
$(GOBIN)/go-licenses check --ignore golang.org/x,github.com/runfinch/finch --ignore github.com/multiformats/go-base36 --allowed_licenses Apache-2.0,BSD-2-Clause,BSD-3-Clause,ISC,MIT --include_tests ./...

COVERAGE_THRESH = 60
.PHONY: test-unit
test-unit:
go test $(shell go list ./... | grep -v e2e | grep -v benchmark | grep -v mocks) -shuffle on
go test -cover -coverprofile=coverage.out $(shell go list ./... | grep -v e2e | grep -v benchmark | grep -v mocks | grep -v version | grep -v flog | grep -v system | grep -v fmemory | grep -v coverage |grep -v devcontainer_patch) -shuffle on
go run coverage/coverage.go $(COVERAGE_THRESH)

# test-e2e assumes the VM instance doesn't exist, please make sure to remove it before running.
#
Expand Down
66 changes: 66 additions & 0 deletions coverage/coverage.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0

// Package main for unit test coverage parsing
package main

import (
"bufio"
"fmt"
"math"
"os"
"os/exec"
"strconv"
"strings"
)

func main() {
threshold := 100.0
if len(os.Args) > 1 {
argThreshold, err := strconv.ParseFloat(os.Args[1], 64)
if err != nil {
fmt.Fprintln(os.Stderr, "Invalid threshold value. Please provide a number.")
os.Exit(1)
}
threshold = argThreshold
}

cmd := exec.Command("go", "tool", "cover", "-func=coverage.out")
output, err := cmd.Output()
if err != nil {
fmt.Fprintln(os.Stderr, "Error executing coverage command:", err)
os.Exit(1)
}

var coverage float64
scanner := bufio.NewScanner(strings.NewReader(string(output)))
for scanner.Scan() {
line := scanner.Text()
if strings.Contains(line, "total:") {
parts := strings.Fields(line)
if len(parts) > 2 {
coverageStr := strings.TrimSuffix(parts[2], "%")
coverage, err = strconv.ParseFloat(coverageStr, 64)
if err != nil {
fmt.Fprintln(os.Stderr, "Error parsing coverage:", err)
os.Exit(1)
}
coverage = math.Round(coverage)
fmt.Printf("Total Coverage: %.0f%%\n", coverage)
break
}
}
}

if err := scanner.Err(); err != nil {
fmt.Fprintln(os.Stderr, "Error reading coverage output:", err)
os.Exit(1)
}

if coverage < threshold {
fmt.Fprintf(os.Stderr, "Coverage %.0f%% is below the %.0f%% threshold\n", coverage, threshold)
os.Exit(1)
}

fmt.Printf("Coverage %.0f%% meets the %.0f%% threshold\n", coverage, threshold)
}

0 comments on commit 507d636

Please sign in to comment.