diff --git a/.travis.yml b/.travis.yml index cf7d15e17..dd9fa80bc 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,27 +1,33 @@ +--- language: go sudo: required dist: trusty os: -- linux -go: -- 1.8.x -- 1.9.x -- 1.10.x -- 1.11.x -- 1.12.x -- tip + - linux go_import_path: github.com/ncw/rclone before_install: -- if [[ $TRAVIS_OS_NAME == linux ]]; then sudo modprobe fuse ; sudo chmod 666 /dev/fuse ; sudo chown root:$USER /etc/fuse.conf ; fi -- if [[ $TRAVIS_OS_NAME == osx ]]; then brew update && brew tap caskroom/cask && brew cask install osxfuse ; fi + - git fetch --unshallow --tags + - | + if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then + sudo modprobe fuse + sudo chmod 666 /dev/fuse + sudo chown root:$USER /etc/fuse.conf + fi + if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then + brew update + brew tap caskroom/cask + brew cask install osxfuse + fi + if [[ "$TRAVIS_OS_NAME" == "windows" ]]; then + choco install -y winfsp zip make + cd ../.. # fix crlf in git checkout + mv $TRAVIS_REPO_SLUG _old + git config --global core.autocrlf false + git clone _old $TRAVIS_REPO_SLUG + cd $TRAVIS_REPO_SLUG + fi install: -- git fetch --unshallow --tags -- make vars -- make build_dep -script: -- make check -- make quicktest -- make compile_all + - make vars env: global: - GOTAGS=cmount @@ -32,23 +38,66 @@ env: addons: apt: packages: - - fuse - - libfuse-dev - - rpm - - pkg-config + - fuse + - libfuse-dev + - rpm + - pkg-config cache: directories: - $HOME/.cache/go-build matrix: allow_failures: - - go: tip + - go: tip include: - - os: osx - go: 1.12.x - env: GOTAGS="" - cache: - directories: - - $HOME/Library/Caches/go-build + - go: 1.8.x + script: + - make quicktest + - go: 1.9.x + script: + - make quicktest + - go: 1.10.x + script: + - make quicktest + - go: 1.11.x + script: + - make quicktest + - go: 1.12.x + env: + - GOTAGS=cmount + script: + - make build_dep + - make check + - make quicktest + - make racequicktest + - make compile_all + - os: osx + go: 1.12.x + env: + - GOTAGS= # cmount doesn't work on osx travis for some reason + cache: + directories: + - $HOME/Library/Caches/go-build + script: + - make + - make quicktest + - make racequicktest + # - os: windows + # go: 1.12.x + # env: + # - GOTAGS=cmount + # - CPATH='C:\Program Files (x86)\WinFsp\inc\fuse' + # #filter_secrets: false # works around a problem with secrets under windows + # cache: + # directories: + # - ${LocalAppData}/go-build + # script: + # - make + # - make quicktest + # - make racequicktest + - go: tip + script: + - make quicktest + deploy: provider: script script: make travis_beta @@ -57,4 +106,4 @@ deploy: repo: ncw/rclone all_branches: true go: 1.12.x - condition: $TRAVIS_PULL_REQUEST == false + condition: $TRAVIS_PULL_REQUEST == false && $TRAVIS_OS_NAME != "windows" diff --git a/Makefile b/Makefile index 5ea9d7201..e3c454a2e 100644 --- a/Makefile +++ b/Makefile @@ -17,8 +17,6 @@ ifneq ($(TAG),$(LAST_TAG)) endif GO_VERSION := $(shell go version) GO_FILES := $(shell go list ./... | grep -v /vendor/ ) -# Run full tests if go >= go1.12 -FULL_TESTS := $(shell go version | perl -lne 'print "go$$1.$$2" if /go(\d+)\.(\d+)/ && ($$1 > 1 || $$2 >= 12)') BETA_PATH := $(BRANCH_PATH)$(TAG) BETA_URL := https://beta.rclone.org/$(BETA_PATH)/ BETA_UPLOAD_ROOT := memstore:beta-rclone-org @@ -42,7 +40,6 @@ vars: @echo LAST_TAG="'$(LAST_TAG)'" @echo NEW_TAG="'$(NEW_TAG)'" @echo GO_VERSION="'$(GO_VERSION)'" - @echo FULL_TESTS="'$(FULL_TESTS)'" @echo BETA_URL="'$(BETA_URL)'" version: @@ -57,28 +54,22 @@ test: rclone # Quick test quicktest: RCLONE_CONFIG="/notfound" go test $(BUILDTAGS) $(GO_FILES) -ifdef FULL_TESTS + +racequicktest: RCLONE_CONFIG="/notfound" go test $(BUILDTAGS) -cpu=2 -race $(GO_FILES) -endif # Do source code quality checks check: rclone -ifdef FULL_TESTS @# we still run go vet for -printfuncs which golangci-lint doesn't do yet @# see: https://github.com/golangci/golangci-lint/issues/204 @echo "-- START CODE QUALITY REPORT -------------------------------" @go vet $(BUILDTAGS) -printfuncs Debugf,Infof,Logf,Errorf ./... @golangci-lint run ./... @echo "-- END CODE QUALITY REPORT ---------------------------------" -else - @echo Skipping source quality tests as version of go too old -endif # Get the build dependencies build_dep: -ifdef FULL_TESTS go run bin/get-github-release.go -extract golangci-lint golangci/golangci-lint 'golangci-lint-.*\.tar\.gz' -endif # Get the release dependencies release_dep: @@ -162,11 +153,7 @@ log_since_last_release: git log $(LAST_TAG).. compile_all: -ifdef FULL_TESTS go run bin/cross-compile.go -parallel 8 -compile-only $(BUILDTAGS) $(TAG) -else - @echo Skipping compile all as version of go too old -endif appveyor_upload: rclone --config bin/travis.rclone.conf -v copy --exclude '*beta-latest*' build/ $(BETA_UPLOAD) @@ -186,6 +173,11 @@ BUILD_FLAGS := -exclude "^(windows|darwin)/" ifeq ($(TRAVIS_OS_NAME),osx) BUILD_FLAGS := -include "^darwin/" -cgo endif +ifeq ($(TRAVIS_OS_NAME),windows) +# BUILD_FLAGS := -include "^windows/" -cgo +# 386 doesn't build yet + BUILD_FLAGS := -include "^windows/amd64" -cgo +endif travis_beta: ifeq ($(TRAVIS_OS_NAME),linux)