aruba 0.14.3 → 0.14.4

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
- 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: []