From ef70677e881855f1e7b51f158752e1ee78b27a96 Mon Sep 17 00:00:00 2001
From: Markus Reiter <me@reitermark.us>
Date: Sun, 9 Oct 2016 18:03:15 +0200
Subject: [PATCH] Add test for `Formatter.columns`.

---
 Library/Homebrew/cask/spec/formatter_spec.rb | 56 ++++++++++++++++++++
 1 file changed, 56 insertions(+)
 create mode 100644 Library/Homebrew/cask/spec/formatter_spec.rb

diff --git a/Library/Homebrew/cask/spec/formatter_spec.rb b/Library/Homebrew/cask/spec/formatter_spec.rb
new file mode 100644
index 0000000000..7e143d9331
--- /dev/null
+++ b/Library/Homebrew/cask/spec/formatter_spec.rb
@@ -0,0 +1,56 @@
+require "spec_helper"
+require "utils/formatter"
+require "utils/tty"
+
+describe Formatter do
+  describe "::columns" do
+    let(:input) {
+      [
+        'aa',
+        'bbb',
+        'ccc',
+        'dd'
+      ]
+    }
+    subject { described_class.columns(input) }
+
+    it "doesn't output columns if $stdout is not a TTY." do
+      allow_any_instance_of(IO).to receive(:tty?).and_return(false)
+      allow(Tty).to receive(:width).and_return(10)
+
+      expect(subject).to eq(
+        "aa\n" \
+        "bbb\n" \
+        "ccc\n" \
+        "dd\n"
+      )
+    end
+
+    describe "$stdout is a TTY" do
+      it "outputs columns" do
+        allow_any_instance_of(IO).to receive(:tty?).and_return(true)
+        allow(Tty).to receive(:width).and_return(10)
+
+        expect(subject).to eq(
+          "aa    ccc\n" \
+          "bbb   dd\n"
+        )
+      end
+
+      it "outputs only one line if everything fits" do
+        allow_any_instance_of(IO).to receive(:tty?).and_return(true)
+        allow(Tty).to receive(:width).and_return(20)
+
+        expect(subject).to eq(
+          "aa   bbb  ccc  dd\n"
+        )
+      end
+    end
+
+    describe "with empty input" do
+      let(:input) { [] }
+
+      it { is_expected.to eq("\n") }
+    end
+  end
+end
-- 
GitLab