Files
slsa-verifier/Makefile
Ian Lewis 7e2c7ae288 chore: Don't be verbose with tests locally (#620)
It can sometimes be unwieldy when running tests with the verbose flag. This changes the Makefile to run tests without the flag by default but with the flag set on GitHub Actions.

Signed-off-by: Ian Lewis <ianlewis@google.com>
2023-05-26 05:39:52 +00:00

96 lines
2.7 KiB
Makefile

SHELL := /bin/bash
OUTPUT_FORMAT = $(shell if [ "${GITHUB_ACTIONS}" == "true" ]; then echo "github"; else echo ""; fi)
.PHONY: help
help: ## Shows all targets and help from the Makefile (this message).
@echo "slsa-github-generator Makefile"
@echo "Usage: make [COMMAND]"
@echo ""
@grep --no-filename -E '^([/a-z.A-Z0-9_%-]+:.*?|)##' $(MAKEFILE_LIST) | \
awk 'BEGIN {FS = "(:.*?|)## ?"}; { \
if (length($$1) > 0) { \
printf " \033[36m%-20s\033[0m %s\n", $$1, $$2; \
} else { \
if (length($$2) > 0) { \
printf "%s\n", $$2; \
} \
} \
}'
node_modules/.installed: package.json package-lock.json
npm ci
touch node_modules/.installed
## Testing
#####################################################################
.PHONY: unit-test
unit-test: ## Runs all unit tests.
@ # NOTE: go test builds packages even if there are no tests.
@set -e;\
go mod vendor; \
extraargs=""; \
if [ "$(OUTPUT_FORMAT)" == "github" ]; then \
extraargs="-v"; \
fi; \
go test -mod=vendor $$extraeargs ./...
.PHONY: regression-test
regression-test: ## Runs all regression and unit tests.
@ # NOTE: go test builds packages even if there are no tests.
@set -e;\
go mod vendor; \
extraargs=""; \
if [ "$(OUTPUT_FORMAT)" == "github" ]; then \
extraargs="-v"; \
fi; \
go test -mod=vendor -tags=regression $$extraeargs -timeout=25m ./...
## Tools
#####################################################################
.PHONY: markdown-toc
markdown-toc: node_modules/.installed ## Runs markdown-toc on markdown files.
@# NOTE: Do not include issue templates since they contain Front Matter.
@# markdown-toc will update Front Matter even if there is no TOC in the file.
@# See: https://github.com/jonschlinkert/markdown-toc/issues/151
@set -euo pipefail; \
md_files=$$( \
find . -name '*.md' -type f \
-not -iwholename '*/.git/*' \
-not -iwholename '*/vendor/*' \
-not -iwholename '*/node_modules/*' \
-not -iwholename '*/.github/ISSUE_TEMPLATE/*' \
); \
for filename in $${md_files}; do \
npm run markdown-toc "$${filename}"; \
done;
## Linters
#####################################################################
.PHONY: lint
lint: golangci-lint eslint yamllint ## Run all linters.
.PHONY: golangci-lint
golangci-lint: ## Runs the golangci-lint linter.
@set -e;\
extraargs=""; \
if [ "$(OUTPUT_FORMAT)" == "github" ]; then \
extraargs="--out-format github-actions"; \
fi; \
golangci-lint run -c .golangci.yml ./... $$extraargs
.PHONY: eslint
eslint: ## Runs the eslint linter.
make -C actions/installer lint
.PHONY: yamllint
yamllint: ## Runs the yamllint linter.
@set -e;\
extraargs=""; \
if [ "$(OUTPUT_FORMAT)" == "github" ]; then \
extraargs="-f github"; \
fi; \
yamllint -c .yamllint.yaml . $$extraargs