aruba 1.0.0 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +72 -1
- data/CONTRIBUTING.md +11 -31
- data/README.md +1 -2
- data/exe/aruba +2 -2
- data/lib/aruba.rb +1 -1
- data/lib/aruba/api.rb +11 -12
- data/lib/aruba/api/bundler.rb +18 -3
- data/lib/aruba/api/commands.rb +19 -22
- data/lib/aruba/api/core.rb +65 -48
- data/lib/aruba/api/environment.rb +13 -5
- data/lib/aruba/api/filesystem.rb +69 -39
- data/lib/aruba/api/text.rb +15 -3
- data/lib/aruba/aruba_path.rb +3 -4
- data/lib/aruba/basic_configuration.rb +52 -71
- data/lib/aruba/basic_configuration/option.rb +2 -2
- data/lib/aruba/cli.rb +9 -6
- data/lib/aruba/command.rb +4 -4
- data/lib/aruba/config/jruby.rb +9 -9
- data/lib/aruba/config_wrapper.rb +17 -2
- data/lib/aruba/configuration.rb +37 -32
- data/lib/aruba/console.rb +11 -13
- data/lib/aruba/console/help.rb +9 -6
- data/lib/aruba/contracts/absolute_path.rb +2 -2
- data/lib/aruba/contracts/enum.rb +1 -1
- data/lib/aruba/contracts/is_power_of_two.rb +3 -3
- data/lib/aruba/contracts/relative_path.rb +2 -2
- data/lib/aruba/cucumber.rb +7 -7
- data/lib/aruba/cucumber/command.rb +106 -95
- data/lib/aruba/cucumber/environment.rb +7 -7
- data/lib/aruba/cucumber/file.rb +50 -26
- data/lib/aruba/cucumber/hooks.rb +32 -29
- data/lib/aruba/cucumber/testing_frameworks.rb +32 -30
- data/lib/aruba/event_bus.rb +6 -4
- data/lib/aruba/event_bus/name_resolver.rb +12 -11
- data/lib/aruba/events.rb +2 -1
- data/lib/aruba/file_size.rb +1 -1
- data/lib/aruba/generators/script_file.rb +2 -2
- data/lib/aruba/hooks.rb +2 -4
- data/lib/aruba/in_config_wrapper.rb +8 -5
- data/lib/aruba/initializer.rb +14 -12
- data/lib/aruba/matchers/base/base_matcher.rb +3 -12
- data/lib/aruba/matchers/base/message_indenter.rb +2 -2
- data/lib/aruba/matchers/base/object_formatter.rb +2 -5
- data/lib/aruba/matchers/collection.rb +1 -1
- data/lib/aruba/matchers/collection/all.rb +1 -1
- data/lib/aruba/matchers/collection/include_an_object.rb +6 -6
- data/lib/aruba/matchers/command.rb +1 -1
- data/lib/aruba/matchers/command/be_successfully_executed.rb +6 -4
- data/lib/aruba/matchers/command/have_exit_status.rb +3 -1
- data/lib/aruba/matchers/command/have_finished_in_time.rb +4 -2
- data/lib/aruba/matchers/command/have_output.rb +4 -2
- data/lib/aruba/matchers/command/have_output_on_stderr.rb +3 -1
- data/lib/aruba/matchers/command/have_output_on_stdout.rb +3 -1
- data/lib/aruba/matchers/directory.rb +1 -1
- data/lib/aruba/matchers/directory/be_an_existing_directory.rb +2 -2
- data/lib/aruba/matchers/directory/have_sub_directory.rb +9 -4
- data/lib/aruba/matchers/environment.rb +1 -1
- data/lib/aruba/matchers/file.rb +1 -1
- data/lib/aruba/matchers/file/be_a_command_found_in_path.rb +1 -1
- data/lib/aruba/matchers/file/be_an_existing_executable.rb +2 -2
- data/lib/aruba/matchers/file/be_an_existing_file.rb +2 -2
- data/lib/aruba/matchers/file/have_file_content.rb +1 -1
- data/lib/aruba/matchers/file/have_file_size.rb +5 -3
- data/lib/aruba/matchers/file/have_same_file_content.rb +2 -2
- data/lib/aruba/matchers/path.rb +1 -1
- data/lib/aruba/matchers/path/a_path_matching_pattern.rb +1 -1
- data/lib/aruba/matchers/path/be_an_absolute_path.rb +1 -1
- data/lib/aruba/matchers/path/be_an_existing_path.rb +1 -1
- data/lib/aruba/matchers/path/have_permissions.rb +9 -6
- data/lib/aruba/matchers/string.rb +1 -1
- data/lib/aruba/matchers/string/include_output_string.rb +1 -1
- data/lib/aruba/matchers/string/match_output_string.rb +1 -1
- data/lib/aruba/matchers/string/output_string_eq.rb +1 -1
- data/lib/aruba/platform.rb +2 -2
- data/lib/aruba/platforms/announcer.rb +29 -17
- data/lib/aruba/platforms/aruba_file_creator.rb +3 -1
- data/lib/aruba/platforms/aruba_fixed_size_file_creator.rb +7 -2
- data/lib/aruba/platforms/aruba_logger.rb +11 -10
- data/lib/aruba/platforms/command_monitor.rb +7 -9
- data/lib/aruba/platforms/determine_disk_usage.rb +2 -4
- data/lib/aruba/platforms/filesystem_status.rb +20 -14
- data/lib/aruba/platforms/simple_table.rb +3 -3
- data/lib/aruba/platforms/unix_command_string.rb +2 -2
- data/lib/aruba/platforms/unix_environment_variables.rb +2 -4
- data/lib/aruba/platforms/unix_platform.rb +23 -23
- data/lib/aruba/platforms/unix_which.rb +2 -2
- data/lib/aruba/platforms/windows_command_string.rb +2 -2
- data/lib/aruba/platforms/windows_environment_variables.rb +3 -2
- data/lib/aruba/platforms/windows_platform.rb +7 -7
- data/lib/aruba/platforms/windows_which.rb +8 -4
- data/lib/aruba/processes/basic_process.rb +4 -4
- data/lib/aruba/processes/debug_process.rb +5 -3
- data/lib/aruba/processes/in_process.rb +10 -8
- data/lib/aruba/processes/spawn_process.rb +28 -25
- data/lib/aruba/rspec.rb +30 -20
- data/lib/aruba/runtime.rb +16 -9
- data/lib/aruba/setup.rb +25 -12
- data/lib/aruba/version.rb +1 -1
- metadata +77 -88
- data/.cucumberproignore +0 -3
- data/.document +0 -5
- data/.github/ISSUE_TEMPLATE.md +0 -48
- data/.github/PULL_REQUEST_TEMPLATE.md +0 -41
- data/.gitignore +0 -38
- data/.rspec +0 -3
- data/.rubocop.yml +0 -31
- data/.rubocop_todo.yml +0 -262
- data/.simplecov +0 -36
- data/.travis.yml +0 -62
- data/.yardopts +0 -11
- data/Dockerfile +0 -67
- data/Gemfile +0 -12
- data/Rakefile +0 -80
- data/TODO.md +0 -13
- data/appveyor.yml +0 -29
- data/aruba.gemspec +0 -54
- data/bin/console +0 -7
- data/bin/test +0 -9
- data/config/.gitignore +0 -1
- data/cucumber.yml +0 -6
- data/docker-compose.yml +0 -26
- data/fixtures/cli-app/.gitignore +0 -9
- data/fixtures/cli-app/.rspec +0 -2
- data/fixtures/cli-app/README.md +0 -39
- data/fixtures/cli-app/Rakefile +0 -1
- data/fixtures/cli-app/bin/aruba-test-cli +0 -6
- data/fixtures/cli-app/cli-app.gemspec +0 -25
- data/fixtures/cli-app/features/support/aruba.rb +0 -1
- data/fixtures/cli-app/features/support/env.rb +0 -1
- data/fixtures/cli-app/lib/cli/app.rb +0 -9
- data/fixtures/cli-app/lib/cli/app/suppress_simple_cov_output.rb +0 -15
- data/fixtures/cli-app/lib/cli/app/version.rb +0 -5
- data/fixtures/cli-app/script/console +0 -14
- data/fixtures/cli-app/spec/spec_helper.rb +0 -7
- data/fixtures/cli-app/spec/support/aruba.rb +0 -1
- data/fixtures/copy/file.txt +0 -1
- data/fixtures/empty-app/.gitignore +0 -9
- data/fixtures/empty-app/.rspec +0 -2
- data/fixtures/empty-app/README.md +0 -24
- data/fixtures/empty-app/Rakefile +0 -1
- data/fixtures/empty-app/cli-app.gemspec +0 -25
- data/fixtures/empty-app/lib/cli/app.rb +0 -7
- data/fixtures/empty-app/lib/cli/app/version.rb +0 -5
- data/fixtures/getting-started-app/.gitignore +0 -4
- data/fixtures/getting-started-app/Gemfile +0 -4
- data/fixtures/getting-started-app/README.md +0 -3
- data/fixtures/getting-started-app/features/support/env.rb +0 -1
- data/lib/aruba/extensions/string/strip.rb +0 -25
- data/lib/aruba/tasks/docker_helpers.rb +0 -154
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9b464d3e65f58bdcafd421ed026c8541de9cc9723258f76175b8b8ad3dab4621
|
4
|
+
data.tar.gz: 2215471629083ac51e4b5e31694ac60408d374f8a0aa504addb79ae70f364e84
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2222d8d29dccca2bcbe973512ae24bbdc14a82d2b7dbb3e1fd84b72c35793af4919043cc077bacb2e48db3fbe9c8f60d2c8ed032a36a93d88a0c2ec3ef2e190f
|
7
|
+
data.tar.gz: 007bda65f38b79499f0fda2243f44539c76e541d871cf66b841adafbe1f9a7800946d96c32637264313a24f381f4f97d176a93a02d0e171f1d116d3467b58c19
|
data/CHANGELOG.md
CHANGED
@@ -6,6 +6,56 @@ This project adheres to [Semantic Versioning][1].
|
|
6
6
|
|
7
7
|
This document is formatted according to the principles of [Keep A CHANGELOG][2].
|
8
8
|
|
9
|
+
## [Unreleased]
|
10
|
+
|
11
|
+
## [1.1.0] / 2021-04-14
|
12
|
+
|
13
|
+
* Add step and API to add whole lines to a file ([#780] by [mvz])
|
14
|
+
* Deprecate file creation when using `append_to_file` ([#781] by [mvz])
|
15
|
+
* Update dependencies to cucumber to allow working with incoming major versions
|
16
|
+
([#801] by [mattwynne])
|
17
|
+
|
18
|
+
## [1.0.4] / 2021-01-04
|
19
|
+
|
20
|
+
* Update rubocop and fix new offenses (various pull requests)
|
21
|
+
* Turn off Cucumber publish warning in CI ([#737] by [olleolleolle])
|
22
|
+
* Move CI from Travis CI to GitHub Actions ([#738] by [mvz])
|
23
|
+
* Remove superfluous :each from before hooks in RSpec-related cucumber
|
24
|
+
scenarios ([#748] by [mvz])
|
25
|
+
* Make disabling Bundler more robust ([#750] by [mvz])
|
26
|
+
* Officially support Ruby 3.0 ([#763] by [mvz])
|
27
|
+
* Clean up hook methods in configuration ([#751] by [mvz])
|
28
|
+
* Speed up RSpec suite ([#767] by [mvz])
|
29
|
+
* Speed up Cucumber suite ([#766] and [#771] by [mvz])
|
30
|
+
* Remove obsolete `String#strip_heredoc` monkey-patch ([#769] by [mvz])
|
31
|
+
* Simplify configuration option specification ([#772] by [mvz])
|
32
|
+
|
33
|
+
## [1.0.3]
|
34
|
+
|
35
|
+
* Loosen Cucumber dependency to allow Cucumber 5.0 ([#727] by [mvz])
|
36
|
+
* Update rubocop and fix new offenses ([#719] and [#724] by [mvz])
|
37
|
+
* Rework gemspec to avoid dependency on git ([#721] by [utkarsh2102], [#725] by [mvz])
|
38
|
+
|
39
|
+
## [1.0.2]
|
40
|
+
|
41
|
+
* Loosen childprocess dependency
|
42
|
+
([00cb0789](https://github.com/cucumber/aruba/commit/00cb07897c9f99e59bea630ae164cf5aa78fa76c)
|
43
|
+
by [mvz]).
|
44
|
+
* Various small code cleanups ([#717] by [mvz])
|
45
|
+
|
46
|
+
## [1.0.1]
|
47
|
+
|
48
|
+
### Bug fixes
|
49
|
+
|
50
|
+
* Allow use of Aruba with Cucumber 4 ([#715] by [mvz])
|
51
|
+
|
52
|
+
### Code quality and documentation improvements
|
53
|
+
|
54
|
+
* Fix RuboCop offenses ([#693] and [#708] by [luke-hill], [#710], [#711] and
|
55
|
+
[#712] by [mvz])
|
56
|
+
* Use recent Rake version in fixtures ([#709] by [mvz])
|
57
|
+
* Repair YARD annotations ([#707] by [olleolleolle])
|
58
|
+
|
9
59
|
## [1.0.0]
|
10
60
|
|
11
61
|
### Breaking changes compared to Aruba 0.14.x
|
@@ -916,18 +966,34 @@ Note: These are changes w.r.t. Aruba version 0.14.1.
|
|
916
966
|
[scottj97]: https://github.com/scottj97
|
917
967
|
[stamhankar999]: https://github.com/stamhankar999
|
918
968
|
[taylor]: https://github.com/taylor
|
969
|
+
[utkarsh2102]: https://github.com/utkarsh2102
|
919
970
|
[tdreyno]: https://github.com/tdreyno
|
920
971
|
[xtrasimplicity]: https://github.com/xtrasimplicity
|
921
972
|
[y-higuchi]: https://github.com/y-higuchi
|
922
973
|
|
923
974
|
<!-- issues & pull requests -->
|
924
975
|
|
976
|
+
[#801]: https://github.com/cucumber/aruba/pull/801
|
977
|
+
[#727]: https://github.com/cucumber/aruba/pull/727
|
978
|
+
[#725]: https://github.com/cucumber/aruba/pull/725
|
979
|
+
[#724]: https://github.com/cucumber/aruba/pull/724
|
980
|
+
[#721]: https://github.com/cucumber/aruba/pull/721
|
981
|
+
[#719]: https://github.com/cucumber/aruba/pull/719
|
982
|
+
[#717]: https://github.com/cucumber/aruba/pull/717
|
983
|
+
[#715]: https://github.com/cucumber/aruba/pull/715
|
984
|
+
[#712]: https://github.com/cucumber/aruba/pull/712
|
985
|
+
[#711]: https://github.com/cucumber/aruba/pull/711
|
986
|
+
[#710]: https://github.com/cucumber/aruba/pull/710
|
987
|
+
[#709]: https://github.com/cucumber/aruba/pull/709
|
988
|
+
[#708]: https://github.com/cucumber/aruba/pull/708
|
989
|
+
[#707]: https://github.com/cucumber/aruba/pull/707
|
925
990
|
[#704]: https://github.com/cucumber/aruba/pull/704
|
926
991
|
[#703]: https://github.com/cucumber/aruba/pull/703
|
927
992
|
[#702]: https://github.com/cucumber/aruba/pull/702
|
928
993
|
[#701]: https://github.com/cucumber/aruba/pull/701
|
929
994
|
[#698]: https://github.com/cucumber/aruba/pull/698
|
930
995
|
[#696]: https://github.com/cucumber/aruba/pull/696
|
996
|
+
[#693]: https://github.com/cucumber/aruba/pull/693
|
931
997
|
[#692]: https://github.com/cucumber/aruba/pull/692
|
932
998
|
[#690]: https://github.com/cucumber/aruba/pull/690
|
933
999
|
[#689]: https://github.com/cucumber/aruba/pull/689
|
@@ -1186,7 +1252,12 @@ Note: These are changes w.r.t. Aruba version 0.14.1.
|
|
1186
1252
|
|
1187
1253
|
<!-- Releases -->
|
1188
1254
|
|
1189
|
-
[Unreleased]: https://github.com/cucumber/aruba/compare/v1.
|
1255
|
+
[Unreleased]: https://github.com/cucumber/aruba/compare/v1.1.0...master
|
1256
|
+
[1.1.0]: https://github.com/cucumber/aruba/compare/v1.0.4...v1.1.0
|
1257
|
+
[1.0.4]: https://github.com/cucumber/aruba/compare/v1.0.3...v1.0.4
|
1258
|
+
[1.0.3]: https://github.com/cucumber/aruba/compare/v1.0.2...v1.0.3
|
1259
|
+
[1.0.2]: https://github.com/cucumber/aruba/compare/v1.0.1...v1.0.2
|
1260
|
+
[1.0.1]: https://github.com/cucumber/aruba/compare/v1.0.0...v1.0.1
|
1190
1261
|
[1.0.0]: https://github.com/cucumber/aruba/compare/v1.0.0.pre.alpha.5...v1.0.0
|
1191
1262
|
[1.0.0.pre.alpha.5]: https://github.com/cucumber/aruba/compare/v1.0.0.pre.alpha.4...v1.0.0.pre.alpha.5
|
1192
1263
|
[1.0.0.pre.alpha.4]: https://github.com/cucumber/aruba/compare/v1.0.0.pre.alpha.3...v1.0.0.pre.alpha.4
|
data/CONTRIBUTING.md
CHANGED
@@ -118,22 +118,15 @@ bundle install
|
|
118
118
|
|
119
119
|
Run the following command to run the test suite.
|
120
120
|
|
121
|
-
```bash
|
122
|
-
# Run the test suite
|
123
|
-
bin/test
|
124
|
-
```
|
125
|
-
|
126
|
-
Or use these Rake tasks:
|
127
|
-
|
128
121
|
```bash
|
129
122
|
# Run the whole test suite
|
130
|
-
rake
|
123
|
+
bundle exec rake
|
131
124
|
# Run RSpec tests
|
132
|
-
rake spec
|
125
|
+
bundle exec rake spec
|
133
126
|
# Run Cucumber features
|
134
|
-
rake cucumber
|
127
|
+
bundle exec rake cucumber
|
135
128
|
# Run Cucumber features which are "WORK IN PROGRESS" and are allowed to fail
|
136
|
-
rake cucumber:wip
|
129
|
+
bundle exec rake cucumber:wip
|
137
130
|
```
|
138
131
|
|
139
132
|
If you have problems because our assumptions about your local setup are wrong,
|
@@ -142,19 +135,14 @@ installed on your local system.
|
|
142
135
|
|
143
136
|
```bash
|
144
137
|
# Build the docker container
|
145
|
-
|
138
|
+
docker build -t test-aruba .
|
146
139
|
|
147
|
-
#
|
148
|
-
|
140
|
+
# Open a bash shell inside the container with attached volume so changes to the
|
141
|
+
# code will be picked up automatically.
|
142
|
+
docker run -v $PWD:/aruba --rm -it test-aruba:latest bash
|
149
143
|
|
150
|
-
#
|
151
|
-
bundle exec rake
|
152
|
-
|
153
|
-
# Run the whole test suite in "docker"-container
|
154
|
-
RUN_IN_DOCKER=1 bin/test
|
155
|
-
|
156
|
-
# Run only selected scenario
|
157
|
-
RUN_IN_DOCKER=1 bin/test cucumber features/steps/command/shell.feature:14
|
144
|
+
# Run the test suite
|
145
|
+
bundle exec rake
|
158
146
|
```
|
159
147
|
|
160
148
|
### Installing your own gems used for development
|
@@ -210,8 +198,6 @@ bundle exec rake install:local
|
|
210
198
|
entries for all fixes.
|
211
199
|
* No need to add a [`CHANGELOG.md`] header at this point - this should be done
|
212
200
|
later, when a new change is made.
|
213
|
-
* If a major version is released, update the `still` branch, which points to
|
214
|
-
the "old" major version.
|
215
201
|
|
216
202
|
Now release it:
|
217
203
|
|
@@ -220,17 +206,11 @@ Now release it:
|
|
220
206
|
bundle update
|
221
207
|
|
222
208
|
# Run test suite
|
223
|
-
|
209
|
+
bundle exec rake
|
224
210
|
|
225
211
|
# Release gem
|
226
212
|
git commit -m "Version bump"
|
227
213
|
bundle exec rake release
|
228
|
-
|
229
|
-
# If it's a major relase:
|
230
|
-
# Merge changes back to have correct documentation
|
231
|
-
git checkout still
|
232
|
-
git merge master
|
233
|
-
git push
|
234
214
|
```
|
235
215
|
|
236
216
|
Now send a PR to [cucumber/website] adding an article
|
data/README.md
CHANGED
@@ -32,8 +32,7 @@ gem install aruba
|
|
32
32
|
### As a user getting started with Aruba
|
33
33
|
|
34
34
|
Our most current documentation to get started with Aruba as a user can be
|
35
|
-
found
|
36
|
-
It is generated from our feature files describing the use of Aruba.
|
35
|
+
found in [./features/](https://github.com/cucumber/aruba/tree/master/features/).
|
37
36
|
|
38
37
|
### As a user getting started with a ruby testing framework
|
39
38
|
|
data/exe/aruba
CHANGED
data/lib/aruba.rb
CHANGED
@@ -1 +1 @@
|
|
1
|
-
require
|
1
|
+
require "aruba/api"
|
data/lib/aruba/api.rb
CHANGED
@@ -1,19 +1,18 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require "rspec/expectations"
|
2
|
+
require "shellwords"
|
3
3
|
|
4
|
-
require
|
5
|
-
require 'aruba/extensions/string/strip'
|
4
|
+
require "aruba/version"
|
6
5
|
|
7
|
-
require
|
8
|
-
require
|
9
|
-
require
|
6
|
+
require "aruba/platform"
|
7
|
+
require "aruba/api/core"
|
8
|
+
require "aruba/api/commands"
|
10
9
|
|
11
|
-
require
|
12
|
-
require
|
13
|
-
require
|
14
|
-
require
|
10
|
+
require "aruba/api/environment"
|
11
|
+
require "aruba/api/filesystem"
|
12
|
+
require "aruba/api/text"
|
13
|
+
require "aruba/api/bundler"
|
15
14
|
|
16
|
-
Aruba.platform.require_matching_files(
|
15
|
+
Aruba.platform.require_matching_files("../matchers/**/*.rb", __FILE__)
|
17
16
|
|
18
17
|
# Aruba
|
19
18
|
module Aruba
|
data/lib/aruba/api/bundler.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require "aruba/api/environment"
|
2
2
|
|
3
3
|
module Aruba
|
4
4
|
module Api
|
@@ -7,8 +7,23 @@ module Aruba
|
|
7
7
|
|
8
8
|
# Unset variables used by bundler
|
9
9
|
def unset_bundler_env_vars
|
10
|
-
|
11
|
-
|
10
|
+
empty_env = with_environment { with_unbundled_env { ENV.to_h } }
|
11
|
+
aruba_env = aruba.environment.to_h
|
12
|
+
(aruba_env.keys - empty_env.keys).each do |key|
|
13
|
+
delete_environment_variable key
|
14
|
+
end
|
15
|
+
empty_env.each do |k, v|
|
16
|
+
set_environment_variable k, v
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def with_unbundled_env(&block)
|
23
|
+
if ::Bundler.respond_to?(:with_unbundled_env)
|
24
|
+
::Bundler.with_unbundled_env(&block)
|
25
|
+
else
|
26
|
+
::Bundler.with_clean_env(&block)
|
12
27
|
end
|
13
28
|
end
|
14
29
|
end
|
data/lib/aruba/api/commands.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
|
-
require
|
1
|
+
require "pathname"
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
3
|
+
require "aruba/platform"
|
4
|
+
require "aruba/command"
|
5
5
|
|
6
6
|
# require 'win32/file' if File::ALT_SEPARATOR
|
7
7
|
|
@@ -22,7 +22,7 @@ module Aruba
|
|
22
22
|
def which(program, path = nil)
|
23
23
|
with_environment do
|
24
24
|
# ENV is set within this block
|
25
|
-
path = ENV[
|
25
|
+
path = ENV["PATH"] if path.nil?
|
26
26
|
|
27
27
|
Aruba.platform.which(program, path)
|
28
28
|
end
|
@@ -35,7 +35,7 @@ module Aruba
|
|
35
35
|
def pipe_in_file(file_name)
|
36
36
|
file_name = expand_path(file_name)
|
37
37
|
|
38
|
-
File.open(file_name,
|
38
|
+
File.open(file_name, "r").each_line do |line|
|
39
39
|
last_command_started.write(line)
|
40
40
|
end
|
41
41
|
end
|
@@ -64,7 +64,7 @@ module Aruba
|
|
64
64
|
# If block is given use it to filter the commands which should be
|
65
65
|
# stoppend.
|
66
66
|
def stop_all_commands(&block)
|
67
|
-
cmds = if
|
67
|
+
cmds = if block
|
68
68
|
all_commands.select(&block)
|
69
69
|
else
|
70
70
|
all_commands
|
@@ -81,7 +81,7 @@ module Aruba
|
|
81
81
|
# If block is given use it to filter the commands which should be
|
82
82
|
# terminated.
|
83
83
|
def terminate_all_commands(&block)
|
84
|
-
cmds = if
|
84
|
+
cmds = if block
|
85
85
|
all_commands.select(&block)
|
86
86
|
else
|
87
87
|
all_commands
|
@@ -152,7 +152,7 @@ module Aruba
|
|
152
152
|
|
153
153
|
unless command.interactive?
|
154
154
|
raise NotImplementedError,
|
155
|
-
|
155
|
+
"Running interactively is not supported with this process launcher."
|
156
156
|
end
|
157
157
|
|
158
158
|
start_command(command)
|
@@ -168,16 +168,16 @@ module Aruba
|
|
168
168
|
# @param [String] cmd
|
169
169
|
# The command to be executed
|
170
170
|
#
|
171
|
-
# @param [Hash]
|
171
|
+
# @param [Hash] opts
|
172
172
|
# Options for aruba
|
173
173
|
#
|
174
|
-
# @option
|
174
|
+
# @option opts [Boolean] :fail_on_error
|
175
175
|
# Should aruba fail on error?
|
176
176
|
#
|
177
|
-
# @option
|
177
|
+
# @option opts [Numeric] :exit_timeout
|
178
178
|
# Timeout for execution
|
179
179
|
#
|
180
|
-
# @option
|
180
|
+
# @option opts [Numeric] :io_wait_timeout
|
181
181
|
# Timeout for IO - STDERR, STDOUT
|
182
182
|
#
|
183
183
|
def run_command_and_stop(cmd, opts = {})
|
@@ -220,12 +220,11 @@ module Aruba
|
|
220
220
|
|
221
221
|
private
|
222
222
|
|
223
|
-
# rubocop:disable Metrics/MethodLength
|
224
223
|
def prepare_command(cmd, opts)
|
225
|
-
exit_timeout = opts[:exit_timeout]
|
226
|
-
io_wait_timeout = opts[:io_wait_timeout]
|
227
|
-
stop_signal = opts[:stop_signal]
|
228
|
-
startup_wait_time = opts[:startup_wait_time]
|
224
|
+
exit_timeout = opts[:exit_timeout] || aruba.config.exit_timeout
|
225
|
+
io_wait_timeout = opts[:io_wait_timeout] || aruba.config.io_wait_timeout
|
226
|
+
stop_signal = opts[:stop_signal] || aruba.config.stop_signal
|
227
|
+
startup_wait_time = opts[:startup_wait_time] || aruba.config.startup_wait_time
|
229
228
|
|
230
229
|
cmd = replace_variables(cmd)
|
231
230
|
|
@@ -233,7 +232,7 @@ module Aruba
|
|
233
232
|
@commands << cmd
|
234
233
|
|
235
234
|
environment = aruba.environment
|
236
|
-
working_directory = expand_path(
|
235
|
+
working_directory = expand_path(".")
|
237
236
|
event_bus = aruba.event_bus
|
238
237
|
|
239
238
|
cmd = Aruba.platform.detect_ruby(cmd)
|
@@ -256,10 +255,8 @@ module Aruba
|
|
256
255
|
)
|
257
256
|
end
|
258
257
|
|
259
|
-
# rubocop:enable Metrics/MethodLength
|
260
|
-
|
261
258
|
def start_command(command)
|
262
|
-
aruba.config.
|
259
|
+
aruba.config.run_before_hook(:command, self, command)
|
263
260
|
|
264
261
|
in_current_directory do
|
265
262
|
command.start
|
@@ -268,7 +265,7 @@ module Aruba
|
|
268
265
|
stop_signal = command.stop_signal
|
269
266
|
aruba.announcer.announce(:stop_signal, command.pid, stop_signal) if stop_signal
|
270
267
|
|
271
|
-
aruba.config.
|
268
|
+
aruba.config.run_after_hook(:command, self, command)
|
272
269
|
end
|
273
270
|
end
|
274
271
|
end
|
data/lib/aruba/api/core.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require
|
4
|
-
require
|
1
|
+
require "rspec/expectations"
|
2
|
+
require "aruba/runtime"
|
3
|
+
require "aruba/errors"
|
4
|
+
require "aruba/setup"
|
5
5
|
|
6
6
|
# Aruba
|
7
7
|
module Aruba
|
@@ -15,8 +15,10 @@ module Aruba
|
|
15
15
|
|
16
16
|
# Aruba Runtime
|
17
17
|
def aruba
|
18
|
-
# TODO: Check this variable being accessed inconsistently. Should only
|
19
|
-
#
|
18
|
+
# TODO: Check this variable being accessed inconsistently. Should only
|
19
|
+
# be using the memo!
|
20
|
+
# Renaming this to `aruba` causes 100's of rspec failures. Needs a
|
21
|
+
# deeper dive, approach with caution!
|
20
22
|
@_aruba_runtime ||= Runtime.new
|
21
23
|
end
|
22
24
|
|
@@ -36,8 +38,8 @@ module Aruba
|
|
36
38
|
# @yield
|
37
39
|
# The block which should be run in current directory
|
38
40
|
def in_current_directory(&block)
|
39
|
-
create_directory
|
40
|
-
cd(
|
41
|
+
create_directory "." unless directory?(".")
|
42
|
+
cd(".", &block)
|
41
43
|
end
|
42
44
|
|
43
45
|
# Switch to directory
|
@@ -54,26 +56,30 @@ module Aruba
|
|
54
56
|
# @example Run code in directory
|
55
57
|
# result = cd('some-dir') { Dir.getwd }
|
56
58
|
#
|
57
|
-
# rubocop:disable Metrics/MethodLength
|
58
59
|
def cd(dir, &block)
|
59
|
-
if
|
60
|
+
if block
|
60
61
|
begin
|
61
|
-
|
62
|
+
unless Aruba.platform.directory?(expand_path(dir))
|
63
|
+
raise ArgumentError,
|
64
|
+
"#{expand_path(dir)} is not a directory or does not exist."
|
65
|
+
end
|
62
66
|
|
63
|
-
old_directory = expand_path(
|
67
|
+
old_directory = expand_path(".")
|
64
68
|
aruba.current_directory << dir
|
65
|
-
new_directory = expand_path(
|
69
|
+
new_directory = expand_path(".")
|
66
70
|
|
67
|
-
aruba.event_bus.notify Events::ChangedWorkingDirectory.new(old: old_directory,
|
71
|
+
aruba.event_bus.notify Events::ChangedWorkingDirectory.new(old: old_directory,
|
72
|
+
new: new_directory)
|
68
73
|
|
69
74
|
old_dir = Aruba.platform.getwd
|
70
75
|
|
71
|
-
real_new_directory = File.expand_path(aruba.current_directory,
|
76
|
+
real_new_directory = File.expand_path(aruba.current_directory,
|
77
|
+
aruba.root_directory)
|
72
78
|
Aruba.platform.chdir real_new_directory
|
73
79
|
|
74
80
|
result = with_environment(
|
75
|
-
|
76
|
-
|
81
|
+
"OLDPWD" => old_dir,
|
82
|
+
"PWD" => real_new_directory,
|
77
83
|
&block
|
78
84
|
)
|
79
85
|
ensure
|
@@ -84,17 +90,19 @@ module Aruba
|
|
84
90
|
return result
|
85
91
|
end
|
86
92
|
|
87
|
-
|
93
|
+
unless Aruba.platform.directory?(expand_path(dir))
|
94
|
+
raise ArgumentError, "#{expand_path(dir)} is not a directory or does not exist."
|
95
|
+
end
|
88
96
|
|
89
|
-
old_directory = expand_path(
|
97
|
+
old_directory = expand_path(".")
|
90
98
|
aruba.current_directory << dir
|
91
|
-
new_directory = expand_path(
|
99
|
+
new_directory = expand_path(".")
|
92
100
|
|
93
|
-
aruba.event_bus.notify Events::ChangedWorkingDirectory.new(old: old_directory,
|
101
|
+
aruba.event_bus.notify Events::ChangedWorkingDirectory.new(old: old_directory,
|
102
|
+
new: new_directory)
|
94
103
|
|
95
104
|
self
|
96
105
|
end
|
97
|
-
# rubocop:enable Metrics/MethodLength
|
98
106
|
|
99
107
|
# Expand file name
|
100
108
|
#
|
@@ -132,48 +140,60 @@ module Aruba
|
|
132
140
|
# # => /foo/bar
|
133
141
|
# expand_path('/foo/bar')
|
134
142
|
#
|
135
|
-
# rubocop:disable Metrics/MethodLength
|
136
|
-
# rubocop:disable Metrics/CyclomaticComplexity
|
137
|
-
# rubocop:disable Metrics/PerceivedComplexity
|
138
143
|
def expand_path(file_name, dir_string = nil)
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
fail ArgumentError, message unless file_name.is_a?(String) && !file_name.empty?
|
144
|
+
unless file_name.is_a?(String) && !file_name.empty?
|
145
|
+
message = "Filename #{file_name} needs to be a string." \
|
146
|
+
" It cannot be nil or empty either. "\
|
147
|
+
"Please use `expand_path('.')` if you want the current directory to be expanded."
|
144
148
|
|
145
|
-
|
146
|
-
|
149
|
+
raise ArgumentError, message
|
150
|
+
end
|
147
151
|
|
148
|
-
|
152
|
+
unless Aruba.platform.directory? File.join(aruba.config.root_directory,
|
153
|
+
aruba.config.working_directory)
|
154
|
+
raise "Aruba's working directory does not exist." \
|
155
|
+
" Maybe you forgot to run `setup_aruba` before using its API."
|
156
|
+
end
|
149
157
|
|
150
158
|
prefix = file_name[0]
|
151
|
-
rest = file_name[2..-1]
|
152
159
|
|
153
160
|
if aruba.config.fixtures_path_prefix == prefix
|
161
|
+
rest = file_name[2..-1]
|
154
162
|
path = File.join(*[aruba.fixtures_directory, rest].compact)
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
163
|
+
unless Aruba.platform.exist? path
|
164
|
+
aruba_fixture_candidates = aruba.config.fixtures_directories
|
165
|
+
.map { |p| format('"%s"', p) }.join(", ")
|
166
|
+
|
167
|
+
raise ArgumentError,
|
168
|
+
"Fixture \"#{rest}\" does not exist" \
|
169
|
+
" in fixtures directory \"#{aruba.fixtures_directory}\"." \
|
170
|
+
" This was the one we found first on your system from all possible" \
|
171
|
+
" candidates: #{aruba_fixture_candidates}."
|
172
|
+
end
|
160
173
|
|
161
174
|
path
|
162
|
-
elsif prefix ==
|
175
|
+
elsif prefix == "~"
|
163
176
|
path = with_environment do
|
164
177
|
File.expand_path(file_name)
|
165
178
|
end
|
166
179
|
|
167
|
-
|
168
|
-
|
180
|
+
raise ArgumentError, 'Expanding "~/" to "/" is not allowed' if path == "/"
|
181
|
+
|
182
|
+
unless Aruba.platform.absolute_path? path
|
183
|
+
raise ArgumentError,
|
184
|
+
"Expanding \"~\" to a relative path \"#{path}\" is not allowed"
|
185
|
+
end
|
169
186
|
|
170
187
|
path.to_s
|
171
|
-
elsif absolute?
|
188
|
+
elsif absolute?(file_name)
|
172
189
|
unless aruba.config.allow_absolute_paths
|
173
190
|
caller_location = caller_locations(1, 1).first
|
174
191
|
caller_file_line = "#{caller_location.path}:#{caller_location.lineno}"
|
175
|
-
aruba.logger.warn
|
176
|
-
'
|
192
|
+
aruba.logger.warn \
|
193
|
+
"Aruba's `expand_path` method was called with an absolute path" \
|
194
|
+
" at #{caller_file_line}, which is not recommended." \
|
195
|
+
" Change the call to pass a relative path or set "\
|
196
|
+
"`config.allow_absolute_paths = true` to silence this warning"
|
177
197
|
end
|
178
198
|
file_name
|
179
199
|
else
|
@@ -184,9 +204,6 @@ module Aruba
|
|
184
204
|
end
|
185
205
|
end
|
186
206
|
end
|
187
|
-
# rubocop:enable Metrics/MethodLength
|
188
|
-
# rubocop:enable Metrics/CyclomaticComplexity
|
189
|
-
# rubocop:enable Metrics/PerceivedComplexity
|
190
207
|
|
191
208
|
# Run block with environment
|
192
209
|
#
|