Merge pull request #188 from emirpasic/development

Switch to CircleCI
diff --git a/.circleci/config.yml b/.circleci/config.yml
new file mode 100644
index 0000000..d4b8004
--- /dev/null
+++ b/.circleci/config.yml
@@ -0,0 +1,70 @@
+version: 2.1
+
+jobs:
+  test:
+    parameters:
+      version:
+        type: string
+        default: latest
+    docker:
+      - image: cimg/go:<<parameters.version>>
+    environment:
+      TEST_RESULTS: /tmp/test-results
+    working_directory: ~/gods
+    steps:
+      - run:
+          name: Print Go version (go version)
+          command: |
+            go version
+      - checkout
+      - run:
+          name: Run tests
+          command: |
+            mkdir -p $TEST_RESULTS
+            go install gotest.tools/gotestsum@latest
+            go test -v ./... | go tool test2json > $TEST_RESULTS/test2json-output.json
+            gotestsum --junitfile $TEST_RESULTS/gotestsum-report.xml
+      - run:
+          name: Calculate test coverage
+          command: |
+            mkdir -p $TEST_RESULTS
+            go test -coverprofile=c.out ./... > /dev/null
+            go tool cover -html=c.out -o coverage.html
+            mv coverage.html $TEST_RESULTS
+      - run:
+          name: Lint (golint)
+          command: |
+            go install golang.org/x/lint/golint@latest
+            golint -set_exit_status ./...
+      - run:
+          name: Enforce formatted code (go fmt)
+          command: |
+            ! go fmt ./... 2>&1 | read
+      - run:
+          name: Examine and report suspicious constructs (go vet)
+          command: |
+            go vet -v ./...
+      - run:
+          name: Calculate cyclomatic complexity (gocyclo)
+          command: |
+            go install github.com/fzipp/gocyclo/cmd/gocyclo@latest
+            gocyclo -avg -over 15 ../gods
+      - run:
+          name: Check for unchecked errors (errcheck)
+          command: |
+            go install github.com/kisielk/errcheck@latest
+            errcheck ./...
+      - store_artifacts:
+          path: /tmp/test-results
+          destination: raw-test-output
+      - store_test_results:
+          path: /tmp/test-results
+
+workflows:
+  test:
+    jobs:
+      - test:
+          matrix:
+            parameters:
+              # To test with and without generics (versions prior to 1.18)
+              version: ["1.18", "1.17"]
\ No newline at end of file
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 77c0470..0000000
--- a/.travis.yml
+++ /dev/null
@@ -1,27 +0,0 @@
-language: go
-arch:
-  - amd64
-  - ppc64le
-go:
-  - 1.2.x
-  - 1.3.x
-  - 1.4.x
-  - 1.5.x
-  - 1.6.x
-  - 1.7.x
-  - 1.8.x
-  - 1.9.x
-  - 1.10.x
-  - 1.11.x
-  - 1.12.x
-  - 1.13.x
-  - 1.14.x
-  - tip
-jobs:
- exclude: # Excluded for power support as the lower versions are not supported
-  - arch: ppc64le
-    go: 1.2.x
-  - arch: ppc64le
-    go: 1.3.x
-  - arch: ppc64le
-    go: 1.4.x
diff --git a/README.md b/README.md
index 7346b99..035fc34 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-[![GoDoc](https://godoc.org/github.com/emirpasic/gods?status.svg)](https://godoc.org/github.com/emirpasic/gods) [![Build Status](https://travis-ci.org/emirpasic/gods.svg)](https://travis-ci.org/emirpasic/gods) [![Go Report Card](https://goreportcard.com/badge/github.com/emirpasic/gods)](https://goreportcard.com/report/github.com/emirpasic/gods) [![PyPI](https://img.shields.io/pypi/l/Django.svg?maxAge=2592000)](https://github.com/emirpasic/gods/blob/master/LICENSE)
+[![GoDoc](https://godoc.org/github.com/emirpasic/gods?status.svg)](https://godoc.org/github.com/emirpasic/gods) [![Build Status](https://circleci.com/gh/emirpasic/gods/tree/master.svg?style=shield)](https://circleci.com/gh/emirpasic/gods?branch=master) [![Go Report Card](https://goreportcard.com/badge/github.com/emirpasic/gods)](https://goreportcard.com/report/github.com/emirpasic/gods) [![PyPI](https://img.shields.io/pypi/l/Django.svg?maxAge=2592000)](https://github.com/emirpasic/gods/blob/master/LICENSE)
 
 # GoDS (Go Data Structures)
 
diff --git a/go.mod b/go.mod
new file mode 100644
index 0000000..5160ad0
--- /dev/null
+++ b/go.mod
@@ -0,0 +1,3 @@
+module github.com/emirpasic/gods
+
+go 1.2