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
+}