@@ -29,6 +29,13 @@ GOTAGSLIST := sqlite_unlock_notify sqlite_omit_load_extension
29
29
# e.g. make GOTAGSCUSTOM=msgtrace
30
30
GOTAGSLIST += ${GOTAGSCUSTOM}
31
31
32
+ # If available, use gotestsum instead of 'go test'.
33
+ ifeq (, $(shell which gotestsum) )
34
+ export GOTESTCOMMAND =go test
35
+ else
36
+ export GOTESTCOMMAND =gotestsum --format pkgname --jsonfile testresults.json --
37
+ endif
38
+
32
39
ifeq ($(UNAME ) , Linux)
33
40
EXTLDFLAGS := -static-libstdc++ -static-libgcc
34
41
ifeq ($(ARCH ) , amd64)
@@ -68,7 +75,7 @@ GOLDFLAGS := $(GOLDFLAGS_BASE) \
68
75
UNIT_TEST_SOURCES := $(sort $(shell GOPATH=$(GOPATH ) && GO111MODULE=off && go list ./... | grep -v /go-algorand/test/ ) )
69
76
ALGOD_API_PACKAGES := $(sort $(shell GOPATH=$(GOPATH ) && GO111MODULE=off && cd daemon/algod/api; go list ./... ) )
70
77
71
- MSGP_GENERATE := ./protocol ./crypto ./crypto/compactcert ./data/basics ./data/transactions ./data/committee ./data/bookkeeping ./data/hashable ./auction ./ agreement ./rpcs ./node ./ledger ./ledger/ledgercore ./compactcert
78
+ MSGP_GENERATE := ./protocol ./crypto ./crypto/compactcert ./data/basics ./data/transactions ./data/committee ./data/bookkeeping ./data/hashable ./agreement ./rpcs ./node ./ledger ./ledger/ledgercore ./compactcert
72
79
73
80
default : build
74
81
81
88
fix : build
82
89
$(GOPATH1 ) /bin/algofix * /
83
90
84
- fixcheck : build
85
- $(GOPATH1 ) /bin/algofix -error * /
86
-
87
91
lint : deps
88
92
$(GOPATH1 ) /bin/golint ./...
89
93
@@ -148,7 +152,7 @@ $(ALGOD_API_SWAGGER_SPEC): $(ALGOD_API_FILES) crypto/libs/$(OS_TYPE)/$(ARCH)/lib
148
152
PATH=$(GOPATH1 ) /bin:$$ PATH \
149
153
go generate ./...
150
154
151
- $(ALGOD_API_SWAGGER_INJECT ) : $(ALGOD_API_SWAGGER_SPEC ) $(ALGOD_API_SWAGGER_SPEC ) .validated
155
+ $(ALGOD_API_SWAGGER_INJECT ) : deps $(ALGOD_API_SWAGGER_SPEC ) $(ALGOD_API_SWAGGER_SPEC ) .validated
152
156
./daemon/algod/api/server/lib/bundle_swagger_json.sh
153
157
154
158
# Regenerate kmd swagger spec files
@@ -175,35 +179,45 @@ $(KMD_API_SWAGGER_SPEC): $(KMD_API_FILES) crypto/libs/$(OS_TYPE)/$(ARCH)/lib/lib
175
179
touch $@ ; \
176
180
fi
177
181
178
- $(KMD_API_SWAGGER_INJECT ) : $(KMD_API_SWAGGER_SPEC ) $(KMD_API_SWAGGER_SPEC ) .validated
182
+ $(KMD_API_SWAGGER_INJECT ) : deps $(KMD_API_SWAGGER_SPEC ) $(KMD_API_SWAGGER_SPEC ) .validated
179
183
./daemon/kmd/lib/kmdapi/bundle_swagger_json.sh
180
184
185
+ # generated files we should make sure we clean
186
+ GENERATED_FILES := \
187
+ $(ALGOD_API_SWAGGER_INJECT ) \
188
+ $(KMD_API_SWAGGER_INJECT ) \
189
+ $(ALGOD_API_SWAGGER_SPEC ) $(ALGOD_API_SWAGGER_SPEC ) .validated \
190
+ $(KMD_API_SWAGGER_SPEC ) $(KMD_API_SWAGGER_SPEC ) .validated
191
+
192
+ rebuild_swagger : deps
193
+ rm -f $(GENERATED_FILES )
194
+ # we need to invoke the make here since we want to ensure that the deletion and re-creating are sequential
195
+ make $(KMD_API_SWAGGER_INJECT ) $(ALGOD_API_SWAGGER_INJECT )
196
+
181
197
# develop
182
198
183
- build : buildsrc gen
199
+ build : buildsrc
184
200
185
201
# We're making an empty file in the go-cache dir to
186
202
# get around a bug in go build where it will fail
187
203
# to cache binaries from time to time on empty NFS
188
204
# dirs
189
- buildsrc : check-go-version crypto/libs/$(OS_TYPE ) /$(ARCH ) /lib/libsodium.a node_exporter NONGO_BIN deps $( ALGOD_API_SWAGGER_INJECT ) $( KMD_API_SWAGGER_INJECT )
205
+ buildsrc : check-go-version crypto/libs/$(OS_TYPE ) /$(ARCH ) /lib/libsodium.a node_exporter NONGO_BIN
190
206
mkdir -p tmp/go-cache && \
191
207
touch tmp/go-cache/file.txt && \
192
208
GOCACHE=$(SRCPATH ) /tmp/go-cache go install $(GOTRIMPATH ) $(GOTAGS ) $(GOBUILDMODE ) -ldflags=" $( GOLDFLAGS) " ./...
193
209
194
210
check-go-version :
195
211
./scripts/check_golang_version.sh build
196
212
197
- SOURCES_RACE := github.com/algorand/go-algorand/cmd/kmd
198
-
199
213
# # Build binaries with the race detector enabled in them.
200
214
# # This allows us to run e2e tests with race detection.
201
215
# # We overwrite bin-race/kmd with a non -race version due to
202
216
# # the incredible performance impact of -race on Scrypt.
203
217
build-race : build
204
218
@mkdir -p $(GOPATH1 ) /bin-race
205
219
GOBIN=$(GOPATH1 ) /bin-race go install $(GOTRIMPATH ) $(GOTAGS ) -race -ldflags=" $( GOLDFLAGS) " ./...
206
- GOBIN= $(GOPATH1 ) /bin-race go install $( GOTRIMPATH ) $( GOTAGS ) -ldflags= " $( GOLDFLAGS ) " $( SOURCES_RACE )
220
+ cp $(GOPATH1 ) /bin/kmd $( GOPATH1 ) /bin-race
207
221
208
222
NONGO_BIN_FILES =$(GOPATH1 ) /bin/find-nodes.sh $(GOPATH1 ) /bin/update.sh $(GOPATH1 ) /bin/COPYING $(GOPATH1 ) /bin/ddconfig.sh
209
223
@@ -221,45 +235,33 @@ $(GOPATH1)/bin/%:
221
235
cp -f $< $@
222
236
223
237
test : build
224
- go test $(GOTAGS ) -race $(UNIT_TEST_SOURCES ) -timeout 3600s | logfilter
238
+ $( GOTESTCOMMAND ) $(GOTAGS ) -race $(UNIT_TEST_SOURCES ) -timeout 1h -coverprofile=coverage.txt -covermode=atomic
225
239
226
240
fulltest : build-race
227
- for PACKAGE_DIRECTORY in $( UNIT_TEST_SOURCES) ; do \
228
- go test $(GOTAGS ) -timeout 2500s -race $$ PACKAGE_DIRECTORY | logfilter; \
229
- done
230
-
231
- shorttest : build-race $(addprefix short_test_target_, $(UNIT_TEST_SOURCES ) )
241
+ $(GOTESTCOMMAND ) $(GOTAGS ) -race $(UNIT_TEST_SOURCES ) -timeout 1h -coverprofile=coverage.txt -covermode=atomic
232
242
233
- $( addprefix short_test_target_, $( UNIT_TEST_SOURCES ) ) : build
234
- @go test $(GOTAGS ) -short -timeout 2500s - race $(subst short_test_target_,, $@ ) | logfilter
243
+ shorttest : build-race
244
+ $( GOTESTCOMMAND ) $(GOTAGS ) -short -race $(UNIT_TEST_SOURCES ) -timeout 1h -coverprofile=coverage.txt -covermode=atomic
235
245
236
246
integration : build-race
237
247
./test/scripts/run_integration_tests.sh
238
248
239
249
testall : fulltest integration
240
250
241
- # generated files we should make sure we clean
242
- GENERATED_FILES := daemon/algod/api/bundledSpecInject.go \
243
- daemon/algod/api/lib/bundledSpecInject.go \
244
- daemon/kmd/lib/kmdapi/bundledSpecInject.go \
245
- $(ALGOD_API_SWAGGER_SPEC ) $(ALGOD_API_SWAGGER_SPEC ) .validated \
246
- $(KMD_API_SWAGGER_SPEC ) $(KMD_API_SWAGGER_SPEC ) .validated
247
-
248
251
clean :
249
252
go clean -i ./...
250
253
rm -f $(GOPATH1 ) /bin/node_exporter
251
- rm -f $(GENERATED_FILES )
252
254
cd crypto/libsodium-fork && \
253
255
test ! -e Makefile || make clean
254
256
rm -rf crypto/lib
255
257
rm -rf crypto/libs
256
258
rm -rf crypto/copies
259
+ rm -rf ./gen/devnet ./gen/mainnetnet ./gen/testnet
257
260
258
261
# clean without crypto
259
262
cleango :
260
263
go clean -i ./...
261
264
rm -f $(GOPATH1 ) /bin/node_exporter
262
- rm -f $(GENERATED_FILES )
263
265
264
266
# assign the phony target node_exporter the dependency of the actual executable.
265
267
node_exporter : $(GOPATH1 ) /bin/node_exporter
@@ -312,7 +314,7 @@ dump: $(addprefix gen/,$(addsuffix /genesis.dump, $(NETWORKS)))
312
314
install : build
313
315
scripts/dev_install.sh -p $(GOPATH1 ) /bin
314
316
315
- .PHONY : default fmt vet lint check_shell sanity cover prof deps build test fulltest shorttest clean cleango deploy node_exporter install % gen gen NONGO_BIN check-go-version
317
+ .PHONY : default fmt vet lint check_shell sanity cover prof deps build test fulltest shorttest clean cleango deploy node_exporter install % gen gen NONGO_BIN check-go-version rebuild_swagger
316
318
317
319
# ##### TARGETS FOR CICD PROCESS ######
318
320
include ./scripts/release/mule/Makefile.mule
0 commit comments