heroku_hatchet 4.1.2 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +11 -0
- data/README.md +56 -9
- data/bin/hatchet +2 -12
- data/hatchet.gemspec +5 -5
- data/hatchet.lock +1 -1
- data/lib/hatchet.rb +0 -1
- data/lib/hatchet/app.rb +37 -24
- data/lib/hatchet/test_run.rb +17 -5
- data/lib/hatchet/version.rb +1 -1
- data/test/hatchet/app_test.rb +17 -9
- data/test/hatchet/ci_four_test.rb +19 -0
- data/test/hatchet/config_test.rb +1 -2
- data/test/hatchet/edit_repo_test.rb +1 -1
- data/test/hatchet/multi_cmd_runner_test.rb +1 -1
- data/test/test_helper.rb +7 -6
- metadata +14 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d315483e6cd1509b1ea90279b800beb2a969f57956a44f7df08c5844ec9f539b
|
4
|
+
data.tar.gz: 5f66b2f956bd2820b80dc634d68cea6dc84c7e23079253ef990fe5be8d131d0c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 03570dbbf7075600e686b4f36d1a15d51c812582ab558574c28bb4eb3f80f76618c20bb1bb6d4473a644078fcff0d831360cbfbe12a653727d6609d5a8c66853
|
7
|
+
data.tar.gz: 107c8c3accdc9690cb7daafd1a0c9a20ea21e2730d9618de2913e6d7c5ff1d6a6191f552890272436ff0833c1456bce67ae8fbafc4eaa29da667a795c5fdd404
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,16 @@
|
|
1
1
|
## HEAD
|
2
2
|
|
3
|
+
## 5.0.0
|
4
|
+
|
5
|
+
- Shelling out to `heroku` commands no longer uses `Bundler.with_clean_env` (https://github.com/heroku/hatchet/pull/74)
|
6
|
+
- CI runs can now happen multiple times against the same app/pipeline (https://github.com/heroku/hatchet/pull/75)
|
7
|
+
- Breaking change: Do not allow App#run to escape to system shell by default (https://github.com/heroku/hatchet/pull/72)
|
8
|
+
|
9
|
+
> Note: If you were relying on this behavior, use the `raw: true` option.
|
10
|
+
|
11
|
+
- ReplRunner use with App#run is now deprecated (https://github.com/heroku/hatchet/pull/72)
|
12
|
+
- Calling App#run with a nil in the second argument is now deprecated (https://github.com/heroku/hatchet/pull/72)
|
13
|
+
|
3
14
|
## 4.1.2
|
4
15
|
|
5
16
|
- Hatchet::App.default_buildpack is aliased to `:default` symbol while passing in buildpacks as an array to Hatchet::App (https://github.com/heroku/hatchet/pull/73)
|
data/README.md
CHANGED
@@ -242,19 +242,62 @@ Hatchet::Runner.new("rails3_mri_193").deploy do |app|
|
|
242
242
|
end
|
243
243
|
```
|
244
244
|
|
245
|
-
|
245
|
+
By default commands will be shell escaped (to prevent commands from escaping the `heroku run` command), if you want to manage your own quoting you can use the `raw: true` option:
|
246
246
|
|
247
|
+
```
|
248
|
+
app.run('echo \$HELLO \$NAME', raw: true)
|
249
|
+
```
|
247
250
|
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
end
|
254
|
-
end
|
251
|
+
You can specify Heroku flags to the `heroku run` command by passing in the `heroku:` key along with a hash.
|
252
|
+
|
253
|
+
```
|
254
|
+
app.run("nproc", heroku: { "size" => "performance-l" })
|
255
|
+
# => 8
|
255
256
|
```
|
256
257
|
|
257
|
-
|
258
|
+
You can see a list of Heroku flags by running:
|
259
|
+
|
260
|
+
```
|
261
|
+
$ heroku run --help
|
262
|
+
run a one-off process inside a heroku dyno
|
263
|
+
|
264
|
+
USAGE
|
265
|
+
$ heroku run
|
266
|
+
|
267
|
+
OPTIONS
|
268
|
+
-a, --app=app (required) app to run command against
|
269
|
+
-e, --env=env environment variables to set (use ';' to split multiple vars)
|
270
|
+
-r, --remote=remote git remote of app to use
|
271
|
+
-s, --size=size dyno size
|
272
|
+
-x, --exit-code passthrough the exit code of the remote command
|
273
|
+
--no-notify disables notification when dyno is up (alternatively use HEROKU_NOTIFICATIONS=0)
|
274
|
+
--no-tty force the command to not run in a tty
|
275
|
+
--type=type process type
|
276
|
+
```
|
277
|
+
|
278
|
+
By default Hatchet will set the app name and the exit code
|
279
|
+
|
280
|
+
|
281
|
+
```
|
282
|
+
app.run("exit 127")
|
283
|
+
puts $?.exitcode
|
284
|
+
# => 127
|
285
|
+
```
|
286
|
+
|
287
|
+
To skip a value you can use the constant:
|
288
|
+
|
289
|
+
```
|
290
|
+
app.run("exit 127", heroku: { "exit-code" => Hatchet::App::SkipDefaultOption})
|
291
|
+
puts $?.exitcode
|
292
|
+
# => 0
|
293
|
+
```
|
294
|
+
|
295
|
+
To specify a flag that has no value (such as `--no-notify`, `no-tty`, or `--exit-code`) pass a `nil` value:
|
296
|
+
|
297
|
+
```
|
298
|
+
app.run("echo 'foo'", heroku: { "no-notify" => nil })
|
299
|
+
# This is the same as `heroku run echo 'foo' --no-notify`
|
300
|
+
```
|
258
301
|
|
259
302
|
## Modify Application Files on Disk
|
260
303
|
|
@@ -302,6 +345,10 @@ Hatchet supports testing Heroku CI.
|
|
302
345
|
```ruby
|
303
346
|
Hatchet::Runner.new("rails5_ruby_schema_format").run_ci do |test_run|
|
304
347
|
assert_match "Ruby buildpack tests completed successfully", test_run.output
|
348
|
+
|
349
|
+
test_run.run_again # Runs tests again, for example to make sure the cache was used
|
350
|
+
|
351
|
+
assert_match "Using rake", test_run.output
|
305
352
|
end
|
306
353
|
```
|
307
354
|
|
data/bin/hatchet
CHANGED
@@ -96,7 +96,7 @@ class HatchetCLI < Thor
|
|
96
96
|
desc "destroy [NAME]", "Deletes applications"
|
97
97
|
option :all, :type => :boolean
|
98
98
|
def destroy(name=nil)
|
99
|
-
api_key = ENV['HEROKU_API_KEY'] ||
|
99
|
+
api_key = ENV['HEROKU_API_KEY'] || `heroku auth:token`.chomp
|
100
100
|
platform_api = PlatformAPI.connect_oauth(api_key, cache: Moneta.new(:Null))
|
101
101
|
api_rate_limit = ApiRateLimit.new(platform_api)
|
102
102
|
reaper = Hatchet::Reaper.new(api_rate_limit: api_rate_limit)
|
@@ -113,7 +113,7 @@ class HatchetCLI < Thor
|
|
113
113
|
private
|
114
114
|
def load_lockfile
|
115
115
|
return YAML.safe_load(File.read('hatchet.lock')).to_h
|
116
|
-
rescue Errno::ENOENT
|
116
|
+
rescue Errno::ENOENT
|
117
117
|
raise "No such file found `hatchet.lock` please run `$ bundle exec hatchet lock`"
|
118
118
|
end
|
119
119
|
|
@@ -161,16 +161,6 @@ class HatchetCLI < Thor
|
|
161
161
|
cmd("cd #{path} && git clone #{git_repo} --quiet", quiet: quiet)
|
162
162
|
end
|
163
163
|
|
164
|
-
def bundle_exec
|
165
|
-
if defined?(Bundler)
|
166
|
-
Bundler.with_clean_env do
|
167
|
-
yield
|
168
|
-
end
|
169
|
-
else
|
170
|
-
yield
|
171
|
-
end
|
172
|
-
end
|
173
|
-
|
174
164
|
def cmd(command, let_fail: false, stdin: nil, quiet: true)
|
175
165
|
command = "printf '#{stdin}' | #{command}" if stdin
|
176
166
|
puts "Running: #{command}" unless quiet
|
data/hatchet.gemspec
CHANGED
@@ -26,9 +26,9 @@ Gem::Specification.new do |gem|
|
|
26
26
|
gem.add_dependency "threaded", "~> 0"
|
27
27
|
gem.add_dependency 'minitest-retry', '~> 0.1.9'
|
28
28
|
|
29
|
-
gem.add_development_dependency "minitest", "
|
30
|
-
gem.add_development_dependency "rake", "
|
31
|
-
gem.add_development_dependency "mocha", "
|
32
|
-
gem.add_development_dependency "parallel_tests", "
|
33
|
-
gem.add_development_dependency "travis", "
|
29
|
+
gem.add_development_dependency "minitest", ">= 5.1"
|
30
|
+
gem.add_development_dependency "rake", ">= 10"
|
31
|
+
gem.add_development_dependency "mocha", ">= 1"
|
32
|
+
gem.add_development_dependency "parallel_tests", ">= 2"
|
33
|
+
gem.add_development_dependency "travis", ">= 1"
|
34
34
|
end
|
data/hatchet.lock
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
- - test/fixtures/repos/ci/rails5_ruby_schema_format
|
7
7
|
- 3e63c3e13f435cf4ab11265e9abd161cc28cc552
|
8
8
|
- - test/fixtures/repos/default/default_ruby
|
9
|
-
-
|
9
|
+
- 6e642963acec0ff64af51bd6fba8db3c4176ed6e
|
10
10
|
- - test/fixtures/repos/lock/lock_fail
|
11
11
|
- da748a59340be8b950e7bbbfb32077eb67d70c3c
|
12
12
|
- - test/fixtures/repos/rails2/rails2blog
|
data/lib/hatchet.rb
CHANGED
data/lib/hatchet/app.rb
CHANGED
@@ -46,6 +46,8 @@ module Hatchet
|
|
46
46
|
@buildpacks = buildpack || buildpacks || buildpack_url || self.class.default_buildpack
|
47
47
|
@buildpacks = Array(@buildpacks)
|
48
48
|
@buildpacks.map! {|b| b == :default ? self.class.default_buildpack : b}
|
49
|
+
@already_in_dir = nil
|
50
|
+
@app_is_setup = nil
|
49
51
|
|
50
52
|
@before_deploy = before_deploy
|
51
53
|
@app_config = config
|
@@ -108,10 +110,25 @@ module Hatchet
|
|
108
110
|
end
|
109
111
|
end
|
110
112
|
|
113
|
+
DefaultCommand = Object.new
|
111
114
|
# runs a command on heroku similar to `$ heroku run #foo`
|
112
115
|
# but programatically and with more control
|
113
|
-
def run(cmd_type, command =
|
114
|
-
|
116
|
+
def run(cmd_type, command = DefaultCommand, options = {}, &block)
|
117
|
+
case command
|
118
|
+
when Hash
|
119
|
+
options.merge!(command)
|
120
|
+
command = cmd_type.to_s
|
121
|
+
when nil
|
122
|
+
STDERR.puts "Calling App#run with an explicit nil value in the second argument is deprecated."
|
123
|
+
STDERR.puts "You can pass in a hash directly as the second argument now.\n#{caller.join("\n")}"
|
124
|
+
command = cmd_type.to_s
|
125
|
+
when DefaultCommand
|
126
|
+
command = cmd_type.to_s
|
127
|
+
else
|
128
|
+
command = command.to_s
|
129
|
+
end
|
130
|
+
command = command.shellescape unless options.delete(:raw)
|
131
|
+
|
115
132
|
default_options = { "app" => name, "exit-code" => nil }
|
116
133
|
heroku_options = (default_options.merge(options.delete(:heroku) || {})).map do |k,v|
|
117
134
|
next if v == Hatchet::App::SkipDefaultOption # for forcefully removing e.g. --exit-code, a user can pass this
|
@@ -120,12 +137,14 @@ module Hatchet
|
|
120
137
|
arg
|
121
138
|
end.join(" ")
|
122
139
|
heroku_command = "heroku run #{heroku_options} -- #{command}"
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
140
|
+
|
141
|
+
if block_given?
|
142
|
+
STDERR.puts "Using App#run with a block is deprecated, support for ReplRunner is being removed.\n#{caller}"
|
143
|
+
# When we deprecated this we can get rid of the "cmd_type" from the method signature
|
144
|
+
require 'repl_runner'
|
145
|
+
ReplRunner.new(cmd_type, heroku_command, options).run(&block)
|
146
|
+
else
|
147
|
+
`#{heroku_command}`
|
129
148
|
end
|
130
149
|
end
|
131
150
|
|
@@ -280,6 +299,7 @@ module Hatchet
|
|
280
299
|
return "" if attempt == max_retries
|
281
300
|
msg = "\nRetrying failed Attempt ##{attempt}/#{max_retries} to push for '#{name}' due to error: \n"<<
|
282
301
|
"#{error.class} #{error.message}\n #{error.backtrace.join("\n ")}"
|
302
|
+
return msg
|
283
303
|
end
|
284
304
|
|
285
305
|
def output
|
@@ -287,7 +307,7 @@ module Hatchet
|
|
287
307
|
end
|
288
308
|
|
289
309
|
def api_key
|
290
|
-
@api_key ||= ENV['HEROKU_API_KEY'] ||
|
310
|
+
@api_key ||= ENV['HEROKU_API_KEY'] || `heroku auth:token`.chomp
|
291
311
|
end
|
292
312
|
|
293
313
|
def heroku
|
@@ -317,12 +337,15 @@ module Hatchet
|
|
317
337
|
app: self,
|
318
338
|
pipeline: @pipeline_id,
|
319
339
|
api_rate_limit: api_rate_limit
|
320
|
-
|
340
|
+
)
|
341
|
+
in_directory do
|
342
|
+
call_before_deploy
|
321
343
|
|
322
|
-
|
323
|
-
|
344
|
+
Hatchet::RETRIES.times.retry do
|
345
|
+
test_run.create_test_run
|
346
|
+
end
|
347
|
+
test_run.wait!(&block)
|
324
348
|
end
|
325
|
-
test_run.wait!(&block)
|
326
349
|
ensure
|
327
350
|
delete_pipeline(@pipeline_id) if @pipeline_id
|
328
351
|
@pipeline_id = nil
|
@@ -377,7 +400,7 @@ module Hatchet
|
|
377
400
|
end
|
378
401
|
|
379
402
|
private def is_git_repo?
|
380
|
-
|
403
|
+
`git rev-parse --git-dir > /dev/null 2>&1`
|
381
404
|
$?.success?
|
382
405
|
end
|
383
406
|
|
@@ -408,16 +431,6 @@ module Hatchet
|
|
408
431
|
|
409
432
|
commit! if needs_commit?
|
410
433
|
end
|
411
|
-
|
412
|
-
private def bundle_exec
|
413
|
-
if defined?(Bundler)
|
414
|
-
Bundler.with_clean_env do
|
415
|
-
yield
|
416
|
-
end
|
417
|
-
else
|
418
|
-
yield
|
419
|
-
end
|
420
|
-
end
|
421
434
|
end
|
422
435
|
end
|
423
436
|
|
data/lib/hatchet/test_run.rb
CHANGED
@@ -46,6 +46,17 @@ module Hatchet
|
|
46
46
|
end
|
47
47
|
attr_reader :app
|
48
48
|
|
49
|
+
def run_again(&block)
|
50
|
+
@mutex.synchronize do
|
51
|
+
@status = false
|
52
|
+
end
|
53
|
+
|
54
|
+
Hatchet::RETRIES.times.retry do
|
55
|
+
create_test_run
|
56
|
+
end
|
57
|
+
wait!(&block)
|
58
|
+
end
|
59
|
+
|
49
60
|
def create_test_run
|
50
61
|
@mutex.synchronize do
|
51
62
|
raise "Test is already running" if @status
|
@@ -116,11 +127,11 @@ module Hatchet
|
|
116
127
|
info
|
117
128
|
case @status
|
118
129
|
when :succeeded
|
119
|
-
yield self
|
130
|
+
yield self if block_given?
|
120
131
|
return self
|
121
132
|
when :failed, :errored
|
122
133
|
raise FailedTestError.new(self.app, self.output) unless app.allow_failure?
|
123
|
-
yield self
|
134
|
+
yield self if block_given?
|
124
135
|
return self
|
125
136
|
else
|
126
137
|
# keep looping
|
@@ -165,7 +176,8 @@ module Hatchet
|
|
165
176
|
app_json["stack"] ||= @app.stack if @app.stack && !@app.stack.empty?
|
166
177
|
File.open("app.json", "w") {|f| f.write(JSON.generate(app_json)) }
|
167
178
|
|
168
|
-
`tar c . | gzip -9 > slug.tgz`
|
179
|
+
out = `tar c . | gzip -9 > slug.tgz`
|
180
|
+
raise "Tar command failed: #{out}" unless $?.success?
|
169
181
|
|
170
182
|
source_put_url = @app.create_source
|
171
183
|
Hatchet::RETRIES.times.retry do
|
@@ -195,7 +207,7 @@ module Hatchet
|
|
195
207
|
end
|
196
208
|
|
197
209
|
def raw_excon_request(options)
|
198
|
-
version = options
|
210
|
+
version = options.delete(:version) || 3
|
199
211
|
options[:headers] = {
|
200
212
|
"Authorization" => "Bearer #{@token}",
|
201
213
|
"Accept" => "application/vnd.heroku+json; version=#{version}",
|
@@ -210,4 +222,4 @@ module Hatchet
|
|
210
222
|
end
|
211
223
|
end
|
212
224
|
end
|
213
|
-
end
|
225
|
+
end
|
data/lib/hatchet/version.rb
CHANGED
data/test/hatchet/app_test.rb
CHANGED
@@ -71,18 +71,26 @@ class AppTest < Minitest::Test
|
|
71
71
|
def test_run
|
72
72
|
app = Hatchet::GitApp.new("default_ruby")
|
73
73
|
app.deploy do
|
74
|
-
assert_match
|
74
|
+
assert_match(/ls: cannot access 'foo bar #baz': No such file or directory\s+Gemfile/, app.run("ls -a Gemfile 'foo bar #baz'"))
|
75
75
|
assert (0 != $?.exitstatus) # $? is from the app.run use of backticks
|
76
|
-
sleep(
|
77
|
-
|
76
|
+
sleep(4) # Dynos don't exit right away and free dynos can't have more than one running at a time, wait before calling `run` again
|
77
|
+
|
78
|
+
app.run("ls erpderp", { :heroku => { "exit-code" => Hatchet::App::SkipDefaultOption } } )
|
78
79
|
assert (0 == $?.exitstatus) # $? is from the app.run use of backticks, but we asked the CLI not to return the program exit status by skipping the default "exit-code" option
|
79
|
-
sleep(
|
80
|
-
|
80
|
+
sleep(4)
|
81
|
+
|
82
|
+
app.run("ls erpderp", { :heroku => { "no-tty" => nil } } )
|
81
83
|
assert (0 != $?.exitstatus) # $? is from the app.run use of backticks
|
82
|
-
sleep(
|
83
|
-
|
84
|
-
|
85
|
-
|
84
|
+
sleep(4)
|
85
|
+
|
86
|
+
assert_match(/ohai world/, app.run('echo \$HELLO \$NAME', { raw: true, :heroku => { "env" => "HELLO=ohai;NAME=world" } } ))
|
87
|
+
sleep(4)
|
88
|
+
|
89
|
+
refute_match(/ohai world/, app.run('echo \$HELLO \$NAME', { raw: true, :heroku => { "env" => "" } } ))
|
90
|
+
sleep(4)
|
91
|
+
|
92
|
+
random_name = SecureRandom.hex
|
93
|
+
assert_match(/#{random_name}/, app.run("mkdir foo; touch foo/#{random_name}; ls foo/"))
|
86
94
|
end
|
87
95
|
end
|
88
96
|
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class CIFourTest < Minitest::Test
|
4
|
+
def test_error_with_bad_app
|
5
|
+
string = SecureRandom.hex
|
6
|
+
Hatchet::GitApp.new("default_ruby").run_ci do |test_run|
|
7
|
+
refute_match(string, test_run.output)
|
8
|
+
assert_match("Installing rake" , test_run.output)
|
9
|
+
|
10
|
+
run!(%Q{echo 'puts "#{string}"' >> Rakefile})
|
11
|
+
test_run.run_again
|
12
|
+
|
13
|
+
assert_match(string, test_run.output)
|
14
|
+
assert_match("Using rake" , test_run.output)
|
15
|
+
|
16
|
+
refute_match("Installing rake" , test_run.output)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/test/hatchet/config_test.rb
CHANGED
@@ -14,13 +14,12 @@ class ConfigTest < Minitest::Test
|
|
14
14
|
{
|
15
15
|
"test/fixtures/repos/bundler/no_lockfile" => "https://github.com/sharpstone/no_lockfile.git",
|
16
16
|
"test/fixtures/repos/default/default_ruby" => "https://github.com/sharpstone/default_ruby.git",
|
17
|
-
"test/fixtures/repos/default/default_ruby" => "https://github.com/sharpstone/default_ruby.git",
|
18
17
|
"test/fixtures/repos/rails2/rails2blog" => "https://github.com/sharpstone/rails2blog.git",
|
19
18
|
"test/fixtures/repos/rails3/rails3_mri_193" => "https://github.com/sharpstone/rails3_mri_193.git"
|
20
19
|
}.each do |key, value|
|
21
20
|
assert_include(key, value, @config.dirs)
|
22
21
|
end
|
23
|
-
|
22
|
+
end
|
24
23
|
|
25
24
|
def test_config_repos
|
26
25
|
{
|
@@ -4,8 +4,8 @@ class MultiCmdRunnerTest < Minitest::Test
|
|
4
4
|
# slow but needed, there are ghosts in the machine
|
5
5
|
# by running common command multiple times we can find them
|
6
6
|
def test_multi_repl_commands
|
7
|
+
require 'repl_runner'
|
7
8
|
Hatchet::GitApp.new("default_ruby").deploy do |app|
|
8
|
-
|
9
9
|
assert_raise(ReplRunner::UnregisteredCommand) do
|
10
10
|
app.run("ls", 2) do |ls| # will return right away, should raise error
|
11
11
|
ls.run("cat")
|
data/test/test_helper.rb
CHANGED
@@ -7,16 +7,11 @@ Bundler.require
|
|
7
7
|
# require 'test/unit'
|
8
8
|
|
9
9
|
require 'minitest/autorun'
|
10
|
-
require "mocha/
|
10
|
+
require "mocha/minitest"
|
11
11
|
|
12
12
|
require 'minitest/retry'
|
13
13
|
Minitest::Retry.use!
|
14
14
|
|
15
|
-
# Not needed if you're using the most recent version
|
16
|
-
if defined?(MiniTest::Unit::TestCase)
|
17
|
-
Minitest::Test = MiniTest::Unit::TestCase
|
18
|
-
end
|
19
|
-
|
20
15
|
def assert_raise(*args, &block)
|
21
16
|
assert_raises(*args, &block)
|
22
17
|
end
|
@@ -25,3 +20,9 @@ end
|
|
25
20
|
ENV['HATCHET_BUILDPACK_BRANCH'] = "master"
|
26
21
|
|
27
22
|
require 'parallel_tests/test/runtime_logger' if ENV['RECORD_RUNTIME']
|
23
|
+
|
24
|
+
def run!(cmd)
|
25
|
+
out = `#{cmd}`
|
26
|
+
raise "Error running #{cmd}, output: #{out}" unless $?.success?
|
27
|
+
out
|
28
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: heroku_hatchet
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 5.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Richard Schneeman
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-04-
|
11
|
+
date: 2020-04-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: platform-api
|
@@ -112,70 +112,70 @@ dependencies:
|
|
112
112
|
name: minitest
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
|
-
- - "
|
115
|
+
- - ">="
|
116
116
|
- !ruby/object:Gem::Version
|
117
117
|
version: '5.1'
|
118
118
|
type: :development
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
|
-
- - "
|
122
|
+
- - ">="
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: '5.1'
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: rake
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
128
128
|
requirements:
|
129
|
-
- - "
|
129
|
+
- - ">="
|
130
130
|
- !ruby/object:Gem::Version
|
131
131
|
version: '10'
|
132
132
|
type: :development
|
133
133
|
prerelease: false
|
134
134
|
version_requirements: !ruby/object:Gem::Requirement
|
135
135
|
requirements:
|
136
|
-
- - "
|
136
|
+
- - ">="
|
137
137
|
- !ruby/object:Gem::Version
|
138
138
|
version: '10'
|
139
139
|
- !ruby/object:Gem::Dependency
|
140
140
|
name: mocha
|
141
141
|
requirement: !ruby/object:Gem::Requirement
|
142
142
|
requirements:
|
143
|
-
- - "
|
143
|
+
- - ">="
|
144
144
|
- !ruby/object:Gem::Version
|
145
145
|
version: '1'
|
146
146
|
type: :development
|
147
147
|
prerelease: false
|
148
148
|
version_requirements: !ruby/object:Gem::Requirement
|
149
149
|
requirements:
|
150
|
-
- - "
|
150
|
+
- - ">="
|
151
151
|
- !ruby/object:Gem::Version
|
152
152
|
version: '1'
|
153
153
|
- !ruby/object:Gem::Dependency
|
154
154
|
name: parallel_tests
|
155
155
|
requirement: !ruby/object:Gem::Requirement
|
156
156
|
requirements:
|
157
|
-
- - "
|
157
|
+
- - ">="
|
158
158
|
- !ruby/object:Gem::Version
|
159
159
|
version: '2'
|
160
160
|
type: :development
|
161
161
|
prerelease: false
|
162
162
|
version_requirements: !ruby/object:Gem::Requirement
|
163
163
|
requirements:
|
164
|
-
- - "
|
164
|
+
- - ">="
|
165
165
|
- !ruby/object:Gem::Version
|
166
166
|
version: '2'
|
167
167
|
- !ruby/object:Gem::Dependency
|
168
168
|
name: travis
|
169
169
|
requirement: !ruby/object:Gem::Requirement
|
170
170
|
requirements:
|
171
|
-
- - "
|
171
|
+
- - ">="
|
172
172
|
- !ruby/object:Gem::Version
|
173
173
|
version: '1'
|
174
174
|
type: :development
|
175
175
|
prerelease: false
|
176
176
|
version_requirements: !ruby/object:Gem::Requirement
|
177
177
|
requirements:
|
178
|
-
- - "
|
178
|
+
- - ">="
|
179
179
|
- !ruby/object:Gem::Version
|
180
180
|
version: '1'
|
181
181
|
description: Hatchet is a an integration testing library for developing Heroku buildpacks.
|
@@ -219,6 +219,7 @@ files:
|
|
219
219
|
- test/fixtures/buildpacks/null-buildpack/readme.md
|
220
220
|
- test/hatchet/allow_failure_git_test.rb
|
221
221
|
- test/hatchet/app_test.rb
|
222
|
+
- test/hatchet/ci_four_test.rb
|
222
223
|
- test/hatchet/ci_test.rb
|
223
224
|
- test/hatchet/ci_three_test.rb
|
224
225
|
- test/hatchet/ci_too_test.rb
|
@@ -265,6 +266,7 @@ test_files:
|
|
265
266
|
- test/fixtures/buildpacks/null-buildpack/readme.md
|
266
267
|
- test/hatchet/allow_failure_git_test.rb
|
267
268
|
- test/hatchet/app_test.rb
|
269
|
+
- test/hatchet/ci_four_test.rb
|
268
270
|
- test/hatchet/ci_test.rb
|
269
271
|
- test/hatchet/ci_three_test.rb
|
270
272
|
- test/hatchet/ci_too_test.rb
|