# ==================================================================================== # Testing and Quality Assurance # ==================================================================================== ## Install go tools install-go-tools: @echo Installing go tools $(GO) install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.61.0 $(GO) install gotest.tools/gotestsum@v1.7.0 ## Runs eslint and golangci-lint .PHONY: check-style check-style: manifest-check webapp/node_modules install-go-tools @echo Checking for style guide compliance ifneq ($(HAS_WEBAPP),) cd webapp && npm run lint cd webapp && npm run check-types endif # It's highly recommended to run go-vet first # to find potential compile errors that could introduce # weird reports at golangci-lint step ifneq ($(HAS_SERVER),) @echo Running golangci-lint $(GO) vet ./... $(GOBIN)/golangci-lint run ./... endif ## Runs any lints and unit tests defined for the server and webapp, if they exist. .PHONY: test test: webapp/node_modules install-go-tools ifneq ($(HAS_SERVER),) $(GOBIN)/gotestsum -- -v ./... endif ifneq ($(HAS_WEBAPP),) cd webapp && $(NPM) run test; endif ## Runs any lints and unit tests defined for the server and webapp, if they exist, optimized ## for a CI environment. .PHONY: test-ci test-ci: webapp/node_modules install-go-tools ifneq ($(HAS_SERVER),) $(GOBIN)/gotestsum --format standard-verbose --junitfile report.xml -- ./... endif ifneq ($(HAS_WEBAPP),) cd webapp && $(NPM) run test; endif ## Creates a coverage report for the server code. .PHONY: coverage coverage: webapp/node_modules ifneq ($(HAS_SERVER),) $(GO) test $(GO_TEST_FLAGS) -coverprofile=server/coverage.txt ./server/... $(GO) tool cover -html=server/coverage.txt endif