boxen 3.0.0.beta1 → 3.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (73) hide show
  1. checksums.yaml +7 -0
  2. data/.travis.yml +0 -1
  3. data/README.md +1 -1
  4. data/boxen.gemspec +13 -13
  5. data/lib/boxen/check.rb +39 -8
  6. data/lib/boxen/cli.rb +45 -19
  7. data/lib/boxen/config.rb +61 -43
  8. data/lib/boxen/flags.rb +282 -0
  9. data/lib/boxen/hook.rb +8 -15
  10. data/lib/boxen/hook/github_issue.rb +120 -0
  11. data/lib/boxen/hook/web.rb +56 -0
  12. data/lib/boxen/keychain.rb +1 -1
  13. data/lib/boxen/postflight/env.rb +1 -1
  14. data/lib/boxen/preflight.rb +7 -4
  15. data/lib/boxen/preflight/creds.rb +47 -8
  16. data/lib/boxen/preflight/identity.rb +0 -2
  17. data/lib/boxen/preflight/os.rb +6 -2
  18. data/lib/boxen/puppeteer.rb +121 -0
  19. data/lib/boxen/runner.rb +149 -0
  20. data/script/bootstrap +1 -1
  21. data/script/tests +0 -1
  22. data/test/boxen/test.rb +1 -1
  23. data/test/boxen_check_test.rb +55 -0
  24. data/test/boxen_cli_test.rb +31 -8
  25. data/test/boxen_config_test.rb +31 -1
  26. data/test/boxen_directories_test.rb +4 -4
  27. data/test/boxen_flags_test.rb +217 -0
  28. data/test/{postflight/boxen_postflight_github_issue_test.rb → boxen_hook_github_issue_test.rb} +82 -72
  29. data/test/{postflight/boxen_postflight_web_hook_test.rb → boxen_hook_web_test.rb} +11 -12
  30. data/test/{postflight/boxen_postflight_active_test.rb → boxen_postflight_active_test.rb} +3 -3
  31. data/test/{postflight/boxen_postflight_env_test.rb → boxen_postflight_env_test.rb} +0 -0
  32. data/test/boxen_preflight_creds_test.rb +177 -0
  33. data/test/{preflight/boxen_preflight_etc_my_cnf_test.rb → boxen_preflight_etc_my_cnf_test.rb} +1 -1
  34. data/test/{preflight/boxen_preflight_rvm_test.rb → boxen_preflight_rvm_test.rb} +1 -1
  35. data/test/boxen_puppeteer_test.rb +101 -0
  36. data/test/boxen_runner_test.rb +171 -0
  37. metadata +172 -251
  38. data/lib/boxen/command.rb +0 -142
  39. data/lib/boxen/command/help.rb +0 -40
  40. data/lib/boxen/command/preflight.rb +0 -38
  41. data/lib/boxen/command/project.rb +0 -49
  42. data/lib/boxen/command/project/install.rb +0 -33
  43. data/lib/boxen/command/run.rb +0 -199
  44. data/lib/boxen/command/service.rb +0 -61
  45. data/lib/boxen/command/service/disable.rb +0 -15
  46. data/lib/boxen/command/service/enable.rb +0 -15
  47. data/lib/boxen/command/service/restart.rb +0 -24
  48. data/lib/boxen/command/version.rb +0 -29
  49. data/lib/boxen/command_status.rb +0 -15
  50. data/lib/boxen/postflight/github_issue.rb +0 -124
  51. data/lib/boxen/postflight/hooks.rb +0 -16
  52. data/lib/boxen/postflight/web_hook.rb +0 -63
  53. data/lib/boxen/preflight/facts.rb +0 -36
  54. data/lib/boxen/preflight/homebrew.rb +0 -13
  55. data/lib/boxen/preflight/offline.rb +0 -33
  56. data/lib/boxen/preflight/update.rb +0 -109
  57. data/lib/boxen/util/logging.rb +0 -59
  58. data/lib/boxen/version.rb +0 -3
  59. data/lib/system_timer.rb +0 -13
  60. data/test/boxen_command_test.rb +0 -93
  61. data/test/boxen_hook_test.rb +0 -25
  62. data/test/command/help_test.rb +0 -49
  63. data/test/command/project/install_test.rb +0 -34
  64. data/test/command/project_test.rb +0 -32
  65. data/test/command/run_test.rb +0 -21
  66. data/test/command/service/disable_test.rb +0 -49
  67. data/test/command/service/enable_test.rb +0 -49
  68. data/test/command/service/restart_test.rb +0 -53
  69. data/test/command/service_test.rb +0 -55
  70. data/test/command/version_test.rb +0 -15
  71. data/test/preflight/boxen_preflight_creds_test.rb +0 -82
  72. data/test/preflight/boxen_preflight_homebrew_test.rb +0 -10
  73. data/test/system_timer.rb +0 -10
