taketo 0.0.10 → 0.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 (51) hide show
  1. data/Gemfile +1 -1
  2. data/Gemfile.lock +14 -30
  3. data/README.md +4 -0
  4. data/Rakefile +4 -8
  5. data/VERSION +1 -1
  6. data/bin/taketo +5 -5
  7. data/lib/taketo/config_printer_visitor.rb +6 -22
  8. data/lib/taketo/config_traverser.rb +4 -33
  9. data/lib/taketo/config_validator.rb +1 -1
  10. data/lib/taketo/config_visitor.rb +15 -1
  11. data/lib/taketo/constructs/base_construct.rb +30 -6
  12. data/lib/taketo/constructs/config.rb +5 -0
  13. data/lib/taketo/constructs/environment.rb +6 -3
  14. data/lib/taketo/constructs/project.rb +3 -3
  15. data/lib/taketo/constructs/server.rb +3 -4
  16. data/lib/taketo/constructs.rb +6 -1
  17. data/lib/taketo/destination_resolver.rb +37 -52
  18. data/lib/taketo/dsl.rb +6 -3
  19. data/lib/taketo/printer.rb +29 -0
  20. data/lib/taketo/ssh_config_generator_visitor.rb +8 -22
  21. data/spec/acceptance/command_spec.rb +20 -0
  22. data/spec/acceptance/config_dsl_spec.rb +277 -0
  23. data/spec/acceptance/config_validation_spec.rb +109 -0
  24. data/spec/acceptance/connect_to_server_spec.rb +60 -0
  25. data/spec/acceptance/error_handling_spec.rb +31 -0
  26. data/spec/acceptance/generate_ssh_config_spec.rb +44 -0
  27. data/spec/acceptance/help_spec.rb +74 -0
  28. data/spec/acceptance/location_spec.rb +21 -0
  29. data/spec/acceptance_spec_helper.rb +71 -0
  30. data/spec/lib/taketo/config_traverser_spec.rb +20 -33
  31. data/spec/lib/taketo/config_validator_spec.rb +4 -4
  32. data/spec/lib/taketo/config_visitor_spec.rb +0 -4
  33. data/spec/lib/taketo/constructs/base_construct_spec.rb +37 -5
  34. data/spec/lib/taketo/constructs/environment_spec.rb +1 -1
  35. data/spec/lib/taketo/constructs/project_spec.rb +0 -6
  36. data/spec/lib/taketo/constructs/server_spec.rb +1 -3
  37. data/spec/lib/taketo/destination_resolver_spec.rb +21 -54
  38. data/spec/lib/taketo/dsl_spec.rb +46 -44
  39. data/spec/spec_helper.rb +1 -1
  40. data/spec/support/helpers/construct_spec_helper.rb +29 -0
  41. metadata +94 -82
  42. data/features/commands.feature +0 -36
  43. data/features/config.feature +0 -177
  44. data/features/config_validation.feature +0 -43
  45. data/features/connect_to_server.feature +0 -87
  46. data/features/default_server_config.feature +0 -41
  47. data/features/error_handling.feature +0 -29
  48. data/features/generate_ssh_config.feature +0 -44
  49. data/features/help.feature +0 -76
  50. data/features/step_definitions/main_steps.rb +0 -16
  51. data/features/support/env.rb +0 -14
