summaryrefslogtreecommitdiff
path: root/test/irb
AgeCommit message (Collapse)Author
10 hoursSync IRB f9347b1 (#10611)Stan Lo
4 days[ruby/irb] Stop using ExtendCommandBundle internallyStan Lo
(https://github.com/ruby/irb/pull/925) This module was used to extend both commands and helpers when they're not separated. Now that they are, and we have a Command module, we should move command-related logic to the Command module and update related references. This will make the code easier to understand and refactor in the future. https://github.com/ruby/irb/commit/f74ec97236
4 days[ruby/irb] Remove exit command workaround, handle IRB_EXIT intomoya ishida
debug_readline (https://github.com/ruby/irb/pull/923) * Remove exit and exti! command workaround when executed outside of IRB Command was a method. It could be executed outside of IRB. Workaround for it is no longer needed. * Handle IRB_EXIT in debug mode * Add exit and exit! command in rdbg mode https://github.com/ruby/irb/commit/0b5dd6afd0
5 days[ruby/irb] Add MultiIRB commands testKuniaki Igarashi
(https://github.com/ruby/irb/pull/929) https://github.com/ruby/irb/commit/c6bbc424c3
6 days[ruby/irb] Fix % escape in prompt formattomoya ishida
(https://github.com/ruby/irb/pull/927) https://github.com/ruby/irb/commit/08eee25d28
6 days[ruby/irb] Accept " " for colorizing "\t" testtomoya ishida
(https://github.com/ruby/irb/pull/924) https://github.com/ruby/irb/commit/c8182fa490
10 days[ruby/irb] Allow defining custom commands in IRBStan Lo
(https://github.com/ruby/irb/pull/886) This is a feature that has been requested for a long time. It is now possible to define custom commands in IRB. Example usage: ```ruby require "irb/command" class HelloCommand < IRB::Command::Base description "Prints hello world" category "My commands" help_message "It doesn't do more than printing hello world." def execute puts "Hello world" end end IRB::Command.register(:hello, HelloCommand) ``` https://github.com/ruby/irb/commit/888643467c
12 days[ruby/irb] Pass statements to Context#evaluateStan Lo
(https://github.com/ruby/irb/pull/920) This has a few benefits: - We can keep hiding the evaluation logic inside the Context level, which has always been the convention until #824 was merged recently. - Although not an official API, gems like `debug` and `mission_control-jobs` patch `Context#evaluate` to wrap their own logic around it. This implicit contract was broken after #824, and this change restores it. In addition to the refactor, I also converted some context-level evaluation tests into integration tests, which are more robust and easier to maintain. https://github.com/ruby/irb/commit/b32aee4068
14 days[ruby/irb] Command implementation not by methodtomoya ishida
(https://github.com/ruby/irb/pull/824) * Command is not a method * Fix command test * Implement non-method command name completion * Add test for ExtendCommandBundle.def_extend_command * Add helper method install test * Remove spaces in command input parse * Remove command arg unquote in help command * Simplify Statement and handle execution in IRB::Irb * Tweak require, const name * Always install CommandBundle module to main object * Remove considering local variable in command or expression check * Remove unused method, tweak * Remove outdated comment for help command arg Co-authored-by: Stan Lo <stan001212@gmail.com> --------- https://github.com/ruby/irb/commit/8fb776e379 Co-authored-by: Stan Lo <stan001212@gmail.com>
2024-03-25[ruby/irb] Cache RDoc::RI::Driver.newtomoya ishida
(https://github.com/ruby/irb/pull/911) * Cache RDoc::RI::Driver.new to improve performance and to avoid flaky test * Insert sleep to fix flaky rendering test that renders document dialog https://github.com/ruby/irb/commit/da84e6cb56
2024-03-24[ruby/irb] Fix indent test for new relinetomoya ishida
(https://github.com/ruby/irb/pull/908) https://github.com/ruby/irb/commit/7c16ce033e
2024-03-16[ruby/irb] Fix irb_history saved to current directorytomoya ishida
(https://github.com/ruby/irb/pull/901) * Always save irb_history in HOME or XDG_CONFIG_HOME Also split irbrc search logic from irb_history search logic as a refactor * Remove IRB.conf[:RC_NAME_GENERATOR] because it's not configurable This conf is used to specify which irbrc to load. Need to configure before irbrc is loaded, so it's actually not configurable. This conf is also used for history file search, but it is configurable by conf[:HISTORY_FILE]. * remove rc_file_test because it is tested with rc_files, remove useless test setup * Make internal irbrc searching method private https://github.com/ruby/irb/commit/11d03a6ff7
2024-03-06[ruby/irb] Clear temporary directoriesNobuyoshi Nakada
(https://github.com/ruby/irb/pull/894) https://github.com/ruby/irb/commit/dc0dd25a39
2024-03-06[ruby/irb] Prevent `irb_history`'s creation during HistoryTestStan Lo
(https://github.com/ruby/irb/pull/893) Some cases of it currently create `~/.irb_history` files unintentionally while others don't. This is caused by the varying levels of setup/cleanup between them. This commit fixes the issue by wrapping every single test inside a consistent test setup and teardown callbacks. https://github.com/ruby/irb/commit/a2a3cbb0ef
2024-03-05[ruby/irb] Add the ability to fetch and load multiple irb files.Haroon Ahmed
(https://github.com/ruby/irb/pull/859) This allows hierarchy when loading rc files for example both files below are loaded; project/.irbrc ~/.irbrc https://github.com/ruby/irb/commit/b53ebc6655 Co-authored-by: Stan Lo <stan001212@gmail.com>
2024-03-01[ruby/irb] Escape closing square brackets in regexpPeter Zhu
Fixes the following warning: test/irb/test_command.rb:546: warning: regular expression has ']' without escape https://github.com/ruby/irb/commit/7efadc243b
2024-03-01[ruby/irb] Restructure workspace managementStan Lo
(https://github.com/ruby/irb/pull/888) * Remove dead irb_level method * Restructure workspace management Currently, workspace is an attribute of IRB::Context in most use cases. But when some workspace commands are used, like `pushws` or `popws`, a workspace will be created and used along side with the original workspace attribute. This complexity is not necessary and will prevent us from expanding multi-workspace support in the future. So this commit introduces a @workspace_stack ivar to IRB::Context so IRB can have a more natural way to manage workspaces. * Fix pushws without args * Always display workspace stack after related commands are used https://github.com/ruby/irb/commit/61560b99b3
2024-02-19Omit a bizzarre test in IRBNobuyoshi Nakada
2024-02-19Load rubygems explicitly for tests of test/irbHiroshi SHIBATA
2024-02-19[ruby/irb] Fix `irb:rdbg` for ruby headStan Lo
(https://github.com/ruby/irb/pull/876) * Update binding.irb check for Ruby head With https://github.com/ruby/ruby/pull/9605, backtrace in Ruby head now has a new format. This commit updates the check for binding.irb to work with Ruby head. * Do not include a backtick in error messages and backtraces [Feature #16495] --------- https://github.com/ruby/irb/commit/ebffd3d976 Co-authored-by: Yusuke Endoh <mame@ruby-lang.org>
2024-02-19[ruby/irb] Update error message assertions for Ruby 3.4Stan Lo
(https://github.com/ruby/irb/pull/874) https://github.com/ruby/ruby/pull/9605 changes both quotes and format for exception messages. So we need to update the assertions in the tests. https://github.com/ruby/irb/commit/9359d4b51d
2024-02-19Revert 25d74b9527cd525042ad0b612b794fa331d3a318 at test/irbHiroshi SHIBATA
2024-02-18[ruby/irb] Revamp `help` commandStan Lo
(https://github.com/ruby/irb/pull/877) * Make help command display help for individual commands Usage: `help [command]` If the command is not specified, it will display a list of all available commands. If the command is specified, it will display the banner OR description of the command. If the command is not found, it will display a message saying that the command is not found. * Rename test/irb/cmd to test/irb/command * Add banner to edit and ls commands * Promote help command in the help message 1. Make `show_cmds` an alias of `help` so it's not displayed in the help message 2. Update description of the help command to reflect `help <command>` syntax * Rename banner to help_message https://github.com/ruby/irb/commit/43a2c99f3f
2024-02-16[ruby/irb] Standardize command related namesStan Lo
(https://github.com/ruby/irb/pull/873) * Replace ExtendCommand with Command and standardize command related names 1. Rename lib/irb/extend-command.rb to lib/irb/command.rb 2. Rename lib/irb/cmd/*.rb to lib/irb/command/*.rb 3. Rename test/irb/test_cmd.rb to test/irb/test_command.rb 4. Rename ExtendCommand to Command * Alias ExtendCommand to Command and deprecate it * Rename Command::Nop to Command::Base * Not deprecate old constants just yet * Add lib/irb/cmd/nop.rb back https://github.com/ruby/irb/commit/462c1284af
2024-02-16[ruby/irb] Support repeating debugger input by passing empty inputStan Lo
to it (https://github.com/ruby/irb/pull/856) * Test IRB's behaviour with empty input * Handle empty input and pass it to debugger Since `rdbg` accepts empty input to repeat the previous command, IRB should take empty input in `irb:rdbg` sessions and pass them to the debugger. Currently, IRB simply ignores empty input and does nothing. This commit creates `EmptyInput` to represent empty input so it can fit into the current IRB's input processing flow in `Irb#eval_input`. https://github.com/ruby/irb/commit/0e9db419be
2024-02-15Show the method owner in backtracesYusuke Endoh
``` test.rb:1:in 'Object#toplevel_meth': unhandled exception from test.rb:4:in 'Foo.class_meth' from test.rb:6:in 'Foo#instance_meth' from test.rb:11:in 'singleton_meth' from test.rb:13:in '<main>' ``` [Feature #19117]
2024-02-15Do not include a backtick in error messages and backtracesYusuke Endoh
[Feature #16495]
2024-02-14[ruby/irb] Repurpose the help command to display the help messageStan Lo
(https://github.com/ruby/irb/pull/872) See #787 for more details. https://github.com/ruby/irb/commit/d9192d92d0
2024-02-14[ruby/irb] Improve constant lookup in SourceFindertomoya ishida
(https://github.com/ruby/irb/pull/871) https://github.com/ruby/irb/commit/87c279ccf2
2024-02-13[ruby/irb] Fix SourceFinder's constant evaluation issueStan Lo
(https://github.com/ruby/irb/pull/869) Currently, if the signature's constant part is not defined, a NameError would be raised. ``` irb(main):001> show_source Foo (eval):1:in `<top (required)>': uninitialized constant Foo (NameError) Foo ^^^ from (irb):1:in `<main>' ``` This commit fixes the issue and simplifies the `edit` command's implementation. https://github.com/ruby/irb/commit/8c16e029d1
2024-02-13[ruby/irb] Refactor eval_path and `SourceFinder::Source`Stan Lo
(https://github.com/ruby/irb/pull/870) * Assign `@eval_path` through `irb_path=` method This simplifies the original caching logic for the `eval_path` method and makes it easier to understand. * Refactor SourceFinder::Source https://github.com/ruby/irb/commit/c63e4c4035
2024-02-12[ruby/irb] Powerup show_source by enabling RubyVM.keep_script_linestomoya ishida
(https://github.com/ruby/irb/pull/862) * Powerup show_source by enabling RubyVM.keep_script_lines * Add file_content field to avoid reading file twice while show_source * Change path passed to eval, don't change irb_path. * Encapsulate source coloring logic and binary file check insode class Source * Add edit command testcase when irb_path does not exist * Memoize irb_path existence to reduce file existence check calculating eval_path https://github.com/ruby/irb/commit/239683a937
2024-02-12[ruby/irb] Fix exit! command warning and method behaviortomoya ishida
(https://github.com/ruby/irb/pull/868) * Fix exit! command warning and method behavior * Remove arg(0) from Kernel.exit and Kernel.exit! https://github.com/ruby/irb/commit/372bc59bf5
2024-02-11[ruby/irb] Polish the exit! command and its testsStan Lo
(https://github.com/ruby/irb/pull/867) * Remove IRB.irb_exit! method It's not necessary to introduce a new method just for the exit! command at this moment. * Rename ExitForcedAction to ForceExit * Move force exit tests to a dedicated file * Fix nested history saving with exit! command Because we switched to use `Kernel#exit` instead of `exit!`, the outer session's ensure block in `Irb#run` will be run, which will save the history. This means the separate check to save history when force exiting is no longer necessary. * execute_lines helper should also capture IRB setup's output This prevents setup warnings from being printed to test output while allowing those output to be tested. * Update readme https://github.com/ruby/irb/commit/899d10ade1
2024-02-10[ruby/irb] Introduce exit! commandIgnacio Chiazzo Cardarello
(https://github.com/ruby/irb/pull/851) * Added failing test for when writing history on exit * Save history on exit * Exit early when calling Kernel.exit * use status 0 for kernel.exit * Added test for nested sessions * Update lib/irb.rb --------- https://github.com/ruby/irb/commit/c0a5f31679 Co-authored-by: Stan Lo <stan001212@gmail.com>
2024-02-07[ruby/irb] Polish tracer integration and testsStan Lo
(https://github.com/ruby/irb/pull/864) * Remove useless ivar * Simplify tracer test setup * Treat tracer like a normal development dependency * Only require ext/tracer when value is truthy * Make tracer integration skip IRB traces https://github.com/ruby/irb/commit/a97a4129a7
2024-02-06[ruby/irb] Fix usage of tracer gem and add testsNuno Silva
(https://github.com/ruby/irb/pull/857) The new tests are skipped when ruby below 3.1, as it was a default gem on it, and in a version we do not support. This also move definition of `use_tracer` to module Context instead of monkey patch. https://github.com/ruby/irb/commit/08834fbd5f
2024-02-03[ruby/irb] Consume the warning for non-existent history pathNobuyoshi Nakada
Fix https://github.com/ruby/irb/pull/852#issuecomment-1925170358 https://github.com/ruby/irb/commit/9a7e060e57
2024-02-02[ruby/irb] Add a warning for when the history path doesn't existIgnacio Chiazzo Cardarello
(https://github.com/ruby/irb/pull/852) * Add a warning for when the history path doesn't exist * warn when the directory does not exist * added test for when the history_file does not exist * Update lib/irb/history.rb --------- https://github.com/ruby/irb/commit/9e6fa67212 Co-authored-by: Stan Lo <stan001212@gmail.com>
2024-02-01[ruby/irb] Add rubocop with a few basic styling rulesStan Lo
(https://github.com/ruby/irb/pull/849) * Use rubocop to enforce a few styling rules * Add a CI job for linting https://github.com/ruby/irb/commit/4f60cd88bb
2024-02-01[ruby/irb] Reset history counter even when @loaded_history_lines isStan Lo
not defined (https://github.com/ruby/irb/pull/853) The issue (https://github.com/ruby/debug/issues/1064) is caused by a combination of factors: 1. When user starts an IRB session without a history file, the `@loaded_history_lines` ivar is not defined. 2. If the user then starts the `irb:rdbg` session, the history counter is not set, because the `@loaded_history_lines` is not defined. 3. Because `irb:rdbg` saves the history before passing Ruby expression to the debugger, it saves the history with duplicated lines. The number grows in exponential order. 4. When the user exits the `irb:rdbg` session, the history file could be bloated with duplicated lines. This commit fixes the issue by resetting the history counter even when `@loaded_history_lines` is not defined. https://github.com/ruby/irb/commit/4afc98c258
2024-02-01[ruby/irb] Skip re-setup when creating a child sessionNuno Silva
(https://github.com/ruby/irb/pull/850) https://github.com/ruby/irb/commit/06b2d00dd3
2024-01-31[ruby/irb] Omit 2 encoding error related tests for TruffleRubyStan Lo
(https://github.com/ruby/irb/pull/854) They're failing due to an issue in Prism: https://github.com/ruby/prism/issues/2129 So we need to skip them until: - The issue is fixed in Prism - TruffleRuby is updated to a version of Prism that includes the fix https://github.com/ruby/irb/commit/bfafaa5fbc
2024-01-30[ruby/irb] Fix undef and alias indenttomoya ishida
(https://github.com/ruby/irb/pull/838) https://github.com/ruby/irb/commit/a641746b18
2024-01-26Try to use irb instead of rubygems for completion testHiroshi SHIBATA
I'm not sure why OpenBSD suggest `rubygems_plugin` file for this. https://rubyci.s3.amazonaws.com/openbsd-current/ruby-master/log/20240126T013005Z.fail.html.gz It seems environmental issue, not irb.
2024-01-25[ruby/irb] diabled ==> disabledydah
https://github.com/ruby/irb/commit/295797ff37
2024-01-25[ruby/irb] overrided ==> overriddenydah
https://github.com/ruby/irb/commit/b77b23aade
2024-01-23Fixup 2e69137dbe9fd7c03dac9b8adc30a7eba3ecb10bHiroshi SHIBATA
2024-01-22Use version dependant library for completion testHiroshi SHIBATA
2024-01-08[ruby/irb] Make SourceFinder ignore binary sourcesStan Lo
(https://github.com/ruby/irb/pull/836) https://github.com/ruby/irb/commit/73b35bb7f4