travis 1.11.1 → 1.12.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +9 -3
- data/Rakefile +22 -20
- data/bin/travis +5 -3
- data/examples/org_overview.rb +2 -0
- data/examples/pro_auth.rb +3 -1
- data/examples/stream.rb +5 -3
- data/lib/travis/auto_login.rb +2 -0
- data/lib/travis/cli/accounts.rb +12 -9
- data/lib/travis/cli/api_command.rb +85 -81
- data/lib/travis/cli/branches.rb +8 -6
- data/lib/travis/cli/cache.rb +48 -44
- data/lib/travis/cli/cancel.rb +4 -2
- data/lib/travis/cli/command.rb +170 -142
- data/lib/travis/cli/console.rb +5 -5
- data/lib/travis/cli/disable.rb +4 -2
- data/lib/travis/cli/enable.rb +14 -12
- data/lib/travis/cli/encrypt.rb +57 -57
- data/lib/travis/cli/encrypt_file.rb +29 -18
- data/lib/travis/cli/endpoint.rb +9 -7
- data/lib/travis/cli/env.rb +13 -8
- data/lib/travis/cli/help.rb +10 -8
- data/lib/travis/cli/history.rb +19 -15
- data/lib/travis/cli/init.rb +27 -24
- data/lib/travis/cli/lint.rb +10 -8
- data/lib/travis/cli/login.rb +17 -11
- data/lib/travis/cli/logout.rb +4 -2
- data/lib/travis/cli/logs.rb +28 -19
- data/lib/travis/cli/monitor.rb +11 -8
- data/lib/travis/cli/open.rb +17 -14
- data/lib/travis/cli/parser.rb +2 -0
- data/lib/travis/cli/pubkey.rb +13 -11
- data/lib/travis/cli/raw.rb +4 -3
- data/lib/travis/cli/repo_command.rb +123 -112
- data/lib/travis/cli/report.rb +40 -33
- data/lib/travis/cli/repos.rb +14 -9
- data/lib/travis/cli/requests.rb +13 -12
- data/lib/travis/cli/restart.rb +4 -2
- data/lib/travis/cli/settings.rb +41 -35
- data/lib/travis/cli/setup/anynines.rb +7 -6
- data/lib/travis/cli/setup/appfog.rb +6 -4
- data/lib/travis/cli/setup/artifacts.rb +7 -5
- data/lib/travis/cli/setup/biicode.rb +6 -4
- data/lib/travis/cli/setup/cloud_66.rb +6 -4
- data/lib/travis/cli/setup/cloud_control.rb +8 -6
- data/lib/travis/cli/setup/cloud_files.rb +7 -5
- data/lib/travis/cli/setup/cloud_foundry.rb +9 -7
- data/lib/travis/cli/setup/code_deploy.rb +33 -29
- data/lib/travis/cli/setup/deis.rb +8 -6
- data/lib/travis/cli/setup/divshot.rb +20 -18
- data/lib/travis/cli/setup/elastic_beanstalk.rb +10 -8
- data/lib/travis/cli/setup/engine_yard.rb +9 -7
- data/lib/travis/cli/setup/gcs.rb +9 -7
- data/lib/travis/cli/setup/hackage.rb +6 -4
- data/lib/travis/cli/setup/heroku.rb +10 -4
- data/lib/travis/cli/setup/modulus.rb +5 -3
- data/lib/travis/cli/setup/ninefold.rb +7 -5
- data/lib/travis/cli/setup/nodejitsu.rb +6 -4
- data/lib/travis/cli/setup/npm.rb +6 -4
- data/lib/travis/cli/setup/open_shift.rb +8 -6
- data/lib/travis/cli/setup/opsworks.rb +24 -22
- data/lib/travis/cli/setup/pypi.rb +7 -5
- data/lib/travis/cli/setup/releases.rb +6 -6
- data/lib/travis/cli/setup/ruby_gems.rb +7 -5
- data/lib/travis/cli/setup/s3.rb +12 -8
- data/lib/travis/cli/setup/sauce_connect.rb +7 -5
- data/lib/travis/cli/setup/service.rb +36 -25
- data/lib/travis/cli/setup.rb +7 -3
- data/lib/travis/cli/show.rb +10 -8
- data/lib/travis/cli/sshkey.rb +31 -27
- data/lib/travis/cli/status.rb +5 -3
- data/lib/travis/cli/sync.rb +9 -7
- data/lib/travis/cli/token.rb +4 -2
- data/lib/travis/cli/version.rb +4 -3
- data/lib/travis/cli/whatsup.rb +10 -8
- data/lib/travis/cli/whoami.rb +2 -2
- data/lib/travis/cli.rb +39 -36
- data/lib/travis/client/account.rb +8 -6
- data/lib/travis/client/artifact.rb +16 -12
- data/lib/travis/client/auto_login.rb +7 -4
- data/lib/travis/client/broadcast.rb +2 -0
- data/lib/travis/client/build.rb +7 -3
- data/lib/travis/client/cache.rb +4 -2
- data/lib/travis/client/commit.rb +5 -2
- data/lib/travis/client/entity.rb +50 -46
- data/lib/travis/client/env_var.rb +13 -8
- data/lib/travis/client/error.rb +5 -3
- data/lib/travis/client/has_uuid.rb +3 -1
- data/lib/travis/client/job.rb +8 -3
- data/lib/travis/client/lint_result.rb +2 -0
- data/lib/travis/client/listener.rb +70 -55
- data/lib/travis/client/methods.rb +10 -5
- data/lib/travis/client/namespace.rb +20 -16
- data/lib/travis/client/not_loadable.rb +3 -1
- data/lib/travis/client/repository.rb +34 -22
- data/lib/travis/client/request.rb +5 -2
- data/lib/travis/client/restartable.rb +2 -0
- data/lib/travis/client/session.rb +118 -88
- data/lib/travis/client/settings.rb +8 -3
- data/lib/travis/client/singleton_setting.rb +2 -0
- data/lib/travis/client/ssh_key.rb +2 -0
- data/lib/travis/client/states.rb +8 -6
- data/lib/travis/client/user.rb +2 -0
- data/lib/travis/client/weak_entity.rb +6 -3
- data/lib/travis/client.rb +4 -1
- data/lib/travis/pro/auto_login.rb +2 -0
- data/lib/travis/pro.rb +2 -0
- data/lib/travis/tools/assets.rb +6 -3
- data/lib/travis/tools/completion.rb +10 -6
- data/lib/travis/tools/formatter.rb +20 -14
- data/lib/travis/tools/github.rb +59 -49
- data/lib/travis/tools/notification.rb +18 -13
- data/lib/travis/tools/safe_string.rb +4 -1
- data/lib/travis/tools/ssl_key.rb +5 -2
- data/lib/travis/tools/system.rb +11 -6
- data/lib/travis/version.rb +3 -1
- data/lib/travis.rb +3 -1
- data/spec/cli/api_command_spec.rb +11 -8
- data/spec/cli/cancel_spec.rb +2 -4
- data/spec/cli/encrypt_file_spec.rb +9 -7
- data/spec/cli/encrypt_spec.rb +19 -17
- data/spec/cli/endpoint_spec.rb +12 -10
- data/spec/cli/help_spec.rb +14 -12
- data/spec/cli/history_spec.rb +2 -0
- data/spec/cli/init_spec.rb +35 -33
- data/spec/cli/logs_spec.rb +2 -0
- data/spec/cli/open_spec.rb +6 -4
- data/spec/cli/repo_command_spec.rb +8 -4
- data/spec/cli/restart_spec.rb +2 -4
- data/spec/cli/setup/service_spec.rb +17 -18
- data/spec/cli/setup_spec.rb +2 -4
- data/spec/cli/show_spec.rb +4 -2
- data/spec/cli/status_spec.rb +7 -5
- data/spec/cli/token_spec.rb +7 -5
- data/spec/cli/version_spec.rb +2 -0
- data/spec/cli/whoami_spec.rb +9 -7
- data/spec/client/account_spec.rb +28 -20
- data/spec/client/auto_login_spec.rb +12 -9
- data/spec/client/broadcast_spec.rb +5 -3
- data/spec/client/build_spec.rb +28 -24
- data/spec/client/commit_spec.rb +17 -14
- data/spec/client/job_spec.rb +27 -23
- data/spec/client/methods_spec.rb +8 -4
- data/spec/client/namespace_spec.rb +8 -4
- data/spec/client/repository_spec.rb +33 -30
- data/spec/client/session_spec.rb +71 -67
- data/spec/client/user_spec.rb +13 -10
- data/spec/client_spec.rb +6 -4
- data/spec/pro_spec.rb +5 -3
- data/spec/spec_helper.rb +3 -1
- data/spec/support/fake_api.rb +662 -662
- data/spec/support/fake_github.rb +6 -3
- data/spec/support/helpers.rb +13 -8
- data/spec/travis_spec.rb +5 -3
- data/travis.gemspec +400 -399
- metadata +30 -50
data/lib/travis/tools/github.rb
CHANGED
@@ -1,3 +1,6 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'English'
|
1
4
|
require 'travis/tools/system'
|
2
5
|
require 'yaml'
|
3
6
|
require 'json'
|
@@ -11,21 +14,21 @@ module Travis
|
|
11
14
|
GITHUB_HOST = 'github.com'
|
12
15
|
|
13
16
|
attr_accessor :api_url, :scopes, :github_token, :drop_token, :callback, :explode, :after_tokens,
|
14
|
-
|
15
|
-
|
17
|
+
:login_header, :auto_token, :note,
|
18
|
+
:hub_path, :oauth_paths, :composer_path, :git_config_keys, :debug, :no_token, :check_token
|
16
19
|
|
17
20
|
def initialize(options = nil)
|
18
21
|
@check_token = true
|
19
|
-
@ask_login = proc { raise
|
20
|
-
@after_tokens = proc {
|
22
|
+
@ask_login = proc { raise 'ask_login callback not set' }
|
23
|
+
@after_tokens = proc {}
|
21
24
|
@debug = proc { |_| }
|
22
25
|
@hub_path = ENV['HUB_CONFIG'] || '~/.config/hub'
|
23
26
|
@oauth_paths = ['~/.github-oauth-token']
|
24
|
-
@composer_path =
|
27
|
+
@composer_path = '~/.composer/config.json'
|
25
28
|
@note = 'temporary token'
|
26
29
|
@git_config_keys = %w[github.token github.oauth-token]
|
27
30
|
@scopes = ['user', 'user:email', 'repo'] # overridden by value from /config
|
28
|
-
options
|
31
|
+
options&.each_pair { |k, v| send("#{k}=", v) if respond_to? "#{k}=" }
|
29
32
|
yield self if block_given?
|
30
33
|
end
|
31
34
|
|
@@ -37,12 +40,13 @@ module Travis
|
|
37
40
|
require 'gh' unless defined? GH
|
38
41
|
possible_tokens { |t| yield(t) if acceptable?(t) }
|
39
42
|
ensure
|
40
|
-
callback
|
41
|
-
callback
|
43
|
+
callback = self.callback
|
44
|
+
self.callback = nil
|
45
|
+
callback&.call
|
42
46
|
end
|
43
47
|
|
44
|
-
def with_session
|
45
|
-
with_token { |t| GH.with(:
|
48
|
+
def with_session
|
49
|
+
with_token { |t| GH.with(token: t) { yield(t) } }
|
46
50
|
end
|
47
51
|
|
48
52
|
def possible_tokens(&block)
|
@@ -66,6 +70,7 @@ module Travis
|
|
66
70
|
|
67
71
|
def git_tokens
|
68
72
|
return unless System.has? 'git'
|
73
|
+
|
69
74
|
git_config_keys.each do |key|
|
70
75
|
`git config --get-all #{key}`.each_line do |line|
|
71
76
|
token = line.strip
|
@@ -83,11 +88,11 @@ module Travis
|
|
83
88
|
|
84
89
|
def hub_tokens
|
85
90
|
hub.fetch(host, []).each do |entry|
|
86
|
-
yield entry[
|
91
|
+
yield entry['oauth_token'] if entry['oauth_token']
|
87
92
|
end
|
88
93
|
end
|
89
94
|
|
90
|
-
def oauth_file_tokens
|
95
|
+
def oauth_file_tokens
|
91
96
|
oauth_paths.each do |path|
|
92
97
|
file(path) do |content|
|
93
98
|
token = content.strip
|
@@ -103,12 +108,12 @@ module Travis
|
|
103
108
|
end
|
104
109
|
|
105
110
|
def issuepost_token(&block)
|
106
|
-
security(:generic, :w,
|
111
|
+
security(:generic, :w, '-l issuepost.github.access_token', 'issuepost token', &block) if host == 'github.com'
|
107
112
|
end
|
108
113
|
|
109
114
|
def github_for_mac_token(&block)
|
110
115
|
command = '-s "github.com/mac"'
|
111
|
-
security(:internet, :w, command,
|
116
|
+
security(:internet, :w, command, 'GitHub for Mac token', &block) if host == 'github.com'
|
112
117
|
end
|
113
118
|
|
114
119
|
def host
|
@@ -117,57 +122,62 @@ module Travis
|
|
117
122
|
|
118
123
|
def api_host
|
119
124
|
return GITHUB_API unless api_url
|
125
|
+
|
120
126
|
api_url[%r{^(?:https?://)?([^/]+)}, 1]
|
121
127
|
end
|
122
128
|
|
123
129
|
def acceptable?(token)
|
124
130
|
return true unless check_token
|
125
|
-
|
126
|
-
|
131
|
+
|
132
|
+
gh = GH.with(token:)
|
133
|
+
gh['user']
|
127
134
|
|
128
135
|
true
|
129
|
-
rescue GH::Error =>
|
130
|
-
debug "token is not acceptable: #{gh_error(
|
136
|
+
rescue GH::Error => e
|
137
|
+
debug "token is not acceptable: #{gh_error(e)}"
|
131
138
|
false
|
132
139
|
end
|
133
140
|
|
134
141
|
private
|
135
142
|
|
136
|
-
|
137
|
-
|
138
|
-
if error.info.key? :response_body
|
139
|
-
JSON.parse(error.info[:response_body])["message"].to_s
|
140
|
-
else
|
141
|
-
"Unknown error"
|
142
|
-
end
|
143
|
-
end
|
143
|
+
def gh_error(error)
|
144
|
+
raise error if explode
|
144
145
|
|
145
|
-
|
146
|
-
|
147
|
-
|
146
|
+
if error.info.key? :response_body
|
147
|
+
JSON.parse(error.info[:response_body])['message'].to_s
|
148
|
+
else
|
149
|
+
'Unknown error'
|
148
150
|
end
|
151
|
+
end
|
149
152
|
|
150
|
-
|
151
|
-
|
152
|
-
return false unless system "security find-#{type}-password #{arg} 2>/dev/null >/dev/null"
|
153
|
-
debug "requesting to load #{name} from keychain"
|
154
|
-
result = %x[security find-#{type}-password #{arg} -#{key} 2>&1].chomp
|
155
|
-
$?.success? ? yield(result) : debug("request denied")
|
156
|
-
rescue => e
|
157
|
-
raise e if explode
|
158
|
-
end
|
153
|
+
def debug(line)
|
154
|
+
return unless @debug
|
159
155
|
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
156
|
+
@debug.call "Tools::Github: #{line}"
|
157
|
+
end
|
158
|
+
|
159
|
+
def security(type, key, arg, name)
|
160
|
+
return false unless System.has? 'security'
|
161
|
+
return false unless system "security find-#{type}-password #{arg} 2>/dev/null >/dev/null"
|
162
|
+
|
163
|
+
debug "requesting to load #{name} from keychain"
|
164
|
+
result = `security find-#{type}-password #{arg} -#{key} 2>&1`.chomp
|
165
|
+
$CHILD_STATUS.success? ? yield(result) : debug('request denied')
|
166
|
+
rescue StandardError => e
|
167
|
+
raise e if explode
|
168
|
+
end
|
169
|
+
|
170
|
+
def file(path, default = nil)
|
171
|
+
path &&= File.expand_path(path)
|
172
|
+
@file ||= {}
|
173
|
+
@file[path] ||= if path && File.readable?(path)
|
174
|
+
debug "reading #{path}"
|
175
|
+
yield File.read(path)
|
176
|
+
end
|
177
|
+
@file[path] || default
|
178
|
+
rescue StandardError => e
|
179
|
+
raise e if explode
|
180
|
+
end
|
171
181
|
end
|
172
182
|
end
|
173
183
|
end
|
@@ -1,31 +1,35 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
require
|
4
|
-
require
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'travis'
|
4
|
+
require 'travis/tools/system'
|
5
|
+
require 'travis/tools/assets'
|
6
|
+
require 'cgi'
|
5
7
|
|
6
8
|
module Travis
|
7
9
|
module Tools
|
8
10
|
module Notification
|
9
|
-
|
10
|
-
|
11
|
+
module_function
|
12
|
+
|
13
|
+
DEFAULT = %i[osx growl libnotify].freeze
|
11
14
|
ICON = Assets['notifications/icon.png']
|
12
15
|
|
13
16
|
def new(*list)
|
14
17
|
list.concat(DEFAULT) if list.empty?
|
15
18
|
notification = list.map { |n| get(n) }.detect { |n| n.available? }
|
16
|
-
raise ArgumentError, "no notification system found (looked for #{list.join(
|
19
|
+
raise ArgumentError, "no notification system found (looked for #{list.join(', ')})" unless notification
|
20
|
+
|
17
21
|
notification
|
18
22
|
end
|
19
23
|
|
20
24
|
def get(name)
|
21
25
|
const = constants.detect { |c| c.to_s[/[^:]+$/].downcase == name.to_s }
|
22
|
-
raise ArgumentError,
|
26
|
+
raise ArgumentError, 'unknown notifications type %p' % name unless const
|
27
|
+
|
23
28
|
const_get(const).new
|
24
29
|
end
|
25
30
|
|
26
31
|
class Dummy
|
27
|
-
def notify(title, body)
|
28
|
-
end
|
32
|
+
def notify(title, body); end
|
29
33
|
|
30
34
|
def available?
|
31
35
|
true
|
@@ -33,14 +37,15 @@ module Travis
|
|
33
37
|
end
|
34
38
|
|
35
39
|
class OSX
|
36
|
-
BIN_PATH = Assets[
|
40
|
+
BIN_PATH = Assets['notifications/Travis CI.app/Contents/MacOS/Travis CI']
|
37
41
|
|
38
42
|
def notify(title, body)
|
39
43
|
system BIN_PATH, '-message', body.to_s, '-title', title.to_s, '-sender', 'org.travis-ci.Travis-CI'
|
40
44
|
end
|
41
45
|
|
42
46
|
def available?
|
43
|
-
System.mac? and System.recent_version?(System.os_version.to_s,
|
47
|
+
System.mac? and System.recent_version?(System.os_version.to_s,
|
48
|
+
'10.8') and System.running? 'NotificationCenter'
|
44
49
|
end
|
45
50
|
end
|
46
51
|
|
@@ -50,7 +55,7 @@ module Travis
|
|
50
55
|
end
|
51
56
|
|
52
57
|
def available?
|
53
|
-
System.has? 'growlnotify' and System.running?
|
58
|
+
System.has? 'growlnotify' and System.running? 'Growl'
|
54
59
|
end
|
55
60
|
end
|
56
61
|
|
@@ -1,10 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Travis
|
2
4
|
module Tools
|
3
5
|
module SafeString
|
4
|
-
|
6
|
+
module_function
|
5
7
|
|
6
8
|
def encoded(string)
|
7
9
|
return string unless string.respond_to? :encode
|
10
|
+
|
8
11
|
string.encode 'utf-8'
|
9
12
|
rescue Encoding::UndefinedConversionError
|
10
13
|
string.force_encoding 'utf-8'
|
data/lib/travis/tools/ssl_key.rb
CHANGED
@@ -1,10 +1,12 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'openssl'
|
2
4
|
require 'base64'
|
3
5
|
|
4
6
|
module Travis
|
5
7
|
module Tools
|
6
8
|
module SSLKey
|
7
|
-
|
9
|
+
module_function
|
8
10
|
|
9
11
|
def generate_rsa(size = 2048)
|
10
12
|
OpenSSL::PKey::RSA.generate(size)
|
@@ -40,7 +42,8 @@ module Travis
|
|
40
42
|
end
|
41
43
|
|
42
44
|
def to_byte_array(num, *significant)
|
43
|
-
return significant if num.between?(-1, 0)
|
45
|
+
return significant if num.between?(-1, 0) && (significant[0][7] == num[7])
|
46
|
+
|
44
47
|
to_byte_array(*num.divmod(256)) + significant
|
45
48
|
end
|
46
49
|
end
|
data/lib/travis/tools/system.rb
CHANGED
@@ -1,7 +1,9 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Travis
|
2
4
|
module Tools
|
3
5
|
module System
|
4
|
-
|
6
|
+
module_function
|
5
7
|
|
6
8
|
def recent_version?(version, minimum)
|
7
9
|
version = version.split('.').map { |s| s.to_i }
|
@@ -10,7 +12,7 @@ module Travis
|
|
10
12
|
end
|
11
13
|
|
12
14
|
def windows?
|
13
|
-
File::ALT_SEPARATOR ==
|
15
|
+
File::ALT_SEPARATOR == '\\'
|
14
16
|
end
|
15
17
|
|
16
18
|
def mac?
|
@@ -22,7 +24,7 @@ module Travis
|
|
22
24
|
end
|
23
25
|
|
24
26
|
def unix?
|
25
|
-
|
27
|
+
!windows?
|
26
28
|
end
|
27
29
|
|
28
30
|
def os
|
@@ -52,7 +54,7 @@ module Travis
|
|
52
54
|
end
|
53
55
|
|
54
56
|
def ruby_version
|
55
|
-
|
57
|
+
format('%s-p%s', RUBY_VERSION, RUBY_PATCHLEVEL)
|
56
58
|
end
|
57
59
|
|
58
60
|
def ruby
|
@@ -65,22 +67,25 @@ module Travis
|
|
65
67
|
end
|
66
68
|
|
67
69
|
def rubygems
|
68
|
-
return
|
70
|
+
return 'no RubyGems' unless defined? Gem
|
71
|
+
|
69
72
|
"RubyGems #{Gem::VERSION}"
|
70
73
|
end
|
71
74
|
|
72
75
|
def description(*args)
|
73
|
-
[
|
76
|
+
[full_os, ruby, rubygems, *args.flatten].compact.uniq.join('; ')
|
74
77
|
end
|
75
78
|
|
76
79
|
def has?(command)
|
77
80
|
return false unless unix?
|
81
|
+
|
78
82
|
@has ||= {}
|
79
83
|
@has.fetch(command) { @has[command] = system "command -v #{command} 2>/dev/null >/dev/null" }
|
80
84
|
end
|
81
85
|
|
82
86
|
def running?(app)
|
83
87
|
return false unless unix?
|
88
|
+
|
84
89
|
system "/usr/bin/pgrep -u $(whoami) #{app} >/dev/null"
|
85
90
|
end
|
86
91
|
end
|
data/lib/travis/version.rb
CHANGED
data/lib/travis.rb
CHANGED
@@ -1,8 +1,10 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Travis
|
2
4
|
autoload :Client, 'travis/client'
|
3
5
|
autoload :CLI, 'travis/cli'
|
4
6
|
autoload :Pro, 'travis/pro'
|
5
7
|
autoload :Version, 'travis/version'
|
6
8
|
|
7
|
-
include Client::Namespace.new(Client::
|
9
|
+
include Client::Namespace.new(Client::COM_URI)
|
8
10
|
end
|
@@ -1,16 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
|
3
5
|
describe Travis::CLI::ApiCommand do
|
4
6
|
describe 'enterprise' do
|
5
7
|
travis_config_path = ENV['TRAVIS_CONFIG_PATH']
|
8
|
+
subject(:api_command) { described_class.new }
|
6
9
|
|
7
10
|
before do
|
8
11
|
ENV['TRAVIS_CONFIG_PATH'] = File.expand_path '../support', File.dirname(__FILE__)
|
9
|
-
config =
|
10
|
-
|
12
|
+
config = api_command.send(:load_file, 'fake_travis_config.yml')
|
13
|
+
api_command.config = YAML.load(config)
|
11
14
|
|
12
|
-
|
13
|
-
|
15
|
+
api_command.api_endpoint = 'https://travis-ci-enterprise/api'
|
16
|
+
api_command.enterprise_name = 'default'
|
14
17
|
end
|
15
18
|
|
16
19
|
after do
|
@@ -19,19 +22,19 @@ describe Travis::CLI::ApiCommand do
|
|
19
22
|
|
20
23
|
describe '#setup_enterprise' do
|
21
24
|
before do
|
22
|
-
|
25
|
+
api_command.send(:setup_enterprise)
|
23
26
|
end
|
24
27
|
|
25
28
|
it 'keeps verifying peers' do
|
26
|
-
|
29
|
+
api_command.insecure.should be_falsey
|
27
30
|
end
|
28
31
|
|
29
32
|
it 'uses default CAs' do
|
30
|
-
|
33
|
+
api_command.session.ssl.should_not include(:ca_file)
|
31
34
|
end
|
32
35
|
|
33
36
|
it 'flags endpoint' do
|
34
|
-
|
37
|
+
api_command.endpoint_config.should include('enterprise' => true)
|
35
38
|
end
|
36
39
|
end
|
37
40
|
end
|
data/spec/cli/cancel_spec.rb
CHANGED
@@ -1,15 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
|
3
5
|
describe Travis::CLI::Cancel do
|
4
6
|
example 'travis cancel' do
|
5
7
|
run_cli('cancel', '-t', 'token').should be_success
|
6
|
-
$params['id'].should be == "4125095"
|
7
|
-
$params['entity'].should be == "builds"
|
8
8
|
end
|
9
9
|
|
10
10
|
example 'travis cancel 6180.1' do
|
11
11
|
run_cli('cancel', '6180.1', '-t', 'token').should be_success
|
12
|
-
$params['id'].should be == "4125096"
|
13
|
-
$params['entity'].should be == "jobs"
|
14
12
|
end
|
15
13
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
require 'fileutils'
|
3
5
|
require 'digest'
|
@@ -5,22 +7,22 @@ require 'digest'
|
|
5
7
|
describe Travis::CLI::EncryptFile do
|
6
8
|
CMD_TARGET = 'README.md'
|
7
9
|
|
8
|
-
before
|
9
|
-
Digest.stub(:hexencode).and_return
|
10
|
+
before do
|
11
|
+
Digest.stub(:hexencode).and_return 'randomhex' # to avoid relying on Dir.pwd value for hex
|
10
12
|
end
|
11
13
|
|
12
|
-
after
|
14
|
+
after do
|
13
15
|
FileUtils.rm_f "#{CMD_TARGET}.enc"
|
14
16
|
end
|
15
17
|
|
16
18
|
example "travis encrypt-file #{CMD_TARGET}" do
|
17
19
|
run_cli('encrypt-file', CMD_TARGET).should be_success
|
18
|
-
File.
|
20
|
+
File.exist?("#{CMD_TARGET}.enc").should be true
|
19
21
|
end
|
20
22
|
|
21
23
|
example "travis encrypt-file #{CMD_TARGET} -a" do
|
22
|
-
run_cli('encrypt-file', CMD_TARGET, '-a') { |i| i.puts
|
23
|
-
stdout.should match
|
24
|
-
File.
|
24
|
+
run_cli('encrypt-file', CMD_TARGET, '-a') { |i| i.puts 'n' }.should be_success
|
25
|
+
stdout.should match(/Overwrite the config file/)
|
26
|
+
File.exist?("#{CMD_TARGET}.enc").should be true
|
25
27
|
end
|
26
28
|
end
|
data/spec/cli/encrypt_spec.rb
CHANGED
@@ -1,67 +1,69 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
|
3
5
|
describe Travis::CLI::Encrypt do
|
4
|
-
example
|
6
|
+
example 'travis encrypt foo' do
|
5
7
|
run_cli('encrypt', 'foo').should be_success
|
6
8
|
stdout.should match(/^".{60,}"\n$/)
|
7
9
|
end
|
8
10
|
|
9
|
-
example
|
11
|
+
example 'travis encrypt foo -r rails/rails' do
|
10
12
|
run_cli('encrypt', 'foo', '-r', 'rails/rails').should be_success
|
11
13
|
stdout.should match(/^".{60,}"\n$/)
|
12
14
|
end
|
13
15
|
|
14
|
-
example
|
16
|
+
example 'travis encrypt foo -i' do
|
15
17
|
run_cli('encrypt', 'foo', '-i', '--skip-completion-check', '-r', 'travis-ci/travis.rb').should be_success
|
16
18
|
stdout.should start_with("Please add the following to your .travis.yml file:\n\n secure: ")
|
17
19
|
end
|
18
20
|
|
19
|
-
example
|
21
|
+
example 'cat foo | travis encrypt' do
|
20
22
|
run_cli('encrypt') { |i| i.puts('foo') }
|
21
23
|
stdout.should match(/\A".{60,}"\n\Z/)
|
22
24
|
end
|
23
25
|
|
24
|
-
example
|
26
|
+
example 'cat foo\\nbar | travis encrypt -s' do
|
25
27
|
run_cli('encrypt', '-s') { |i| i.puts("foo\nbar") }
|
26
28
|
stdout.should match(/\A(".{60,}"\n){2}\Z/)
|
27
29
|
end
|
28
30
|
|
29
|
-
example
|
31
|
+
example 'cat foo\\nbar | travis encrypt' do
|
30
32
|
run_cli('encrypt') { |i| i.puts("foo\nbar") }
|
31
33
|
stdout.should match(/\A".{60,}"\n\Z/)
|
32
34
|
end
|
33
35
|
|
34
|
-
example
|
36
|
+
example 'travis encrypt rails/rails foo' do
|
35
37
|
run_cli('encrypt', 'rails/rails', 'foo').should be_success
|
36
38
|
stderr.should match(/WARNING/)
|
37
39
|
end
|
38
40
|
|
39
|
-
example
|
40
|
-
run_cli(
|
41
|
+
example 'travis encrypt foo=foo/bar' do
|
42
|
+
run_cli('encrypt', 'foo=foo/bar').should be_success
|
41
43
|
stderr.should_not match(/WARNING/)
|
42
44
|
end
|
43
45
|
|
44
|
-
example
|
46
|
+
example 'travis encrypt FOO bar -a' do
|
45
47
|
described_class.any_instance.stub(:save_travis_config)
|
46
|
-
run_cli(
|
48
|
+
run_cli('encrypt', 'FOO', 'bar', '-a') { |i| i.puts 'foo' }.should be_success
|
47
49
|
stderr.should match(/Environment variables in env\.global should be formatted as FOO=bar/)
|
48
50
|
end
|
49
51
|
|
50
|
-
example
|
52
|
+
example 'travis encrypt FOO bar -a foo' do
|
51
53
|
described_class.any_instance.stub(:save_travis_config)
|
52
|
-
run_cli(
|
54
|
+
run_cli('encrypt', 'FOO', 'bar', '-a', 'foo') { |i| i.puts 'foo' }.should be_success
|
53
55
|
stdout.should match(/Overwrite the config file/)
|
54
56
|
end
|
55
57
|
|
56
|
-
example
|
58
|
+
example 'travis encrypt FOO bar -a --no-interactive' do
|
57
59
|
described_class.any_instance.stub(:save_travis_config)
|
58
|
-
run_cli(
|
60
|
+
run_cli('encrypt', 'FOO', 'bar', '-a', '--no-interactive').should be_success
|
59
61
|
stderr.should match(/Environment variables in env\.global should be formatted as FOO=bar/)
|
60
62
|
end
|
61
63
|
|
62
|
-
example
|
64
|
+
example 'travis encrypt FOO=bar -a foo --no-interactive' do
|
63
65
|
described_class.any_instance.stub(:save_travis_config)
|
64
|
-
run_cli(
|
66
|
+
run_cli('encrypt', 'FOO=bar', '-a', 'foo', '--no-interactive').should be_success
|
65
67
|
stdout.should be_empty
|
66
68
|
end
|
67
69
|
end
|
data/spec/cli/endpoint_spec.rb
CHANGED
@@ -1,39 +1,41 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
|
3
5
|
describe Travis::CLI::Endpoint do
|
4
|
-
example
|
6
|
+
example 'travis endpoint' do
|
5
7
|
run_cli('endpoint').should be_success
|
6
|
-
stdout.should be == "https://api.travis-ci.
|
8
|
+
stdout.should be == "https://api.travis-ci.com/\n"
|
7
9
|
end
|
8
10
|
|
9
|
-
example
|
11
|
+
example 'travis endpoint --pro' do
|
10
12
|
run_cli('endpoint', '--pro').should be_success
|
11
13
|
stdout.should be == "https://api.travis-ci.com/\n"
|
12
14
|
end
|
13
15
|
|
14
|
-
example
|
16
|
+
example 'travis endpoint --com' do
|
15
17
|
run_cli('endpoint', '--com').should be_success
|
16
18
|
stdout.should be == "https://api.travis-ci.com/\n"
|
17
19
|
end
|
18
20
|
|
19
|
-
example
|
21
|
+
example 'travis endpoint -e http://localhost:3000/' do
|
20
22
|
run_cli('endpoint', '-e', 'http://localhost:3000/').should be_success
|
21
23
|
stdout.should be == "http://localhost:3000/\n"
|
22
24
|
end
|
23
25
|
|
24
|
-
example
|
25
|
-
ENV['TRAVIS_ENDPOINT'] =
|
26
|
+
example 'TRAVIS_ENDPOINT=http://localhost:3000/ travis endpoint' do
|
27
|
+
ENV['TRAVIS_ENDPOINT'] = 'http://localhost:3000/'
|
26
28
|
run_cli('endpoint').should be_success
|
27
29
|
stdout.should be == "http://localhost:3000/\n"
|
28
30
|
end
|
29
31
|
|
30
|
-
example
|
32
|
+
example 'travis endpoint --github' do
|
31
33
|
run_cli('endpoint', '--github').should be_success
|
32
34
|
stdout.should be == "https://api.github.com\n"
|
33
35
|
end
|
34
36
|
|
35
|
-
example
|
37
|
+
example 'travis endpoint -i' do
|
36
38
|
run_cli('endpoint', '-i').should be_success
|
37
|
-
stdout.should be == "API endpoint: https://api.travis-ci.
|
39
|
+
stdout.should be == "API endpoint: https://api.travis-ci.com/\n"
|
38
40
|
end
|
39
41
|
end
|