@@ -1,49 +0,0 @@
1
- require "boxen/command/service/disable"
2
-
3
- describe Boxen::Command::Service::Disable do
4
- describe "given arguments" do
5
- before do
6
- @config = mock("config")
7
- @single_c_thread = mock("service",
8
- :name => "single_c_thread",
9
- :disable => true)
10
-
11
- Boxen::Service.stubs(:new).with("single_c_thread").returns(@single_c_thread)
12
- end
13
-
14
- it "should disable the service" do
15
- stdout, _ = capture_io do
16
- Boxen::Command::Service::Disable.new(@config, "single_c_thread").run
17
- end
18
-
19
- assert_equal stdout, "Disabling service: single_c_thread\n"
20
- end
21
- end
22
-
23
- describe "given no arguments" do
24
- before do
25
- @config = mock("config")
26
- @single_c_thread = mock("service",
27
- :name => "single_c_thread",
28
- :disable => true)
29
-
30
- @many_pthreads = mock("service",
31
- :name => "many_pthreads",
32
- :disable => true)
33
-
34
- Boxen::Service.stubs(:list).
35
- returns([@single_c_thread, @many_pthreads])
36
- end
37
-
38
- it "should enable all services" do
39
- stdout, _ = capture_io do
40
- Boxen::Command::Service::Disable.new(@config).run
41
- end
42
-
43
- assert_equal stdout, <<-EOS
44
- Disabling service: single_c_thread
45
- Disabling service: many_pthreads
46
- EOS
47
- end
48
- end
49
- end
@@ -1,49 +0,0 @@
1
- require "boxen/command/service/enable"
2
-
3
- describe Boxen::Command::Service::Enable do
4
- describe "given arguments" do
5
- before do
6
- @config = mock("config")
7
- @single_c_thread = mock("service",
8
- :name => "single_c_thread",
9
- :enable => true)
10
-
11
- Boxen::Service.stubs(:new).with("single_c_thread").returns(@single_c_thread)
12
- end
13
-
14
- it "should enable the service" do
15
- stdout, _ = capture_io do
16
- Boxen::Command::Service::Enable.new(@config, "single_c_thread").run
17
- end
18
-
19
- assert_equal stdout, "Enabling service: single_c_thread\n"
20
- end
21
- end
22
-
23
- describe "given no arguments" do
24
- before do
25
- @config = mock("config")
26
- @single_c_thread = mock("service",
27
- :name => "single_c_thread",
28
- :enable => true)
29
-
30
- @many_pthreads = mock("service",
31
- :name => "many_pthreads",
32
- :enable => true)
33
-
34
- Boxen::Service.stubs(:list).
35
- returns([@single_c_thread, @many_pthreads])
36
- end
37
-
38
- it "should enable all services" do
39
- stdout, _ = capture_io do
40
- Boxen::Command::Service::Enable.new(@config).run
41
- end
42
-
43
- assert_equal stdout, <<-EOS
44
- Enabling service: single_c_thread
45
- Enabling service: many_pthreads
46
- EOS
47
- end
48
- end
49
- end
@@ -1,53 +0,0 @@
1
- require "boxen/command/service/restart"
2
-
3
-
4
- describe Boxen::Command::Service::Restart do
5
- describe "with args" do
6
- before do
7
- @config = mock("config")
8
- @single_c_thread = mock("service",
9
- :name => "single_c_thread",
10
- :enable => true,
11
- :disable => true)
12
-
13
- Boxen::Service.stubs(:new).with("single_c_thread").returns(@single_c_thread)
14
- end
15
-
16
- it "should restart the service" do
17
- stdout, _ = capture_io do
18
- Boxen::Command::Service::Restart.new(@config, "single_c_thread").run
19
- end
20
-
21
- assert_equal stdout, "Restarting service: single_c_thread\n"
22
- end
23
- end
24
-
25
- describe "without args" do
26
- before do
27
- @config = mock("config")
28
- @single_c_thread = mock("service",
29
- :name => "single_c_thread",
30
- :enable => true,
31
- :disable => true)
32
-
33
- @many_pthreads = mock("service",
34
- :name => "many_pthreads",
35
- :enable => true,
36
- :disable => true)
37
-
38
- Boxen::Service.stubs(:list_enabled).
39
- returns([@single_c_thread, @many_pthreads])
40
- end
41
-
42
- it "should enable all services" do
43
- stdout, _ = capture_io do
44
- Boxen::Command::Service::Restart.new(@config).run
45
- end
46
-
47
- assert_equal stdout, <<-EOS
48
- Restarting service: single_c_thread
49
- Restarting service: many_pthreads
50
- EOS
51
- end
52
- end
53
- end
@@ -1,55 +0,0 @@
1
- require "boxen/command/service"
2
-
3
- describe Boxen::Command::Service do
4
- before do
5
- @config = Minitest::Mock.new
6
- end
7
-
8
- describe "#run" do
9
- before do
10
- Boxen::Service.stubs(:list).returns([
11
- mock("service", :name => "foo"),
12
- mock("service", :name => "bar")
13
- ])
14
- end
15
-
16
- it "displays the list of services we know about" do
17
- stdout, _ = capture_io do
18
- Boxen::Command::Service.new(@config).run
19
- end
20
-
21
- assert_equal stdout, <<-EOS
22
- Boxen manages the following services:
23
-
24
- foo
25
- bar
26
- EOS
27
- end
28
- end
29
-
30
- describe "#services" do
31
- before do
32
- @foobar = mock()
33
- end
34
-
35
- describe "given args" do
36
- before do
37
- Boxen::Service.stubs(:new).with("foobar").returns(@foobar)
38
- end
39
-
40
- it "collects services based on args" do
41
- assert_equal [@foobar], Boxen::Command::Service.new(@config, "foobar").services
42
- end
43
- end
44
-
45
- describe "given no args" do
46
- before do
47
- Boxen::Service.stubs(:list).returns([@foobar])
48
- end
49
-
50
- it "collects all services" do
51
- assert_equal [@foobar], Boxen::Command::Service.new(@config).services
52
- end
53
- end
54
- end
55
- end
@@ -1,15 +0,0 @@
1
- require "boxen/command/version"
2
-
3
- describe Boxen::Command::Version do
4
- let(:instance) { Boxen::Command::Version.new(mock("config")) }
5
-
6
- it "writes the boxen version to standard out, duh" do
7
- instance.stubs(:version).returns("100.0.0")
8
-
9
- stdout, _ = capture_io do
10
- instance.run
11
- end
12
-
13
- assert_match "Boxen 100.0.0", stdout
14
- end
15
- end
@@ -1,82 +0,0 @@
1
- require 'boxen/test'
2
- require 'boxen/config'
3
- require 'boxen/preflight/creds'
4
-
5
- class BoxenPreflightCredsTest < Boxen::Test
6
- def setup
7
- @config = Boxen::Config.new do |c|
8
- c.user = 'mojombo'
9
- c.token = 'sekr3t!'
10
- end
11
- @command = stub 'command'
12
- ENV.delete("BOXEN_GITHUB_LOGIN")
13
- ENV.delete("BOXEN_GITHUB_PASSWORD")
14
- end
15
-
16
- def test_basic
17
- preflight = Boxen::Preflight::Creds.new @config, @command
18
-
19
- error = Octokit::Unauthorized.new
20
- @config.api.stubs(:user).returns(error)
21
- @config.stubs(:offline?).returns(false)
22
-
23
- refute preflight.ok?
24
- end
25
-
26
- def test_basic_with_otp_challenge
27
- preflight = Boxen::Preflight::Creds.new @config, @command
28
-
29
- blank_opt = {:headers => {}}
30
- good_otp = {:headers => {"X-GitHub-OTP" => "123456"}}
31
-
32
- error = Octokit::OneTimePasswordRequired.new
33
- error.stubs(:message).returns("OTP")
34
-
35
- preflight.tmp_api.expects(:authorizations).with(blank_opt).raises(error)
36
- preflight.tmp_api.expects(:authorizations).with(good_otp).returns([])
37
- preflight.tmp_api.expects(:create_authorization).raises(error)
38
-
39
- preflight.expects(:warn)
40
- HighLine.any_instance.expects(:ask).returns("123456")
41
-
42
- preflight.get_tokens
43
- assert_equal "123456", preflight.otp
44
- end
45
-
46
- def test_fetch_login_and_password_when_nothing_is_given_in_env
47
- # fetches login and password by asking
48
- preflight = Boxen::Preflight::Creds.new @config, @command
49
- HighLine.any_instance.expects(:ask).with("GitHub login: ").returns "l"
50
- HighLine.any_instance.expects(:ask).with("GitHub password: ").returns "p"
51
- preflight.send(:fetch_login_and_password)
52
-
53
- assert_equal "l", @config.login
54
- assert_equal "p", preflight.instance_variable_get(:@password)
55
- end
56
-
57
- def test_fetch_password_when_login_is_given_in_env
58
- # fetches only password by asking
59
- ENV["BOXEN_GITHUB_LOGIN"] = "l"
60
- preflight = Boxen::Preflight::Creds.new @config, @command
61
- preflight.expects(:warn)
62
- HighLine.any_instance.expects(:ask).with("GitHub login: ").never
63
- HighLine.any_instance.expects(:ask).with("GitHub password: ").returns "p"
64
- preflight.send(:fetch_login_and_password)
65
-
66
- assert_equal "l", @config.login
67
- assert_equal "p", preflight.instance_variable_get(:@password)
68
- end
69
-
70
- def test_fetch_login_when_password_is_given_in_env
71
- # fetches only login by asking
72
- ENV["BOXEN_GITHUB_PASSWORD"] = "p"
73
- preflight = Boxen::Preflight::Creds.new @config, @command
74
- preflight.expects(:warn)
75
- HighLine.any_instance.expects(:ask).with("GitHub login: ").returns "l"
76
- HighLine.any_instance.expects(:ask).with("GitHub password: ").never
77
- preflight.send(:fetch_login_and_password)
78
-
79
- assert_equal "l", @config.login
80
- assert_equal "p", preflight.instance_variable_get(:@password)
81
- end
82
- end
@@ -1,10 +0,0 @@
1
- require 'boxen/test'
2
- require 'boxen/preflight/homebrew'
3
-
4
- class BoxenPreflightHomebrewTest < Boxen::Test
5
- def test_directory_check
6
- preflight = Boxen::Preflight::Homebrew.new(mock('config'), mock('command'))
7
- File.expects(:exist?).with("/usr/local/Library/Homebrew").returns(false)
8
- assert preflight.ok?
9
- end
10
- end
@@ -1,10 +0,0 @@
1
- # THIS IS SUCH HAX. Faraday helpfully reminds you to install
2
- # `system_timer` if you're running Ruby 1.8, since Timeout can give
3
- # unreliable results. We can't do this during first-time runs, since
4
- # there's no C compiler available.
5
- #
6
- # To squash the message and stop confusing people, this shim just
7
- # exposes Timeout as SystemTimer. I'm a bad person.
8
-
9
- require "timeout"
10
- SystemTimer = Timeout