aruba 0.14.3 → 0.14.4

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
- SHA1:
3
- metadata.gz: d1a28b38002e8be7a18ef7f565bf01e03af948af
4
- data.tar.gz: 9d9a66748e6626e01c26c1aaf81f0c6d9531adc4
2
+ SHA256:
3
+ metadata.gz: d4cc495b4f8d40275335450c938adca9d0bd7a47b2c2f8e38c639620c822fd1b
4
+ data.tar.gz: f27059712ef37f5eeac18139ac8634f495c65d8d4f0ee626aeb539796e5d2998
5
5
  SHA512:
6
- metadata.gz: d622dcb0c21bd5f01ec339928e9638f1a0dfc7bcfc0aa52026832672c37037294dd94082e376ed8094eff08269563f8c1b7fe28601941bb971b0d9fff11e8d48
7
- data.tar.gz: 1bc9c24af389bd3daccde3fc5dd84c779e749060684a6e425386c60d063a02da8be5670dc3c067a6af26f8e38c269fb9eefe3ab535f9d72b50e12f43affbf2b7
6
+ metadata.gz: 0fdcce2f62d27eebaf4a294f4725abfe75212a26a30a62024d532a302446bcde074cb3ad8f4767b5fb8d20f851d77c01dde22e29ad333605eab70ad6f5cd8cec
7
+ data.tar.gz: f8a4721f5075b6769c8100896b0f92d06095959e40683d1d2006a9bcd9627613b04e7c5b6156e62b9064463f54df0a89941253ee63eaf845b18718cc6876465f
data/History.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # RELEASED
2
2
 
