aruba 0.13.0 → 0.14.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.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +8 -2
  3. data/Gemfile +1 -1
  4. data/History.md +6 -0
  5. data/README.md +1 -1
  6. data/Rakefile +3 -9
  7. data/TODO.md +5 -0
  8. data/features/steps/command/run.feature +16 -0
  9. data/features/steps/environment/append_environment_variable.feature +52 -0
  10. data/features/steps/environment/prepend_environment_variable.feature +52 -0
  11. data/features/steps/environment/set_environment_variable.feature +19 -4
  12. data/features/support/env.rb +5 -5
  13. data/fixtures/cli-app/lib/cli/app/version.rb +1 -1
  14. data/fixtures/empty-app/lib/cli/app/version.rb +1 -1
  15. data/lib/aruba/api/core.rb +1 -1
  16. data/lib/aruba/api/deprecated.rb +2 -24
  17. data/lib/aruba/api/filesystem.rb +1 -1
  18. data/lib/aruba/aruba_path.rb +1 -1
  19. data/lib/aruba/colorizer.rb +1 -1
  20. data/lib/aruba/command.rb +1 -3
  21. data/lib/aruba/config.rb +1 -1
  22. data/lib/aruba/config/jruby.rb +1 -1
  23. data/lib/aruba/config_wrapper.rb +1 -1
  24. data/lib/aruba/cucumber/command.rb +4 -0
  25. data/lib/aruba/cucumber/environment.rb +8 -0
  26. data/lib/aruba/file_size.rb +2 -2
  27. data/lib/aruba/matchers/base/object_formatter.rb +2 -2
  28. data/lib/aruba/matchers/path/match_path_pattern.rb +1 -1
  29. data/lib/aruba/platforms/announcer.rb +9 -9
  30. data/lib/aruba/platforms/filesystem_status.rb +1 -1
  31. data/lib/aruba/platforms/local_environment.rb +1 -1
  32. data/lib/aruba/platforms/simple_table.rb +1 -1
  33. data/lib/aruba/platforms/unix_command_string.rb +1 -1
  34. data/lib/aruba/platforms/unix_environment_variables.rb +16 -18
  35. data/lib/aruba/platforms/windows_command_string.rb +1 -1
  36. data/lib/aruba/platforms/windows_environment_variables.rb +14 -14
  37. data/lib/aruba/processes/basic_process.rb +1 -1
  38. data/lib/aruba/processes/debug_process.rb +0 -4
  39. data/lib/aruba/processes/spawn_process.rb +3 -5
  40. data/lib/aruba/runtime.rb +5 -5
  41. data/lib/aruba/setup.rb +1 -1
  42. data/lib/aruba/version.rb +1 -1
  43. data/spec/aruba/api_spec.rb +12 -12
  44. data/spec/aruba/jruby_spec.rb +1 -1
  45. data/spec/aruba/matchers/file_spec.rb +2 -2
  46. data/spec/support/helpers/reporting.rb +1 -1
  47. data/spec/support/shared_examples/configuration.rb +1 -1
  48. metadata +7 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c728c7b302f5e46b803fabe9a95ab2769c768b65
4
- data.tar.gz: 2a613d641ff60f99b06774b89bd23513a6aa01e1
3
+ metadata.gz: e5ec77c0f2b08ab348a156340b1ef9c8f663b4ee
4
+ data.tar.gz: 5675b79f8e3cf85ba2a27ea371088dba3e781802
5
5
  SHA512:
6
- metadata.gz: 8ed3b4ac93ed91676ec48e17eb70fae1ab9d456213810880e2cf50c1f84e3df75e5585c708647c6d6da00604c424e54ea907c2cd225779cac6a67cb766d21108
7
- data.tar.gz: c3e739cc6c22e3b42bbd19d04b86b40c4c4f7c370b0bfd6fcaf0fae267654dd73b8f5c7e6f244d1ef2e59e16121fd3bcb31a799d47b0a2b9d50b010fb224109e
6
+ metadata.gz: 4bff6ec753cafe72067bc25c1f00680825e17c830905ff6c3783f4bb927f44ab20f34d7d8be73601329cc6ea019bd82c215f648307a755582bc635830abbe46e
7
+ data.tar.gz: 4021df9a869200d6d123ee2249706a42fe2459f516f69695502b49630ec7bb79dae9991a92b315a179b1cfaf9cb74b07a4b54d597f25c537b13855f2b66842f0
@@ -128,7 +128,7 @@ Style/SingleLineBlockParams:
128
128
  Enabled: false
129
129
 
130
130
  # Cop supports --auto-correct.
131
- Style/SingleSpaceBeforeFirstArg:
131
+ Style/SpaceBeforeFirstArg:
132
132
  Enabled: false
133
133
 
134
134
  # Cop supports --auto-correct.
@@ -136,7 +136,7 @@ Style/SpaceAfterComma:
136
136
  Enabled: false
137
137
 
138
138
  # Cop supports --auto-correct.
139
- Style/SpaceAfterControlKeyword:
139
+ Style/SpaceAroundKeyword:
140
140
  Enabled: false
141
141
 
142
142
  # Cop supports --auto-correct.
@@ -180,3 +180,9 @@ Style/RaiseArgs:
180
180
 
181
181
  Metrics/ParameterLists:
182
182
  Enabled: false
183
+
184
+ Style/IfInsideElse:
185
+ Enabled: false
186
+
187
+ Style/IdenticalConditionalBranches:
188
+ Enabled: false
data/Gemfile CHANGED
@@ -55,7 +55,7 @@ group :development, :test do
55
55
 
56
56
  if RUBY_VERSION >= '1.9.3'
57
57
  # Make aruba compliant to ruby community guide
58
- gem 'rubocop', '~> 0.32.0'
58
+ gem 'rubocop', '~> 0.32'
59
59
  end
60
60
 
61
61
  if RUBY_VERSION >= '1.9.3'
data/History.md CHANGED
@@ -54,6 +54,12 @@
54
54
 
55
55
  # RELEASED
56
56
 
57
+ ## [v0.14.0](https://github.com/cucumber/aruba/compare/v0.13.0...v0.14.0)
58
+
59
+ * Add `<project_root>/exe` to search path for commands: This is the new default if you setup a
60
+ project with bundler.
61
+ * Add some more steps to modify environment
62
+
57
63
  ## [v0.13.0](https://github.com/cucumber/aruba/compare/v0.12.0...v0.13.0)
