summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Keiser <john@johnkeiser.com>2016-08-16 10:47:07 -0700
committerGitHub <noreply@github.com>2016-08-16 10:47:07 -0700
commit5d473e96d783bec9a081436a62b77cb141a33233 (patch)
tree39a6106eb1981488a08afdd9807b9d5ba8b68d71
parent8fbadf6853dc46aabdcc0063f4d04412f3be48a0 (diff)
parenta9f7fc7c98e3e5924abfbe2d924083917a3e4b75 (diff)
downloadchef-5d473e96d783bec9a081436a62b77cb141a33233.tar.gz
Merge pull request #5211 from chef/jk/ruby23specs
Changes that get Jenkins running against Ruby 2.3
-rw-r--r--acceptance/basics/test/integration/helpers/serverspec/Gemfile8
-rw-r--r--acceptance/data-collector/test/integration/helpers/serverspec/Gemfile8
-rw-r--r--acceptance/fips/test/integration/fips-integration/serverspec/Gemfile6
-rw-r--r--acceptance/fips/test/integration/fips-unit-functional/serverspec/Gemfile4
-rw-r--r--spec/support/chef_helpers.rb22
-rw-r--r--spec/unit/knife/data_bag_from_file_spec.rb2
-rw-r--r--spec/unit/provider/remote_directory_spec.rb2
7 files changed, 50 insertions, 2 deletions
diff --git a/acceptance/basics/test/integration/helpers/serverspec/Gemfile b/acceptance/basics/test/integration/helpers/serverspec/Gemfile
new file mode 100644
index 0000000000..b56d1e1298
--- /dev/null
+++ b/acceptance/basics/test/integration/helpers/serverspec/Gemfile
@@ -0,0 +1,8 @@
+source "https://rubygems.org"
+
+# Until https://github.com/test-kitchen/busser-serverspec/pull/42 is merged and
+# released, we need to include rake and rspec-core in the Gemfile
+gem "rake"
+gem "rspec-core"
+gem "busser-serverspec"
+gem "serverspec"
diff --git a/acceptance/data-collector/test/integration/helpers/serverspec/Gemfile b/acceptance/data-collector/test/integration/helpers/serverspec/Gemfile
new file mode 100644
index 0000000000..b56d1e1298
--- /dev/null
+++ b/acceptance/data-collector/test/integration/helpers/serverspec/Gemfile
@@ -0,0 +1,8 @@
+source "https://rubygems.org"
+
+# Until https://github.com/test-kitchen/busser-serverspec/pull/42 is merged and
+# released, we need to include rake and rspec-core in the Gemfile
+gem "rake"
+gem "rspec-core"
+gem "busser-serverspec"
+gem "serverspec"
diff --git a/acceptance/fips/test/integration/fips-integration/serverspec/Gemfile b/acceptance/fips/test/integration/fips-integration/serverspec/Gemfile
index 3921e6a92a..d297c4314d 100644
--- a/acceptance/fips/test/integration/fips-integration/serverspec/Gemfile
+++ b/acceptance/fips/test/integration/fips-integration/serverspec/Gemfile
@@ -1,3 +1,9 @@
source "https://rubygems.org"
+# Until https://github.com/test-kitchen/busser-serverspec/pull/42 is merged and
+# released, we need to include rake and rspec-core in the Gemfile
+gem "rake"
+gem "rspec-core"
+gem "busser-serverspec"
+gem "serverspec"
gem "mixlib-shellout"
diff --git a/acceptance/fips/test/integration/fips-unit-functional/serverspec/Gemfile b/acceptance/fips/test/integration/fips-unit-functional/serverspec/Gemfile
index 3921e6a92a..03c7a9e657 100644
--- a/acceptance/fips/test/integration/fips-unit-functional/serverspec/Gemfile
+++ b/acceptance/fips/test/integration/fips-unit-functional/serverspec/Gemfile
@@ -1,3 +1,7 @@
source "https://rubygems.org"
+# Until https://github.com/test-kitchen/busser-serverspec/pull/42 is merged and
+# released, we need to include rake and rspec-core in the Gemfile
+gem "rake"
+gem "rspec-core"
gem "mixlib-shellout"
diff --git a/spec/support/chef_helpers.rb b/spec/support/chef_helpers.rb
index f64c14da4d..d0b5ad0bfd 100644
--- a/spec/support/chef_helpers.rb
+++ b/spec/support/chef_helpers.rb
@@ -84,6 +84,28 @@ def canonicalize_path(path)
windows? ? path.tr("/", '\\') : path
end
+# Makes a temp directory with a canonical path on any platform.
+# Only really needed to work around an issue on Windows where
+# Ruby's temp library generates paths with short names.
+def make_canonical_temp_directory
+ temp_directory = Dir.mktmpdir
+ if windows?
+ # On Windows, temporary file / directory path names may have shortened
+ # subdirectory names due to reliance on the TMP and TEMP environment variables
+ # in some Windows APIs and duplicated logic in Ruby's temp file implementation.
+ # To work around this in the unit test context, we obtain the long (canonical)
+ # path name via a Windows system call so that this path name can be used
+ # in expectations that assume the ability to canonically name paths in comparisons.
+ # Note that this was not an issue prior to Ruby 2.2 -- with Ruby 2.2,
+ # some Chef code started to use long file names, while Ruby's temp file implementation
+ # continued to return the shortened names -- this would cause these particular tests to
+ # fail if the username happened to be longer than 8 characters.
+ Chef::ReservedNames::Win32::File.get_long_path_name(temp_directory)
+ else
+ temp_directory
+ end
+end
+
# Check if a cmd exists on the PATH
def which(cmd)
paths = ENV["PATH"].split(File::PATH_SEPARATOR) + [ "/bin", "/usr/bin", "/sbin", "/usr/sbin" ]
diff --git a/spec/unit/knife/data_bag_from_file_spec.rb b/spec/unit/knife/data_bag_from_file_spec.rb
index 0b6f389e87..bf6bd82a68 100644
--- a/spec/unit/knife/data_bag_from_file_spec.rb
+++ b/spec/unit/knife/data_bag_from_file_spec.rb
@@ -52,7 +52,7 @@ describe Chef::Knife::DataBagFromFile do
k
end
- let(:tmp_dir) { Dir.mktmpdir }
+ let(:tmp_dir) { make_canonical_temp_directory }
let(:db_folder) { File.join(tmp_dir, data_bags_path, bag_name) }
let(:db_file) { Tempfile.new(["data_bag_from_file_test", ".json"], db_folder) }
let(:db_file2) { Tempfile.new(["data_bag_from_file_test2", ".json"], db_folder) }
diff --git a/spec/unit/provider/remote_directory_spec.rb b/spec/unit/provider/remote_directory_spec.rb
index b6fd4cfc8e..cb1b6e3cd8 100644
--- a/spec/unit/provider/remote_directory_spec.rb
+++ b/spec/unit/provider/remote_directory_spec.rb
@@ -121,7 +121,7 @@ describe Chef::Provider::RemoteDirectory do
@node.automatic_attrs[:platform] = :just_testing
@node.automatic_attrs[:platform_version] = :just_testing
- @destination_dir = Dir.mktmpdir << "/remote_directory_test"
+ @destination_dir = make_canonical_temp_directory << "/remote_directory_test"
@resource.path(@destination_dir)
end