spec/functional/resource/remote_file_spec.rb in microwave-1.0.4 vs spec/functional/resource/remote_file_spec.rb in microwave-11.400.2

- old
+ new

@@ -22,11 +22,17 @@ describe Chef::Resource::RemoteFile do include_context Chef::Resource::File let(:file_base) { "remote_file_spec" } let(:source) { 'http://localhost:9000/nyan_cat.png' } - let(:expected_content) { IO.read(File.join(CHEF_SPEC_DATA, 'remote_file', 'nyan_cat.png')) } + let(:expected_content) do + content = File.open(File.join(CHEF_SPEC_DATA, 'remote_file', 'nyan_cat.png'), "rb") do |f| + f.read + end + content.force_encoding(Encoding::BINARY) if content.respond_to?(:force_encoding) + content + end def create_resource node = Chef::Node.new events = Chef::EventDispatch::Dispatcher.new run_context = Chef::RunContext.new(node, {}, events) @@ -37,22 +43,41 @@ let!(:resource) do create_resource end + let(:default_mode) do + # TODO: Lots of ugly here :( + # RemoteFile uses FileUtils.cp. FileUtils does a copy by opening the + # destination file and writing to it. Before 1.9.3, it does not preserve + # the mode of the copied file. In 1.9.3 and after, it does. So we have to + # figure out what the default mode ought to be via heuristic. + + t = Tempfile.new("get-the-mode") + path = t.path + path_2 = t.path + "fileutils-mode-test" + FileUtils.cp(path, path_2) + t.close + m = File.stat(path_2).mode + (07777 & m).to_s(8) + end + before(:all) do - Thin::Logging.silent = false @server = TinyServer::Manager.new @server.start @api = TinyServer::API.instance @api.clear @api.get("/nyan_cat.png", 200) { - IO.read(File.join(CHEF_SPEC_DATA, 'remote_file', 'nyan_cat.png')) + File.open(File.join(CHEF_SPEC_DATA, 'remote_file', 'nyan_cat.png'), "rb") do |f| + f.read + end } end after(:all) do @server.stop end it_behaves_like "a file resource" + + it_behaves_like "a securable resource with reporting" end