cli/parser: add tests for inferring option names
This commit is contained in:
		
							parent
							
								
									ab97c30b14
								
							
						
					
					
						commit
						3a6f34d27b
					
				@ -252,6 +252,42 @@ describe Homebrew::CLI::Parser do
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  describe "test inferrability of args" do
 | 
			
		||||
    subject(:parser) {
 | 
			
		||||
      described_class.new do
 | 
			
		||||
        switch "--switch-a"
 | 
			
		||||
        switch "--switch-b"
 | 
			
		||||
        switch "--foo-switch"
 | 
			
		||||
        flag "--flag-foo="
 | 
			
		||||
        comma_array "--comma-array-foo"
 | 
			
		||||
      end
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    it "parses a valid switch that uses `_` instead of `-`" do
 | 
			
		||||
      args = parser.parse(["--switch_a"])
 | 
			
		||||
      expect(args).to be_switch_a
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    it "parses a valid flag that uses `_` instead of `-`" do
 | 
			
		||||
      args = parser.parse(["--flag_foo=foo.txt"])
 | 
			
		||||
      expect(args.flag_foo).to eq "foo.txt"
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    it "parses a valid comma_array that uses `_` instead of `-`" do
 | 
			
		||||
      args = parser.parse(["--comma_array_foo=foo.txt,bar.txt"])
 | 
			
		||||
      expect(args.comma_array_foo).to eq %w[foo.txt bar.txt]
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    it "raises an error when option is ambiguous" do
 | 
			
		||||
      expect { parser.parse(["--switch"]) }.to raise_error(RuntimeError, /ambiguous option: --switch/)
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    it "inferrs the option from an abbreviated name" do
 | 
			
		||||
      args = parser.parse(["--foo"])
 | 
			
		||||
      expect(args).to be_foo_switch
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  describe "test argv extensions" do
 | 
			
		||||
    subject(:parser) {
 | 
			
		||||
      described_class.new do
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user