spec/kitchen/util_spec.rb in test-kitchen-1.10.0 vs spec/kitchen/util_spec.rb in test-kitchen-1.10.1

- old
+ new

@@ -1,165 +1,165 @@ -# -*- encoding: utf-8 -*- -# -# Author:: Fletcher Nichol (<fnichol@nichol.ca>) -# -# Copyright (C) 2013, Fletcher Nichol -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -require_relative "../spec_helper" - -require "logger" - -require "kitchen/util" - -describe Kitchen::Util do - - describe ".to_logger_level" do - - it "returns nil for invalid symbols" do - Kitchen::Util.to_logger_level(:nope).must_be_nil - end - - %w[debug info warn error fatal].each do |level| - it "returns Logger::#{level.upcase} for :#{level} input" do - Kitchen::Util.to_logger_level(level.to_sym). - must_equal Logger.const_get(level.upcase) - end - end - end - - describe ".from_logger_level" do - - it "returns :fatal for invalid symbols" do - Kitchen::Util.from_logger_level("nope").must_equal :fatal - end - - %w[debug info warn error fatal].each do |level| - it "returns :#{level} for Logger::#{level.upcase} input" do - Kitchen::Util.from_logger_level(Logger.const_get(level.upcase)). - must_equal(level.to_sym) - end - end - end - - describe ".symbolized_hash" do - - it "returns itself if not a hash" do - obj = Object.new - Kitchen::Util.symbolized_hash(obj).must_equal obj - end - - it "preserves a symbolized hash" do - hash = { :one => [{ :two => "three" }] } - Kitchen::Util.symbolized_hash(hash).must_equal hash - end - - it "converts string keys into symbols" do - Kitchen::Util. - symbolized_hash("one" => [{ "two" => :three, :four => "five" }]). - must_equal(:one => [{ :two => :three, :four => "five" }]) - end - end - - describe ".stringified_hash" do - - it "returns itself if not a hash" do - obj = Object.new - Kitchen::Util.stringified_hash(obj).must_equal obj - end - - it "preserves a stringified hash" do - hash = { "one" => [{ "two" => "three" }] } - Kitchen::Util.stringified_hash(hash).must_equal hash - end - - it "converts symbol keys into strings" do - Kitchen::Util. - stringified_hash(:one => [{ :two => :three, "four" => "five" }]). - must_equal("one" => [{ "two" => :three, "four" => "five" }]) - end - end - - describe ".duration" do - - it "turns nil into a zero" do - Kitchen::Util.duration(nil).must_equal "(0m0.00s)" - end - - it "formats seconds to 2 digits" do - Kitchen::Util.duration(60).must_equal "(1m0.00s)" - end - - it "formats large values into minutes and seconds" do - Kitchen::Util.duration(48033).must_equal "(800m33.00s)" - end - end - - describe ".wrap_unix_command" do - - it "returns the wrapped command" do - end - - it "returns a false if command is nil" do - Kitchen::Util.wrap_command(nil).must_equal("sh -c '\nfalse\n'") - end - - it "returns a true if command string is empty" do - Kitchen::Util.wrap_command("yoyo").must_equal("sh -c '\nyoyo\n'") - end - - it "handles a command string with a trailing newline" do - Kitchen::Util.wrap_command("yep\n").must_equal("sh -c '\nyep\n'") - end - end - - describe ".outdent!" do - - it "modifies the argument string in place, destructively" do - string = "yep" - - Kitchen::Util.outdent!(string).object_id.must_equal string.object_id - end - - it "returns the same string if no leading whitespace exists" do - string = "one\ntwo\nthree" - - Kitchen::Util.outdent!(string).must_equal "one\ntwo\nthree" - end - - it "strips same amount of leading whitespace as found on first line" do - string = " one\n two\n three\nfour" - - Kitchen::Util.outdent!(string).must_equal "one\n two\n three\nfour" - end - end - - describe ".shell_helpers" do - - %w[ - exists do_wget do_curl do_fetch do_perl do_python do_download - ].each do |func| - it "contains a #{func} shell function" do - Kitchen::Util.shell_helpers.must_match "#{func}() {" - end - end - - it "does not contain bare single quotes" do - Kitchen::Util.shell_helpers.wont_match "'" - end - - def regexify(str) - Regexp.new("^\s+" + Regexp.escape(str) + "$") - end - end -end +# -*- encoding: utf-8 -*- +# +# Author:: Fletcher Nichol (<fnichol@nichol.ca>) +# +# Copyright (C) 2013, Fletcher Nichol +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +require_relative "../spec_helper" + +require "logger" + +require "kitchen/util" + +describe Kitchen::Util do + + describe ".to_logger_level" do + + it "returns nil for invalid symbols" do + Kitchen::Util.to_logger_level(:nope).must_be_nil + end + + %w[debug info warn error fatal].each do |level| + it "returns Logger::#{level.upcase} for :#{level} input" do + Kitchen::Util.to_logger_level(level.to_sym). + must_equal Logger.const_get(level.upcase) + end + end + end + + describe ".from_logger_level" do + + it "returns :fatal for invalid symbols" do + Kitchen::Util.from_logger_level("nope").must_equal :fatal + end + + %w[debug info warn error fatal].each do |level| + it "returns :#{level} for Logger::#{level.upcase} input" do + Kitchen::Util.from_logger_level(Logger.const_get(level.upcase)). + must_equal(level.to_sym) + end + end + end + + describe ".symbolized_hash" do + + it "returns itself if not a hash" do + obj = Object.new + Kitchen::Util.symbolized_hash(obj).must_equal obj + end + + it "preserves a symbolized hash" do + hash = { :one => [{ :two => "three" }] } + Kitchen::Util.symbolized_hash(hash).must_equal hash + end + + it "converts string keys into symbols" do + Kitchen::Util. + symbolized_hash("one" => [{ "two" => :three, :four => "five" }]). + must_equal(:one => [{ :two => :three, :four => "five" }]) + end + end + + describe ".stringified_hash" do + + it "returns itself if not a hash" do + obj = Object.new + Kitchen::Util.stringified_hash(obj).must_equal obj + end + + it "preserves a stringified hash" do + hash = { "one" => [{ "two" => "three" }] } + Kitchen::Util.stringified_hash(hash).must_equal hash + end + + it "converts symbol keys into strings" do + Kitchen::Util. + stringified_hash(:one => [{ :two => :three, "four" => "five" }]). + must_equal("one" => [{ "two" => :three, "four" => "five" }]) + end + end + + describe ".duration" do + + it "turns nil into a zero" do + Kitchen::Util.duration(nil).must_equal "(0m0.00s)" + end + + it "formats seconds to 2 digits" do + Kitchen::Util.duration(60).must_equal "(1m0.00s)" + end + + it "formats large values into minutes and seconds" do + Kitchen::Util.duration(48033).must_equal "(800m33.00s)" + end + end + + describe ".wrap_unix_command" do + + it "returns the wrapped command" do + end + + it "returns a false if command is nil" do + Kitchen::Util.wrap_command(nil).must_equal("sh -c '\nfalse\n'") + end + + it "returns a true if command string is empty" do + Kitchen::Util.wrap_command("yoyo").must_equal("sh -c '\nyoyo\n'") + end + + it "handles a command string with a trailing newline" do + Kitchen::Util.wrap_command("yep\n").must_equal("sh -c '\nyep\n'") + end + end + + describe ".outdent!" do + + it "modifies the argument string in place, destructively" do + string = "yep" + + Kitchen::Util.outdent!(string).object_id.must_equal string.object_id + end + + it "returns the same string if no leading whitespace exists" do + string = "one\ntwo\nthree" + + Kitchen::Util.outdent!(string).must_equal "one\ntwo\nthree" + end + + it "strips same amount of leading whitespace as found on first line" do + string = " one\n two\n three\nfour" + + Kitchen::Util.outdent!(string).must_equal "one\n two\n three\nfour" + end + end + + describe ".shell_helpers" do + + %w[ + exists do_wget do_curl do_fetch do_perl do_python do_download + ].each do |func| + it "contains a #{func} shell function" do + Kitchen::Util.shell_helpers.must_match "#{func}() {" + end + end + + it "does not contain bare single quotes" do + Kitchen::Util.shell_helpers.wont_match "'" + end + + def regexify(str) + Regexp.new("^\s+" + Regexp.escape(str) + "$") + end + end +end