@@ -0,0 +1,20 @@
1
+ require 'acceptance_spec_helper'
2
+
3
+ feature "Run explicit command on remote host" do
4
+ scenario "Run explicit command on remote" do
5
+ create_config <<-CONFIG
6
+ project :slots do
7
+ environment :staging do
8
+ server do
9
+ host "1.2.3.4"
10
+ end
11
+ end
12
+ end
13
+ CONFIG
14
+
15
+ run "taketo --dry-run --command 'TERM=xterm-256color bash'"
16
+ exit_status.should be_success
17
+ stdout.should == %Q{ssh -t 1.2.3.4 "RAILS_ENV=staging TERM=xterm-256color bash"}
18
+ end
19
+ end
20
+
@@ -0,0 +1,277 @@
1
+ require 'acceptance_spec_helper'
2
+
3
+ feature "Config DSL" do
4
+ scenario "Reopen config scopes" do
5
+ create_config <<-CONFIG
6
+ project :slots do
7
+ environment :staging do
8
+ server do
9
+ host "1.2.3.4"
10
+ end
11
+ end
12
+ end
13
+
14
+ project :slots do
15
+ environment :staging do
16
+ server do
17
+ env :FOO => "bar"
18
+ end
19
+ end
20
+ end
21
+ CONFIG
22
+
23
+ run "taketo slots:staging --dry-run"
24
+ exit_status.should be_success
25
+ stdout.should =~ %r{ssh -t 1.2.3.4 "(RAILS_ENV=staging FOO=bar|FOO=bar RAILS_ENV=staging) bash"}
26
+ end
27
+
28
+ scenario "Command" do
29
+ create_config <<-CONFIG
30
+ project :slots do
31
+ environment :staging do
32
+ server do
33
+ host "1.2.3.4"
34
+ location "/var/apps/slots"
35
+ command :console do
36
+ execute "rails c"
37
+ end
38
+ end
39
+ end
40
+ end
41
+ CONFIG
42
+
43
+ run "taketo slots:staging --dry-run --command console"
44
+ exit_status.should be_success
45
+ stdout.should == %Q{ssh -t 1.2.3.4 "cd /var/apps/slots; RAILS_ENV=staging rails c"}
46
+ end
47
+
48
+ context "Default command" do
49
+ background { config_exists <<-CONFIG }
50
+ project :slots do
51
+ environment :staging do
52
+ server :s1 do
53
+ host "1.2.3.4"
54
+
55
+ default_command :console
56
+
57
+ command :console do
58
+ execute "rails c"
59
+ end
60
+ end
61
+
62
+ server :s2 do
63
+ host "2.3.4.5"
64
+
65
+ default_command "tmux attach || tmux new-session"
66
+ end
67
+ end
68
+ end
69
+ CONFIG
70
+
71
+ scenario "Explicit default command" do
72
+ run "taketo slots:staging:s1 --dry-run"
73
+ exit_status.should be_success
74
+ stdout.should == %q{ssh -t 1.2.3.4 "RAILS_ENV=staging rails c"}
75
+ end
76
+
77
+ scenario "Default command defined in config" do
78
+ run "taketo slots:staging:s2 --dry-run"
79
+ exit_status.should be_success
80
+ stdout.should == %q{ssh -t 2.3.4.5 "RAILS_ENV=staging tmux attach || tmux new-session"}
81
+ end
82
+ end
83
+
84
+ scenario "Default location on server" do
85
+ create_config <<-CONFIG
86
+ project :slots do
87
+ environment :staging do
88
+ server do
89
+ location '/var/foo'
90
+ host "1.2.3.4"
91
+ end
92
+ end
93
+ end
94
+ CONFIG
95
+
96
+ run "taketo --dry-run"
97
+ exit_status.should be_success
98
+ stdout.should == %q{ssh -t 1.2.3.4 "cd /var/foo; RAILS_ENV=staging bash"}
99
+ end
100
+
101
+ context "Per-Scope default server config" do
102
+ background { config_exists <<-CONFIG }
103
+ default_server_config do
104
+ env :FOO => 'bar'
105
+ end
106
+
107
+ project :slots do
108
+ default_server_config do
109
+ location '/mnt/apps'
110
+ end
111
+
112
+ environment :staging do
113
+ server :s1 do
114
+ host "1.2.3.4"
115
+ end
116
+ end
117
+ end
118
+
119
+ project :shoes do
120
+ environment :production do
121
+ server do
122
+ host "2.3.4.5"
123
+ end
124
+ end
125
+ end
126
+ CONFIG
127
+
128
+ scenario "Global default server config" do
129
+ run "taketo shoes --dry-run"
130
+ exit_status.should be_success
131
+ stdout.should =~ /ssh -t 2\.3\.4\.5 "(RAILS_ENV=production FOO=bar|FOO=bar RAILS_ENV=production) bash"/
132
+ end
133
+
134
+ scenario "Project default server config" do
135
+ run "taketo slots --dry-run"
136
+ stdout.should =~ /ssh -t 1\.2\.3\.4 "cd .mnt.apps; (RAILS_ENV=staging FOO=bar|FOO=bar RAILS_ENV=staging) bash"/
137
+ end
138
+ end
139
+
140
+ context "Shared server config" do
141
+ scenario "Simple shared server config" do
142
+ create_config <<-CONFIG
143
+ shared_server_config :sc1 do
144
+ port 9999 #can contain any server config options
145
+ end
146
+
147
+ shared_server_config :sc2 do
148
+ location "/var/qux"
149
+ end
150
+
151
+ project :slots do
152
+ environment :staging do
153
+ server(:s1) { host "1.2.3.4"; include_shared_server_config(:sc1, :sc2) }
154
+ end
155
+ end
156
+ CONFIG
157
+
158
+ run "taketo slots:staging:s1 --dry-run"
159
+ exit_status.should be_success
160
+ stdout.should == %q{ssh -t -p 9999 1.2.3.4 "cd /var/qux; RAILS_ENV=staging bash"}
161
+ end
162
+
163
+ scenario "Shared server config with arguments" do
164
+ create_config <<-CONFIG
165
+ shared_server_config :sc_args1 do |port_num|
166
+ port port_num
167
+ end
168
+
169
+ shared_server_config :sc_args2 do |projects_root_folder, project_folder|
170
+ location File.join(projects_root_folder, project_folder)
171
+ end
172
+
173
+ project :slots do
174
+ environment :staging do
175
+ server(:s1) do
176
+ host "1.2.3.4"
177
+ include_shared_server_config(:sc_args1 => 9999, :sc_args2 => ['/var', 'qux'])
178
+ end
179
+ end
180
+ end
181
+ CONFIG
182
+
183
+ run "taketo slots:staging:s1 --dry-run"
184
+ exit_status.should be_success
185
+ stdout.should == %q{ssh -t -p 9999 1.2.3.4 "cd /var/qux; RAILS_ENV=staging bash"}
186
+ end
187
+ end
188
+
189
+ scenario "Environment variables" do
190
+ create_config <<-CONFIG
191
+ project :slots do
192
+ environment :staging do
193
+ server do
194
+ host "1.2.3.4"
195
+ location "/var/apps/slots"
196
+ env :FOO => "the value"
197
+ end
198
+ end
199
+ end
200
+ CONFIG
201
+
202
+ run "taketo --dry-run"
203
+ exit_status.should be_success
204
+ stdout.should =~ %r{ssh -t 1.2.3.4 "cd /var/apps/slots; (RAILS_ENV=staging FOO=the\\ value|FOO=the\\ value RAILS_ENV=staging) bash"}
205
+ end
206
+
207
+ scenario "Unique server alias" do
208
+ create_config <<-CONFIG
209
+ project :slots do
210
+ environment :staging do
211
+ server :s1 do
212
+ host "1.2.3.4"
213
+ end
214
+
215
+ server :s2 do
216
+ global_alias :ss2
217
+ host "2.3.4.5"
218
+ end
219
+ end
220
+ end
221
+ CONFIG
222
+
223
+ run "taketo ss2 --dry-run"
224
+ exit_status.should be_success
225
+ stdout.should == %q{ssh -t 2.3.4.5 "RAILS_ENV=staging bash"}
226
+ end
227
+
228
+ scenario "Default destination" do
229
+ create_config <<-CONFIG
230
+ default_destination "slots:staging:s2"
231
+ project :slots do
232
+ environment :staging do
233
+ server :s1 do
234
+ host "1.2.3.4"
235
+ end
236
+ server :s2 do
237
+ host "2.3.4.5"
238
+ end
239
+ end
240
+ end
241
+ CONFIG
242
+
243
+ run "taketo --dry-run"
244
+ exit_status.should be_success
245
+ stdout.should == %Q{ssh -t 2.3.4.5 "RAILS_ENV=staging bash"}
246
+ end
247
+
248
+ scenario "ssh identity file" do
249
+ create_config <<-CONFIG
250
+ project :slots do
251
+ environment :staging do
252
+ server do
253
+ identity_file "/home/gor/.ssh/foo bar"
254
+ host "2.3.4.5"
255
+ end
256
+ end
257
+ end
258
+ CONFIG
259
+
260
+ run "taketo --dry-run"
261
+ exit_status.should be_success
262
+ stdout.should == %q{ssh -t -i /home/gor/.ssh/foo\ bar 2.3.4.5 "RAILS_ENV=staging bash"}
263
+ end
264
+
265
+ scenario "server outside project" do
266
+ create_config <<-CONFIG
267
+ server :my_server do
268
+ host "1.2.3.4"
269
+ end
270
+ CONFIG
271
+
272
+ run "taketo my_server --dry-run"
273
+ exit_status.should be_success
274
+ stdout.should == %q{ssh -t 1.2.3.4 "bash"}
275
+ end
276
+
277
+ end
@@ -0,0 +1,109 @@
1
+ require 'acceptance_spec_helper'
2
+
3
+ feature "Config validation" do
4
+ scenario "No servers defined" do
5
+ create_config <<-CONFIG
6
+ CONFIG
7
+
8
+ run "taketo"
9
+ exit_status.should_not be_success
10
+ stderr.should include("There are no servers. Add some to your config (~/.taketo.rc.rb by default)")
11
+ end
12
+
13
+ scenario "Project has no environments" do
14
+ create_config <<-CONFIG
15
+ project :foo do
16
+ end
17
+
18
+ project :bar do
19
+ environment :baz do
20
+ server :qux do
21
+ host '1.2.3.4'
22
+ end
23
+ end
24
+ end
25
+ CONFIG
26
+
27
+ run "taketo"
28
+ exit_status.should_not be_success
29
+ stderr.should include("Project foo: no environments")
30
+ end
31
+
32
+ scenario "Environment has no servers" do
33
+ create_config <<-CONFIG
34
+ project :foo do
35
+ environment :bar do
36
+ end
37
+ end
38
+
39
+ project :bar do
40
+ environment :baz do
41
+ server :qux do
42
+ host '1.2.3.4'
43
+ end
44
+ end
45
+ end
46
+ CONFIG
47
+
48
+ run "taketo"
49
+ exit_status.should_not be_success
50
+ stderr.should include("Environment foo:bar: no servers")
51
+ end
52
+
53
+ scenario "Server has no host defined" do
54
+ create_config <<-CONFIG
55
+ project :foo do
56
+ environment :bar do
57
+ server do
58
+ end
59
+ end
60
+ end
61
+ CONFIG
62
+
63
+ run "taketo"
64
+ exit_status.should_not be_success
65
+ stderr.should include("Server foo:bar:default: host is not defined")
66
+ end
67
+
68
+ scenario "Duplicate global server alias" do
69
+ create_config <<-CONFIG
70
+ project :foo do
71
+ environment :bar do
72
+ server :s1 do
73
+ host "1.2.3.4"
74
+ global_alias :a1
75
+ end
76
+
77
+ server :s2 do
78
+ host "2.3.4.5"
79
+ global_alias :a1
80
+ end
81
+ end
82
+ end
83
+ CONFIG
84
+
85
+ run "taketo"
86
+ exit_status.should_not be_success
87
+ stderr.should include("Server foo:bar:s2: global alias 'a1' has already been taken by server foo:bar:s1")
88
+ end
89
+
90
+ scenario "Command without definition" do
91
+ create_config <<-CONFIG
92
+ project :foo do
93
+ environment :bar do
94
+ server do
95
+ host "1.2.3.4"
96
+
97
+ command :qux do
98
+ end
99
+ end
100
+ end
101
+ end
102
+ CONFIG
103
+
104
+ run "taketo"
105
+ exit_status.should_not be_success
106
+ stderr.should include("Don't know what to execute on command qux")
107
+ end
108
+ end
109
+
@@ -0,0 +1,60 @@
1
+ require 'acceptance_spec_helper'
2
+
3
+ feature "connect to server" do
4
+ scenario "reach server via ssh" do
5
+ create_config <<-CONFIG
6
+ project :slots do
7
+ environment :staging do
8
+ server :s1 do
9
+ host "1.2.3.4"
10
+ user "deployer"
11
+ location "/var/apps/slots"
12
+ end
13
+
14
+ server :s2 do
15
+ host "2.3.4.5"
16
+ end
17
+ end
18
+ end
19
+ CONFIG
20
+
21
+ run "taketo slots:staging:s1 --dry-run"
22
+ exit_status.should be_success
23
+ stdout.should == %Q{ssh -t deployer@1.2.3.4 "cd /var/apps/slots; RAILS_ENV=staging bash"}
24
+ end
25
+
26
+ scenario "ssh to the only server" do
27
+ create_config <<-CONFIG
28
+ project :slots do
29
+ environment :staging do
30
+ server do
31
+ host "1.2.3.4"
32
+ location "/var/apps/slots"
33
+ end
34
+ end
35
+ end
36
+ CONFIG
37
+
38
+ run "taketo --dry-run"
39
+ exit_status.should be_success
40
+ stdout.should == %Q{ssh -t 1.2.3.4 "cd /var/apps/slots; RAILS_ENV=staging bash"}
41
+ end
42
+
43
+ scenario "ssh without password" do
44
+ create_config <<-CONFIG
45
+ project :slots do
46
+ environment :staging do
47
+ server do
48
+ identity_file "/home/gor/.ssh/foo bar"
49
+ host "2.3.4.5"
50
+ end
51
+ end
52
+ end
53
+ CONFIG
54
+
55
+ run "taketo --dry-run"
56
+ exit_status.should be_success
57
+ stdout.should == %q{ssh -t -i /home/gor/.ssh/foo\ bar 2.3.4.5 "RAILS_ENV=staging bash"}
58
+ end
59
+ end
60
+
@@ -0,0 +1,31 @@
1
+ require 'acceptance_spec_helper'
2
+
3
+ feature "Resolve host error handling" do
4
+ background { config_exists <<-CONFIG }
5
+ default_destination "slots:staging:s2"
6
+ project :slots do
7
+ environment :staging do
8
+ server :s1 do
9
+ host "1.2.3.4"
10
+ end
11
+
12
+ server :s2 do
13
+ host "2.3.4.5"
14
+ end
15
+ end
16
+ end
17
+ CONFIG
18
+
19
+ scenario "Non-existent location" do
20
+ run "taketo slots:staging:qqq --dry-run"
21
+ exit_status.should_not be_success
22
+ stderr.should include("Can't find server for path slots:staging:qqq")
23
+ end
24
+
25
+ scenario "Ambiguous location" do
26
+ run "taketo slots:staging --dry-run"
27
+ exit_status.should_not be_success
28
+ stderr.should include("There are multiple possible destinations: slots:staging:s1, slots:staging:s2")
29
+ end
30
+ end
31
+
@@ -0,0 +1,44 @@
1
+ require 'acceptance_spec_helper'
2
+
3
+ feature "Generate SSH config" do
4
+ background { config_exists <<-CONFIG }
5
+ project :foo do
6
+ environment :bar do
7
+ server do
8
+ host "bar.foo.com"
9
+ port 5678
10
+ user "pivo"
11
+ identity_file "~/.ssh/id_rsa"
12
+ end
13
+ end
14
+ end
15
+
16
+ project :baz do
17
+ environment :qux do
18
+ server :bart do
19
+ global_alias :bazqux
20
+ host "2.3.4.5"
21
+ end
22
+ end
23
+ end
24
+ CONFIG
25
+
26
+ scenario "Generate ssh config" do
27
+ run "taketo --generate-ssh-config"
28
+ exit_status.should be_success
29
+ stdout.should == <<-SSH_CONFIG.chomp
30
+ Host bar.foo.com
31
+ Hostname bar.foo.com
32
+ Port 5678
33
+ User pivo
34
+ IdentityFile ~/.ssh/id_rsa
35
+
36
+ Host bazqux
37
+ Hostname 2.3.4.5
38
+
39
+ Host 2.3.4.5
40
+ Hostname 2.3.4.5
41
+ SSH_CONFIG
42
+ end
43
+ end
44
+
@@ -0,0 +1,74 @@
1
+ require 'acceptance_spec_helper'
2
+
3
+ feature "Global server alias" do
4
+ background { config_exists <<-CONFIG }
5
+ project :foo do
6
+ environment :bar do
7
+ server do
8
+ host "1.2.3.4"
9
+ port 5678
10
+ user "pivo"
11
+ location "/var/apps/vodka"
12
+ end
13
+ end
14
+ end
15
+
16
+ project :baz do
17
+ environment :qux do
18
+ server :bart do
19
+ host "2.3.4.5"
20
+ default_command :console
21
+ command :console do
22
+ execute "rails c"
23
+ end
24
+ command :killall do
25
+ execute "killall humans"
26
+ desc "Kill ALL humans"
27
+ end
28
+ end
29
+ end
30
+ end
31
+ CONFIG
32
+
33
+ scenario "Unique server alias" do
34
+ run "taketo --view"
35
+ exit_status.should be_success
36
+ stdout.should == <<-CONFIG_OUTLINE.chomp
37
+
38
+ Project: foo
39
+ Environment: bar
40
+ Server: default
41
+ Host: 1.2.3.4
42
+ Port: 5678
43
+ User: pivo
44
+ Default location: /var/apps/vodka
45
+ Default command: bash
46
+ Environment: RAILS_ENV=bar
47
+
48
+ Project: baz
49
+ Environment: qux
50
+ Server: bart
51
+ Host: 2.3.4.5
52
+ Default command: rails c
53
+ Environment: RAILS_ENV=qux
54
+ Commands:
55
+ console
56
+ killall - Kill ALL humans
57
+ CONFIG_OUTLINE
58
+ end
59
+
60
+ scenario "View particular server config" do
61
+ run "taketo foo:bar:default --view"
62
+ exit_status.should be_success
63
+ stdout.should == <<-CONFIG_OUTLINE.chomp
64
+ Server: default
65
+ Host: 1.2.3.4
66
+ Port: 5678
67
+ User: pivo
68
+ Default location: /var/apps/vodka
69
+ Default command: bash
70
+ Environment: RAILS_ENV=bar
71
+ CONFIG_OUTLINE
72
+ end
73
+ end
74
+
@@ -0,0 +1,21 @@
1
+ require 'acceptance_spec_helper'
2
+
3
+ feature "Location on remote host" do
4
+ scenario "Override default location for server through --directory flag" do
5
+ create_config <<-CONFIG
6
+ project :slots do
7
+ environment :staging do
8
+ server do
9
+ location '/var/foo'
10
+ host "1.2.3.4"
11
+ end
12
+ end
13
+ end
14
+ CONFIG
15
+
16
+ run "taketo slots:staging --dry-run --directory /var/www"
17
+ exit_status.should be_success
18
+ stdout.should == %q{ssh -t 1.2.3.4 "cd /var/www; RAILS_ENV=staging bash"}
19
+ end
20
+ end
21
+
@@ -0,0 +1,71 @@
1
+ require 'spec_helper'
2
+ require 'open4'
3
+
4
+ ENV['PATH'] = "#{File.expand_path('../../bin', __FILE__)}#{File::PATH_SEPARATOR}#{ENV['PATH']}"
5
+ ENV['RUBYOPT'] = '-Ilib'
6
+
7
+ module AcceptanceSpecDSL
8
+ module Feature
9
+ def self.extended(base)
10
+ base.instance_eval do
11
+ alias :feature :describe
12
+ end
13
+ end
14
+ end
15
+
16
+ def self.included(base)
17
+ base.instance_eval do
18
+ alias :background :before
19
+ alias :scenario :it
20
+ alias :xscenario :xit
21
+ alias :given :let
22
+ alias :given! :let!
23
+ end
24
+ end
25
+ end
26
+
27
+ module TaketoAcceptanceSpec
28
+ DEFAULT_TEST_CONFIG_PATH = "/tmp/taketo_test_cfg.rb".freeze
29
+
30
+ attr_reader :stdout, :stderr, :exit_status
31
+
32
+ def create_config(config)
33
+ File.open(DEFAULT_TEST_CONFIG_PATH, "w") do |f|
34
+ f.write(config)
35
+ end
36
+ end
37
+ alias :config_exists :create_config
38
+
39
+ def remove_config
40
+ if File.exist?(DEFAULT_TEST_CONFIG_PATH)
41
+ FileUtils.rm(DEFAULT_TEST_CONFIG_PATH)
42
+ end
43
+ end
44
+
45
+ def run(command)
46
+ pid, stdin, stdout, stderr = Open4.popen4("#{command} --config #{DEFAULT_TEST_CONFIG_PATH} --debug")
47
+ @stdout = stdout.read.chomp.freeze
48
+ @stderr = stderr.read.chomp.freeze
49
+ _, @exit_status = Process.waitpid2(pid)
50
+ ensure
51
+ stdin.close if stdin
52
+ stdout.close if stdout
53
+ stderr.close if stderr
54
+ end
55
+
56
+ RSpec.configure do |config|
57
+ config.after(:each) do
58
+ @stdout = nil
59
+ @stderr = nil
60
+ @exit_status = nil
61
+ remove_config
62
+ end
63
+ end
64
+ end
65
+
66
+ extend AcceptanceSpecDSL::Feature
67
+
68
+ RSpec.configure do |c|
69
+ c.include AcceptanceSpecDSL
70
+ c.include TaketoAcceptanceSpec
71
+ end