aruba 0.6.2 → 0.7.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.
- checksums.yaml +4 -4
- data/.gitignore +3 -0
- data/.rubocop.yml +167 -3
- data/.simplecov +32 -0
- data/.travis.yml +5 -2
- data/.yardopts +8 -0
- data/CONTRIBUTING.md +18 -8
- data/Gemfile +25 -0
- data/History.md +8 -0
- data/README.md +80 -18
- data/Rakefile +1 -1
- data/aruba.gemspec +6 -8
- data/cucumber.yml +5 -6
- data/features/debug.feature +15 -0
- data/features/file_system_commands.feature +14 -2
- data/features/fixtures/copy/file.txt +1 -0
- data/features/fixtures/fixtures-app/test.txt +1 -0
- data/features/fixtures/spawn_process/stderr.sh +3 -0
- data/features/interactive.feature +2 -2
- data/features/step_definitions/aruba_dev_steps.rb +1 -1
- data/features/support/custom_main.rb +10 -6
- data/features/support/env.rb +27 -2
- data/features/support/simplecov_setup.rb +8 -0
- data/lib/aruba.rb +2 -2
- data/lib/aruba/announcer.rb +161 -0
- data/lib/aruba/api.rb +490 -251
- data/lib/aruba/config.rb +0 -1
- data/lib/aruba/cucumber.rb +71 -59
- data/lib/aruba/cucumber/hooks.rb +18 -13
- data/lib/aruba/errors.rb +6 -0
- data/lib/aruba/in_process.rb +5 -45
- data/lib/aruba/matchers/command.rb +79 -0
- data/lib/aruba/matchers/directory.rb +59 -0
- data/lib/aruba/matchers/file.rb +177 -0
- data/lib/aruba/matchers/mode.rb +52 -0
- data/lib/aruba/matchers/path.rb +99 -0
- data/lib/aruba/matchers/rspec_matcher_include_regexp.rb +21 -1
- data/lib/aruba/process_monitor.rb +113 -0
- data/lib/aruba/processes/basic_process.rb +25 -0
- data/lib/aruba/processes/debug_process.rb +59 -0
- data/lib/aruba/processes/in_process.rb +86 -0
- data/lib/aruba/processes/spawn_process.rb +159 -0
- data/lib/aruba/reporting.rb +2 -2
- data/lib/aruba/rspec.rb +26 -0
- data/lib/aruba/spawn_process.rb +5 -104
- data/lib/aruba/utils.rb +21 -0
- data/script/bootstrap +22 -0
- data/script/console +17 -0
- data/script/test +3 -0
- data/spec/aruba/api_spec.rb +813 -147
- data/spec/aruba/hooks_spec.rb +0 -1
- data/spec/aruba/matchers/command_spec.rb +43 -0
- data/spec/aruba/matchers/directory_spec.rb +58 -0
- data/spec/aruba/matchers/file_spec.rb +131 -0
- data/spec/aruba/matchers/path_spec.rb +85 -0
- data/spec/aruba/spawn_process_spec.rb +46 -28
- data/spec/spec_helper.rb +18 -13
- data/{config/rubocop/include.yml → spec/support/configs/.keep} +0 -0
- data/spec/support/configs/rspec.rb +15 -0
- data/spec/support/helpers/.keep +0 -0
- data/spec/support/helpers/reporting.rb +44 -0
- data/spec/support/matchers/.keep +0 -0
- data/spec/support/shared_contexts/.keep +0 -0
- data/spec/support/shared_contexts/aruba.rb +45 -0
- data/spec/support/shared_examples/.keep +0 -0
- data/spec/support/shared_examples/directory.rb +7 -0
- data/spec/support/shared_examples/file.rb +7 -0
- data/templates/js/jquery-1.11.3.min.js +5 -0
- data/templates/main.erb +1 -1
- metadata +87 -96
- data/config/rubocop/exclude.yml +0 -160
- data/templates/js/jquery-1.6.1.min.js +0 -18
data/spec/aruba/hooks_spec.rb
CHANGED
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
RSpec.describe 'Command Matchers' do
|
4
|
+
include_context 'uses aruba API'
|
5
|
+
|
6
|
+
def expand_path(*args)
|
7
|
+
@aruba.expand_path(*args)
|
8
|
+
end
|
9
|
+
|
10
|
+
def announcer(*args)
|
11
|
+
@aruba.send(:announcer, *args)
|
12
|
+
end
|
13
|
+
|
14
|
+
describe '#to_have_exit_status' do
|
15
|
+
let(:cmd) { 'true' }
|
16
|
+
|
17
|
+
before(:each) { run(cmd) }
|
18
|
+
|
19
|
+
context 'when has exit 0' do
|
20
|
+
it { expect(last_command).to have_exit_status 0 }
|
21
|
+
end
|
22
|
+
|
23
|
+
context 'when has exit 0' do
|
24
|
+
let(:cmd) { 'false' }
|
25
|
+
it { expect(last_command).not_to have_exit_status 0 }
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
describe '#to_be_successfully_executed_' do
|
30
|
+
let(:cmd) { 'true' }
|
31
|
+
|
32
|
+
before(:each) { run(cmd) }
|
33
|
+
|
34
|
+
context 'when has exit 0' do
|
35
|
+
it { expect(last_command).to be_successfully_executed }
|
36
|
+
end
|
37
|
+
|
38
|
+
context 'when has exit 0' do
|
39
|
+
let(:cmd) { 'false' }
|
40
|
+
it { expect(last_command).not_to be_successfully_executed }
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
RSpec.describe 'Directory Matchers' do
|
4
|
+
include_context 'uses aruba API'
|
5
|
+
|
6
|
+
def expand_path(*args)
|
7
|
+
@aruba.expand_path(*args)
|
8
|
+
end
|
9
|
+
|
10
|
+
describe 'to_be_existing_directory' do
|
11
|
+
let(:name) { 'test.d' }
|
12
|
+
let(:path) { File.join(@aruba.current_directory, name) }
|
13
|
+
|
14
|
+
context 'when directory exists' do
|
15
|
+
before :each do
|
16
|
+
FileUtils.mkdir_p path
|
17
|
+
end
|
18
|
+
|
19
|
+
it { expect(name).to be_existing_directory }
|
20
|
+
end
|
21
|
+
|
22
|
+
context 'when directory does not exist' do
|
23
|
+
it { expect(name).not_to be_existing_directory }
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
describe 'to_have_sub_directory' do
|
28
|
+
let(:name) { 'test.d' }
|
29
|
+
let(:path) { File.join(@aruba.current_directory, name) }
|
30
|
+
let(:content) { %w(subdir.1.d subdir.2.d) }
|
31
|
+
|
32
|
+
context 'when directory exists' do
|
33
|
+
before :each do
|
34
|
+
FileUtils.mkdir_p path
|
35
|
+
end
|
36
|
+
|
37
|
+
before :each do
|
38
|
+
Array(content).each { |p| Dir.mkdir File.join(path, p) }
|
39
|
+
end
|
40
|
+
|
41
|
+
context 'when single directory' do
|
42
|
+
it { expect(name).to have_sub_directory('subdir.1.d') }
|
43
|
+
end
|
44
|
+
|
45
|
+
context 'when multiple directories' do
|
46
|
+
it { expect(name).to have_sub_directory(['subdir.1.d', 'subdir.2.d']) }
|
47
|
+
end
|
48
|
+
|
49
|
+
context 'when non existing directory' do
|
50
|
+
it { expect(name).not_to have_sub_directory('subdir.3.d') }
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
context 'when directory does not exist' do
|
55
|
+
it { expect(name).not_to have_sub_directory('subdir') }
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
@@ -0,0 +1,131 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
RSpec.describe 'File Matchers' do
|
4
|
+
include_context 'uses aruba API'
|
5
|
+
include_context 'needs to expand paths'
|
6
|
+
|
7
|
+
describe 'to_be_existing_file' do
|
8
|
+
let(:name) { @file_name }
|
9
|
+
|
10
|
+
context 'when file exists' do
|
11
|
+
before(:each) { create_test_files(name) }
|
12
|
+
|
13
|
+
it { expect(name).to be_existing_file }
|
14
|
+
end
|
15
|
+
|
16
|
+
context 'when file does not exist' do
|
17
|
+
it { expect(name).not_to be_existing_file }
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
describe 'to_be_existing_files' do
|
22
|
+
let(:name) { %w(file1.txt file2.txt) }
|
23
|
+
|
24
|
+
context 'when files exists' do
|
25
|
+
before(:each) { create_test_files(name) }
|
26
|
+
|
27
|
+
context 'when list of files is given' do
|
28
|
+
it { expect(name).to be_existing_files }
|
29
|
+
end
|
30
|
+
|
31
|
+
context 'when no list of files is given' do
|
32
|
+
let(:name) { 'file1.txt' }
|
33
|
+
it { expect(name).not_to be_existing_files }
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
context 'when file does not exist' do
|
38
|
+
it { expect(name).not_to be_existing_files }
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
describe 'to_have_file_content' do
|
43
|
+
context 'when file exists' do
|
44
|
+
before :each do
|
45
|
+
File.write(@file_path, 'aba')
|
46
|
+
end
|
47
|
+
|
48
|
+
context 'and file content is exactly equal string ' do
|
49
|
+
it { expect(@file_name).to have_file_content('aba') }
|
50
|
+
end
|
51
|
+
|
52
|
+
context 'and file content contains string' do
|
53
|
+
it { expect(@file_name).to have_file_content(/b/) }
|
54
|
+
end
|
55
|
+
|
56
|
+
context 'and file content is not exactly equal string' do
|
57
|
+
it { expect(@file_name).not_to have_file_content('c') }
|
58
|
+
end
|
59
|
+
|
60
|
+
context 'and file content not contains string' do
|
61
|
+
it { expect(@file_name).not_to have_file_content(/c/) }
|
62
|
+
end
|
63
|
+
|
64
|
+
context 'when other matchers is given which matches a string start with "a"' do
|
65
|
+
it { expect(@file_name).to have_file_content(a_string_starting_with('a')) }
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
context 'when file does not exist' do
|
70
|
+
it { expect(@file_name).not_to have_file_content('a') }
|
71
|
+
end
|
72
|
+
|
73
|
+
describe "description" do
|
74
|
+
context "when string" do
|
75
|
+
it { expect(have_file_content("a").description).to eq('have file content: "a"') }
|
76
|
+
end
|
77
|
+
|
78
|
+
context "when regexp" do
|
79
|
+
it { expect(have_file_content(/a/).description).to eq('have file content: /a/') }
|
80
|
+
end
|
81
|
+
|
82
|
+
context "when matcher" do
|
83
|
+
it { expect(have_file_content(a_string_starting_with "a").description).to eq('have file content: a string starting with "a"') }
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
describe 'failure messages' do
|
88
|
+
def fail_with(message)
|
89
|
+
raise_error(RSpec::Expectations::ExpectationNotMetError, message)
|
90
|
+
end
|
91
|
+
|
92
|
+
example 'for a string' do
|
93
|
+
expect do
|
94
|
+
expect(@file_name).to have_file_content("z")
|
95
|
+
end.to fail_with('expected "test.txt" to have file content: "z"')
|
96
|
+
end
|
97
|
+
|
98
|
+
example 'for a string' do
|
99
|
+
expect do
|
100
|
+
expect(@file_name).to have_file_content(/z/)
|
101
|
+
end.to fail_with('expected "test.txt" to have file content: /z/')
|
102
|
+
end
|
103
|
+
|
104
|
+
example 'for a matcher' do
|
105
|
+
expect do
|
106
|
+
expect(@file_name).to have_file_content(a_string_starting_with "z")
|
107
|
+
end.to fail_with('expected "test.txt" to have file content: a string starting with "z"')
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
describe 'to_have_file_size' do
|
113
|
+
context 'when file exists' do
|
114
|
+
before :each do
|
115
|
+
File.write(@file_path, '')
|
116
|
+
end
|
117
|
+
|
118
|
+
context 'and file size is equal' do
|
119
|
+
it { expect(@file_name).to have_file_size(0) }
|
120
|
+
end
|
121
|
+
|
122
|
+
context 'and file size is not equal' do
|
123
|
+
it { expect(@file_name).not_to have_file_size(1) }
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
127
|
+
context 'when file does not exist' do
|
128
|
+
it { expect(@file_name).not_to have_file_size(0) }
|
129
|
+
end
|
130
|
+
end
|
131
|
+
end
|
@@ -0,0 +1,85 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
RSpec.describe 'Path Matchers' do
|
4
|
+
include_context 'uses aruba API'
|
5
|
+
|
6
|
+
def expand_path(*args)
|
7
|
+
@aruba.expand_path(*args)
|
8
|
+
end
|
9
|
+
|
10
|
+
describe 'to_match_path_pattern' do
|
11
|
+
context 'when pattern is string' do
|
12
|
+
context 'when there is file which matches path pattern' do
|
13
|
+
before :each do
|
14
|
+
File.write(@file_path, '')
|
15
|
+
end
|
16
|
+
|
17
|
+
it { expect(all_paths).to match_path_pattern(expand_path(@file_name)) }
|
18
|
+
end
|
19
|
+
|
20
|
+
context 'when there is not file which matches path pattern' do
|
21
|
+
it { expect(all_paths).not_to match_path_pattern('test') }
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
context 'when pattern is regex' do
|
26
|
+
context 'when there is file which matches path pattern' do
|
27
|
+
before :each do
|
28
|
+
File.write(@file_path, '')
|
29
|
+
end
|
30
|
+
|
31
|
+
it { expect(all_paths).to match_path_pattern(/test/) }
|
32
|
+
end
|
33
|
+
|
34
|
+
context 'when there is not file which matches path pattern' do
|
35
|
+
it { expect(all_paths).not_to match_path_pattern(/test/) }
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
describe 'to_be_absolute_path' do
|
41
|
+
let(:name) { @file_name }
|
42
|
+
let(:path) { File.expand_path(File.join(@aruba.current_directory, name)) }
|
43
|
+
|
44
|
+
context 'when is absolute path' do
|
45
|
+
it { expect(path).to be_absolute_path }
|
46
|
+
end
|
47
|
+
|
48
|
+
context 'when is relative path' do
|
49
|
+
it { expect(name).not_to be_absolute_path }
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
describe 'to_be_existing_path' do
|
54
|
+
context 'when file' do
|
55
|
+
context 'exists' do
|
56
|
+
before :each do
|
57
|
+
File.write(@file_path, '')
|
58
|
+
end
|
59
|
+
|
60
|
+
it { expect(@file_name).to be_existing_path }
|
61
|
+
end
|
62
|
+
|
63
|
+
context 'does not exist' do
|
64
|
+
it { expect(@file_name).not_to be_existing_path }
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
context 'when directory' do
|
69
|
+
let(:name) { 'test.d' }
|
70
|
+
let(:path) { File.join(@aruba.current_directory, name) }
|
71
|
+
|
72
|
+
context 'exists' do
|
73
|
+
before :each do
|
74
|
+
FileUtils.mkdir_p path
|
75
|
+
end
|
76
|
+
|
77
|
+
it { expect(name).to be_existing_path }
|
78
|
+
end
|
79
|
+
|
80
|
+
context 'does not exist' do
|
81
|
+
it { expect(name).not_to be_existing_path }
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
@@ -1,45 +1,63 @@
|
|
1
|
-
require 'aruba/spawn_process'
|
1
|
+
require 'aruba/processes/spawn_process'
|
2
2
|
|
3
|
-
|
4
|
-
|
3
|
+
RSpec.describe Aruba::Processes::SpawnProcess do
|
4
|
+
subject(:process) { described_class.new(command, exit_timeout, io_wait, working_directory) }
|
5
5
|
|
6
|
-
|
6
|
+
let(:command) { 'echo "yo"' }
|
7
|
+
let(:exit_timeout) { 1 }
|
8
|
+
let(:io_wait) { 1 }
|
9
|
+
let(:working_directory) { Dir.getwd }
|
7
10
|
|
8
|
-
|
9
|
-
|
11
|
+
describe "#stdout" do
|
12
|
+
before(:each) { process.run! }
|
10
13
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
+
context 'when invoked once' do
|
15
|
+
it { expect(process.stdout).to eq "yo\n" }
|
16
|
+
end
|
17
|
+
|
18
|
+
context 'when invoked twice' do
|
19
|
+
it { 2.times { expect(process.stdout).to eq "yo\n" } }
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
describe "#stderr" do
|
24
|
+
let(:command) { 'features/fixtures/spawn_process/stderr.sh yo' }
|
25
|
+
|
26
|
+
before(:each) { process.run! }
|
14
27
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
end
|
28
|
+
context 'when invoked once' do
|
29
|
+
it { expect(process.stderr).to eq "yo\n" }
|
30
|
+
end
|
19
31
|
|
32
|
+
context 'when invoked twice' do
|
33
|
+
it { 2.times { expect(process.stderr).to eq "yo\n" } }
|
20
34
|
end
|
35
|
+
end
|
21
36
|
|
22
|
-
|
23
|
-
|
37
|
+
describe "#stop" do
|
38
|
+
let(:reader) { double('reader') }
|
24
39
|
|
25
|
-
|
26
|
-
reader = double( 'null_object' )
|
27
|
-
allow( reader ).to receive( :stderr )
|
28
|
-
expect( reader ).to receive( :stdout ).with("yo\n")
|
40
|
+
before(:each) { process.run! }
|
29
41
|
|
30
|
-
|
31
|
-
|
42
|
+
before :each do
|
43
|
+
allow(reader).to receive(:stderr)
|
44
|
+
expect(reader).to receive(:stdout).with("yo\n")
|
32
45
|
end
|
33
46
|
|
34
|
-
|
35
|
-
|
36
|
-
|
47
|
+
context 'when stopped successfully' do
|
48
|
+
it { process.stop(reader) }
|
49
|
+
end
|
50
|
+
end
|
37
51
|
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
end
|
52
|
+
describe "#run!" do
|
53
|
+
context "when process run succeeds" do
|
54
|
+
it { expect { process.run! }.not_to raise_error }
|
42
55
|
end
|
43
56
|
|
57
|
+
context "when process run fails" do
|
58
|
+
let(:command) { 'does_not_exists' }
|
59
|
+
|
60
|
+
it { expect {process.run!}.to raise_error Aruba::LaunchError }
|
61
|
+
end
|
44
62
|
end
|
45
63
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,13 +1,18 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
$LOAD_PATH << ::File.expand_path('../../lib', __FILE__)
|
4
|
+
|
5
|
+
require 'simplecov'
|
6
|
+
SimpleCov.command_name 'rspec'
|
7
|
+
SimpleCov.start
|
8
|
+
|
9
|
+
# Pull in all of the gems including those in the `test` group
|
10
|
+
require 'bundler'
|
11
|
+
Bundler.require
|
12
|
+
|
13
|
+
# Loading support files
|
14
|
+
Dir.glob(::File.expand_path('../support/*.rb', __FILE__)).each { |f| require_relative f }
|
15
|
+
Dir.glob(::File.expand_path('../support/**/*.rb', __FILE__)).each { |f| require_relative f }
|
16
|
+
|
17
|
+
# Avoid writing "describe LocalPac::MyClass do [..]" but "describe MyClass do [..]"
|
18
|
+
include Aruba
|