aruba 2.0.1 → 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bc48eb26abb5d1e638537ed9eaf53f5758c541ca48e9f979da107bb8a7bdcf6c
4
- data.tar.gz: 75d8cc6d3c52b62538f688949ee212abd5c3dad8aca20fd3007860757eaf830e
3
+ metadata.gz: 5ecd6da4e86f63a073bffd882d13902780ca69946de8867aa81cba5a8c6ad118
4
+ data.tar.gz: f588ff00344ee379a877dbbed442d411769516d8f2f53a164b6a219660e0c38a
5
5
  SHA512:
6
- metadata.gz: bece1031dfa68f1fa9a80854758558596cc48d073996fb5d3f6440226d18e68c7408d478ffa6a9f7881aa52e3d172c1acaa1bf3bae5948b07af363e6a456c75d
7
- data.tar.gz: 7f68b65140bbe200235a6e23aac68a5f4da28ca9cf47171cd28d758a2b70aaa5645b7a45f739a1fa803d5c5770864196224d4797685c0de40328a71db7697d90
6
+ metadata.gz: d35cd2c9c3d89085f0a04ad2bf2e7b8b83b1cd10cebb87ed39111d0d3feb39b18ad905c5a02e9773881687574abc4b57c5c1d281d7432b746b8f685bd6862f7a
7
+ data.tar.gz: cd8bbb1369f18078e3d27a56fb43bef2fc3d25c9b17d81921d30ad759d4c8b16ac5c3a49e7e26e5d19a041df7fcb67da6e978b3c2f79198e22f05b585caa90db
data/CHANGELOG.md CHANGED
@@ -6,6 +6,21 @@ 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
+ ## [2.2.0] / 2023-09-02
10
+
11
+ * Drop support for Ruby 2.5 ([#836] by [mvz])
12
+ * Add support for JRuby 9.4 ([#882] by [mvz])
13
+ * Support CRuby 3.2 ([#883] by [mvz])
14
+ * Improve `be_a_command_found_in_path matcher` and its tests ([#895] by [mvz])
15
+ * Replace ChildProcess with Process.spawn ([#891] and [#892] by [mvz])
16
+ * Support Cucumber version 9.0 ([#904] by [mvz])
17
+ * Drop support for Cucumber 4 through 7 ([#906] by [mvz])
18
+ * Drop support for Ruby 2.6 ([#907] by [mvz])
19
+
20
+ ## [2.1.0] / 2022-05-20
21
+
22
+ * Support Cucumber 8 ([#870] by [mvz] with [dependabot])
23
+
9
24
  ## [2.0.1] / 2022-04-22
10
25
 
11
26
  * Various cleanups of internal APIs ([#838] by [mvz])
@@ -110,7 +125,8 @@ Other changes
110
125
  * Fix cucumber deprecations ([#688] by [deivid-rodriguez])
111
126
  * Update gemspec: Metadata and RDoc options ([#686] by [mvz])
112
127
  * Update dependencies and fix RuboCop offenses ([#683] by [mvz])
113
- * Init: Conditionally prefix the `gem aruba` line with a carriage return ([#570] by [xtrasimplicity])
128
+ * Init: Conditionally prefix the `gem aruba` line with a carriage return
129
+ ([#570] by [xtrasimplicity])
114
130
  * Update supported set of rubies([#679] by [mvz])
115
131
 
116
132
  ## [1.0.0.pre.alpha.5]
@@ -160,7 +176,8 @@ Other changes
160
176
  * Improve documentation for users and developers ([#454], [#456], [#457], [#460],
161
177
  [#459], [#461], [#475], [#494] by [olleolleolle], [maxmeyer], [mvz])
162
178
  * Make forgetting `setup_aruba` a hard failure ([#510] by [mvz])
163
- * Update dependencies ([#511], [#541], [#553] by [mvz], [#528] by [maxmeyer], [#615] by [luke-hill] and [mvz])
179
+ * Update dependencies ([#511], [#541], [#553] by [mvz], [#528] by [maxmeyer],
180
+ [#615] by [luke-hill] and [mvz])
164
181
  * Improve output of `#have_output` matcher ([#546] by [mvz])
165
182
  * Removed `have_same_file_content_like` and `a_file_with_same_content_like`
166
183
  matchers, in favour of `have_same_file_content_as` and
@@ -187,22 +204,26 @@ Other changes
187
204
 
188
205
  ### Developer experience and internal changes
189
206
 
190
- * Fix test suite failures ([#452], [#497] by [maxmeyer] and [mvz]; [#487], [#509] by [mvz])
207
+ * Fix test suite failures ([#452], [#497] by [maxmeyer] and [mvz]; [#487],
208
+ [#509] by [mvz])
191
209
  * Remove development gems for unsupported Rubinius platform ([#464] by [maxmeyer])
192
210
  * Update `license_finder` dependency ([#466] by [maxmeyer])
193
211
  * Restrict branches to run Travis ([#471] by [junaruga])
194
- * Maintain Travis builds ([#476] by [maxmeyer]; [#493] [#532], [#536] by [mvz]; [#542], [#596], [#607] by [olleolleolle])
212
+ * Maintain Travis builds ([#476] by [maxmeyer]; [#493], [#532], [#536] by [mvz];
213
+ [#542], [#596], [#607] by [olleolleolle])
195
214
  * Rename History.md to CHANGELOG.md and fix links and formatting, etc. to bring
196
215
  it in line with [cucumber/cucumber#521] ([#481], [#482] by [jaysonesmith])
197
- * Fix YARD documentation issues ([#491] [olleolleolle])
216
+ * Fix YARD documentation issues ([#491] by [olleolleolle])
198
217
  * Change maintainership ([#495], [#523] by [maxmeyer])
199
218
  * Remove commented-out code ([#498] by [olleolleolle])
200
- * Documentation fixups ([#504] by [roschaefer]; [#530] by [xtrasimplicity]; [#606] by [olleolleolle])
219
+ * Documentation fixups ([#504] by [roschaefer]; [#530] by [xtrasimplicity];
220
+ [#606] by [olleolleolle])
201
221
  * Add 'stale' bot ([#507] by [maxmeyer]
202
222
  * Update RuboCop and fix some offenses ([#514], [#537] by [mvz])
203
- * Mark scenarios requiring external commands ([#515] [mvz])
204
- * Remove cucumber features related to Aruba development ([#522], [#543], [#544] [mvz])
205
- * Avoid long waits in feature suite ([#544] [mvz])
223
+ * Mark scenarios requiring external commands ([#515] by [mvz])
224
+ * Remove cucumber features related to Aruba development
225
+ ([#522], [#543], [#544] by [mvz])
226
+ * Avoid long waits in feature suite ([#544] by [mvz])
206
227
  * Clean up internally used cuke tags and their implementation ([#548] by [mvz])
207
228
  * Test with Ruby 2.5 and 2.6 ([#554] by [nicolasleger], [#578] by [mvz])
208
229
  * Fix tests on Debian. ([#575] by [Heinrich])
@@ -324,7 +345,8 @@ Note: These are changes w.r.t. Aruba version 0.14.1.
324
345
  ## [0.14.11]
325
346
 
326
347
  * Loosen childprocess dependency ([#658])
327
- * Do not set binmode on output temp files, so automatic line ending conversion works ([#650])
348
+ * Do not set binmode on output temp files, so automatic line ending conversion
349
+ works ([#650])
328
350
  * Improve deprecation suggestions ([#647])
329
351
  * Backport fixes to code organization, layout and spelling ([#645])
330
352
 
@@ -374,7 +396,7 @@ Note: These are changes w.r.t. Aruba version 0.14.1.
374
396
 
375
397
  ## [0.14.5]
376
398
 
377
- * Loosen dependency on child_process ([#551])
399
+ * Loosen dependency on `child_process` ([#551])
378
400
 
379
401
  ## [0.14.4]
380
402
 
@@ -468,7 +490,6 @@ Note: These are changes w.r.t. Aruba version 0.14.1.
468
490
  commands from last to first.
469
491
  * Added `be_an_executable` matcher
470
492
 
471
-
472
493
  ## [0.11.0.pre]
473
494
 
474
495
  * Set stop signal which should be used to stop a process after a timeout or
@@ -485,17 +506,14 @@ Note: These are changes w.r.t. Aruba version 0.14.1.
485
506
  private. Users should use `#run('cmd')` and not use the classes directly.
486
507
  * `rvm`-methods are deprecated. They are too ruby specific.
487
508
 
488
-
489
509
  ## [0.10.2]
490
510
 
491
511
  * Fixed problem in regex after merge of step definitions
492
512
 
493
-
494
513
  ## [0.10.1]
495
514
 
496
515
  * Merged remove steps for file and directory from 4 into 2 step definitions
497
516
 
498
-
499
517
  ## [0.10.0]
500
518
 
501
519
  * Fix `"#exit_timeout" is deprecated` error ([#314])
@@ -520,7 +538,6 @@ Note: These are changes w.r.t. Aruba version 0.14.1.
520
538
  * Added work around because of method name conflict between Capybara and RSpec
521
539
  ([1939c404](https://github.com/cucumber/aruba/commit/1939c4049d5195ffdd967485f50119bdd86e98a0))
522
540
 
523
-
524
541
  ## [0.9.0]
525
542
 
526
543
  * Fix feature test
@@ -548,7 +565,6 @@ Note: These are changes w.r.t. Aruba version 0.14.1.
548
565
  * Now we make the process started via `SpawnProcess` the leader of the group to
549
566
  kill all sub-processes more reliably
550
567
 
551
-
552
568
  ## [0.9.0.pre]
553
569
 
554
570
  * Improve documentation for filesystem api and move it to feature tests
@@ -568,7 +584,6 @@ Note: These are changes w.r.t. Aruba version 0.14.1.
568
584
  * Split up `#which` for Windows and Unix/Linux ([#304])
569
585
  * Add `aruba console` command to play around with aruba ([#305])
570
586
 
571
-
572
587
  ## [0.8.1]
573
588
 
574
589
  * Fix problem if working directory of aruba does not exist ([#286])
@@ -578,7 +593,8 @@ Note: These are changes w.r.t. Aruba version 0.14.1.
578
593
  * Make the home directory configurable and use Around/around-hook to apply it
579
594
  * Add announcer to output the full environment before a command is run
580
595
  * Use `prepend_environment_variable` to modify PATH for rspec integration
581
- * Add `VERSION` constant to aruba and use it for code which should be activated on >= 1.0.0
596
+ * Add `VERSION` constant to aruba and use it for code which should be activated
597
+ on >= 1.0.0
582
598
 
583
599
  ## [0.8.0]
584
600
 
@@ -589,7 +605,6 @@ Note: These are changes w.r.t. Aruba version 0.14.1.
589
605
  * Fixed checks for file content
590
606
  * Fixed selectors for DebugProcess and InProcess to support sub-classes as well
591
607
 
592
-
593
608
  ## [0.8.0.pre3]
594
609
 
595
610
  * Depend on cucumber 1.3.x for compatibility on ruby 1.8.7
@@ -606,7 +621,8 @@ Note: These are changes w.r.t. Aruba version 0.14.1.
606
621
  * Added checks for version of `rspec-expectations` to support older `rspec`
607
622
  versions like `2.11`
608
623
  * Now each `path/to/dir` pushed to `aruba.current_directory` is `pop`ed as whole
609
- * Make testing of `aruba.current_directory` easier by supporting `end_with?` and `start_with?`
624
+ * Make testing of `aruba.current_directory` easier by supporting `end_with?`
625
+ and `start_with?`
610
626
 
611
627
  ## [0.8.0.pre2]
612
628
 
@@ -626,17 +642,21 @@ Note: These are changes w.r.t. Aruba version 0.14.1.
626
642
  * Cleanup API by moving deprecated methods to separate class
627
643
  * Cleanup Core API - reduced to `cd`, `expand_path`, `setup_aruba` and use
628
644
  `expand_path` wherever possible ([#253])
629
- * Better isolation for environment variable manipulation - really helpful from 1.0.0 on
645
+ * Better isolation for environment variable manipulation - really helpful from
646
+ 1.0.0 on
630
647
  * Move configuration files like `jruby.rb` to `aruba/config/`-directory
631
- * Change default exit timeout to 15 seconds to work around long running processes on travis
648
+ * Change default exit timeout to 15 seconds to work around long running
649
+ processes on travis
632
650
  * Use of instance variables like `@aruba_timeout_seconds` or
633
651
  `@aruba_io_wait_seconds` are deprecated.
634
652
  Use `Aruba.configure do |config| config.exit_timeout = 10` etc. for this.
635
653
 
636
654
  ## [0.7.4]
655
+
637
656
  * Really Fixed post install message
638
657
 
639
658
  ## [0.7.3]
659
+
640
660
  * Fixed post install message
641
661
 
642
662
  ## [0.7.2]
@@ -651,7 +671,8 @@ Note: These are changes w.r.t. Aruba version 0.14.1.
651
671
 
652
672
  * Introducing `root_directory` ([#232])
653
673
  * Introducing fixtures directory ([#224])
654
- * Make sure a file/directory does not exist + Cleanup named file/directory steps ([#234])
674
+ * Make sure a file/directory does not exist + Cleanup named file/directory
675
+ steps ([#234])
655
676
  * Make matcher `have_permisions` public and add documentation ([#239])
656
677
  * Added matcher for file content ([#238])
657
678
  * Add rspec integrator ([#244])
@@ -660,7 +681,8 @@ Note: These are changes w.r.t. Aruba version 0.14.1.
660
681
  * Cleanup process management ([#257])
661
682
  * Make path content available through matchers and api metchods ([#250])
662
683
  * Refactor announcer to support user defined announce channels (fixes [#267])
663
- * `InProcess` requires that the working directory is determined on runtime not no loadtime
684
+ * `InProcess` requires that the working directory is determined on runtime not
685
+ no loadtime
664
686
 
665
687
  ## [0.6.2]
666
688
 
@@ -693,7 +715,8 @@ Note: These are changes w.r.t. Aruba version 0.14.1.
693
715
 
694
716
  ## [0.5.2]
695
717
 
696
- * Plugin API for greater speed. Test Ruby CLI programs in a single Ruby process ([#148], [aslakhellesoy])
718
+ * Plugin API for greater speed. Test Ruby CLI programs in a single Ruby process
719
+ ([#148], [aslakhellesoy])
697
720
  * Fix memory leak when several commands are executed in a single run ([#144], [y-higuchi])
698
721
 
699
722
  ## [0.5.1]
@@ -705,7 +728,8 @@ Note: These are changes w.r.t. Aruba version 0.14.1.
705
728
 
706
729
  * Add `#with_file_content` to the DSL ([#110], [argent-smith])
707
730
  * Make JRuby performance tweaks optional ([#102], [taylor], [#125], [alindeman])
708
- * Add `assert_partial_output_interactive` so you can peek at the output from a running process ([#104], [taylor])
731
+ * Add `assert_partial_output_interactive` so you can peek at the output from a
732
+ running process ([#104], [taylor])
709
733
  * Add `assert_not_matching_output` ([#111], [argent-smith])
710
734
  * Add `remove_dir` ([#121], [LTe])
711
735
 
@@ -728,7 +752,8 @@ Note: These are changes w.r.t. Aruba version 0.14.1.
728
752
 
729
753
  * Add `before_run` hook ([mattwynne])
730
754
  * Add JRuby performance tweaks ([#93], [myronmarston], [mattwynne])
731
- * Invalid/Corrupt spec file for 0.4.7 - undefined method call for nil:Nilclass ([#47], [aslakhellesoy])
755
+ * Invalid/Corrupt spec file for 0.4.7 - undefined method call for nil:Nilclass
756
+ ([#47], [aslakhellesoy])
732
757
 
733
758
  ## [0.4.7]
734
759
 
@@ -814,7 +839,8 @@ Note: These are changes w.r.t. Aruba version 0.14.1.
814
839
 
815
840
  * Remove latency introduced in the 0.2.8 release ([#42], [msassak])
816
841
  * New stepdef `Then /^the stdout should contain:$/ do |partial_output|` ([aslakhellesoy])
817
- * Quotes (") and newline (\n) in step arguments no longer need to be backslash-escaped. ([aslakhellesoy])
842
+ * Quotes (") and newline (\n) in step arguments no longer need to be
843
+ backslash-escaped. ([aslakhellesoy])
818
844
 
819
845
  ## [0.2.8]
820
846
 
@@ -867,11 +893,13 @@ Note: These are changes w.r.t. Aruba version 0.14.1.
867
893
 
868
894
  * Added a @bin tag that sets up './bin' first on the path ([aslakhellesoy])
869
895
  * Richer API making aruba easier to use from Ruby code. (Mark Nijhof, [aslakhellesoy])
870
- * No more support for RVM. Use rvm 1.9.2,1.8.7 exec cucumber .... instead. (Mark Nijhof, [aslakhellesoy])
896
+ * No more support for RVM. Use rvm 1.9.2,1.8.7 exec cucumber .... instead.
897
+ (Mark Nijhof, [aslakhellesoy])
871
898
 
872
899
  ## [0.2.1]
873
900
 
874
- * Always compare with RSpec should =~ instead of should match. This gives a diff when there is no match. ([aslakhellesoy])
901
+ * Always compare with RSpec should =~ instead of should match. This gives a
902
+ diff when there is no match. ([aslakhellesoy])
875
903
 
876
904
  ## [0.2.0]
877
905
 
@@ -914,7 +942,7 @@ Note: These are changes w.r.t. Aruba version 0.14.1.
914
942
 
915
943
  ## [0.1.7]
916
944
 
917
- * New @announce-stderr tag ([robertwahler])
945
+ * New `@announce-stderr` tag ([robertwahler])
918
946
  * New "I should see matching" steps using Regexp ([robertwahler])
919
947
 
920
948
  ## [0.1.6]
@@ -925,12 +953,14 @@ Note: These are changes w.r.t. Aruba version 0.14.1.
925
953
 
926
954
  ## [0.1.5]
927
955
 
928
- * Added ability to map rvm versions to a specific version with config/aruba-rvm.yml. ([aslakhellesoy])
956
+ * Added ability to map rvm versions to a specific version with
957
+ config/aruba-rvm.yml. ([aslakhellesoy])
929
958
  * Check for presence of files. ([aslakhellesoy])
930
959
  * Allow specification of rvm gemsets. ([aslakhellesoy])
931
960
  * Detect ruby commands and use current ruby when rvm is not explicitly used. ([aslakhellesoy])
932
961
  * Added support for rvm, making it possible to choose Ruby interpreter. ([aslakhellesoy])
933
- * Added @announce-cmd, @announce-stdout and @announce tags, useful for seeing what's executed and outputted. ([aslakhellesoy])
962
+ * Added `@announce-cmd`, `@announce-stdout` and `@announce` tags, useful for seeing
963
+ what's executed and outputted. ([aslakhellesoy])
934
964
 
935
965
  ## [0.1.4]
936
966
 
@@ -942,7 +972,8 @@ Note: These are changes w.r.t. Aruba version 0.14.1.
942
972
 
943
973
  ## [0.1.2]
944
974
 
945
- * Separated API from Cucumber step definitions, makes this usable without Cucumber. ([aslakhellesoy])
975
+ * Separated API from Cucumber step definitions, makes this usable without
976
+ Cucumber. ([aslakhellesoy])
946
977
 
947
978
  ## [0.1.1]
948
979
 
@@ -997,13 +1028,27 @@ Note: These are changes w.r.t. Aruba version 0.14.1.
997
1028
  [scottj97]: https://github.com/scottj97
998
1029
  [stamhankar999]: https://github.com/stamhankar999
999
1030
  [taylor]: https://github.com/taylor
1000
- [utkarsh2102]: https://github.com/utkarsh2102
1001
1031
  [tdreyno]: https://github.com/tdreyno
1032
+ [utkarsh2102]: https://github.com/utkarsh2102
1002
1033
  [xtrasimplicity]: https://github.com/xtrasimplicity
1003
1034
  [y-higuchi]: https://github.com/y-higuchi
1004
1035
 
1036
+ <!-- bots -->
1037
+
1038
+ [renovate]: https://github.com/apps/renovate
1039
+ [dependabot]: https://github.com/apps/dependabot
1040
+
1005
1041
  <!-- issues & pull requests -->
1006
1042
 
1043
+ [#904]: https://github.com/cucumber/aruba/pull/904
1044
+ [#895]: https://github.com/cucumber/aruba/pull/895
1045
+ [#892]: https://github.com/cucumber/aruba/pull/892
1046
+ [#891]: https://github.com/cucumber/aruba/pull/891
1047
+ [#883]: https://github.com/cucumber/aruba/pull/883
1048
+ [#882]: https://github.com/cucumber/aruba/pull/882
1049
+ [#836]: https://github.com/cucumber/aruba/pull/836
1050
+
1051
+ [#870]: https://github.com/cucumber/aruba/pull/870
1007
1052
  [#867]: https://github.com/cucumber/aruba/pull/867
1008
1053
  [#858]: https://github.com/cucumber/aruba/pull/858
1009
1054
  [#856]: https://github.com/cucumber/aruba/pull/856
@@ -1312,7 +1357,9 @@ Note: These are changes w.r.t. Aruba version 0.14.1.
1312
1357
 
1313
1358
  <!-- Releases -->
1314
1359
 
1315
- [Unreleased]: https://github.com/cucumber/aruba/compare/v2.0.1...main
1360
+ [Unreleased]: https://github.com/cucumber/aruba/compare/v2.2.0...main
1361
+ [2.2.0]: https://github.com/cucumber/aruba/compare/v2.1.0...v2.2.0
1362
+ [2.1.0]: https://github.com/cucumber/aruba/compare/v2.0.1...v2.1.0
1316
1363
  [2.0.1]: https://github.com/cucumber/aruba/compare/v2.0.0...v2.0.1
1317
1364
  [2.0.0]: https://github.com/cucumber/aruba/compare/v1.1.2...v2.0.0
1318
1365
  [1.1.2]: https://github.com/cucumber/aruba/compare/v1.1.1...v1.1.2
data/README.md CHANGED
@@ -40,7 +40,8 @@ information about how to write feature files in Gherkin.
40
40
 
41
41
  * **RSpec**:
42
42
 
43
- If you want to use Aruba with RSpec and you need some information about how to use RSpec, please visit [their website](http://rspec.info/documentation/).
43
+ If you want to use Aruba with RSpec and you need some information about how
44
+ to use RSpec, please visit [their website](http://rspec.info/documentation/).
44
45
 
45
46
  * **minitest**:
46
47
 
@@ -76,12 +77,12 @@ bump.
76
77
 
77
78
  ## Supported Ruby versions
78
79
 
79
- Aruba is supported on Ruby 2.5 and up, and tested against CRuby 2.5, 2.6, 2.7, 3.0 and
80
- 3.1, and JRuby 9.2 and 9.2.
80
+ Aruba is supported on Ruby 2.7 and up, and tested against CRuby 2.7, 3.0,
81
+ 3.1 and 3.2, and JRuby 9.4.
81
82
 
82
83
  ## Supported Cucumber versions
83
84
 
84
- Aruba is supported on and tested with Cucumber versions 4 through 7.
85
+ Aruba is supported on and tested with Cucumber versions 8 and 9.
85
86
 
86
87
  ## Supported operating systems
87
88
 
@@ -144,7 +144,7 @@ module Aruba
144
144
  def expand_path(file_name, dir_string = nil)
145
145
  unless file_name.is_a?(String) && !file_name.empty?
146
146
  message = "Filename #{file_name} needs to be a string." \
147
- " It cannot be nil or empty either."\
147
+ " It cannot be nil or empty either." \
148
148
  " Please use `expand_path('.')` if you want" \
149
149
  " the current directory to be expanded."
150
150
 
@@ -160,7 +160,7 @@ module Aruba
160
160
  prefix = file_name[0]
161
161
 
162
162
  if prefix == aruba.config.fixtures_path_prefix
163
- rest = file_name[2..-1]
163
+ rest = file_name[2..]
164
164
  path = File.join(*[aruba.fixtures_directory, rest].compact)
165
165
  unless Aruba.platform.exist? path
166
166
  aruba_fixture_candidates = aruba.config.fixtures_directories
@@ -195,8 +195,8 @@ module Aruba
195
195
  "Aruba's `expand_path` method was called with an absolute path" \
196
196
  " at #{caller_file_line}, which is not recommended." \
197
197
  " The path passed was '#{file_name}'." \
198
- " Change the call to pass a relative path or set "\
199
- "`config.allow_absolute_paths = true` to silence this warning"
198
+ " Change the call to pass a relative path or set" \
199
+ " `config.allow_absolute_paths = true` to silence this warning"
200
200
  raise UserError, message
201
201
  end
202
202
  file_name
@@ -302,11 +302,7 @@ module Aruba
302
302
  end
303
303
 
304
304
  mode = args.shift
305
- mode = if mode.is_a? String
306
- mode.to_i(8)
307
- else
308
- mode
309
- end
305
+ mode = mode.to_i(8) if mode.is_a? String
310
306
 
311
307
  args.each { |path| raise "Expected #{path} to be present" unless exist?(path) }
312
308
  paths = args.map { |path| expand_path(path) }
@@ -81,7 +81,7 @@ When(/^I stop the command(?: started last)? if (output|stdout|stderr) contains:$
81
81
  sleep 0.1
82
82
  end
83
83
  end
84
- rescue ChildProcess::TimeoutError, Timeout::Error
84
+ rescue Timeout::Error
85
85
  last_command_started.terminate
86
86
  end
87
87
 
@@ -10,7 +10,7 @@ module Aruba
10
10
  # Helpers for Resolvers
11
11
  module ResolveHelpers
12
12
  def camel_case(underscored_name)
13
- underscored_name.to_s.split("_").map { |word| word.upcase[0] + word[1..-1] }.join
13
+ underscored_name.to_s.split("_").map { |word| word.upcase[0] + word[1..] }.join
14
14
  end
15
15
 
16
16
  # Thanks ActiveSupport
@@ -15,17 +15,17 @@
15
15
  # end
16
16
  RSpec::Matchers.define :be_a_command_found_in_path do
17
17
  match do |actual|
18
- @actual = Shellwords.split(actual.commandline).first if actual.respond_to? :commandline
19
-
20
- !which(@actual).nil?
18
+ !which(actual).nil?
21
19
  end
22
20
 
23
21
  failure_message do |actual|
24
- format(%(expected that command "%s" can be found in PATH "#{ENV['PATH']}".), actual)
22
+ format(%(expected that command "%s" can be found in PATH "%s".),
23
+ actual, aruba.environment["PATH"])
25
24
  end
26
25
 
27
26
  failure_message_when_negated do |actual|
28
- format(%(expected that command "%s" cannot be found in PATH "#{ENV['PATH']}".), actual)
27
+ format(%(expected that command "%s" cannot be found in PATH "%s".),
28
+ actual, aruba.environment["PATH"])
29
29
  end
30
30
  end
31
31
 
@@ -32,7 +32,7 @@ module Aruba
32
32
  name_size = longest_key.length
33
33
 
34
34
  rows = hash.map do |k, v|
35
- format("# %-#{name_size}s => %s", k, v)
35
+ format("# %-*s => %s", name_size, k, v)
36
36
  end
37
37
 
38
38
  if opts[:sort] == true
@@ -100,7 +100,7 @@ module Aruba
100
100
  end
101
101
 
102
102
  def require_matching_files(pattern, base)
103
- ::Dir.glob(::File.expand_path(pattern, base)).each { |f| require_relative f }
103
+ ::Dir.glob(::File.expand_path(pattern, base)).sort.each { |f| require_relative f }
104
104
  end
105
105
 
106
106
  # Create directory and subdirectories
@@ -241,6 +241,10 @@ module Aruba
241
241
  def builtin_shell_commands
242
242
  []
243
243
  end
244
+
245
+ def term_signal_supported?
246
+ true
247
+ end
244
248
  end
245
249
  end
246
250
  end
@@ -4,8 +4,6 @@ module Aruba
4
4
  module Platforms
5
5
  # This is a command which should be run
6
6
  #
7
- # This adds `cmd.exec` in front of commmand
8
- #
9
7
  # @private
10
8
  class WindowsCommandString
11
9
  def initialize(command, *arguments)
@@ -15,22 +13,7 @@ module Aruba
15
13
 
16
14
  # Convert to array
17
15
  def to_a
18
- [cmd_path, "/c", [escaped_command, *escaped_arguments].join(" ")]
19
- end
20
-
21
- private
22
-
23
- def escaped_arguments
24
- @arguments.map { |arg| arg.gsub(/"/, '"""') }
25
- .map { |arg| / /.match?(arg) ? "\"#{arg}\"" : arg }
26
- end
27
-
28
- def escaped_command
29
- @command.gsub(/ /, '""" """')
30
- end
31
-
32
- def cmd_path
33
- Aruba.platform.which("cmd.exe")
16
+ [@command, *@arguments]
34
17
  end
35
18
  end
36
19
  end
@@ -39,6 +39,10 @@ module Aruba
39
39
  def builtin_shell_commands
40
40
  %w(cd dir echo exit set type)
41
41
  end
42
+
43
+ def term_signal_supported?
44
+ false
45
+ end
42
46
  end
43
47
  end
44
48
  end
@@ -125,7 +125,7 @@ module Aruba
125
125
  end
126
126
 
127
127
  def arguments
128
- return Shellwords.split(commandline)[1..-1] if Shellwords.split(commandline).size > 1
128
+ return Shellwords.split(commandline)[1..] if Shellwords.split(commandline).size > 1
129
129
 
130
130
  []
131
131
  end
@@ -1,4 +1,3 @@
1
- require "childprocess"
2
1
  require "tempfile"
3
2
  require "shellwords"
4
3
 
@@ -10,6 +9,85 @@ require "aruba/platform"
10
9
  module Aruba
11
10
  # Platforms
12
11
  module Processes
12
+ # Wrapper around Process.spawn that broadly follows the ChildProcess interface
13
+ # @private
14
+ class ProcessRunner
15
+ def initialize(command_array)
16
+ @command_array = command_array
17
+ @exit_status = nil
18
+ end
19
+
20
+ attr_accessor :stdout, :stderr, :cwd, :environment
21
+ attr_reader :command_array, :pid
22
+
23
+ def start
24
+ @stdin_r, @stdin_w = IO.pipe
25
+ @pid = Process.spawn(environment, *command_array,
26
+ unsetenv_others: true,
27
+ in: @stdin_r,
28
+ out: stdout.fileno,
29
+ err: stderr.fileno,
30
+ close_others: true,
31
+ chdir: cwd)
32
+ end
33
+
34
+ def stdin
35
+ @stdin_w
36
+ end
37
+
38
+ def stop
39
+ return if @exit_status
40
+
41
+ if Aruba.platform.term_signal_supported?
42
+ send_signal "TERM"
43
+ return if poll_for_exit(3)
44
+ end
45
+
46
+ send_signal "KILL"
47
+ wait
48
+ end
49
+
50
+ def wait
51
+ _, status = Process.waitpid2 @pid
52
+ @exit_status = status
53
+ end
54
+
55
+ def exited?
56
+ return true if @exit_status
57
+
58
+ pid, status = Process.waitpid2 @pid, Process::WNOHANG | Process::WUNTRACED
59
+
60
+ if pid
61
+ @exit_status = status
62
+ return true
63
+ end
64
+
65
+ false
66
+ end
67
+
68
+ def poll_for_exit(exit_timeout)
69
+ start = Time.now
70
+ wait_until = start + exit_timeout
71
+ loop do
72
+ return true if exited?
73
+ break if Time.now >= wait_until
74
+
75
+ sleep 0.1
76
+ end
77
+ false
78
+ end
79
+
80
+ def exit_code
81
+ @exit_status&.exitstatus
82
+ end
83
+
84
+ private
85
+
86
+ def send_signal(signal)
87
+ Process.kill signal, @pid
88
+ end
89
+ end
90
+
13
91
  # Spawn a process for command
14
92
  #
15
93
  # `SpawnProcess` is not meant for direct use - `SpawnProcess.new` - by
@@ -74,7 +152,8 @@ module Aruba
74
152
 
75
153
  @started = true
76
154
 
77
- @process = ChildProcess.build(*command_string.to_a)
155
+ @process = ProcessRunner.new(command_string.to_a)
156
+
78
157
  @stdout_file = Tempfile.new("aruba-stdout-")
79
158
  @stderr_file = Tempfile.new("aruba-stderr-")
80
159
 
@@ -85,23 +164,19 @@ module Aruba
85
164
  @stderr_file.set_encoding("ASCII-8BIT")
86
165
 
87
166
  @exit_status = nil
88
- @duplex = true
89
167
 
90
168
  before_run
91
169
 
92
- @process.io.stdout = @stdout_file
93
- @process.io.stderr = @stderr_file
94
- @process.duplex = @duplex
95
- @process.cwd = @working_directory
170
+ @process.stdout = @stdout_file
171
+ @process.stderr = @stderr_file
172
+ @process.cwd = @working_directory
96
173
 
97
- @process.environment.update(environment)
174
+ @process.environment = environment
98
175
 
99
176
  begin
100
- Aruba.platform.with_environment(environment) do
101
- @process.start
102
- sleep startup_wait_time
103
- end
104
- rescue ChildProcess::LaunchError => e
177
+ @process.start
178
+ sleep startup_wait_time
179
+ rescue SystemCallError => e
105
180
  raise LaunchError, "It tried to start #{commandline}. " + e.message
106
181
  end
107
182
 
@@ -131,7 +206,7 @@ module Aruba
131
206
  return @stdout_cache if stopped?
132
207
 
133
208
  wait_for_io opts.fetch(:wait_for_io, io_wait_timeout) do
134
- @process.io.stdout.flush
209
+ @process.stdout.flush
135
210
  open(@stdout_file.path).read
136
211
  end
137
212
  end
@@ -150,7 +225,7 @@ module Aruba
150
225
  return @stderr_cache if stopped?
151
226
 
152
227
  wait_for_io opts.fetch(:wait_for_io, io_wait_timeout) do
153
- @process.io.stderr.flush
228
+ @process.stderr.flush
154
229
  open(@stderr_file.path).read
155
230
  end
156
231
  end
@@ -158,8 +233,8 @@ module Aruba
158
233
  def write(input)
159
234
  return if stopped?
160
235
 
161
- @process.io.stdin.write(input)
162
- @process.io.stdin.flush
236
+ @process.stdin.write(input)
237
+ @process.stdin.flush
163
238
 
164
239
  self
165
240
  end
@@ -168,18 +243,14 @@ module Aruba
168
243
  def close_io(name)
169
244
  return if stopped?
170
245
 
171
- @process.io.public_send(name.to_sym).close
246
+ @process.public_send(name.to_sym).close
172
247
  end
173
248
 
174
249
  # Stop command
175
250
  def stop(*)
176
251
  return @exit_status if stopped?
177
252
 
178
- begin
179
- @process.poll_for_exit(@exit_timeout)
180
- rescue ChildProcess::TimeoutError
181
- @timed_out = true
182
- end
253
+ @process.poll_for_exit(@exit_timeout) or @timed_out = true
183
254
 
184
255
  terminate
185
256
  end
data/lib/aruba/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Aruba
2
- VERSION = "2.0.1".freeze
2
+ VERSION = "2.2.0".freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aruba
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.1
4
+ version: 2.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aslak Hellesøy, Matt Wynne and other Aruba Contributors
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-04-23 00:00:00.000000000 Z
11
+ date: 2023-09-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -30,26 +30,6 @@ dependencies:
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
32
  version: '3.0'
33
- - !ruby/object:Gem::Dependency
34
- name: childprocess
35
- requirement: !ruby/object:Gem::Requirement
36
- requirements:
37
- - - ">="
38
- - !ruby/object:Gem::Version
39
- version: '2.0'
40
- - - "<"
41
- - !ruby/object:Gem::Version
42
- version: '5.0'
43
- type: :runtime
44
- prerelease: false
45
- version_requirements: !ruby/object:Gem::Requirement
46
- requirements:
47
- - - ">="
48
- - !ruby/object:Gem::Version
49
- version: '2.0'
50
- - - "<"
51
- - !ruby/object:Gem::Version
52
- version: '5.0'
53
33
  - !ruby/object:Gem::Dependency
54
34
  name: contracts
55
35
  requirement: !ruby/object:Gem::Requirement
@@ -76,20 +56,20 @@ dependencies:
76
56
  requirements:
77
57
  - - ">="
78
58
  - !ruby/object:Gem::Version
79
- version: '4.0'
59
+ version: '8.0'
80
60
  - - "<"
81
61
  - !ruby/object:Gem::Version
82
- version: '8.0'
62
+ version: '10.0'
83
63
  type: :runtime
84
64
  prerelease: false
85
65
  version_requirements: !ruby/object:Gem::Requirement
86
66
  requirements:
87
67
  - - ">="
88
68
  - !ruby/object:Gem::Version
89
- version: '4.0'
69
+ version: '8.0'
90
70
  - - "<"
91
71
  - !ruby/object:Gem::Version
92
- version: '8.0'
72
+ version: '10.0'
93
73
  - !ruby/object:Gem::Dependency
94
74
  name: rspec-expectations
95
75
  requirement: !ruby/object:Gem::Requirement
@@ -194,20 +174,6 @@ dependencies:
194
174
  - - "<"
195
175
  - !ruby/object:Gem::Version
196
176
  version: 0.15.0
197
- - !ruby/object:Gem::Dependency
198
- name: pry-doc
199
- requirement: !ruby/object:Gem::Requirement
200
- requirements:
201
- - - "~>"
202
- - !ruby/object:Gem::Version
203
- version: '1.0'
204
- type: :development
205
- prerelease: false
206
- version_requirements: !ruby/object:Gem::Requirement
207
- requirements:
208
- - - "~>"
209
- - !ruby/object:Gem::Version
210
- version: '1.0'
211
177
  - !ruby/object:Gem::Dependency
212
178
  name: rake
213
179
  requirement: !ruby/object:Gem::Requirement
@@ -263,6 +229,9 @@ dependencies:
263
229
  - - "~>"
264
230
  - !ruby/object:Gem::Version
265
231
  version: '1.28'
232
+ - - "!="
233
+ - !ruby/object:Gem::Version
234
+ version: 1.29.0
266
235
  type: :development
267
236
  prerelease: false
268
237
  version_requirements: !ruby/object:Gem::Requirement
@@ -270,6 +239,9 @@ dependencies:
270
239
  - - "~>"
271
240
  - !ruby/object:Gem::Version
272
241
  version: '1.28'
242
+ - - "!="
243
+ - !ruby/object:Gem::Version
244
+ version: 1.29.0
273
245
  - !ruby/object:Gem::Dependency
274
246
  name: rubocop-packaging
275
247
  requirement: !ruby/object:Gem::Requirement
@@ -321,7 +293,7 @@ dependencies:
321
293
  version: 0.18.0
322
294
  - - "<"
323
295
  - !ruby/object:Gem::Version
324
- version: 0.22.0
296
+ version: 0.23.0
325
297
  type: :development
326
298
  prerelease: false
327
299
  version_requirements: !ruby/object:Gem::Requirement
@@ -331,21 +303,7 @@ dependencies:
331
303
  version: 0.18.0
332
304
  - - "<"
333
305
  - !ruby/object:Gem::Version
334
- version: 0.22.0
335
- - !ruby/object:Gem::Dependency
336
- name: yard-junk
337
- requirement: !ruby/object:Gem::Requirement
338
- requirements:
339
- - - "~>"
340
- - !ruby/object:Gem::Version
341
- version: 0.0.7
342
- type: :development
343
- prerelease: false
344
- version_requirements: !ruby/object:Gem::Requirement
345
- requirements:
346
- - - "~>"
347
- - !ruby/object:Gem::Version
348
- version: 0.0.7
306
+ version: 0.23.0
349
307
  description: |
350
308
  Extension for popular TDD and BDD frameworks like "Cucumber", "RSpec" and "Minitest",
351
309
  to make testing command line applications meaningful, easy and fun.
@@ -480,15 +438,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
480
438
  requirements:
481
439
  - - ">="
482
440
  - !ruby/object:Gem::Version
483
- version: '2.5'
441
+ version: '2.7'
484
442
  required_rubygems_version: !ruby/object:Gem::Requirement
485
443
  requirements:
486
444
  - - ">="
487
445
  - !ruby/object:Gem::Version
488
446
  version: '0'
489
447
  requirements: []
490
- rubygems_version: 3.3.7
448
+ rubygems_version: 3.4.18
491
449
  signing_key:
492
450
  specification_version: 4
493
- summary: aruba-2.0.1
451
+ summary: aruba-2.2.0
494
452
  test_files: []