spec/unit/pager_spec.rb in chef-dk-3.0.36 vs spec/unit/pager_spec.rb in chef-dk-3.1.0
- old
+ new
@@ -1,117 +1,117 @@
-#
-# Copyright:: Copyright (c) 2015 Chef Software Inc.
-# License:: Apache License, Version 2.0
-#
-# 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 "spec_helper"
-require "chef-dk/pager"
-
-describe ChefDK::Pager do
-
- context "with default options" do
-
- subject(:pager) { ChefDK::Pager.new }
-
- it "gives ENV for env" do
- expect(pager.env).to eq(ENV)
- end
-
- it "checks stdout for TTY" do
- expect($stdout).to receive(:tty?).twice.and_call_original
- expect(pager.have_tty?).to eq($stdout.tty?)
- end
-
- it "enables paging" do
- expect(pager).to receive(:env).and_return({ "PAGER" => "less" })
- expect(pager).to receive(:have_tty?).and_return(true)
- expect(pager.pager_enabled?).to be(true)
- end
- end
-
- context "with paging enabled" do
-
- subject(:pager) do
- ChefDK::Pager.new(enable_pager: true).tap do |p|
- allow(p).to receive(:env).and_return({ "PAGER" => "less" })
- allow(p).to receive(:have_tty?).and_return(true)
- end
- end
-
- let(:pipe_read) { instance_double("IO") }
- let(:pipe_write) { instance_double("IO") }
-
- let(:pager_env) { { "LESS" => "-FRX", "LV" => "-c" } }
-
- before do
- allow(IO).to receive(:pipe).and_return([pipe_read, pipe_write])
- end
-
- it "provides a UI object with stdout set to a pipe" do
- expect(pager.ui.out_stream).to eq(pipe_write)
- end
-
- it "starts the pager" do
- expect(Kernel).to receive(:trap).with(:INT, "IGNORE")
- expect(Process).to receive(:spawn).with(pager_env, "less", in: pipe_read).and_return(12345)
- expect(pipe_read).to receive(:close)
- pager.start
- end
-
- it "waits for the pager to exit" do
- expect(Kernel).to receive(:trap).with(:INT, "IGNORE")
- expect(Process).to receive(:spawn).with(pager_env, "less", in: pipe_read).and_return(12345)
- expect(pipe_read).to receive(:close)
- pager.start
-
- expect(pipe_write).to receive(:close)
- expect(Process).to receive(:waitpid).with(12345)
- pager.wait
- end
- end
-
- context "with paging disabled" do
-
- subject(:pager) do
- ChefDK::Pager.new(enable_pager: false).tap do |p|
- allow(p).to receive(:env).and_return({ "PAGER" => "less" })
- allow(p).to receive(:have_tty?).and_return(true)
- end
- end
-
- before do
- expect(IO).to_not receive(:pipe)
- end
-
- it "provides a UI with stdout set to stdout" do
- expect(pager.ui.out_stream).to eq($stdout)
- end
-
- it "no-ops on pager start" do
- expect(Kernel).to_not receive(:trap)
- expect(Process).to_not receive(:spawn)
- pager.start
- end
-
- it "no-ops on pager wait" do
- expect(Kernel).to_not receive(:trap)
- expect(Process).to_not receive(:spawn)
- pager.start
-
- expect(Process).to_not receive(:waitpid)
- pager.wait
- end
-
- end
-end
+#
+# Copyright:: Copyright (c) 2015 Chef Software Inc.
+# License:: Apache License, Version 2.0
+#
+# 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 "spec_helper"
+require "chef-dk/pager"
+
+describe ChefDK::Pager do
+
+ context "with default options" do
+
+ subject(:pager) { ChefDK::Pager.new }
+
+ it "gives ENV for env" do
+ expect(pager.env).to eq(ENV)
+ end
+
+ it "checks stdout for TTY" do
+ expect($stdout).to receive(:tty?).twice.and_call_original
+ expect(pager.have_tty?).to eq($stdout.tty?)
+ end
+
+ it "enables paging" do
+ expect(pager).to receive(:env).and_return({ "PAGER" => "less" })
+ expect(pager).to receive(:have_tty?).and_return(true)
+ expect(pager.pager_enabled?).to be(true)
+ end
+ end
+
+ context "with paging enabled" do
+
+ subject(:pager) do
+ ChefDK::Pager.new(enable_pager: true).tap do |p|
+ allow(p).to receive(:env).and_return({ "PAGER" => "less" })
+ allow(p).to receive(:have_tty?).and_return(true)
+ end
+ end
+
+ let(:pipe_read) { instance_double("IO") }
+ let(:pipe_write) { instance_double("IO") }
+
+ let(:pager_env) { { "LESS" => "-FRX", "LV" => "-c" } }
+
+ before do
+ allow(IO).to receive(:pipe).and_return([pipe_read, pipe_write])
+ end
+
+ it "provides a UI object with stdout set to a pipe" do
+ expect(pager.ui.out_stream).to eq(pipe_write)
+ end
+
+ it "starts the pager" do
+ expect(Kernel).to receive(:trap).with(:INT, "IGNORE")
+ expect(Process).to receive(:spawn).with(pager_env, "less", in: pipe_read).and_return(12345)
+ expect(pipe_read).to receive(:close)
+ pager.start
+ end
+
+ it "waits for the pager to exit" do
+ expect(Kernel).to receive(:trap).with(:INT, "IGNORE")
+ expect(Process).to receive(:spawn).with(pager_env, "less", in: pipe_read).and_return(12345)
+ expect(pipe_read).to receive(:close)
+ pager.start
+
+ expect(pipe_write).to receive(:close)
+ expect(Process).to receive(:waitpid).with(12345)
+ pager.wait
+ end
+ end
+
+ context "with paging disabled" do
+
+ subject(:pager) do
+ ChefDK::Pager.new(enable_pager: false).tap do |p|
+ allow(p).to receive(:env).and_return({ "PAGER" => "less" })
+ allow(p).to receive(:have_tty?).and_return(true)
+ end
+ end
+
+ before do
+ expect(IO).to_not receive(:pipe)
+ end
+
+ it "provides a UI with stdout set to stdout" do
+ expect(pager.ui.out_stream).to eq($stdout)
+ end
+
+ it "no-ops on pager start" do
+ expect(Kernel).to_not receive(:trap)
+ expect(Process).to_not receive(:spawn)
+ pager.start
+ end
+
+ it "no-ops on pager wait" do
+ expect(Kernel).to_not receive(:trap)
+ expect(Process).to_not receive(:spawn)
+ pager.start
+
+ expect(Process).to_not receive(:waitpid)
+ pager.wait
+ end
+
+ end
+end