version: 2.1 commands: test: parameters: arch: default: "amd64" description: The target architecture. type: enum enum: ["amd64", "386"] steps: - run: name: "Test (<>)" command: | export GOARCH=<> go version go env go test -v -coverprofile=coverage-<>.txt -covermode=count jobs: go114: docker: - image: cimg/go:1.14 steps: - run: name: "Install tools" command: | curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.23.8 - checkout - run: name: "Lint" command: golangci-lint run - test: arch: "amd64" - test: arch: "386" - run: name: "Codecov upload" command: bash <(curl -s https://codecov.io/bash) - restore_cache: keys: - corpus - run: name: "Fuzzing" command: | go get -u github.com/dvyukov/go-fuzz/go-fuzz github.com/dvyukov/go-fuzz/go-fuzz-build go-fuzz-build timeout --preserve-status --signal INT 1m go-fuzz -procs=2 test ! "$(ls crashers)" - save_cache: key: corpus-{{ epoch }} paths: - corpus - run: name: "Benchmark" command: go test -run=- -bench=. -benchmem - run: name: "Build tests for PPC64" command: | GOARCH=ppc64 go test -c mv uint256.test uint256.test.ppc64 - persist_to_workspace: root: . paths: - uint256.test.* bigendian: docker: - image: circleci/buildpack-deps:bullseye steps: - run: name: "Install QEMU" command: sudo apt-get -q update && sudo apt-get -qy install qemu-user-static --no-install-recommends - attach_workspace: at: . - run: name: "Test (PPC64 emulation)" command: qemu-ppc64-static uint256.test.ppc64 -test.v go113: docker: - image: cimg/go:1.13 steps: - checkout - test go112: docker: - image: cimg/go:1.12 steps: - checkout - test workflows: version: 2 uint256: jobs: - go114 - go113 - go112 - bigendian: requires: - go114