From 321ba1b6f06ecca380cf284172eb1ee17e71c37d Mon Sep 17 00:00:00 2001 From: Yuri Shkuro Date: Mon, 17 Oct 2016 14:10:48 -0400 Subject: [PATCH] Add travis build --- .travis.yml | 21 ++++++++++ CONTRIBUTING.md | 4 +- Makefile | 2 +- glide.yaml | 2 +- hello.go | 10 ----- sample/sample.go | 10 +++++ sample/sample_test.go | 12 ++++++ scripts/cover.sh | 64 ++++++++++++++++++++++++++++ scripts/updateLicense.py | 87 +++++++++++++++++++++++++++++++++++++++ scripts/updateLicenses.sh | 6 +++ 10 files changed, 204 insertions(+), 14 deletions(-) create mode 100644 .travis.yml delete mode 100644 hello.go create mode 100644 sample/sample.go create mode 100644 sample/sample_test.go create mode 100755 scripts/cover.sh create mode 100644 scripts/updateLicense.py create mode 100755 scripts/updateLicenses.sh diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..3cb72b3 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,21 @@ +sudo: required + +services: + - docker + +language: go + +go: + - 1.6 + - 1.7 + +env: + global: + - GO15VENDOREXPERIMENT=1 + +install: + - make install_ci + +script: + - make test_ci + - travis_retry goveralls -coverprofile=cover.out -service=travis-ci || true diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a54cd2d..8eaead4 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -18,7 +18,7 @@ make test ## Making A Change *Before making any significant changes, please [open an -issue](https://github.com/uber/jaeger-client-go/issues).* Discussing your proposed +issue](https://github.com/uber/jaeger-lib/issues).* Discussing your proposed changes ahead of time will make the contribution process smooth for everyone. Once we've discussed your changes and you've got your code ready, make sure @@ -35,7 +35,7 @@ pull request is most likely to be accepted if it: ## License By contributing your code, you agree to license your contribution under the terms -of the MIT License: https://github.com/uber/jaeger-client-go/blob/master/LICENSE +of the [MIT License](./LICENSE). If you are adding a new file it should have a header like below. diff --git a/Makefile b/Makefile index 3d46c9b..5060cd8 100644 --- a/Makefile +++ b/Makefile @@ -77,6 +77,6 @@ install_ci: install .PHONY: test_ci test_ci: - @./scripts/cover.sh $(shell go list $(PACKAGES)) + ./scripts/cover.sh $(shell go list $(PACKAGES)) make lint diff --git a/glide.yaml b/glide.yaml index a083a32..06b87b3 100644 --- a/glide.yaml +++ b/glide.yaml @@ -1,3 +1,3 @@ -package: github.com/uber/jaeger +package: github.com/uber/jaeger-lib import: - package: github.com/codahale/hdrhistogram diff --git a/hello.go b/hello.go deleted file mode 100644 index d4938f4..0000000 --- a/hello.go +++ /dev/null @@ -1,10 +0,0 @@ -package main - -import ( - "fmt" -) - -func main() { - fmt.Println("Hello, playground") -} - diff --git a/sample/sample.go b/sample/sample.go new file mode 100644 index 0000000..d89b0f9 --- /dev/null +++ b/sample/sample.go @@ -0,0 +1,10 @@ +package sample + +import ( + "fmt" +) + +// SayHello is a sample function +func SayHello() { + fmt.Println("Hello, playground") +} diff --git a/sample/sample_test.go b/sample/sample_test.go new file mode 100644 index 0000000..19326b0 --- /dev/null +++ b/sample/sample_test.go @@ -0,0 +1,12 @@ +package sample + +import "testing" + +func ExampleSayHello() { + SayHello() + // Output: Hello, playground +} + +func TestSayHello(t *testing.T) { + SayHello() +} diff --git a/scripts/cover.sh b/scripts/cover.sh new file mode 100755 index 0000000..77c1aef --- /dev/null +++ b/scripts/cover.sh @@ -0,0 +1,64 @@ +#!/bin/bash + +set -e + +COVER=.cover +ROOT_PKG=github.com/uber/jaeger-lib/ + +if [[ -d "$COVER" ]]; then + rm -rf "$COVER" +fi +mkdir -p "$COVER" + +# If a package directory has a .nocover file, don't count it when calculating +# coverage. +filter="" +for pkg in "$@"; do + if [[ -f "$GOPATH/src/$pkg/.nocover" ]]; then + if [[ -n "$filter" ]]; then + filter="$filter, " + fi + filter="\"$pkg\": true" + fi +done + +if [[ "$filter" = "" ]]; then + # make up some name to avoid breaking jq's select(in({})) + filter='"no-filter": true' +fi + +i=0 +for pkg in "$@"; do + i=$((i + 1)) + + extracoverpkg="" + if [[ -f "$GOPATH/src/$pkg/.extra-coverpkg" ]]; then + extracoverpkg=$( \ + sed -e "s|^|$pkg/|g" < "$GOPATH/src/$pkg/.extra-coverpkg" \ + | tr '\n' ',') + fi + + coverpkg=$(go list -json "$pkg" | jq -r ' + .Deps + | . + ["'"$pkg"'"] + | map + ( select(startswith("'"$ROOT_PKG"'")) + | select(contains("/vendor/") | not) + | select(in({'"$filter"'}) | not) + ) + | join(",") + ') + if [[ -n "$extracoverpkg" ]]; then + coverpkg="$extracoverpkg$coverpkg" + fi + + args="" + if [[ -n "$coverpkg" ]]; then + args="-coverprofile $COVER/cover.${i}.out" # -coverpkg $coverpkg" + fi + + echo go test -v -race "$pkg" + go test $args -v -race "$pkg" +done + +gocovmerge "$COVER"/*.out > cover.out diff --git a/scripts/updateLicense.py b/scripts/updateLicense.py new file mode 100644 index 0000000..adf0279 --- /dev/null +++ b/scripts/updateLicense.py @@ -0,0 +1,87 @@ +from __future__ import ( + absolute_import, print_function, division, unicode_literals +) + +import re +import sys +from datetime import datetime + +CURRENT_YEAR = datetime.today().year + +LICENSE_BLOB = """Copyright (c) %d Uber Technologies, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE.""" % CURRENT_YEAR + +LICENSE_BLOB_LINES_GO = [ + ('// ' + l).strip() + '\n' for l in LICENSE_BLOB.split('\n') +] + +COPYRIGHT_RE = re.compile(r'Copyright \(c\) (\d+)', re.I) + + +def update_go_license(name): + with open(name) as f: + orig_lines = list(f) + lines = list(orig_lines) + + found = False + changed = False + for i, line in enumerate(lines[:5]): + m = COPYRIGHT_RE.search(line) + if not m: + continue + + found = True + year = int(m.group(1)) + if year == CURRENT_YEAR: + break + + new_line = COPYRIGHT_RE.sub('Copyright (c) %d' % CURRENT_YEAR, line) + assert line != new_line, ('Could not change year in: %s' % line) + lines[i] = new_line + changed = True + break + + if not found: + if 'Code generated by' in lines[0]: + lines[1:1] = ['\n'] + LICENSE_BLOB_LINES_GO + else: + lines[0:0] = LICENSE_BLOB_LINES_GO + ['\n'] + changed = True + + if changed: + with open(name, 'w') as f: + for line in lines: + f.write(line) + + +def main(): + if len(sys.argv) == 1: + print('USAGE: %s FILE ...' % sys.argv[0]) + sys.exit(1) + + for name in sys.argv[1:]: + if name.endswith('.go'): + update_go_license(name) + else: + raise NotImplementedError('Unsupported file type: %s' % name) + + +if __name__ == "__main__": + main() diff --git a/scripts/updateLicenses.sh b/scripts/updateLicenses.sh new file mode 100755 index 0000000..2074752 --- /dev/null +++ b/scripts/updateLicenses.sh @@ -0,0 +1,6 @@ +#!/bin/bash + +set -e +set -x + +python scripts/updateLicense.py $(go list -json $(glide nv) | jq -r '.Dir + "/" + (.GoFiles | .[])')