github.com/Big-big-orange/protoreflect@v0.0.0-20240408141420-285cedfdf6a4/Makefile (about)

     1  # TODO: run golint, errcheck
     2  .PHONY: ci
     3  # TODO: add staticcheck back ASAP; removed temporarily because it
     4  # complains about a lot of APIs deprecated by protobuf 1.4
     5  ci: deps checkgofmt vet ineffassign test test-nounsafe
     6  
     7  .PHONY: deps
     8  deps:
     9  	go get -d -v -t ./...
    10  
    11  .PHONY: updatedeps
    12  updatedeps:
    13  	go get -d -v -t -u -f ./...
    14  
    15  .PHONY: install
    16  install:
    17  	go install ./...
    18  
    19  .PHONY: checkgofmt
    20  checkgofmt:
    21  	@echo gofmt -s -l .
    22  	@output="$$(gofmt -s -l .)" ; \
    23  	if [ -n "$$output"  ]; then \
    24  	    echo "$$output"; \
    25  		echo "Run gofmt on the above files!"; \
    26  		exit 1; \
    27  	fi
    28  
    29  # workaround https://github.com/golang/protobuf/issues/214 until in master
    30  .PHONY: vet
    31  vet:
    32  	@echo go vet ./...  --ignore internal/testprotos
    33  	@go vet $$(go list ./... | grep -v 'internal/testprotos')
    34  
    35  # goyacc generates assignments where LHS is never used, so we need to run
    36  # staticheck in a way that ignores the errors in that generated code
    37  .PHONY: staticcheck
    38  staticcheck:
    39  	@go install honnef.co/go/tools/cmd/staticcheck@v0.0.1-2020.1.4
    40  	staticcheck ./...
    41  
    42  # same remarks as for staticcheck: we ignore errors in generated proto.y.go
    43  .PHONY: ineffassign
    44  ineffassign:
    45  	@go install github.com/gordonklaus/ineffassign@v0.0.0-20200309095847-7953dde2c7bf
    46  	@echo ineffassign . --ignore desc/protoparse/proto.y.go
    47  	@ineffassign -n $$(find . -type d | grep -v 'desc/protoparse')
    48  	@output="$$(ineffassign ./desc/protoparse | grep -v 'protoDollar' || true)" ; \
    49  	if [ -n "$$output"  ]; then \
    50  	    echo "$$output"; \
    51  	    exit 1; \
    52  	fi
    53  
    54  # Intentionally omitted from CI, but target here for ad-hoc reports.
    55  .PHONY: golint
    56  golint:
    57  	@go install golang.org/x/lint/golint
    58  	golint -min_confidence 0.9 -set_exit_status ./...
    59  
    60  # Intentionally omitted from CI, but target here for ad-hoc reports.
    61  .PHONY: errcheck
    62  errcheck:
    63  	@go install github.com/kisielk/errcheck
    64  	errcheck ./...
    65  
    66  .PHONY: test
    67  test:
    68  	go test -cover -race ./...
    69  
    70  .PHONY: test-nounsafe
    71  test-nounsafe:
    72  	go test -tags purego -cover -race ./...
    73  
    74  .PHONY: generate
    75  generate:
    76  	@go install golang.org/x/tools/cmd/goyacc@v0.0.0-20200717024301-6ddee64345a6
    77  	go generate ./...
    78  
    79  .PHONY: testcover
    80  testcover:
    81  	@echo go test -race -covermode=atomic ./...
    82  	@echo "mode: atomic" > coverage.out
    83  	@for dir in $$(go list ./...); do \
    84  		go test -race -coverprofile profile.out -covermode=atomic $$dir ; \
    85  		if [ -f profile.out ]; then \
    86  			tail -n +2 profile.out >> coverage.out && rm profile.out ; \
    87  		fi \
    88  	done
    89