spec/kitchen/state_file_spec.rb in test-kitchen-1.10.1 vs spec/kitchen/state_file_spec.rb in test-kitchen-1.10.2.dev
- old
+ new
@@ -1,129 +1,129 @@
-# -*- 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 "kitchen/errors"
-require "kitchen/state_file"
-require "kitchen/util"
-
-class YamledState
- attr_accessor :yoinks
-end
-
-describe Kitchen::StateFile do
-
- let(:state_file) { Kitchen::StateFile.new("/tmp", "oftheunion") }
- let(:file_name) { "/tmp/.kitchen/oftheunion.yml" }
-
- before do
- FakeFS.activate!
- FileUtils.mkdir_p("/tmp")
- end
-
- after do
- FakeFS.deactivate!
- FakeFS::FileSystem.clear
- end
-
- describe "#read" do
-
- it "returns an empty hash if the file does not exist" do
- state_file.read.must_equal(Hash.new)
- end
-
- it "returns and empty hash if the file is zero length" do
- stub_state_file!("")
-
- state_file.read.must_equal(Hash.new)
- end
-
- it "returns a Hash with symbolized keys from the state file" do
- stub_state_file!
-
- state_file.read.must_equal(
- :cloud_id => 42,
- :flavor => "extra_crispy"
- )
- end
-
- it "arbitrary objects aren't deserialized from state file" do
- stub_state_file! <<-'YAML'.gsub(/^ {8}/, "")
- --- !ruby/object:YamledState
- yoinks: zoinks
- YAML
-
- state_file.read.class.wont_equal YamledState
- state_file.read.class.must_equal Hash
- state_file.read.must_equal(:yoinks => "zoinks")
- end
-
- it "raises a StateFileLoadError if the state file cannot be parsed" do
- stub_state_file!("&*%^*")
-
- proc { state_file.read }.must_raise Kitchen::StateFileLoadError
- end
-
- end
-
- describe "#write" do
-
- it "creates the directory path to the state file" do
- File.directory?("/tmp/.kitchen").must_equal false
- state_file.write({})
- File.directory?("/tmp/.kitchen").must_equal true
- end
-
- it "writes a state file with stringified keys" do
- state_file.write(:thekey => "thyself")
-
- IO.read(file_name).split("\n").must_include "thekey: thyself"
- end
- end
-
- describe "#destroy" do
-
- it "executes if no file exists" do
- File.exist?(file_name).must_equal false
- state_file.destroy
- File.exist?(file_name).must_equal false
- end
-
- it "deletes the state file" do
- stub_state_file!
- state_file.destroy
-
- File.exist?(file_name).must_equal false
- end
- end
-
- private
-
- def stub_state_file!(yaml_string = nil)
- if yaml_string.nil?
- yaml_string = <<-'YAML'.gsub(/^ {8}/, "")
- ---
- cloud_id: 42
- flavor: extra_crispy
- YAML
- end
-
- FileUtils.mkdir_p(File.dirname(file_name))
- File.open(file_name, "wb") { |f| f.write(yaml_string) }
- 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 "kitchen/errors"
+require "kitchen/state_file"
+require "kitchen/util"
+
+class YamledState
+ attr_accessor :yoinks
+end
+
+describe Kitchen::StateFile do
+
+ let(:state_file) { Kitchen::StateFile.new("/tmp", "oftheunion") }
+ let(:file_name) { "/tmp/.kitchen/oftheunion.yml" }
+
+ before do
+ FakeFS.activate!
+ FileUtils.mkdir_p("/tmp")
+ end
+
+ after do
+ FakeFS.deactivate!
+ FakeFS::FileSystem.clear
+ end
+
+ describe "#read" do
+
+ it "returns an empty hash if the file does not exist" do
+ state_file.read.must_equal(Hash.new)
+ end
+
+ it "returns and empty hash if the file is zero length" do
+ stub_state_file!("")
+
+ state_file.read.must_equal(Hash.new)
+ end
+
+ it "returns a Hash with symbolized keys from the state file" do
+ stub_state_file!
+
+ state_file.read.must_equal(
+ :cloud_id => 42,
+ :flavor => "extra_crispy"
+ )
+ end
+
+ it "arbitrary objects aren't deserialized from state file" do
+ stub_state_file! <<-'YAML'.gsub(/^ {8}/, "")
+ --- !ruby/object:YamledState
+ yoinks: zoinks
+ YAML
+
+ state_file.read.class.wont_equal YamledState
+ state_file.read.class.must_equal Hash
+ state_file.read.must_equal(:yoinks => "zoinks")
+ end
+
+ it "raises a StateFileLoadError if the state file cannot be parsed" do
+ stub_state_file!("&*%^*")
+
+ proc { state_file.read }.must_raise Kitchen::StateFileLoadError
+ end
+
+ end
+
+ describe "#write" do
+
+ it "creates the directory path to the state file" do
+ File.directory?("/tmp/.kitchen").must_equal false
+ state_file.write({})
+ File.directory?("/tmp/.kitchen").must_equal true
+ end
+
+ it "writes a state file with stringified keys" do
+ state_file.write(:thekey => "thyself")
+
+ IO.read(file_name).split("\n").must_include "thekey: thyself"
+ end
+ end
+
+ describe "#destroy" do
+
+ it "executes if no file exists" do
+ File.exist?(file_name).must_equal false
+ state_file.destroy
+ File.exist?(file_name).must_equal false
+ end
+
+ it "deletes the state file" do
+ stub_state_file!
+ state_file.destroy
+
+ File.exist?(file_name).must_equal false
+ end
+ end
+
+ private
+
+ def stub_state_file!(yaml_string = nil)
+ if yaml_string.nil?
+ yaml_string = <<-'YAML'.gsub(/^ {8}/, "")
+ ---
+ cloud_id: 42
+ flavor: extra_crispy
+ YAML
+ end
+
+ FileUtils.mkdir_p(File.dirname(file_name))
+ File.open(file_name, "wb") { |f| f.write(yaml_string) }
+ end
+end