@cryptotaxi247 / kubo / commits / 73b3c3045

ci-pkgs: added travis and jenkins ci pkgs

Juan Batiz-Benet committed Jan 14, 2015 at 15:37 UTC 73b3c3045292e487df5e8afbf555d55b2ca28690
5 files changed +196
util/testutil/ci/ci.go new
+52
@@ -0,0 +1,52 @@
1 +// Package ci implements some helper functions to use during
2 +// tests. Many times certain facilities are not available, or tests
3 +// must run differently.
4 +package ci
5 +
6 +import (
7 + "os"
8 +
9 + jenkins "github.com/jbenet/go-ipfs/util/testutil/ci/jenkins"
10 + travis "github.com/jbenet/go-ipfs/util/testutil/ci/travis"
11 +)
12 +
13 +// EnvVar is a type to use travis-only env var names with
14 +// the type system.
15 +type EnvVar string
16 +
17 +// Environment variables that TravisCI uses.
18 +const (
19 + VarCI EnvVar = "TEST_NO_FUSE"
20 + VarNoFuse EnvVar = "TEST_NO_FUSE"
21 + VarVerbose EnvVar = "TEST_VERBOSE"
22 +)
23 +
24 +// IsRunning attempts to determine whether this process is
25 +// running on CI. This is done by checking any of:
26 +//
27 +// CI=true
28 +// travis.IsRunning()
29 +// jenkins.IsRunning()
30 +//
31 +func IsRunning() bool {
32 + if os.Getenv(string(VarCI)) == "true" {
33 + return true
34 + }
35 +
36 + return travis.IsRunning() || jenkins.IsRunning()
37 +}
38 +
39 +// Env returns the value of a CI env variable.
40 +func Env(v EnvVar) string {
41 + return os.Getenv(string(v))
42 +}
43 +
44 +// Returns whether FUSE is explicitly disabled wiht TEST_NO_FUSE.
45 +func NoFuse(v EnvVar) bool {
46 + return os.Getenv(string(VarNoFuse)) == "1"
47 +}
48 +
49 +// Returns whether TEST_VERBOSE is enabled.
50 +func Verbose(v EnvVar) bool {
51 + return os.Getenv(string(VarVerbose)) == "1"
52 +}
util/testutil/ci/jenkins/jenkins.go new
+58
@@ -0,0 +1,58 @@
1 +// Package jenkins implements some helper functions to use during
2 +// tests. Many times certain facilities are not available, or tests
3 +// must run differently.
4 +package jenkins
5 +
6 +import (
7 + "os"
8 + "strings"
9 +)
10 +
11 +// EnvVar is a type to use travis-only env var names with
12 +// the type system.
13 +type EnvVar string
14 +
15 +// Environment variables that TravisCI uses.
16 +const (
17 + VarBuildNumber EnvVar = "BUILD_NUMBER"
18 + VarBuildId EnvVar = "BUILD_ID"
19 + VarBuildUrl EnvVar = "BUILD_URL"
20 + VarNodeName EnvVar = "NODE_NAME"
21 + VarJobName EnvVar = "JOB_NAME"
22 + VarBuildTag EnvVar = "BUILD_TAG"
23 + VarJenkinsUrl EnvVar = "JENKINS_URL"
24 + VarExecutorNumber EnvVar = "EXECUTOR_NUMBER"
25 + VarJavaHome EnvVar = "JAVA_HOME"
26 + VarWorkspace EnvVar = "WORKSPACE"
27 + VarSvnRevision EnvVar = "SVN_REVISION"
28 + VarCvsBranch EnvVar = "CVS_BRANCH"
29 + VarGitCommit EnvVar = "GIT_COMMIT"
30 + VarGitUrl EnvVar = "GIT_URL"
31 + VarGitBranch EnvVar = "GIT_BRANCH"
32 +)
33 +
34 +// IsRunning attempts to determine whether this process is
35 +// running on Jenkins CI. This is done by checking any of the
36 +// following:
37 +//
38 +// JENKINS_URL is set
39 +// BuildTag has prefix "jenkins-"
40 +//
41 +func IsRunning() bool {
42 + return len(Env(VarJenkinsUrl)) > 0 || strings.HasPrefix(Env(VarBuildTag), "jenkins-")
43 +}
44 +
45 +// Env returns the value of a travis env variable.
46 +func Env(v EnvVar) string {
47 + return os.Getenv(string(v))
48 +}
49 +
50 +// JobName returns the jenkins JOB_NAME of this build.
51 +func JobName() string {
52 + return Env(VarJobName)
53 +}
54 +
55 +// BuildTag returns the jenkins BUILD_TAG.
56 +func BuildTag() string {
57 + return Env(VarBuildTag)
58 +}
util/testutil/ci/jenkins/jenkins_test.go new
+16
@@ -0,0 +1,16 @@
1 +package jenkins
2 +
3 +import (
4 + "os"
5 + "strings"
6 + "testing"
7 +)
8 +
9 +func TestIsRunning(t *testing.T) {
10 + hasPrefix := strings.HasPrefix(os.Getenv("BUILD_TAG"), "jenkins-")
11 + tr := len(os.Getenv("JENKINS_URL")) > 0 || hasPrefix
12 +
13 + if tr != IsRunning() {
14 + t.Error("IsRunning() does not match TRAVIS && CI env var check")
15 + }
16 +}
util/testutil/ci/travis/travis.go new
+57
@@ -0,0 +1,57 @@
1 +// Package travis implements some helper functions to use during
2 +// tests. Many times certain facilities are not available, or tests
3 +// must run differently.
4 +package travis
5 +
6 +import "os"
7 +
8 +// EnvVar is a type to use travis-only env var names with
9 +// the type system.
10 +type EnvVar string
11 +
12 +// Environment variables that TravisCI uses.
13 +const (
14 + VarCI EnvVar = "CI"
15 + VarTravis EnvVar = "TRAVIS"
16 + VarBranch EnvVar = "TRAVIS_BRANCH"
17 + VarBuildDir EnvVar = "TRAVIS_BUILD_DIR"
18 + VarBuildId EnvVar = "TRAVIS_BUILD_ID"
19 + VarBuildNumber EnvVar = "TRAVIS_BUILD_NUMBER"
20 + VarCommit EnvVar = "TRAVIS_COMMIT"
21 + VarCommitRange EnvVar = "TRAVIS_COMMIT_RANGE"
22 + VarJobId EnvVar = "TRAVIS_JOB_ID"
23 + VarJobNumber EnvVar = "TRAVIS_JOB_NUMBER"
24 + VarPullRequest EnvVar = "TRAVIS_PULL_REQUEST"
25 + VarSecureEnvVars EnvVar = "TRAVIS_SECURE_ENV_VARS"
26 + VarRepoSlug EnvVar = "TRAVIS_REPO_SLUG"
27 + VarOsName EnvVar = "TRAVIS_OS_NAME"
28 + VarTag EnvVar = "TRAVIS_TAG"
29 + VarGoVersion EnvVar = "TRAVIS_GO_VERSION"
30 +)
31 +
32 +// IsRunning attempts to determine whether this process is
33 +// running on Travis-CI. This is done by checking ALL of the
34 +// following env vars are set:
35 +//
36 +// CI=true
37 +// TRAVIS=true
38 +//
39 +// Note: cannot just check CI.
40 +func IsRunning() bool {
41 + return Env(VarCI) == "true" && Env(VarTravis) == "true"
42 +}
43 +
44 +// Env returns the value of a travis env variable.
45 +func Env(v EnvVar) string {
46 + return os.Getenv(string(v))
47 +}
48 +
49 +// JobId returns the travis JOB_ID of this build.
50 +func JobId() string {
51 + return Env(VarJobId)
52 +}
53 +
54 +// JobNumber returns the travis JOB_NUMBER of this build.
55 +func JobNumber() string {
56 + return Env(VarJobNumber)
57 +}
util/testutil/ci/travis/travis_test.go new
+13
@@ -0,0 +1,13 @@
1 +package travis
2 +
3 +import (
4 + "os"
5 + "testing"
6 +)
7 +
8 +func TestIsRunning(t *testing.T) {
9 + tr := os.Getenv("TRAVIS") == "true" && os.Getenv("CI") == "true"
10 + if tr != IsRunning() {
11 + t.Error("IsRunning() does not match TRAVIS && CI env var check")
12 + }
13 +}