| 
									
										
										
										
											2017-02-11 03:07:23 +01:00
										 |  |  | require "extend/ARGV" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | describe HomebrewArgvExtension do | 
					
						
							| 
									
										
										
										
											2017-02-25 10:09:26 +01:00
										 |  |  |   subject { argv.extend(described_class) } | 
					
						
							| 
									
										
										
										
											2017-02-11 03:07:23 +01:00
										 |  |  |   let(:argv) { ["mxcl"] } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   describe "#formulae" do | 
					
						
							|  |  |  |     it "raises an error when a Formula is unavailable" do | 
					
						
							|  |  |  |       expect { subject.formulae }.to raise_error FormulaUnavailableError | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     context "when there are no Formulae" do | 
					
						
							|  |  |  |       let(:argv) { [] } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       it "returns an empty array" do | 
					
						
							|  |  |  |         expect(subject.formulae).to be_empty | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   describe "#casks" do | 
					
						
							|  |  |  |     it "returns an empty array if there is no match" do | 
					
						
							|  |  |  |       expect(subject.casks).to eq [] | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   describe "#kegs" do | 
					
						
							|  |  |  |     context "when there are matching Kegs" do | 
					
						
							|  |  |  |       before(:each) do | 
					
						
							|  |  |  |         keg = HOMEBREW_CELLAR + "mxcl/10.0" | 
					
						
							|  |  |  |         keg.mkpath | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       it "returns an array of Kegs" do | 
					
						
							|  |  |  |         expect(subject.kegs.length).to eq 1
 | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     context "when there are no matching Kegs" do | 
					
						
							|  |  |  |       let(:argv) { [] } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       it "returns an empty array" do | 
					
						
							|  |  |  |         expect(subject.kegs).to be_empty | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   describe "#named" do | 
					
						
							|  |  |  |     let(:argv) { ["foo", "--debug", "-v"] } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it "returns an array of non-option arguments" do | 
					
						
							|  |  |  |       expect(subject.named).to eq ["foo"] | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     context "when there are no named arguments" do | 
					
						
							|  |  |  |       let(:argv) { [] } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       it "returns an empty array" do | 
					
						
							|  |  |  |         expect(subject.named).to be_empty | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   describe "#options_only" do | 
					
						
							|  |  |  |     let(:argv) { ["--foo", "-vds", "a", "b", "cdefg"] } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it "returns an array of option arguments" do | 
					
						
							|  |  |  |       expect(subject.options_only).to eq ["--foo", "-vds"] | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   describe "#flags_only" do | 
					
						
							|  |  |  |     let(:argv) { ["--foo", "-vds", "a", "b", "cdefg"] } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it "returns an array of flags" do | 
					
						
							|  |  |  |       expect(subject.flags_only).to eq ["--foo"] | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   describe "#empty?" do | 
					
						
							|  |  |  |     let(:argv) { [] } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it "returns true if it is empty" do | 
					
						
							|  |  |  |       expect(subject).to be_empty | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   describe "#switch?" do | 
					
						
							|  |  |  |     let(:argv) { ["-ns", "-i", "--bar", "-a-bad-arg"] } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it "returns true if the given string is a switch" do | 
					
						
							|  |  |  |       %w[n s i].each do |s| | 
					
						
							|  |  |  |         expect(subject.switch?(s)).to be true | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it "returns false if the given string is not a switch" do | 
					
						
							|  |  |  |       %w[b ns bar --bar -n a bad arg].each do |s| | 
					
						
							|  |  |  |         expect(subject.switch?(s)).to be false | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   describe "#flag?" do | 
					
						
							|  |  |  |     let(:argv) { ["--foo", "-bq", "--bar"] } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it "returns true if the given string is a flag" do | 
					
						
							|  |  |  |       expect(subject.flag?("--foo")).to eq true | 
					
						
							|  |  |  |       expect(subject.flag?("--bar")).to eq true | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it "returns true if there is a switch with the same initial character" do | 
					
						
							|  |  |  |       expect(subject.flag?("--baz")).to eq true | 
					
						
							|  |  |  |       expect(subject.flag?("--qux")).to eq true | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it "returns false if there is no matching flag" do | 
					
						
							|  |  |  |       expect(subject.flag?("--frotz")).to eq false | 
					
						
							|  |  |  |       expect(subject.flag?("--debug")).to eq false | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   describe "#value" do | 
					
						
							|  |  |  |     let(:argv) { ["--foo=", "--bar=ab"] } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it "returns the value for a given string" do | 
					
						
							|  |  |  |       expect(subject.value("foo")).to eq "" | 
					
						
							|  |  |  |       expect(subject.value("bar")).to eq "ab" | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it "returns nil if there is no matching argument" do | 
					
						
							|  |  |  |       expect(subject.value("baz")).to be nil | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   describe "#values" do | 
					
						
							|  |  |  |     let(:argv) { ["--foo=", "--bar=a", "--baz=b,c"] } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it "returns the value for a given argument" do | 
					
						
							|  |  |  |       expect(subject.values("foo")).to eq [] | 
					
						
							|  |  |  |       expect(subject.values("bar")).to eq ["a"] | 
					
						
							|  |  |  |       expect(subject.values("baz")).to eq ["b", "c"] | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it "returns nil if there is no matching argument" do | 
					
						
							|  |  |  |       expect(subject.values("qux")).to be nil | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | end |