aruba 2.0.1 → 2.2.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 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: []