aruba 1.0.0.pre.alpha.4 → 1.0.0.pre.alpha.5
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/.rspec +0 -1
- data/.rubocop.yml +19 -1
- data/.rubocop_todo.yml +10 -116
- data/.travis.yml +24 -26
- data/CHANGELOG.md +112 -19
- data/CONTRIBUTING.md +7 -7
- data/Gemfile +2 -50
- data/Rakefile +20 -37
- data/appveyor.yml +3 -5
- data/aruba.gemspec +16 -6
- data/bin/console +1 -1
- data/cucumber.yml +4 -15
- data/exe/aruba +1 -1
- data/fixtures/cli-app/bin/aruba-test-cli +1 -1
- data/fixtures/cli-app/cli-app.gemspec +1 -3
- data/fixtures/cli-app/lib/cli/app.rb +1 -1
- data/fixtures/cli-app/spec/spec_helper.rb +1 -1
- data/fixtures/empty-app/cli-app.gemspec +1 -3
- data/fixtures/empty-app/lib/cli/app.rb +0 -2
- data/fixtures/getting-started-app/Gemfile +1 -1
- data/lib/aruba/api.rb +6 -6
- data/lib/aruba/api/commands.rb +25 -1
- data/lib/aruba/api/core.rb +17 -4
- data/lib/aruba/api/environment.rb +8 -4
- data/lib/aruba/api/filesystem.rb +19 -6
- data/lib/aruba/colorizer.rb +10 -99
- data/lib/aruba/config/jruby.rb +15 -5
- data/lib/aruba/config_wrapper.rb +3 -1
- data/lib/aruba/configuration.rb +24 -12
- data/lib/aruba/cucumber.rb +0 -2
- data/lib/aruba/cucumber/command.rb +123 -45
- data/lib/aruba/cucumber/file.rb +13 -15
- data/lib/aruba/cucumber/testing_frameworks.rb +74 -50
- data/lib/aruba/in_config_wrapper.rb +5 -1
- data/lib/aruba/initializer.rb +28 -28
- data/lib/aruba/matchers/command/be_successfully_executed.rb +4 -0
- data/lib/aruba/matchers/command/have_exit_status.rb +13 -3
- data/lib/aruba/matchers/command/have_finished_in_time.rb +1 -1
- data/lib/aruba/matchers/command/have_output.rb +1 -1
- data/lib/aruba/matchers/command/have_output_on_stderr.rb +1 -1
- data/lib/aruba/matchers/command/have_output_on_stdout.rb +1 -1
- data/lib/aruba/matchers/command/have_output_size.rb +1 -1
- data/lib/aruba/matchers/directory/be_an_existing_directory.rb +1 -1
- data/lib/aruba/matchers/file/be_an_existing_file.rb +1 -1
- data/lib/aruba/platform.rb +0 -7
- data/lib/aruba/platforms/announcer.rb +16 -11
- data/lib/aruba/platforms/command_monitor.rb +36 -0
- data/lib/aruba/platforms/simple_table.rb +2 -10
- data/lib/aruba/platforms/unix_environment_variables.rb +2 -10
- data/lib/aruba/platforms/unix_platform.rb +7 -3
- data/lib/aruba/platforms/windows_command_string.rb +2 -2
- data/lib/aruba/platforms/windows_environment_variables.rb +7 -1
- data/lib/aruba/platforms/windows_platform.rb +4 -0
- data/lib/aruba/processes/basic_process.rb +11 -11
- data/lib/aruba/processes/debug_process.rb +7 -3
- data/lib/aruba/processes/spawn_process.rb +13 -8
- data/lib/aruba/rspec.rb +1 -1
- data/lib/aruba/setup.rb +5 -5
- data/lib/aruba/version.rb +1 -1
- metadata +153 -20
- data/bin/build +0 -3
- data/bin/release +0 -3
data/lib/aruba/cucumber/file.rb
CHANGED
@@ -88,21 +88,19 @@ Then(/^the following files should (not )?exist:$/) do |negated, files|
|
|
88
88
|
end
|
89
89
|
end
|
90
90
|
|
91
|
-
Then(/^(?:a|the)
|
92
|
-
if
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
expect(path).to be_an_existing_directory
|
103
|
-
end
|
91
|
+
Then(/^(?:a|the) file(?: named)? "([^"]*)" should (not )?exist(?: anymore)?$/) do |path, expect_match|
|
92
|
+
if expect_match
|
93
|
+
expect(path).not_to be_an_existing_file
|
94
|
+
else
|
95
|
+
expect(path).to be_an_existing_file
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
Then(/^(?:a|the) directory(?: named)? "([^"]*)" should (not )?exist(?: anymore)?$/) do |path, expect_match|
|
100
|
+
if expect_match
|
101
|
+
expect(path).not_to be_an_existing_directory
|
104
102
|
else
|
105
|
-
|
103
|
+
expect(path).to be_an_existing_directory
|
106
104
|
end
|
107
105
|
end
|
108
106
|
|
@@ -180,7 +178,7 @@ Then(/^(?:a|the) file(?: named)? "([^"]*)" should (not )?be equal to file "([^"]
|
|
180
178
|
end
|
181
179
|
end
|
182
180
|
|
183
|
-
Then(/^the (?:file|directory)(?: named)? "([^"]*)" should( not)? have permissions "([^"]*)"$/) do |path, negated, permissions|
|
181
|
+
Then(/^(?:a|the) (?:file|directory)(?: named)? "([^"]*)" should( not)? have permissions "([^"]*)"$/) do |path, negated, permissions|
|
184
182
|
if negated
|
185
183
|
expect(path).not_to have_permissions(permissions)
|
186
184
|
else
|
@@ -1,25 +1,33 @@
|
|
1
1
|
# Cucumber
|
2
|
-
Then /^the feature(?:s)? should
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
2
|
+
Then /^the feature(?:s)? should not(?: all)? pass$/ do
|
3
|
+
step 'the output should contain " failed)"'
|
4
|
+
step 'the exit status should be 1'
|
5
|
+
end
|
6
|
+
|
7
|
+
# Cucumber
|
8
|
+
Then /^the feature(?:s)? should(?: all)? pass$/ do
|
9
|
+
step 'the output should not contain " failed)"'
|
10
|
+
step 'the output should not contain " undefined)"'
|
11
|
+
step 'the exit status should be 0'
|
11
12
|
end
|
12
13
|
|
13
14
|
# Cucumber
|
14
|
-
Then /^the feature(?:s)? should
|
15
|
-
|
16
|
-
|
17
|
-
|
15
|
+
Then /^the feature(?:s)? should not(?: all)? pass with( regex)?:$/ do |regex, string|
|
16
|
+
step 'the output should contain " failed)"'
|
17
|
+
step 'the exit status should be 1'
|
18
|
+
|
19
|
+
if regex
|
20
|
+
step "the output should match %r<#{string}>"
|
18
21
|
else
|
19
|
-
step 'the output should
|
20
|
-
step 'the output should not contain " undefined)"'
|
21
|
-
step 'the exit status should be 0'
|
22
|
+
step 'the output should contain:', string
|
22
23
|
end
|
24
|
+
end
|
25
|
+
|
26
|
+
# Cucumber
|
27
|
+
Then /^the feature(?:s)? should(?: all)? pass with( regex)?:$/ do |regex, string|
|
28
|
+
step 'the output should not contain " failed)"'
|
29
|
+
step 'the output should not contain " undefined)"'
|
30
|
+
step 'the exit status should be 0'
|
23
31
|
|
24
32
|
if regex
|
25
33
|
step "the output should match %r<#{string}>"
|
@@ -29,30 +37,38 @@ Then /^the feature(?:s)? should( not)?(?: all)? pass with( regex)?:$/ do |negate
|
|
29
37
|
end
|
30
38
|
|
31
39
|
# RSpec
|
32
|
-
Then /^the spec(?:s)? should
|
33
|
-
if
|
34
|
-
|
35
|
-
step 'the output should not contain "0 failures"'
|
36
|
-
else
|
37
|
-
step %(the output should contain "#{count_failures} failures")
|
38
|
-
end
|
39
|
-
|
40
|
-
step 'the exit status should be 1'
|
40
|
+
Then /^the spec(?:s)? should not(?: all)? pass(?: with (\d+) failures?)?$/ do |count_failures|
|
41
|
+
if count_failures.nil?
|
42
|
+
step 'the output should not contain "0 failures"'
|
41
43
|
else
|
42
|
-
step
|
43
|
-
step 'the exit status should be 0'
|
44
|
+
step %(the output should contain "#{count_failures} failures")
|
44
45
|
end
|
46
|
+
|
47
|
+
step 'the exit status should be 1'
|
45
48
|
end
|
46
49
|
|
47
50
|
# RSpec
|
48
|
-
Then /^the spec(?:s)? should
|
49
|
-
|
50
|
-
|
51
|
-
|
51
|
+
Then /^the spec(?:s)? should all pass$/ do
|
52
|
+
step 'the output should contain "0 failures"'
|
53
|
+
step 'the exit status should be 0'
|
54
|
+
end
|
55
|
+
|
56
|
+
# RSpec
|
57
|
+
Then /^the spec(?:s)? should not(?: all)? pass with( regex)?:$/ do |regex, string|
|
58
|
+
step 'the output should not contain "0 failures"'
|
59
|
+
step 'the exit status should be 1'
|
60
|
+
|
61
|
+
if regex
|
62
|
+
step "the output should match %r<#{string}>"
|
52
63
|
else
|
53
|
-
step 'the output should contain
|
54
|
-
step 'the exit status should be 0'
|
64
|
+
step 'the output should contain:', string
|
55
65
|
end
|
66
|
+
end
|
67
|
+
|
68
|
+
# RSpec
|
69
|
+
Then /^the spec(?:s)? should(?: all)? pass with( regex)?:$/ do |regex, string|
|
70
|
+
step 'the output should contain "0 failures"'
|
71
|
+
step 'the exit status should be 0'
|
56
72
|
|
57
73
|
if regex
|
58
74
|
step "the output should match %r<#{string}>"
|
@@ -62,30 +78,38 @@ Then /^the spec(?:s)? should( not)?(?: all)? pass with( regex)?:$/ do |negated,
|
|
62
78
|
end
|
63
79
|
|
64
80
|
# Minitest
|
65
|
-
Then /^the tests(?:s)? should
|
66
|
-
if
|
67
|
-
|
68
|
-
step 'the output should not contain "0 errors"'
|
69
|
-
else
|
70
|
-
step %(the output should contain "#{count_failures} errors")
|
71
|
-
end
|
72
|
-
|
73
|
-
step 'the exit status should be 1'
|
81
|
+
Then /^the tests(?:s)? should not(?: all)? pass(?: with (\d+) failures?)?$/ do |count_failures|
|
82
|
+
if count_failures.nil?
|
83
|
+
step 'the output should not contain "0 errors"'
|
74
84
|
else
|
75
|
-
step
|
76
|
-
step 'the exit status should be 0'
|
85
|
+
step %(the output should contain "#{count_failures} errors")
|
77
86
|
end
|
87
|
+
|
88
|
+
step 'the exit status should be 1'
|
78
89
|
end
|
79
90
|
|
80
91
|
# Minitest
|
81
|
-
Then /^the
|
82
|
-
|
83
|
-
|
84
|
-
|
92
|
+
Then /^the tests(?:s)? should all pass$/ do
|
93
|
+
step 'the output should contain "0 errors"'
|
94
|
+
step 'the exit status should be 0'
|
95
|
+
end
|
96
|
+
|
97
|
+
# Minitest
|
98
|
+
Then /^the test(?:s)? should not(?: all)? pass with( regex)?:$/ do |regex, string|
|
99
|
+
step 'the output should contain "0 errors"'
|
100
|
+
step 'the exit status should be 1'
|
101
|
+
|
102
|
+
if regex
|
103
|
+
step "the output should match %r<#{string}>"
|
85
104
|
else
|
86
|
-
step 'the output should
|
87
|
-
step 'the exit status should be 0'
|
105
|
+
step 'the output should contain:', string
|
88
106
|
end
|
107
|
+
end
|
108
|
+
|
109
|
+
# Minitest
|
110
|
+
Then /^the test(?:s)? should(?: all)? pass with( regex)?:$/ do |regex, string|
|
111
|
+
step 'the output should not contain "0 errors"'
|
112
|
+
step 'the exit status should be 0'
|
89
113
|
|
90
114
|
if regex
|
91
115
|
step "the output should match %r<#{string}>"
|
@@ -15,10 +15,14 @@ module Aruba
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def method_missing(name, *args)
|
18
|
-
fail ArgumentError, 'Options take no argument' if args.
|
18
|
+
fail ArgumentError, 'Options take no argument' if args.any?
|
19
19
|
fail UnknownOptionError, %(Option "#{name}" is unknown. Please use only earlier defined options) unless config.key? name
|
20
20
|
|
21
21
|
config[name]
|
22
22
|
end
|
23
|
+
|
24
|
+
def respond_to_missing?(*)
|
25
|
+
true
|
26
|
+
end
|
23
27
|
end
|
24
28
|
end
|
data/lib/aruba/initializer.rb
CHANGED
@@ -80,18 +80,18 @@ module Aruba
|
|
80
80
|
:create_file
|
81
81
|
end
|
82
82
|
|
83
|
-
send creator, file,
|
84
|
-
$LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
|
83
|
+
send creator, file, <<~EOS
|
84
|
+
$LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
|
85
85
|
|
86
|
-
::Dir.glob(::File.expand_path('../support/*.rb', __FILE__)).each { |f| require_relative f }
|
87
|
-
::Dir.glob(::File.expand_path('../support/**/*.rb', __FILE__)).each { |f| require_relative f }
|
88
|
-
EOS
|
86
|
+
::Dir.glob(::File.expand_path('../support/*.rb', __FILE__)).each { |f| require_relative f }
|
87
|
+
::Dir.glob(::File.expand_path('../support/**/*.rb', __FILE__)).each { |f| require_relative f }
|
88
|
+
EOS
|
89
89
|
end
|
90
90
|
|
91
91
|
def create_support_file
|
92
|
-
create_file 'spec/support/aruba.rb',
|
93
|
-
require 'aruba/rspec'
|
94
|
-
EOS
|
92
|
+
create_file 'spec/support/aruba.rb', <<~EOS
|
93
|
+
require 'aruba/rspec'
|
94
|
+
EOS
|
95
95
|
end
|
96
96
|
end
|
97
97
|
end
|
@@ -114,9 +114,9 @@ module Aruba
|
|
114
114
|
end
|
115
115
|
|
116
116
|
def create_support_file
|
117
|
-
create_file 'features/support/aruba.rb',
|
118
|
-
require 'aruba/cucumber'
|
119
|
-
EOS
|
117
|
+
create_file 'features/support/aruba.rb', <<~EOS
|
118
|
+
require 'aruba/cucumber'
|
119
|
+
EOS
|
120
120
|
end
|
121
121
|
end
|
122
122
|
end
|
@@ -146,30 +146,30 @@ module Aruba
|
|
146
146
|
:create_file
|
147
147
|
end
|
148
148
|
|
149
|
-
send creator, file,
|
150
|
-
$LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
|
149
|
+
send creator, file, <<~EOS
|
150
|
+
$LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
|
151
151
|
|
152
|
-
::Dir.glob(::File.expand_path('../support/*.rb', __FILE__)).each { |f| require_relative f }
|
153
|
-
::Dir.glob(::File.expand_path('../support/**/*.rb', __FILE__)).each { |f| require_relative f }
|
154
|
-
EOS
|
152
|
+
::Dir.glob(::File.expand_path('../support/*.rb', __FILE__)).each { |f| require_relative f }
|
153
|
+
::Dir.glob(::File.expand_path('../support/**/*.rb', __FILE__)).each { |f| require_relative f }
|
154
|
+
EOS
|
155
155
|
end
|
156
156
|
|
157
157
|
def create_example
|
158
|
-
create_file 'test/use_aruba_with_minitest.rb',
|
159
|
-
$LOAD_PATH.unshift File.expand_path('../test', __FILE__)
|
158
|
+
create_file 'test/use_aruba_with_minitest.rb', <<~EOS
|
159
|
+
$LOAD_PATH.unshift File.expand_path('../test', __FILE__)
|
160
160
|
|
161
|
-
require 'test_helper'
|
162
|
-
require 'minitest/autorun'
|
163
|
-
require 'aruba/api'
|
161
|
+
require 'test_helper'
|
162
|
+
require 'minitest/autorun'
|
163
|
+
require 'aruba/api'
|
164
164
|
|
165
|
-
class FirstRun < Minitest::Test
|
166
|
-
|
165
|
+
class FirstRun < Minitest::Test
|
166
|
+
include Aruba::Api
|
167
167
|
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
end
|
172
|
-
EOS
|
168
|
+
def setup
|
169
|
+
aruba_setup
|
170
|
+
end
|
171
|
+
end
|
172
|
+
EOS
|
173
173
|
end
|
174
174
|
end
|
175
175
|
end
|
@@ -27,6 +27,10 @@ RSpec::Matchers.define :be_successfully_executed do
|
|
27
27
|
|
28
28
|
expect(@old_actual).to have_exit_status(0)
|
29
29
|
end
|
30
|
+
|
31
|
+
failure_message do |_actual|
|
32
|
+
"Expected `#{@actual}` to succeed but got non-zero exit status and the following output:\n\n#{@old_actual.output}\n"
|
33
|
+
end
|
30
34
|
end
|
31
35
|
|
32
36
|
RSpec::Matchers.define_negated_matcher :have_failed_running, :be_successfully_executed
|
@@ -23,16 +23,26 @@ RSpec::Matchers.define :have_exit_status do |expected|
|
|
23
23
|
@old_actual.stop
|
24
24
|
@actual = actual.exit_status
|
25
25
|
|
26
|
-
|
26
|
+
raise "Expected #{@old_actual} to respond to #exit_status" unless @old_actual.respond_to? :exit_status
|
27
27
|
|
28
28
|
values_match? expected, @actual
|
29
29
|
end
|
30
30
|
|
31
31
|
failure_message do |actual|
|
32
|
-
format(
|
32
|
+
format(
|
33
|
+
%(expected that command "%s" has exit status of "%s", but has "%s".),
|
34
|
+
@old_actual.commandline,
|
35
|
+
expected.to_s,
|
36
|
+
actual.to_s
|
37
|
+
)
|
33
38
|
end
|
34
39
|
|
35
40
|
failure_message_when_negated do |actual|
|
36
|
-
format(
|
41
|
+
format(
|
42
|
+
%(expected that command "%s" does not have exit status of "%s", but has "%s".),
|
43
|
+
@old_actual.commandline,
|
44
|
+
expected.to_s,
|
45
|
+
actual.to_s
|
46
|
+
)
|
37
47
|
end
|
38
48
|
end
|
@@ -24,7 +24,7 @@ RSpec::Matchers.define :have_finished_in_time do
|
|
24
24
|
@old_actual = actual
|
25
25
|
@actual = @old_actual.commandline
|
26
26
|
|
27
|
-
|
27
|
+
raise "Expected #{@old_actual} to respond to #timed_out?" unless @old_actual.respond_to? :timed_out?
|
28
28
|
|
29
29
|
@old_actual.stop
|
30
30
|
|
@@ -19,7 +19,7 @@ RSpec::Matchers.define :have_output do |expected|
|
|
19
19
|
match do |actual|
|
20
20
|
@old_actual = actual
|
21
21
|
|
22
|
-
|
22
|
+
raise "Expected #{@old_actual} to respond to #output" unless @old_actual.respond_to? :output
|
23
23
|
|
24
24
|
@old_actual.stop
|
25
25
|
|
@@ -17,7 +17,7 @@ RSpec::Matchers.define :have_output_on_stderr do |expected|
|
|
17
17
|
match do |actual|
|
18
18
|
@old_actual = actual
|
19
19
|
|
20
|
-
|
20
|
+
raise "Expected #{@old_actual} to respond to #stderr" unless @old_actual.respond_to? :stderr
|
21
21
|
|
22
22
|
@old_actual.stop
|
23
23
|
|
@@ -17,7 +17,7 @@ RSpec::Matchers.define :have_output_on_stdout do |expected|
|
|
17
17
|
match do |actual|
|
18
18
|
@old_actual = actual
|
19
19
|
|
20
|
-
|
20
|
+
raise "Expected #{@old_actual} to respond to #stdout" unless @old_actual.respond_to? :stdout
|
21
21
|
|
22
22
|
@old_actual.stop
|
23
23
|
|
@@ -18,7 +18,7 @@
|
|
18
18
|
# end
|
19
19
|
RSpec::Matchers.define :have_output_size do |expected|
|
20
20
|
match do |actual|
|
21
|
-
|
21
|
+
raise "Expected #{actual} to respond to #size" unless actual.respond_to? :size
|
22
22
|
|
23
23
|
@actual = actual.size
|
24
24
|
values_match? expected, @actual
|
data/lib/aruba/platform.rb
CHANGED
@@ -4,16 +4,9 @@ require 'aruba/platforms/windows_platform'
|
|
4
4
|
# Aruba
|
5
5
|
module Aruba
|
6
6
|
PLATFORM_MUTEX = Mutex.new
|
7
|
-
end
|
8
7
|
|
9
|
-
# Aruba
|
10
|
-
module Aruba
|
11
|
-
# Platform
|
12
8
|
Platform = [Platforms::WindowsPlatform, Platforms::UnixPlatform].find(&:match?)
|
13
|
-
end
|
14
9
|
|
15
|
-
# Aruba
|
16
|
-
module Aruba
|
17
10
|
PLATFORM_MUTEX.synchronize do
|
18
11
|
@platform = Platform.new
|
19
12
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'shellwords'
|
2
2
|
require 'aruba/colorizer'
|
3
3
|
|
4
|
-
Aruba::
|
4
|
+
Aruba::Colorizer.coloring = false if !STDOUT.tty? && !ENV.key?('AUTOTEST')
|
5
5
|
|
6
6
|
# Aruba
|
7
7
|
module Aruba
|
@@ -92,9 +92,9 @@ module Aruba
|
|
92
92
|
output_format :stop_signal, proc { |p, s| format('Command will be stopped with `kill -%s %s`', s, p) }
|
93
93
|
output_format :timeout, '# %s-timeout: %s seconds'
|
94
94
|
output_format :wait_time, '# %s: %s seconds'
|
95
|
-
|
96
|
-
|
97
|
-
|
95
|
+
output_format :command_filesystem_status, proc { |status|
|
96
|
+
format("<<-COMMAND FILESYSTEM STATUS\n%s\nCOMMAND FILESYSTEM STATUS",
|
97
|
+
Aruba.platform.simple_table(status.to_h, sort: false)) }
|
98
98
|
end
|
99
99
|
|
100
100
|
def output_format(channel, string = '%s', &block)
|
@@ -171,13 +171,18 @@ module Aruba
|
|
171
171
|
|
172
172
|
return unless activated?(channel)
|
173
173
|
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
174
|
+
begin
|
175
|
+
if block_given?
|
176
|
+
value = yield
|
177
|
+
args << value
|
178
|
+
end
|
179
|
+
|
180
|
+
message = the_output_format.call(*args)
|
181
|
+
message += "\n"
|
182
|
+
message = colorizer.cyan(message)
|
183
|
+
rescue NotImplementedError => e
|
184
|
+
message = "Error fetching announced value for #{channel}: #{e.message}"
|
185
|
+
end
|
181
186
|
|
182
187
|
announcer.announce(message)
|
183
188
|
|