boxen 3.0.0.beta1 → 3.1.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.
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