From c8016f6c0af91ed5a105ea82911259a7bff03666 Mon Sep 17 00:00:00 2001 From: William Ma Date: Fri, 14 Aug 2020 13:48:03 -0400 Subject: [PATCH] named args: add method tests --- Library/Homebrew/test/cli/named_args_spec.rb | 112 +++++++++++++++++++ Library/Homebrew/test/spec_helper.rb | 2 + Library/Homebrew/test/support/helper/cask.rb | 14 +++ 3 files changed, 128 insertions(+) create mode 100644 Library/Homebrew/test/cli/named_args_spec.rb create mode 100644 Library/Homebrew/test/support/helper/cask.rb diff --git a/Library/Homebrew/test/cli/named_args_spec.rb b/Library/Homebrew/test/cli/named_args_spec.rb new file mode 100644 index 0000000000..c3bc0f6e62 --- /dev/null +++ b/Library/Homebrew/test/cli/named_args_spec.rb @@ -0,0 +1,112 @@ +# frozen_string_literal: true + +require "cli/named_args" + +describe Homebrew::CLI::NamedArgs do + let(:foo) do + formula "foo" do + url "https://brew.sh" + version "1.0" + end + end + + let(:foo_keg) do + path = (HOMEBREW_CELLAR/"foo/1.0").resolved_path + mkdir_p path + Keg.new(path) + end + + let(:bar) do + formula "bar" do + url "https://brew.sh" + version "1.0" + end + end + + let(:bar_keg) do + path = (HOMEBREW_CELLAR/"bar/1.0").resolved_path + mkdir_p path + Keg.new(path) + end + + let(:baz) do + Cask::CaskLoader.load(+<<~RUBY) + cask "baz" do + version "1.0" + end + RUBY + end + + describe "#to_formulae" do + it "returns formulae" do + allow(Formulary).to receive(:loader_for).and_call_original + stub_formula_loader foo + stub_formula_loader bar + + expect(described_class.new("foo", "bar").to_formulae).to eq [foo, bar] + end + end + + describe "#to_formulae_and_casks" do + it "returns formulae and casks" do + allow(Formulary).to receive(:loader_for).and_call_original + stub_formula_loader foo + stub_cask_loader baz + + expect(described_class.new("foo", "baz").to_formulae_and_casks).to eq [foo, baz] + end + end + + describe "#to_resolved_formulae" do + it "returns resolved formulae" do + allow(Formulary).to receive(:resolve).and_return(foo, bar) + + expect(described_class.new("foo", "bar").to_resolved_formulae).to eq [foo, bar] + end + end + + describe "#to_resolved_formulae_to_casks" do + it "returns resolved formulae, as well as casks" do + allow(Formulary).to receive(:resolve).and_call_original + allow(Formulary).to receive(:resolve).with("foo", any_args).and_return foo + stub_cask_loader baz + + resolved_formulae, casks = described_class.new("foo", "baz").to_resolved_formulae_to_casks + + expect(resolved_formulae).to eq [foo] + expect(casks).to eq [baz] + end + end + + describe "#to_casks" do + it "returns casks" do + stub_cask_loader baz + + expect(described_class.new("baz").to_casks).to eq [baz] + end + end + + describe "#to_kegs" do + it "returns kegs" do + named_args = described_class.new("foo", "bar") + allow(named_args).to receive(:resolve_keg).with("foo").and_return foo_keg + allow(named_args).to receive(:resolve_keg).with("bar").and_return bar_keg + + expect(named_args.to_kegs).to eq [foo_keg, bar_keg] + end + end + + describe "#to_kegs_to_casks" do + it "returns kegs, as well as casks" do + named_args = described_class.new("foo", "baz") + allow(named_args).to receive(:resolve_keg).and_call_original + allow(named_args).to receive(:resolve_keg).with("foo").and_return foo_keg + stub_cask_loader baz + + kegs, casks = named_args.to_kegs_to_casks + + expect(kegs).to eq [foo_keg] + expect(casks).to eq [baz] + end + end +end diff --git a/Library/Homebrew/test/spec_helper.rb b/Library/Homebrew/test/spec_helper.rb index 9e6ee3e826..1aad194f5e 100644 --- a/Library/Homebrew/test/spec_helper.rb +++ b/Library/Homebrew/test/spec_helper.rb @@ -36,6 +36,7 @@ $LOAD_PATH.push(File.expand_path("#{ENV["HOMEBREW_LIBRARY"]}/Homebrew/test/suppo require_relative "../global" require "test/support/no_seed_progress_formatter" +require "test/support/helper/cask" require "test/support/helper/fixtures" require "test/support/helper/formula" require "test/support/helper/mktmpdir" @@ -86,6 +87,7 @@ RSpec.configure do |config| config.include(RuboCop::RSpec::ExpectOffense) + config.include(Test::Helper::Cask) config.include(Test::Helper::Fixtures) config.include(Test::Helper::Formula) config.include(Test::Helper::MkTmpDir) diff --git a/Library/Homebrew/test/support/helper/cask.rb b/Library/Homebrew/test/support/helper/cask.rb new file mode 100644 index 0000000000..875d9ac8a9 --- /dev/null +++ b/Library/Homebrew/test/support/helper/cask.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +require "cask/cask_loader" + +module Test + module Helper + module Cask + def stub_cask_loader(cask, ref = cask.token) + loader = ::Cask::CaskLoader::FromInstanceLoader.new cask + allow(::Cask::CaskLoader).to receive(:for).with(ref).and_return(loader) + end + end + end +end