heroku_hatchet 5.0.3 → 6.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.circleci/config.yml +19 -1
- data/.gitignore +2 -0
- data/CHANGELOG.md +4 -0
- data/etc/ci_setup.rb +16 -12
- data/etc/setup_heroku.sh +0 -2
- data/hatchet.gemspec +4 -5
- data/hatchet.json +1 -1
- data/hatchet.lock +9 -9
- data/lib/hatchet/api_rate_limit.rb +7 -7
- data/lib/hatchet/test_run.rb +15 -9
- data/lib/hatchet/version.rb +1 -1
- data/{test → repo_fixtures}/different-folder-for-checked-in-repos/default_ruby/Gemfile +0 -0
- data/spec/hatchet/allow_failure_git_spec.rb +15 -0
- data/spec/hatchet/app_spec.rb +87 -0
- data/spec/hatchet/ci_spec.rb +58 -0
- data/spec/hatchet/config_spec.rb +34 -0
- data/spec/hatchet/edit_repo_spec.rb +17 -0
- data/spec/hatchet/git_spec.rb +9 -0
- data/spec/hatchet/heroku_api_spec.rb +30 -0
- data/spec/hatchet/local_repo_spec.rb +26 -0
- data/spec/hatchet/lock_spec.rb +19 -0
- data/spec/spec_helper.rb +25 -0
- metadata +35 -71
- data/test/fixtures/buildpacks/null-buildpack/bin/compile +0 -4
- data/test/fixtures/buildpacks/null-buildpack/bin/detect +0 -5
- data/test/fixtures/buildpacks/null-buildpack/bin/release +0 -3
- data/test/fixtures/buildpacks/null-buildpack/hatchet.json +0 -4
- data/test/fixtures/buildpacks/null-buildpack/readme.md +0 -41
- data/test/hatchet/allow_failure_git_test.rb +0 -16
- data/test/hatchet/app_test.rb +0 -96
- data/test/hatchet/ci_four_test.rb +0 -19
- data/test/hatchet/ci_test.rb +0 -11
- data/test/hatchet/ci_three_test.rb +0 -20
- data/test/hatchet/ci_too_test.rb +0 -19
- data/test/hatchet/config_test.rb +0 -51
- data/test/hatchet/edit_repo_test.rb +0 -20
- data/test/hatchet/git_test.rb +0 -16
- data/test/hatchet/heroku_api_test.rb +0 -30
- data/test/hatchet/labs_test.rb +0 -20
- data/test/hatchet/local_repo_test.rb +0 -26
- data/test/hatchet/lock_test.rb +0 -18
- data/test/hatchet/multi_cmd_runner_test.rb +0 -30
- data/test/test_helper.rb +0 -28
@@ -1,19 +0,0 @@
|
|
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/ci_test.rb
DELETED
@@ -1,11 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class CITest < Minitest::Test
|
4
|
-
def test_error_with_bad_app
|
5
|
-
error = assert_raise(Hatchet::FailedTestError) do
|
6
|
-
Hatchet::GitApp.new("rails5_ci_fails_no_database").run_ci {}
|
7
|
-
end
|
8
|
-
|
9
|
-
assert_match "PG::ConnectionBad: could not connect to server", error.message
|
10
|
-
end
|
11
|
-
end
|
@@ -1,20 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class CIThreeTest < Minitest::Test
|
4
|
-
def test_error_with_bad_app
|
5
|
-
@before_deploy_called = false
|
6
|
-
@before_deploy_dir_pwd = nil
|
7
|
-
before_deploy = -> {
|
8
|
-
@before_deploy_called = true
|
9
|
-
@before_deploy_dir_pwd = Dir.pwd
|
10
|
-
}
|
11
|
-
Hatchet::GitApp.new("rails5_ci_fails_no_database", allow_failure: true, before_deploy: before_deploy).run_ci do |test_run|
|
12
|
-
assert_equal :errored, test_run.status
|
13
|
-
assert_equal Dir.pwd, @before_deploy_dir_pwd
|
14
|
-
|
15
|
-
assert @before_deploy_called
|
16
|
-
end
|
17
|
-
|
18
|
-
refute_equal Dir.pwd, @before_deploy_dir_pwd
|
19
|
-
end
|
20
|
-
end
|
data/test/hatchet/ci_too_test.rb
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
# Split out to be faster
|
4
|
-
class CITestToo < Minitest::Test
|
5
|
-
def test_ci_create_app_with_stack
|
6
|
-
app = Hatchet::GitApp.new("rails5_ruby_schema_format")
|
7
|
-
app.run_ci do |test_run|
|
8
|
-
assert_match "Ruby buildpack tests completed successfully", test_run.output
|
9
|
-
assert_equal :succeeded, test_run.status
|
10
|
-
refute_nil app.pipeline_id
|
11
|
-
|
12
|
-
api_rate_limit = app.api_rate_limit.call
|
13
|
-
couplings = api_rate_limit.pipeline_coupling.list_by_pipeline(app.pipeline_id)
|
14
|
-
coupled_app = api_rate_limit.app.info(couplings.first["app"]["id"])
|
15
|
-
assert_equal app.name, coupled_app["name"]
|
16
|
-
end
|
17
|
-
assert_nil app.pipeline_id
|
18
|
-
end
|
19
|
-
end
|
data/test/hatchet/config_test.rb
DELETED
@@ -1,51 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class ConfigTest < Minitest::Test
|
4
|
-
|
5
|
-
def setup
|
6
|
-
@config = Hatchet::Config.new
|
7
|
-
end
|
8
|
-
|
9
|
-
def test_config_path_for_name
|
10
|
-
assert_equal 'test/fixtures/repos/rails3/rails3_mri_193', @config.path_for_name('rails3_mri_193')
|
11
|
-
end
|
12
|
-
|
13
|
-
def test_config_dirs
|
14
|
-
{
|
15
|
-
"test/fixtures/repos/bundler/no_lockfile" => "https://github.com/sharpstone/no_lockfile.git",
|
16
|
-
"test/fixtures/repos/default/default_ruby" => "https://github.com/sharpstone/default_ruby.git",
|
17
|
-
"test/fixtures/repos/rails2/rails2blog" => "https://github.com/sharpstone/rails2blog.git",
|
18
|
-
"test/fixtures/repos/rails3/rails3_mri_193" => "https://github.com/sharpstone/rails3_mri_193.git"
|
19
|
-
}.each do |key, value|
|
20
|
-
assert_include(key, value, @config.dirs)
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
def test_config_repos
|
25
|
-
{
|
26
|
-
"default_ruby" => "test/fixtures/repos/default/default_ruby",
|
27
|
-
"no_lockfile" => "test/fixtures/repos/bundler/no_lockfile",
|
28
|
-
"rails2blog" => "test/fixtures/repos/rails2/rails2blog",
|
29
|
-
"rails3_mri_193" => "test/fixtures/repos/rails3/rails3_mri_193"
|
30
|
-
}.each do |key, value|
|
31
|
-
assert_include(key, value, @config.repos)
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
def test_no_internal_config_raises_no_errors
|
36
|
-
# assert no_raise
|
37
|
-
@config.send :set_internal_config!, {}
|
38
|
-
assert_equal './repos', @config.repo_directory_path
|
39
|
-
end
|
40
|
-
|
41
|
-
def test_github_shortcuts
|
42
|
-
@config.send :init_config!, {"foo" => ["schneems/sextant"]}
|
43
|
-
assert_equal("https://github.com/schneems/sextant.git", @config.dirs["./repos/foo/sextant"])
|
44
|
-
end
|
45
|
-
private
|
46
|
-
|
47
|
-
def assert_include(key, value, actual)
|
48
|
-
assert_equal value, actual[key], "Expected #{actual.inspect} to include #{ {key => value } } but it did not"
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
@@ -1,20 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class EditRepoTest < Minitest::Test
|
4
|
-
def test_can_deploy_git_app
|
5
|
-
Hatchet::GitApp.new("default_ruby").in_directory do |app|
|
6
|
-
msg = `touch foo`
|
7
|
-
assert $?.success?, msg
|
8
|
-
|
9
|
-
msg = `git add .; git commit -m foo`
|
10
|
-
assert $?.success?, msg
|
11
|
-
|
12
|
-
assert_match "foo", `ls`
|
13
|
-
end
|
14
|
-
|
15
|
-
Hatchet::GitApp.new("default_ruby").in_directory do |app|
|
16
|
-
refute_match(/foo/, `ls`)
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
data/test/hatchet/git_test.rb
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class GitAppTest < Minitest::Test
|
4
|
-
def test_can_deploy_git_app
|
5
|
-
Hatchet::GitApp.new("rails5_ruby_schema_format").deploy do |app|
|
6
|
-
assert true
|
7
|
-
assert_match '2.4.1', app.run("ruby -v")
|
8
|
-
|
9
|
-
app.run("bash") do |cmd|
|
10
|
-
# cmd.run("cd public/assets")
|
11
|
-
cmd.run("ls public/") {|r| assert_match("assets", r) }
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
@@ -1,30 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class HerokuApiTest < Minitest::Test
|
4
|
-
|
5
|
-
def test_config_vars
|
6
|
-
runner = Hatchet::Runner.new("no_lockfile").setup!
|
7
|
-
expected = {}
|
8
|
-
actual = runner.get_config
|
9
|
-
actual.delete("BUILDPACK_URL")
|
10
|
-
assert_equal expected, actual
|
11
|
-
|
12
|
-
runner.set_config("foo" => "bar")
|
13
|
-
expected = {"foo" => "bar"}
|
14
|
-
actual = runner.get_config
|
15
|
-
actual.delete("BUILDPACK_URL")
|
16
|
-
assert_equal expected, actual
|
17
|
-
ensure
|
18
|
-
runner.teardown! if runner
|
19
|
-
end
|
20
|
-
|
21
|
-
|
22
|
-
def test_config_vars_in_init
|
23
|
-
runner = Hatchet::Runner.new("no_lockfile", config: { foo: "bar"}).setup!
|
24
|
-
actual = runner.get_config
|
25
|
-
expected = {"foo" => "bar"}
|
26
|
-
assert_equal expected, actual
|
27
|
-
ensure
|
28
|
-
runner.teardown! if runner
|
29
|
-
end
|
30
|
-
end
|
data/test/hatchet/labs_test.rb
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class LabsTest < Minitest::Test
|
4
|
-
def setup
|
5
|
-
@buildpack_path = File.expand_path 'test/fixtures/buildpacks/heroku-buildpack-ruby'
|
6
|
-
end
|
7
|
-
|
8
|
-
def test_can_deploy_git_app
|
9
|
-
# You can't enable preboot on a free app.
|
10
|
-
# BUT you can't make an app hobby until you've deploy once
|
11
|
-
# Catch-22
|
12
|
-
# lab_name = "preboot"
|
13
|
-
# app = Hatchet::App.new("rails3_mri_193", labs: lab_name, buildpack: @buildpack_path)
|
14
|
-
# app.setup!
|
15
|
-
# assert(app.lab_is_installed?(lab_name), "Expected #{app.get_labs.inspect} to include {'name' => '#{lab_name}' } but it did not")
|
16
|
-
assert(true)
|
17
|
-
# ensure
|
18
|
-
# app.teardown! if app
|
19
|
-
end
|
20
|
-
end
|
@@ -1,26 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class LocalRepoTest < Minitest::Test
|
4
|
-
def test_in_directory_fork
|
5
|
-
env_name = SecureRandom.hex
|
6
|
-
ENV[env_name] = env_name
|
7
|
-
|
8
|
-
Hatchet::App.new("default_ruby").in_directory_fork do
|
9
|
-
ENV.delete(env_name)
|
10
|
-
assert_nil ENV[env_name]
|
11
|
-
end
|
12
|
-
|
13
|
-
assert_equal env_name, ENV[env_name]
|
14
|
-
end
|
15
|
-
|
16
|
-
def test_repos_checked_into_git
|
17
|
-
app = Hatchet::App.new("test/different-folder-for-checked-in-repos/default_ruby")
|
18
|
-
app.in_directory do
|
19
|
-
assert_equal false, Dir.exist?(".git")
|
20
|
-
app.setup!
|
21
|
-
assert_equal true, Dir.exist?(".git")
|
22
|
-
end
|
23
|
-
ensure
|
24
|
-
app.teardown! if app
|
25
|
-
end
|
26
|
-
end
|
data/test/hatchet/lock_test.rb
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class LockTest < Minitest::Test
|
4
|
-
def test_app_with_failure_can_be_locked_to_prior_commit
|
5
|
-
Hatchet::GitApp.new("lock_fail").deploy do |app|
|
6
|
-
assert app.deployed?
|
7
|
-
end
|
8
|
-
end
|
9
|
-
|
10
|
-
def test_app_with_failure_can_be_locked_to_master
|
11
|
-
puts `bundle exec hatchet lock`
|
12
|
-
|
13
|
-
lock = YAML.load_file("hatchet.lock")
|
14
|
-
name, branch = lock.select {|k,v| k.end_with?("lock_fail_master") }.first
|
15
|
-
assert_equal "test/fixtures/repos/lock/lock_fail_master", name
|
16
|
-
assert_equal "master", branch
|
17
|
-
end
|
18
|
-
end
|
@@ -1,30 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class MultiCmdRunnerTest < Minitest::Test
|
4
|
-
# slow but needed, there are ghosts in the machine
|
5
|
-
# by running common command multiple times we can find them
|
6
|
-
def test_multi_repl_commands
|
7
|
-
require 'repl_runner'
|
8
|
-
Hatchet::GitApp.new("default_ruby").deploy do |app|
|
9
|
-
assert_raise(ReplRunner::UnregisteredCommand) do
|
10
|
-
app.run("ls", 2) do |ls| # will return right away, should raise error
|
11
|
-
ls.run("cat")
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
rand(3..7).times do
|
16
|
-
app.run("irb") do |console|
|
17
|
-
console.run("`ls`")
|
18
|
-
console.run("'foo' * 5") {|r| assert_match "foofoofoofoofoo", r }
|
19
|
-
console.run("'hello ' + 'world'") {|r| assert_match "hello world", r }
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
rand(3..7).times do
|
24
|
-
app.run("bash") do |bash|
|
25
|
-
bash.run("ls") { |r| assert_match "Gemfile", r }
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
data/test/test_helper.rb
DELETED
@@ -1,28 +0,0 @@
|
|
1
|
-
$LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
|
2
|
-
require 'hatchet'
|
3
|
-
|
4
|
-
require 'bundler'
|
5
|
-
Bundler.require
|
6
|
-
|
7
|
-
# require 'test/unit'
|
8
|
-
|
9
|
-
require 'minitest/autorun'
|
10
|
-
require "mocha/minitest"
|
11
|
-
|
12
|
-
require 'minitest/retry'
|
13
|
-
Minitest::Retry.use!
|
14
|
-
|
15
|
-
def assert_raise(*args, &block)
|
16
|
-
assert_raises(*args, &block)
|
17
|
-
end
|
18
|
-
|
19
|
-
|
20
|
-
ENV['HATCHET_BUILDPACK_BRANCH'] = "master"
|
21
|
-
|
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
|