3
+ ## [v0.14.4](https://github.com/cucumber/aruba/compare/v0.14.3...v0.14.4)
4
+
5
+ * Fix command spawning when run in directories with spaces (#490)
6
+ * Ensure setup is still done when using `@no-clobber` (#529)
7
+ * Make `#expand_path` handle absolute paths correctly (#486)
8
+
3
9
  ## [v0.14.3](https://github.com/cucumber/aruba/compare/v0.14.2...v0.14.3)
4
10
 
5
11
  * Fix path bug (#422)
@@ -9,57 +9,48 @@ Feature: Cleanup Aruba Working Directory
9
9
  Background:
10
10
  Given I use a fixture named "cli-app"
11
11
 
12
- Scenario: Changes in the filesystem
13
- Given a file named "tmp/aruba/file.txt" with "content"
14
- And a directory named "tmp/aruba/dir.d"
15
- And a file named "features/flushing.feature" with:
12
+ Scenario: Clean up artifacts and pwd from a previous scenario
13
+ Given a file named "features/cleanup.feature" with:
16
14
  """
17
15
  Feature: Check
18
- Scenario: Check
19
- Then a file named "file.txt" does not exist
20
- And a directory named "dir.d" does not exist
16
+ Scenario: Check #1
17
+ Given a file named "file.txt" with "content"
18
+ And a directory named "dir.d"
19
+ Then a file named "file.txt" should exist
20
+ And a directory named "dir.d" should exist
21
+ When I cd to "dir.d"
22
+ And I run `pwd`
23
+ Then the output should match %r</tmp/aruba/dir.d$>
24
+
25
+ Scenario: Check #2
26
+ Then a file named "file.txt" should not exist
27
+ And a directory named "dir.d" should not exist
28
+ When I run `pwd`
29
+ Then the output should match %r</tmp/aruba$>
21
30
  """
22
31
  When I run `cucumber`
23
32
  Then the features should all pass
24
33
 
25
34
  Scenario: Do not clobber before run
35
+ The `@no-clobber` tag stops Aruba from clearing out its scratch directory.
36
+ Other setup steps are still performed, such as setting the current working
37
+ directory.
38
+
26
39
  Given a file named "tmp/aruba/file.txt" with "content"
27
40
  And a directory named "tmp/aruba/dir.d"
28
- And a file named "features/flushing.feature" with:
41
+ And a file named "features/cleanup.feature" with:
29
42
  """
30
43
  Feature: Check
31
- @no-clobber
32
- Scenario: Check
44
+ Scenario: Check #1
45
+ Given a file named "file.txt" with "content"
46
+ And a directory named "dir.d"
33
47
  Then a file named "file.txt" should exist
34
48
  And a directory named "dir.d" should exist
35
- """
36
- When I run `cucumber`
37
- Then the features should all pass
38
-
39
- Scenario: Cleanup and verify the previous scenario
40
- Given a file named "features/flushing.feature" with:
41
- """
42
- Feature: Check
43
- Scenario: Check #1
44
- Given a file named "tmp/aruba/file.txt" with "content"
45
- And a directory named "tmp/aruba/dir.d"
46
49
 
50
+ @no-clobber
47
51
  Scenario: Check #2
48
- Then a file named "file.txt" should not exist
49
- And a directory named "dir.d" should not exist
50
- """
51
- When I run `cucumber`
52
- Then the features should all pass
53
-
54
- Scenario: Current directory from previous scenario is reseted
55
- Given a file named "features/non-existence.feature" with:
56
- """
57
- Feature: Reset
58
- Scenario: Reset #1
59
- Given a directory named "dir1"
60
- When I cd to "dir1"
61
-
62
- Scenario: Reset #2
52
+ Then a file named "file.txt" should exist
53
+ And a directory named "dir.d" should exist
63
54
  When I run `pwd`
64
55
  Then the output should match %r</tmp/aruba$>
65
56
  """
@@ -25,8 +25,8 @@ module Aruba
25
25
  # This will only clean up aruba's working directory to remove all
26
26
  # artifacts of your tests. This does NOT clean up the current working
27
27
  # directory.
28
- def setup_aruba
29
- Aruba::Setup.new(aruba).call
28
+ def setup_aruba(clobber = true)
29
+ Aruba::Setup.new(aruba).call(clobber)
30
30
 
31
31
  self
32
32
  end
@@ -163,7 +163,8 @@ module Aruba
163
163
  path.to_s
164
164
  else
165
165
  directory = File.join(aruba.root_directory, aruba.current_directory)
166
- ArubaPath.new(File.join(*[directory, dir_string, file_name].compact)).expand_path.to_s
166
+ directory = File.expand_path(dir_string, directory) if dir_string
167
+ File.expand_path(file_name, directory)
167
168
  end
168
169
  end
169
170
  # rubocop:enable Metrics/MethodLength
@@ -294,7 +294,7 @@ module Aruba
294
294
 
295
295
  # @deprecated
296
296
  def assert_exit_status_and_partial_output(expect_to_pass, expected)
297
- Aruba.platform.deprecated('The use of "assert_exit_status_and_partial_output" is deprecated. Use "#assert_access" and "#assert_partial_output" instead')
297
+ Aruba.platform.deprecated('The use of "assert_exit_status_and_partial_output" is deprecated. Use "#assert_success" and "#assert_partial_output" instead')
298
298
 
299
299
  assert_success(expect_to_pass)
300
300
  assert_partial_output(expected, all_output)
@@ -20,6 +20,10 @@ After do
20
20
  aruba.command_monitor.clear
21
21
  end
22
22
 
23
+ Before('@no-clobber') do
24
+ setup_aruba(false)
25
+ end
26
+
23
27
  Before('~@no-clobber') do
24
28
  setup_aruba
25
29
  end
@@ -13,7 +13,7 @@ module Aruba
13
13
 
14
14
  # Convert to array
15
15
  def to_a
16
- Shellwords.split __getobj__
16
+ [__getobj__]
17
17
  end
18
18
 
19
19
  if RUBY_VERSION < '1.9'
@@ -10,14 +10,9 @@ module Aruba
10
10
  #
11
11
  # @private
12
12
  class WindowsCommandString < SimpleDelegator
13
- def initialize(cmd)
14
- __setobj__ format('%s /c "%s"', Aruba.platform.which('cmd.exe'), cmd)
15
- end
16
-
17
13
  # Convert to array
18
14
  def to_a
19
- Shellwords.split( __getobj__.gsub('\\', 'ARUBA_TMP_PATHSEPARATOR') ).
20
- map { |w| w.gsub('ARUBA_TMP_PATHSEPARATOR', '\\') }
15
+ [cmd_path, '/c', __getobj__]
21
16
  end
22
17
 
23
18
  if RUBY_VERSION < '1.9'
@@ -26,6 +21,12 @@ module Aruba
26
21
  end
27
22
  alias inspect to_s
28
23
  end
24
+
25
+ private
26
+
27
+ def cmd_path
28
+ Aruba.platform.which('cmd.exe')
29
+ end
29
30
  end
30
31
  end
31
32
  end
@@ -10,10 +10,10 @@ module Aruba
10
10
  @runtime = runtime
11
11
  end
12
12
 
13
- def call
13
+ def call(clobber = true)
14
14
  return if runtime.setup_already_done?
15
15
 
16
- working_directory
16
+ working_directory(clobber)
17
17
  events
18
18
 
19
19
  runtime.setup_done
@@ -23,8 +23,10 @@ module Aruba
23
23
 
24
24
  private
25
25
 
26
- def working_directory
27
- Aruba.platform.rm File.join(runtime.config.root_directory, runtime.config.working_directory), :force => true
26
+ def working_directory(clobber = true)
27
+ if clobber
28
+ Aruba.platform.rm File.join(runtime.config.root_directory, runtime.config.working_directory), :force => true
29
+ end
28
30
  Aruba.platform.mkdir File.join(runtime.config.root_directory, runtime.config.working_directory)
29
31
  Aruba.platform.chdir runtime.config.root_directory
30
32
  end
@@ -1,3 +1,3 @@
1
1
  module Aruba
2
- VERSION = '0.14.3'.freeze
2
+ VERSION = '0.14.4'.freeze
3
3
  end
@@ -654,6 +654,10 @@ describe Aruba::Api do
654
654
  it { expect(@aruba.expand_path(@file_name)).to eq File.expand_path(@file_path) }
655
655
  end
656
656
 
657
+ context 'when file_path is given' do
658
+ it { expect(@aruba.expand_path(@file_path)).to eq @file_path }
659
+ end
660
+
657
661
  context 'when path contains "."' do
658
662
  it { expect(@aruba.expand_path('.')).to eq File.expand_path(aruba.current_directory) }
659
663
  end
@@ -0,0 +1,17 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe Aruba::Platforms::UnixCommandString do
4
+ let(:command_string) { described_class.new(base_command) }
5
+
6
+ describe '#to_a' do
7
+ context 'with a command with a path' do
8
+ let(:base_command) { '/foo/bar' }
9
+ it { expect(command_string.to_a).to eq [base_command] }
10
+ end
11
+
12
+ context 'with a command with a path containing spaces' do
13
+ let(:base_command) { '/foo bar/baz' }
14
+ it { expect(command_string.to_a).to eq [base_command] }
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,22 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe Aruba::Platforms::WindowsCommandString do
4
+ let(:command_string) { described_class.new(base_command) }
5
+ let(:cmd_path) { 'C:\Some Path\cmd.exe' }
6
+
7
+ before do
8
+ allow(Aruba.platform).to receive(:which).with('cmd.exe').and_return(cmd_path)
9
+ end
10
+
11
+ describe '#to_a' do
12
+ context 'with a command with a path' do
13
+ let(:base_command) { 'C:\Foo\Bar' }
14
+ it { expect(command_string.to_a).to eq [cmd_path, '/c', base_command] }
15
+ end
16
+
17
+ context 'with a command with a path containing spaces' do
18
+ let(:base_command) { 'C:\Foo Bar\Baz' }
19
+ it { expect(command_string.to_a).to eq [cmd_path, '/c', base_command] }
20
+ end
21
+ end
22
+ end
@@ -56,5 +56,41 @@ RSpec.describe Aruba::Processes::SpawnProcess do
56
56
 
57
57
  it { expect {process.start}.to raise_error Aruba::LaunchError }
58
58
  end
59
+
60
+ context 'with a command with a space in the path on unix' do
61
+ let(:child) { instance_double(ChildProcess::AbstractProcess).as_null_object }
62
+ let(:io) { instance_double(ChildProcess::AbstractIO).as_null_object }
63
+ let(:command) { 'foo' }
64
+ let(:command_path) { '/path with space/foo' }
65
+
66
+ before do
67
+ allow(Aruba.platform).to receive(:command_string).and_return Aruba::Platforms::UnixCommandString
68
+ allow(Aruba.platform).to receive(:which).with(command, anything).and_return(command_path)
69
+ allow(ChildProcess).to receive(:build).with(command_path).and_return(child)
70
+ allow(child).to receive(:io).and_return io
71
+ allow(child).to receive(:environment).and_return({})
72
+ end
73
+
74
+ it { expect { process.start }.to_not raise_error }
75
+ end
76
+
77
+ context 'with a command with a space in the path on windows' do
78
+ let(:child) { instance_double(ChildProcess::AbstractProcess).as_null_object }
79
+ let(:io) { instance_double(ChildProcess::AbstractIO).as_null_object }
80
+ let(:command) { 'foo' }
81
+ let(:cmd_path) { 'C:\Some Path\cmd.exe' }
82
+ let(:command_path) { 'D:\Bar Baz\foo' }
83
+
84
+ before do
85
+ allow(Aruba.platform).to receive(:command_string).and_return Aruba::Platforms::WindowsCommandString
86
+ allow(Aruba.platform).to receive(:which).with('cmd.exe').and_return(cmd_path)
87
+ allow(Aruba.platform).to receive(:which).with(command, anything).and_return(command_path)
88
+ allow(ChildProcess).to receive(:build).with(cmd_path, '/c', command_path).and_return(child)
89
+ allow(child).to receive(:io).and_return io
90
+ allow(child).to receive(:environment).and_return({})
91
+ end
92
+
93
+ it { expect { process.start }.to_not raise_error }
94
+ end
59
95
  end
60
96
  end
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.14.3
4
+ version: 0.14.4
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: 2017-12-15 00:00:00.000000000 Z
16
+ date: 2018-03-06 00:00:00.000000000 Z
17
17
  dependencies:
18
18
  - !ruby/object:Gem::Dependency
19
19
  name: cucumber
@@ -412,6 +412,8 @@ files:
412
412
  - spec/aruba/matchers/path_spec.rb
413
413
  - spec/aruba/platform/simple_table_spec.rb
414
414
  - spec/aruba/platform/windows_environment_variables_spec.rb
415
+ - spec/aruba/platforms/unix_command_string_spec.rb
416
+ - spec/aruba/platforms/windows_command_string_spec.rb
415
417
  - spec/aruba/rspec_spec.rb
416
418
  - spec/aruba/runtime_spec.rb
417
419
  - spec/aruba/spawn_process_spec.rb
@@ -473,8 +475,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
473
475
  version: '0'
474
476
  requirements: []
475
477
  rubyforge_project:
476
- rubygems_version: 2.6.13
478
+ rubygems_version: 2.7.6
477
479
  signing_key:
478
480
  specification_version: 4
479
- summary: aruba-0.14.3
481
+ summary: aruba-0.14.4
480
482
  test_files: []