58
64
 
59
65
  * Add two new hooks for rspec and cucumber to make troubleshooting feature
data/README.md CHANGED
@@ -184,7 +184,7 @@ prefer to setup `aruba` yourself, please move on to the next section.
184
184
 
185
185
  ### User Documentation
186
186
 
187
- If you're interested in our steps and API, please browser our [feature
187
+ If you're interested in our steps and API, please browse our [feature
188
188
  files](https://github.com/cucumber/aruba/tree/master/features). You can find a
189
189
  lot of examples there. A good starting point are [Getting
190
190
  Started](https://github.com/cucumber/aruba/tree/master/features/getting_started)
data/Rakefile CHANGED
@@ -36,17 +36,11 @@ namespace :travis do
36
36
  end
37
37
  end
38
38
 
39
- if RUBY_VERSION < '1.9.3'
39
+ task :rubocop do
40
40
  begin
41
- require 'rubocop/rake_task'
42
- RuboCop::RakeTask.new
43
- rescue LoadError
44
- desc 'Stub task to make rake happy'
45
- task(:rubocop) {}
41
+ sh 'rubocop --fail-level E'
42
+ rescue
46
43
  end
47
- else
48
- require 'rubocop/rake_task'
49
- RuboCop::RakeTask.new
50
44
  end
51
45
 
52
46
  desc "Run tests, both RSpec and Cucumber"
data/TODO.md CHANGED
@@ -6,3 +6,8 @@
6
6
  * Add variation of check and stop of command if output contains
7
7
  Add something like `(?: of last command)?`. If this is true, just check the last command.
8
8
  * Use aruba.config.exit_timeout everywhere
9
+ * Fix problem with long running commands in background:
10
+
11
+ Since we need to stop all commands to access the status of the last command
12
+ stopped, we have problems with long running commands
13
+
@@ -48,3 +48,19 @@ Feature: Run commands
48
48
 
49
49
  STDOUT
50
50
  """
51
+
52
+ Scenario: Run command found in "bin"-directory which is found in the current directory
53
+ Given a file named "features/run.feature" with:
54
+ """
55
+ Feature: Run it
56
+ Scenario: Run command
57
+ Given an executable named "bin/local_cli" with:
58
+ \"\"\"
59
+ #!/bin/bash
60
+ exit 0
61
+ \"\"\"
62
+ And I look for executables in "bin" within the current directory
63
+ When I successfully run `local_cli`
64
+ """
65
+ When I run `cucumber`
66
+ Then the features should all pass
@@ -0,0 +1,52 @@
1
+ Feature: Append environment variable via "cucumber"-step
2
+
3
+ It is quite handy to modify the environment of a process. To make this
4
+ possible, `aruba` provides several steps. One of these is
5
+ `I append the values to environment variables:`-step. Using this step appends
6
+ the values. Each variable name and each value is converted to a string.
7
+ Otherwise `ruby` would complain about an invalid argument.
8
+
9
+ Background:
10
+ Given I use the fixture "cli-app"
11
+ And an executable named "bin/cli" with:
12
+ """
13
+ #!/bin/bash
14
+
15
+ echo $LONG_LONG_VARIABLE
16
+ """
17
+ And a file named "features/support/variables.rb" with:
18
+ """
19
+ ENV['LONG_LONG_VARIABLE'] = '1'
20
+ """
21
+
22
+ Scenario: Append environment variable by using a step given in table
23
+ Given a file named "features/home_variable.feature" with:
24
+ """
25
+ Feature: Environment Variable
26
+ Scenario: Run command
27
+ Given I append the values to the environment variables:
28
+ | variable | value |
29
+ | LONG_LONG_VARIABLE | long_value |
30
+ When I run `cli`
31
+ Then the output should contain:
32
+ \"\"\"
33
+ 1long_value
34
+ \"\"\"
35
+ """
36
+ When I run `cucumber`
37
+ Then the features should all pass
38
+
39
+ Scenario: Append single environment variable by using a step
40
+ Given a file named "features/home_variable.feature" with:
41
+ """
42
+ Feature: Environment Variable
43
+ Scenario: Run command
44
+ Given I append "long_value" to the environment variable "LONG_LONG_VARIABLE"
45
+ When I run `cli`
46
+ Then the output should contain:
47
+ \"\"\"
48
+ 1long_value
49
+ \"\"\"
50
+ """
51
+ When I run `cucumber`
52
+ Then the features should all pass
@@ -0,0 +1,52 @@
1
+ Feature: Prepend environment variable via "cucumber"-step
2
+
3
+ It is quite handy to modify the environment of a process. To make this
4
+ possible, `aruba` provides several steps. One of these is
5
+ `I prepend the values to environment variables:`-step. Using this step prepends
6
+ the values. Each variable name and each value is converted to a string.
7
+ Otherwise `ruby` would complain about an invalid argument.
8
+
9
+ Background:
10
+ Given I use the fixture "cli-app"
11
+ And an executable named "bin/cli" with:
12
+ """
13
+ #!/bin/bash
14
+
15
+ echo $LONG_LONG_VARIABLE
16
+ """
17
+ And a file named "features/support/variables.rb" with:
18
+ """
19
+ ENV['LONG_LONG_VARIABLE'] = '1'
20
+ """
21
+
22
+ Scenario: Prepend environment variable by using a step given in table
23
+ Given a file named "features/home_variable.feature" with:
24
+ """
25
+ Feature: Environment Variable
26
+ Scenario: Run command
27
+ Given I prepend the values to the environment variables:
28
+ | variable | value |
29
+ | LONG_LONG_VARIABLE | long_value |
30
+ When I run `cli`
31
+ Then the output should contain:
32
+ \"\"\"
33
+ long_value1
34
+ \"\"\"
35
+ """
36
+ When I run `cucumber`
37
+ Then the features should all pass
38
+
39
+ Scenario: Prepend single environment variable by using a step
40
+ Given a file named "features/home_variable.feature" with:
41
+ """
42
+ Feature: Environment Variable
43
+ Scenario: Run command
44
+ Given I prepend "long_value" to the environment variable "LONG_LONG_VARIABLE"
45
+ When I run `cli`
46
+ Then the output should contain:
47
+ \"\"\"
48
+ long_value1
49
+ \"\"\"
50
+ """
51
+ When I run `cucumber`
52
+ Then the features should all pass
@@ -9,15 +9,15 @@ Feature: Set environment variable via "cucumber"-step
9
9
 
10
10
  Background:
11
11
  Given I use the fixture "cli-app"
12
-
13
- Scenario: Set environment variable by using a step
14
- Given an executable named "bin/cli" with:
12
+ And an executable named "bin/cli" with:
15
13
  """
16
14
  #!/bin/bash
17
15
 
18
16
  echo $LONG_LONG_VARIABLE
19
17
  """
20
- And a file named "features/home_variable.feature" with:
18
+
19
+ Scenario: Set environment variable by using a step given in table
20
+ Given a file named "features/home_variable.feature" with:
21
21
  """
22
22
  Feature: Environment Variable
23
23
  Scenario: Run command
@@ -32,3 +32,18 @@ Feature: Set environment variable via "cucumber"-step
32
32
  """
33
33
  When I run `cucumber`
34
34
  Then the features should all pass
35
+
36
+ Scenario: Set single environment variable by using a step
37
+ Given a file named "features/home_variable.feature" with:
38
+ """
39
+ Feature: Environment Variable
40
+ Scenario: Run command
41
+ Given I set the environment variable "LONG_LONG_VARIABLE" to "long_value"
42
+ When I run `cli`
43
+ Then the output should contain:
44
+ \"\"\"
45
+ long_value
46
+ \"\"\"
47
+ """
48
+ When I run `cucumber`
49
+ Then the features should all pass
@@ -25,9 +25,9 @@ Before do |scenario|
25
25
  simplecov_setup_pathname = Pathname.new(__FILE__).expand_path.parent.join('simplecov_setup')
26
26
 
27
27
  # set environment variable so child processes will merge their coverage data with parent process's coverage data.
28
- if RUBY_VERSION < '1.9'
29
- ENV['RUBYOPT'] = "-r rubygems -r#{simplecov_setup_pathname} #{ENV['RUBYOPT']}"
30
- else
31
- ENV['RUBYOPT'] = "-r#{simplecov_setup_pathname} #{ENV['RUBYOPT']}"
32
- end
28
+ ENV['RUBYOPT'] = if RUBY_VERSION < '1.9'
29
+ "-r rubygems -r#{simplecov_setup_pathname} #{ENV['RUBYOPT']}"
30
+ else
31
+ "-r#{simplecov_setup_pathname} #{ENV['RUBYOPT']}"
32
+ end
33
33
  end
@@ -1,5 +1,5 @@
1
1
  module Cli
2
2
  module App
3
- VERSION = "0.1.0"
3
+ VERSION = "0.1.0".freeze
4
4
  end
5
5
  end
@@ -1,5 +1,5 @@
1
1
  module Cli
2
2
  module App
3
- VERSION = "0.1.0"
3
+ VERSION = "0.1.0".freeze
4
4
  end
5
5
  end
@@ -57,7 +57,7 @@ module Aruba
57
57
 
58
58
  aruba.event_bus.notify Events::ChangedWorkingDirectory.new(:old => old_directory, :new => new_directory)
59
59
 
60
- old_dir = Aruba.platform.getwd
60
+ old_dir = Aruba.platform.getwd
61
61
 
62
62
  Aruba.platform.chdir File.join(aruba.root_directory, aruba.current_directory)
63
63
 
@@ -289,7 +289,7 @@ module Aruba
289
289
 
290
290
  stop_all_commands
291
291
 
292
- cd('') { block.call }
292
+ cd('') { yield }
293
293
  end
294
294
 
295
295
  # @deprecated
@@ -388,7 +388,7 @@ module Aruba
388
388
  env.each do |k,v|
389
389
  set_env k, v
390
390
  end
391
- block.call
391
+ yield
392
392
  restore_env
393
393
  end
394
394
 
@@ -565,9 +565,7 @@ module Aruba
565
565
  # @return [TrueClass, FalseClass]
566
566
  # If arg1 is exactly the same as arg2 return true, otherwise false
567
567
  def assert_exact_output(expected, actual)
568
- # rubocop:disable Metrics/LineLength
569
568
  Aruba.platform.deprecated('The use of "#assert_exact_output" is deprecated. Use "expect(command).to have_output \'exact\'" instead. There are also special matchers for "stdout" and "stderr"')
570
- # rubocop:enable Metrics/LineLength
571
569
 
572
570
  actual.force_encoding(expected.encoding) if RUBY_VERSION >= "1.9"
573
571
  expect(Aruba.platform.unescape(actual, aruba.config.keep_ansi)).to eq Aruba.platform.unescape(expected, aruba.config.keep_ansi)
@@ -580,9 +578,7 @@ module Aruba
580
578
  # @return [TrueClass, FalseClass]
581
579
  # If arg2 contains arg1 return true, otherwise false
582
580
  def assert_partial_output(expected, actual)
583
- # rubocop:disable Metrics/LineLength
584
581
  Aruba.platform.deprecated('The use of "#assert_partial_output" is deprecated. Use "expect(command).to have_output /partial/" instead. There are also special matchers for "stdout" and "stderr"')
585
- # rubocop:enable Metrics/LineLength
586
582
 
587
583
  actual.force_encoding(expected.encoding) if RUBY_VERSION >= "1.9"
588
584
  expect(Aruba.platform.unescape(actual, aruba.config.keep_ansi)).to include(Aruba.platform.unescape(expected, aruba.config.keep_ansi))
@@ -595,9 +591,7 @@ module Aruba
595
591
  # @return [TrueClass, FalseClass]
596
592
  # If arg2 matches arg1 return true, otherwise false
597
593
  def assert_matching_output(expected, actual)
598
- # rubocop:disable Metrics/LineLength
599
594
  Aruba.platform.deprecated('The use of "#assert_matching_output" is deprecated. Use "expect(command).to have_output /partial/" instead. There are also special matchers for "stdout" and "stderr"')
600
- # rubocop:enable Metrics/LineLength
601
595
 
602
596
  actual.force_encoding(expected.encoding) if RUBY_VERSION >= "1.9"
603
597
  expect(Aruba.platform.unescape(actual, aruba.config.keep_ansi)).to match(/#{Aruba.platform.unescape(expected, aruba.config.keep_ansi)}/m)
@@ -610,9 +604,7 @@ module Aruba
610
604
  # @return [TrueClass, FalseClass]
611
605
  # If arg2 does not match arg1 return true, otherwise false
612
606
  def assert_not_matching_output(expected, actual)
613
- # rubocop:disable Metrics/LineLength
614
607
  Aruba.platform.deprecated('The use of "#assert_not_matching_output" is deprecated. Use "expect(command).not_to have_output /partial/" instead. There are also special matchers for "stdout" and "stderr"')
615
- # rubocop:enable Metrics/LineLength
616
608
 
617
609
  actual.force_encoding(expected.encoding) if RUBY_VERSION >= "1.9"
618
610
  expect(Aruba.platform.unescape(actual, aruba.config.keep_ansi)).not_to match(/#{Aruba.platform.unescape(expected, aruba.config.keep_ansi)}/m)
@@ -625,9 +617,7 @@ module Aruba
625
617
  # @return [TrueClass, FalseClass]
626
618
  # If arg2 does not match/include arg1 return true, otherwise false
627
619
  def assert_no_partial_output(unexpected, actual)
628
- # rubocop:disable Metrics/LineLength
629
620
  Aruba.platform.deprecated('The use of "#assert_no_partial_output" is deprecated. Use "expect(command).not_to have_output /partial/" instead. There are also special matchers for "stdout" and "stderr"')
630
- # rubocop:enable Metrics/LineLength
631
621
 
632
622
  actual.force_encoding(unexpected.encoding) if RUBY_VERSION >= "1.9"
633
623
  if Regexp === unexpected
@@ -644,9 +634,7 @@ module Aruba
644
634
  # @return [TrueClass, FalseClass]
645
635
  # If output of interactive command includes arg1 return true, otherwise false
646
636
  def assert_partial_output_interactive(expected)
647
- # rubocop:disable Metrics/LineLength
648
637
  Aruba.platform.deprecated('The use of "#assert_partial_output_interactive" is deprecated. Use "expect(last_command_started).to have_output /partial/" instead. There are also special matchers for "stdout" and "stderr"')
649
- # rubocop:enable Metrics/LineLength
650
638
 
651
639
  Aruba.platform.unescape(last_command_started.stdout, aruba.config.keep_ansi).include?(Aruba.platform.unescape(expected, aruba.config.keep_ansi)) ? true : false
652
640
  end
@@ -658,9 +646,7 @@ module Aruba
658
646
  # @return [TrueClass, FalseClass]
659
647
  # If exit status is 0 and arg1 is included in output return true, otherwise false
660
648
  def assert_passing_with(expected)
661
- # rubocop:disable Metrics/LineLength
662
649
  Aruba.platform.deprecated('The use of "#assert_passing_with" is deprecated. Use "expect(all_commands).to all(be_successfully_executed).and include_an_object(have_output(/partial/))" or something similar instead. There are also special matchers for "stdout" and "stderr"')
663
- # rubocop:enable Metrics/LineLength
664
650
 
665
651
  assert_success(true)
666
652
  assert_partial_output(expected, all_output)
@@ -673,9 +659,7 @@ module Aruba
673
659
  # @return [TrueClass, FalseClass]
674
660
  # If exit status is not equal 0 and arg1 is included in output return true, otherwise false
675
661
  def assert_failing_with(expected)
676
- # rubocop:disable Metrics/LineLength
677
662
  Aruba.platform.deprecated('The use of "#assert_passing_with" is deprecated. Use "expect(all_commands).not_to include_an_object(be_successfully_executed).and include_an_object(have_output(/partial/))" or something similar instead. There are also special matchers for "stdout" and "stderr"')
678
- # rubocop:enable Metrics/LineLength
679
663
 
680
664
  assert_success(false)
681
665
  assert_partial_output(expected, all_output)
@@ -689,9 +673,7 @@ module Aruba
689
673
  # If arg1 is true, return true if command was successful
690
674
  # If arg1 is false, return true if command failed
691
675
  def assert_success(success)
692
- # rubocop:disable Metrics/LineLength
693
676
  Aruba.platform.deprecated('The use of "#assert_success" is deprecated. Use "expect(last_command_started).to be_successfully_executed" or with "not_to" or the negative form "have_failed_running" (requires rspec >= 3.1)')
694
- # rubocop:enable Metrics/LineLength
695
677
 
696
678
  if success
697
679
  expect(last_command_started).to be_successfully_executed
@@ -702,18 +684,14 @@ module Aruba
702
684
 
703
685
  # @deprecated
704
686
  def assert_exit_status(status)
705
- # rubocop:disable Metrics/LineLength
706
687
  Aruba.platform.deprecated('The use of "#assert_success" is deprecated. Use "expect(last_command_started).to have_exit_status(status)"')
707
- # rubocop:enable Metrics/LineLength
708
688
 
709
689
  expect(last_command_started).to have_exit_status(status)
710
690
  end
711
691
 
712
692
  # @deprecated
713
693
  def assert_not_exit_status(status)
714
- # rubocop:disable Metrics/LineLength
715
694
  Aruba.platform.deprecated('The use of "#assert_success" is deprecated. Use "expect(last_command_started).not_to have_exit_status(status)"')
716
- # rubocop:enable Metrics/LineLength
717
695
 
718
696
  expect(last_exit_status).not_to eq(status),
719
697
  append_output_to("Exit status was #{last_exit_status} which was not expected.")
@@ -43,7 +43,7 @@ module Aruba
43
43
  # @param [String] file
44
44
  # The file which should exist
45
45
  def executable?(path)
46
- path = expand_path(path)
46
+ path = expand_path(path)
47
47
 
48
48
  Aruba.platform.file?(path) && Aruba.platform.executable?(path)
49
49
  end
@@ -41,7 +41,7 @@ module Aruba
41
41
  def push(p)
42
42
  @delegate_sd_obj << p
43
43
  end
44
- alias_method :<<, :push
44
+ alias << push
45
45
 
46
46
  # Remove last component of path
47
47
  #
@@ -32,7 +32,7 @@ module Aruba
32
32
  [ :on_magenta , 45 ],
33
33
  [ :on_cyan , 46 ],
34
34
  [ :on_white , 47 ]
35
- ]
35
+ ].freeze
36
36
 
37
37
  ATTRIBUTE_NAMES = ATTRIBUTES.transpose.first
38
38
  # :startdoc:
@@ -22,7 +22,6 @@ module Aruba
22
22
 
23
23
  public
24
24
 
25
- # rubocop:disable Metrics/MethodLength
26
25
  def initialize(command, opts = {})
27
26
  launchers = []
28
27
  launchers << Processes::DebugProcess
@@ -46,7 +45,6 @@ module Aruba
46
45
  rescue KeyError => e
47
46
  raise ArgumentError, e.message
48
47
  end
49
- # rubocop:enable Metrics/MethodLength
50
48
 
51
49
  # Stop command
52
50
  def stop(*)
@@ -71,6 +69,6 @@ module Aruba
71
69
 
72
70
  self
73
71
  end
74
- alias_method :run!, :start
72
+ alias run! start
75
73
  end
76
74
  end
@@ -38,7 +38,7 @@ module Aruba
38
38
  option_accessor :fixtures_directories, :contract => { Array => ArrayOf[String] }, :default => %w(features/fixtures spec/fixtures test/fixtures fixtures)
39
39
  option_accessor :command_runtime_environment, :contract => { Hash => Hash }, :default => ENV.to_hash
40
40
  # rubocop:disable Metrics/LineLength
41
- option_accessor(:command_search_paths, :contract => { ArrayOf[String] => ArrayOf[String] }) { |config| [File.join(config.root_directory.value, 'bin')] }
41
+ option_accessor(:command_search_paths, :contract => { ArrayOf[String] => ArrayOf[String] }) { |config| [File.join(config.root_directory.value, 'bin'), File.join(config.root_directory.value, 'exe')] }
42
42
  # rubocop:enable Metrics/LineLength
43
43
  option_accessor :keep_ansi, :contract => { Bool => Bool }, :default => false
44
44
  option_accessor :remove_ansi_escape_sequences, :contract => { Bool => Bool }, :default => true
@@ -9,7 +9,7 @@ Aruba.configure do |config|
9
9
  ENV['JRUBY_OPTS'] = "-X-C #{ENV['JRUBY_OPTS']}" unless ENV['JRUBY_OPTS'].include? '-X-C'
10
10
 
11
11
  # Faster startup for jruby
12
- ENV['JRUBY_OPTS'] = "--dev #{ENV['JRUBY_OPTS']}" unless ENV['JRUBY_OPTS'].include? '--dev'
12
+ ENV['JRUBY_OPTS'] = "--dev #{ENV['JRUBY_OPTS']}" unless ENV['JRUBY_OPTS'].include? '--dev'
13
13
 
14
14
  # force jRuby to use client JVM for faster startup times
15
15
  ENV['JAVA_OPTS'] = "-d32 #{ENV['JAVA_OPTS']}" if RbConfig::CONFIG['host_os'] =~ /solaris|sunos/i && !ENV['JAVA_OPTS'].include?('-d32')
@@ -21,7 +21,7 @@ module Aruba
21
21
  # @param [#notify] event_bus
22
22
  # The event queue which should be notified.
23
23
  def initialize(config, event_bus)
24
- @config = config
24
+ @config = config
25
25
  @event_bus = event_bus
26
26
  end
27
27
 
@@ -416,3 +416,7 @@ When(/^I send the signal "([^"]*)" to the command (?:"([^"]*)"|(?:started last))
416
416
  last_command_started.send_signal signal
417
417
  end
418
418
  end
419
+
420
+ Given(/^I look for executables in "(.*)" within the current directory$/) do |directory|
421
+ prepend_environment_variable 'PATH', expand_path(directory) + ':'
422
+ end
@@ -6,6 +6,14 @@ Given(/^I set the environment variable "(.*)" to "(.*)"/) do |variable, value|
6
6
  set_environment_variable(variable.to_s, value.to_s)
7
7
  end
8
8
 
9
+ Given(/^I append "(.*)" to the environment variable "(.*)"/) do |value, variable|
10
+ append_environment_variable(variable.to_s, value.to_s)
11
+ end
12
+
13
+ Given(/^I prepend "(.*)" to the environment variable "(.*)"/) do |value, variable|
14
+ prepend_environment_variable(variable.to_s, value.to_s)
15
+ end
16
+
9
17
  Given(/^I set the environment variables? to:/) do |table|
10
18
  table.hashes.each do |row|
11
19
  variable = row['variable'].to_s
@@ -22,7 +22,7 @@ module Aruba
22
22
  def to_byte
23
23
  bytes
24
24
  end
25
- alias_method :to_i, :to_byte
25
+ alias to_i to_byte
26
26
 
27
27
  # Convert to float
28
28
  def to_f
@@ -33,7 +33,7 @@ module Aruba
33
33
  def to_s
34
34
  to_i.to_s
35
35
  end
36
- alias_method :inspect, :to_s
36
+ alias inspect to_s
37
37
 
38
38
  # Move to other
39
39
  def coerce(other)
@@ -57,7 +57,7 @@ module Aruba
57
57
  end
58
58
  end
59
59
 
60
- TIME_FORMAT = "%Y-%m-%d %H:%M:%S"
60
+ TIME_FORMAT = "%Y-%m-%d %H:%M:%S".freeze
61
61
 
62
62
  if Time.method_defined?(:nsec)
63
63
  # @private
@@ -71,7 +71,7 @@ module Aruba
71
71
  end
72
72
  end
73
73
 
74
- DATE_TIME_FORMAT = "%a, %d %b %Y %H:%M:%S.%N %z"
74
+ DATE_TIME_FORMAT = "%a, %d %b %Y %H:%M:%S.%N %z".freeze
75
75
 
76
76
  # ActiveSupport sometimes overrides inspect. If `ActiveSupport` is
77
77
  # defined use a custom format string that includes more time precision.
@@ -26,7 +26,7 @@ RSpec::Matchers.define :match_path_pattern do |_|
26
26
  match do |actual|
27
27
  Aruba.platform.deprecated('The use of `expect().to match_path_pattern` is deprecated. Please use `expect().to include pattern /regex/` instead.')
28
28
 
29
- next !actual.select { |a| a == expected }.empty? if expected.is_a? String
29
+ next !actual.select { |a| a == expected }.empty? if expected.is_a? String
30
30
 
31
31
  !actual.grep(expected).empty?
32
32
  end
@@ -118,20 +118,20 @@ module Aruba
118
118
  # rubocop:enable Metrics/MethodLength
119
119
 
120
120
  def output_format(channel, string = '%s', &block)
121
- if block_given?
122
- output_formats[channel.to_sym] = block
123
- elsif string.is_a?(Proc)
124
- output_formats[channel.to_sym] = string
125
- else
126
- output_formats[channel.to_sym] = proc { |*args| format(string, *args) }
127
- end
121
+ output_formats[channel.to_sym] = if block_given?
122
+ block
123
+ elsif string.is_a?(Proc)
124
+ string
125
+ else
126
+ proc { |*args| format(string, *args) }
127
+ end
128
128
  end
129
129
 
130
130
  public
131
131
 
132
132
  # Reset announcer
133
133
  def reset
134
- @announcer = @announcers.first
134
+ @announcer = @announcers.first
135
135
  end
136
136
 
137
137
  # Change mode of announcer
@@ -185,7 +185,7 @@ module Aruba
185
185
  return unless activated?(channel)
186
186
 
187
187
  message = if block_given?
188
- the_output_format.call(block.call)
188
+ the_output_format.call(yield)
189
189
  else
190
190
  the_output_format.call(*args)
191
191
  end
@@ -12,7 +12,7 @@ module Aruba
12
12
  :atime,
13
13
  :mtime,
14
14
  :size
15
- ]
15
+ ].freeze
16
16
 
17
17
  extend Forwardable
18
18
 
@@ -19,7 +19,7 @@ module Aruba
19
19
  ENV.clear
20
20
  ENV.update env
21
21
 
22
- block.call if block_given?
22
+ yield if block_given?
23
23
  ensure
24
24
  ENV.clear
25
25
  ENV.update old_env
@@ -29,7 +29,7 @@ module Aruba
29
29
  longest_key = hash.keys.map(&:to_s).max_by(&:length)
30
30
  return '' if longest_key.nil?
31
31
 
32
- name_size = longest_key.length
32
+ name_size = longest_key.length
33
33
 
34
34
  if RUBY_VERSION < '2'
35
35
  rows = []
@@ -20,7 +20,7 @@ module Aruba
20
20
  def to_s
21
21
  __getobj__.to_s
22
22
  end
23
- alias_method :inspect, :to_s
23
+ alias inspect to_s
24
24
  end
25
25
  end
26
26
  end
@@ -11,19 +11,17 @@ module Aruba
11
11
  def initialize(other_env, &block)
12
12
  @other_env = other_env
13
13
 
14
- if RUBY_VERSION <= '1.9.3'
15
- # rubocop:disable Style/EachWithObject
16
- @other_env = @other_env.to_hash.inject({}) { |a, (k, v)| a[k] = v.to_s; a }
17
- # rubocop:enable Style/EachWithObject
18
- else
19
- @other_env = @other_env.to_h.each_with_object({}) { |(k, v), a| a[k] = v.to_s }
20
- end
21
-
22
- if block_given?
23
- @block = block
24
- else
25
- @block = nil
26
- end
14
+ @other_env = if RUBY_VERSION <= '1.9.3'
15
+ # rubocop:disable Style/EachWithObject
16
+ @other_env.to_hash.inject({}) { |a, (k, v)| a[k] = v.to_s; a }
17
+ # rubocop:enable Style/EachWithObject
18
+ else
19
+ @other_env.to_h.each_with_object({}) { |(k, v), a| a[k] = v.to_s }
20
+ end
21
+
22
+ @block = if block_given?
23
+ block
24
+ end
27
25
  end
28
26
 
29
27
  def call(env)
@@ -62,11 +60,11 @@ module Aruba
62
60
  def initialize(env = ENV)
63
61
  @actions = []
64
62
 
65
- if RUBY_VERSION < '2.0'
66
- @env = env.to_hash
67
- else
68
- @env = env.to_h
69
- end
63
+ @env = if RUBY_VERSION < '2.0'
64
+ env.to_hash
65
+ else
66
+ env.to_h
67
+ end
70
68
  end
71
69
 
72
70
  # Update environment with other en
@@ -23,7 +23,7 @@ module Aruba
23
23
  def to_s
24
24
  __getobj__.to_s
25
25
  end
26
- alias_method :inspect, :to_s
26
+ alias inspect to_s
27
27
  end
28
28
  end
29
29
  end
@@ -36,23 +36,23 @@ module Aruba
36
36
  def initialize(env = ENV.to_hash)
37
37
  @actions = []
38
38
 
39
- if RUBY_VERSION <= '1.9.3'
40
- # rubocop:disable Style/EachWithObject
41
- @env = env.inject({}) { |a, (k,v)| a[k.to_s.upcase] = v; a }
42
- # rubocop:enable Style/EachWithObject
43
- else
44
- @env = env.each_with_object({}) { |(k,v), a| a[k.to_s.upcase] = v }
45
- end
39
+ @env = if RUBY_VERSION <= '1.9.3'
40
+ # rubocop:disable Style/EachWithObject
41
+ env.inject({}) { |a, (k,v)| a[k.to_s.upcase] = v; a }
42
+ # rubocop:enable Style/EachWithObject
43
+ else
44
+ env.each_with_object({}) { |(k,v), a| a[k.to_s.upcase] = v }
45
+ end
46
46
  end
47
47
 
48
48
  def update(other_env, &block)
49
- if RUBY_VERSION <= '1.9.3'
50
- # rubocop:disable Style/EachWithObject
51
- other_env = other_env.inject({}) { |a, (k,v)| a[k.to_s.upcase] = v; a }
52
- # rubocop:enable Style/EachWithObject
53
- else
54
- other_env = other_env.each_with_object({}) { |(k,v), a| a[k.to_s.upcase] = v }
55
- end
49
+ other_env = if RUBY_VERSION <= '1.9.3'
50
+ # rubocop:disable Style/EachWithObject
51
+ other_env.inject({}) { |a, (k,v)| a[k.to_s.upcase] = v; a }
52
+ # rubocop:enable Style/EachWithObject
53
+ else
54
+ other_env.each_with_object({}) { |(k,v), a| a[k.to_s.upcase] = v }
55
+ end
56
56
 
57
57
  super(other_env, &block)
58
58
  end
@@ -125,7 +125,7 @@ module Aruba
125
125
 
126
126
  format '#<%s:%s commandline="%s": output="%s">', self.class, self.object_id, commandline, out
127
127
  end
128
- alias_method :to_s, :inspect
128
+ alias to_s inspect
129
129
 
130
130
  private
131
131
 
@@ -17,8 +17,6 @@ module Aruba
17
17
  mode == :debug || (mode.is_a?(Class) && mode <= DebugProcess)
18
18
  end
19
19
 
20
- # rubocop:disable Metrics/MethodLength
21
- # rubocop:disable Metrics/CyclomaticComplexity
22
20
  def start
23
21
  Dir.chdir @working_directory do
24
22
  Aruba.platform.with_environment(environment) do
@@ -26,8 +24,6 @@ module Aruba
26
24
  end
27
25
  end
28
26
  end
29
- # rubocop:enable Metrics/CyclomaticComplexity
30
- # rubocop:enable Metrics/MethodLength
31
27
 
32
28
  # Return stdin
33
29
  #
@@ -50,7 +50,6 @@ module Aruba
50
50
  # Run code for process which was started
51
51
  #
52
52
  # rubocop:disable Metrics/MethodLength
53
- # rubocop:disable Metrics/CyclomaticComplexity
54
53
  def start
55
54
  # rubocop:disable Metrics/LineLength
56
55
  fail CommandAlreadyStartedError, %(Command "#{commandline}" has already been started. Please `#stop` the command first and `#start` it again. Alternatively use `#restart`.\n#{caller.join("\n")}) if started?
@@ -58,7 +57,7 @@ module Aruba
58
57
 
59
58
  @started = true
60
59
 
61
- @process = ChildProcess.build(*[command_string.to_a, arguments].flatten)
60
+ @process = ChildProcess.build(*[command_string.to_a, arguments].flatten)
62
61
  @stdout_file = Tempfile.new('aruba-stdout-')
63
62
  @stderr_file = Tempfile.new('aruba-stderr-')
64
63
 
@@ -91,8 +90,7 @@ module Aruba
91
90
 
92
91
  yield self if block_given?
93
92
  end
94
- # rubocop:enable Metrics/MethodLength
95
- # rubocop:enable Metrics/CyclomaticComplexity
93
+ # rubocop:disable Metrics/MethodLength
96
94
 
97
95
  # Access to stdout of process
98
96
  def stdin
@@ -264,7 +262,7 @@ module Aruba
264
262
 
265
263
  def wait_for_io(time_to_wait, &block)
266
264
  sleep time_to_wait.to_i
267
- block.call
265
+ yield
268
266
  end
269
267
 
270
268
  def read_temporary_output_file(file)
@@ -49,11 +49,11 @@ module Aruba
49
49
 
50
50
  @environment.update(@config.command_runtime_environment)
51
51
 
52
- if Aruba::VERSION < '1'
53
- @command_monitor = opts.fetch(:command_monitor, Aruba.platform.command_monitor.new(:announcer => @announcer))
54
- else
55
- @command_monitor = opts.fetch(:command_monitor, Aruba.platform.command_monitor.new)
56
- end
52
+ @command_monitor = if Aruba::VERSION < '1'
53
+ opts.fetch(:command_monitor, Aruba.platform.command_monitor.new(:announcer => @announcer))
54
+ else
55
+ opts.fetch(:command_monitor, Aruba.platform.command_monitor.new)
56
+ end
57
57
 
58
58
  @logger = opts.fetch(:logger, Aruba.platform.logger.new)
59
59
  @logger.mode = @config.log_level
@@ -7,7 +7,7 @@ module Aruba
7
7
  public
8
8
 
9
9
  def initialize(runtime)
10
- @runtime = runtime
10
+ @runtime = runtime
11
11
  end
12
12
 
13
13
  def call
@@ -1,3 +1,3 @@
1
1
  module Aruba
2
- VERSION = '0.13.0'
2
+ VERSION = '0.14.0'.freeze
3
3
  end
@@ -3,7 +3,7 @@ require 'securerandom'
3
3
  require 'aruba/api'
4
4
  require 'fileutils'
5
5
 
6
- describe Aruba::Api do
6
+ describe Aruba::Api do
7
7
  include_context 'uses aruba API'
8
8
 
9
9
  describe '#all_paths' do
@@ -110,7 +110,7 @@ describe Aruba::Api do
110
110
  let(:content) { 'asdf' }
111
111
 
112
112
  before :each do
113
- @aruba.set_environment_variable 'HOME', File.expand_path(@aruba.aruba.current_directory)
113
+ @aruba.set_environment_variable 'HOME', File.expand_path(@aruba.aruba.current_directory)
114
114
  end
115
115
 
116
116
  context 'when does not exist' do
@@ -164,7 +164,7 @@ describe Aruba::Api do
164
164
  let(:path) { File.join(@aruba.aruba.current_directory, name) }
165
165
 
166
166
  before :each do
167
- @aruba.set_environment_variable 'HOME', File.expand_path(@aruba.aruba.current_directory)
167
+ @aruba.set_environment_variable 'HOME', File.expand_path(@aruba.aruba.current_directory)
168
168
  end
169
169
 
170
170
  context 'when does not exist' do
@@ -196,7 +196,7 @@ describe Aruba::Api do
196
196
  context 'when has subdirectories' do
197
197
  context 'when is simple path' do
198
198
  let(:existing_files) { @aruba.list(name) }
199
- let(:expected_files) { content.map { |c| File.join(name, c) }.sort }
199
+ let(:expected_files) { content.map { |c| File.join(name, c) }.sort }
200
200
 
201
201
  it { expect(expected_files - existing_files).to be_empty}
202
202
  end
@@ -227,7 +227,7 @@ describe Aruba::Api do
227
227
  let(:options) { {} }
228
228
 
229
229
  before :each do
230
- @aruba.set_environment_variable 'HOME', File.expand_path(@aruba.aruba.current_directory)
230
+ @aruba.set_environment_variable 'HOME', File.expand_path(@aruba.aruba.current_directory)
231
231
  end
232
232
 
233
233
  context 'when file' do
@@ -326,7 +326,7 @@ describe Aruba::Api do
326
326
  let(:options) { {} }
327
327
 
328
328
  before :each do
329
- @aruba.set_environment_variable 'HOME', File.expand_path(@aruba.aruba.current_directory)
329
+ @aruba.set_environment_variable 'HOME', File.expand_path(@aruba.aruba.current_directory)
330
330
  end
331
331
 
332
332
  context 'when file' do
@@ -784,7 +784,7 @@ describe Aruba::Api do
784
784
  let(:permissions) { '0655' }
785
785
 
786
786
  before :each do
787
- @aruba.set_environment_variable 'HOME', File.expand_path(@aruba.aruba.current_directory)
787
+ @aruba.set_environment_variable 'HOME', File.expand_path(@aruba.aruba.current_directory)
788
788
  end
789
789
 
790
790
  before(:each) do
@@ -822,7 +822,7 @@ describe Aruba::Api do
822
822
  let(:permissions) { '0655' }
823
823
 
824
824
  before :each do
825
- @aruba.set_environment_variable 'HOME', File.expand_path(@aruba.aruba.current_directory)
825
+ @aruba.set_environment_variable 'HOME', File.expand_path(@aruba.aruba.current_directory)
826
826
  end
827
827
 
828
828
  before(:each) do
@@ -1047,7 +1047,7 @@ describe Aruba::Api do
1047
1047
  end . not_to raise_error
1048
1048
  end
1049
1049
 
1050
- it "raises RSpec::Expectations::ExpectationNotMetError when the inner expectations don't match" do
1050
+ it "raises RSpec::Expectations::ExpectationNotMetError when the inner expectations don't match" do
1051
1051
  expect do
1052
1052
  @aruba.with_file_content @file_name do |full_content|
1053
1053
  expect(full_content).to match(/zoo/)
@@ -1125,20 +1125,20 @@ describe Aruba::Api do
1125
1125
  it "respond to input" do
1126
1126
  @aruba.type "Hello"
1127
1127
  @aruba.type ""
1128
- expect(@aruba.all_output).to eq "Hello\n"
1128
+ expect(@aruba.all_output).to eq "Hello\n"
1129
1129
  end
1130
1130
 
1131
1131
  it "respond to close_input" do
1132
1132
  @aruba.type "Hello"
1133
1133
  @aruba.close_input
1134
- expect(@aruba.all_output).to eq "Hello\n"
1134
+ expect(@aruba.all_output).to eq "Hello\n"
1135
1135
  end
1136
1136
 
1137
1137
  it "pipes data" do
1138
1138
  @aruba.write_file(@file_name, "Hello\nWorld!")
1139
1139
  @aruba.pipe_in_file(@file_name)
1140
1140
  @aruba.close_input
1141
- expect(@aruba.all_output).to eq "Hello\nWorld!"
1141
+ expect(@aruba.all_output).to eq "Hello\nWorld!"
1142
1142
  end
1143
1143
  end
1144
1144
 
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
  require 'aruba/api'
3
3
 
4
- describe "Aruba JRuby Startup Helper" do
4
+ describe "Aruba JRuby Startup Helper" do
5
5
  before(:all) do
6
6
  @fake_env = ENV.clone
7
7
  end
@@ -76,7 +76,7 @@ RSpec.describe 'File Matchers' do
76
76
  end
77
77
 
78
78
  context "when matcher" do
79
- it { expect(have_file_content(a_string_starting_with "a").description).to eq('have file content: a string starting with "a"') }
79
+ it { expect(have_file_content(a_string_starting_with("a")).description).to eq('have file content: a string starting with "a"') }
80
80
  end
81
81
  end
82
82
 
@@ -99,7 +99,7 @@ RSpec.describe 'File Matchers' do
99
99
 
100
100
  example 'for a matcher' do
101
101
  expect do
102
- expect(@file_name).to have_file_content(a_string_starting_with "z")
102
+ expect(@file_name).to have_file_content(a_string_starting_with("z"))
103
103
  end.to fail_with('expected "test.txt" to have file content: a string starting with "z"')
104
104
  end
105
105
  end
@@ -35,7 +35,7 @@ module SpecHelpers
35
35
  captured_stream.unlink
36
36
  stream_io.reopen(origin_stream)
37
37
  end
38
- alias_method :silence, :capture
38
+ alias silence capture
39
39
  end
40
40
  end
41
41
 
@@ -21,7 +21,7 @@ RSpec.shared_examples 'a basic configuration' do
21
21
  end
22
22
 
23
23
  context 'when one tries to write a value' do
24
- it { expect{ config.new_opt = 1}.to raise_error NoMethodError }
24
+ it { expect{ config.new_opt = 1}.to raise_error NoMethodError }
25
25
  end
26
26
 
27
27
  context 'when block is defined' do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aruba
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.13.0
4
+ version: 0.14.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aslak Hellesøy
@@ -13,7 +13,7 @@ authors:
13
13
  autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
- date: 2016-01-26 00:00:00.000000000 Z
16
+ date: 2016-03-08 00:00:00.000000000 Z
17
17
  dependencies:
18
18
  - !ruby/object:Gem::Dependency
19
19
  name: cucumber
@@ -227,7 +227,9 @@ files:
227
227
  - features/steps/command/stdout.feature
228
228
  - features/steps/command/stop.feature
229
229
  - features/steps/core/announce.feature
230
+ - features/steps/environment/append_environment_variable.feature
230
231
  - features/steps/environment/home_variable.feature
232
+ - features/steps/environment/prepend_environment_variable.feature
231
233
  - features/steps/environment/set_environment_variable.feature
232
234
  - features/steps/filesystem/append_to_file.feature
233
235
  - features/steps/filesystem/cd_to_directory.feature
@@ -473,7 +475,7 @@ rubyforge_project:
473
475
  rubygems_version: 2.5.1
474
476
  signing_key:
475
477
  specification_version: 4
476
- summary: aruba-0.13.0
478
+ summary: aruba-0.14.0
477
479
  test_files:
478
480
  - features/api/command/find_command.feature
479
481
  - features/api/command/last_command_started.feature
@@ -560,7 +562,9 @@ test_files:
560
562
  - features/steps/command/stdout.feature
561
563
  - features/steps/command/stop.feature
562
564
  - features/steps/core/announce.feature
565
+ - features/steps/environment/append_environment_variable.feature
563
566
  - features/steps/environment/home_variable.feature
567
+ - features/steps/environment/prepend_environment_variable.feature
564
568
  - features/steps/environment/set_environment_variable.feature
565
569
  - features/steps/filesystem/append_to_file.feature
566
570
  - features/steps/filesystem/cd_to_directory.feature