mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			51 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
# frozen_string_literal: false
 | 
						|
require "test/unit"
 | 
						|
require "irb"
 | 
						|
 | 
						|
module TestIRB
 | 
						|
  class TestCompletion < Test::Unit::TestCase
 | 
						|
    def test_nonstring_module_name
 | 
						|
      begin
 | 
						|
        require "irb/completion"
 | 
						|
        bug5938 = '[ruby-core:42244]'
 | 
						|
        bundle_exec = ENV.key?('BUNDLE_GEMFILE') ? ['-rbundler/setup'] : []
 | 
						|
        cmds = bundle_exec + %W[-W0 -rirb -rirb/completion -e IRB.setup(__FILE__)
 | 
						|
         -e IRB.conf[:MAIN_CONTEXT]=IRB::Irb.new.context
 | 
						|
         -e module\sFoo;def\sself.name;//;end;end
 | 
						|
         -e IRB::InputCompletor::CompletionProc.call("[1].first.")
 | 
						|
         -- -f --]
 | 
						|
        status = assert_in_out_err(cmds, "", //, [], bug5938)
 | 
						|
        assert(status.success?, bug5938)
 | 
						|
      rescue LoadError
 | 
						|
        skip "cannot load irb/completion"
 | 
						|
      end
 | 
						|
    end
 | 
						|
 | 
						|
    def test_complete_numeric
 | 
						|
      assert_include(IRB::InputCompletor.retrieve_completion_data("1r.positi", bind: binding), "1r.positive?")
 | 
						|
      assert_empty(IRB::InputCompletor.retrieve_completion_data("1i.positi", bind: binding))
 | 
						|
    end
 | 
						|
 | 
						|
    def test_complete_symbol
 | 
						|
      _ = :aiueo
 | 
						|
      assert_include(IRB::InputCompletor.retrieve_completion_data(":a", bind: binding), ":aiueo")
 | 
						|
      assert_empty(IRB::InputCompletor.retrieve_completion_data(":irb_unknown_symbol_abcdefg", bind: binding))
 | 
						|
    end
 | 
						|
 | 
						|
    def test_complete_symbol_failure
 | 
						|
      assert_nil(IRB::InputCompletor::PerfectMatchedProc.(":aiueo", bind: binding))
 | 
						|
    end
 | 
						|
 | 
						|
    def test_complete_reserved_words
 | 
						|
      candidates = IRB::InputCompletor.retrieve_completion_data("de", bind: binding)
 | 
						|
      %w[def defined?].each do |word|
 | 
						|
        assert_include candidates, word
 | 
						|
      end
 | 
						|
 | 
						|
      candidates = IRB::InputCompletor.retrieve_completion_data("__", bind: binding)
 | 
						|
      %w[__ENCODING__ __LINE__ __FILE__].each do |word|
 | 
						|
        assert_include candidates, word
 | 
						|
      end
 | 
						|
    end
 | 
						|
  end
 | 
						|
end
 |