mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
62 lines
1.7 KiB
Ruby
62 lines
1.7 KiB
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
require "isolation/abstract_unit"
|
||
|
require "rails/command"
|
||
|
require "rails/commands/runner/runner_command"
|
||
|
|
||
|
class Rails::RunnerTest < ActiveSupport::TestCase
|
||
|
include ActiveSupport::Testing::Isolation
|
||
|
|
||
|
setup :build_app
|
||
|
teardown :teardown_app
|
||
|
|
||
|
def test_rails_runner_with_stdin
|
||
|
command_output = `echo "puts 'Hello world'" | #{app_path}/bin/rails runner -`
|
||
|
|
||
|
assert_equal <<~OUTPUT, command_output
|
||
|
Hello world
|
||
|
OUTPUT
|
||
|
end
|
||
|
|
||
|
def test_rails_runner_with_file
|
||
|
# We intentionally define a file with a name that matches the one of the
|
||
|
# script that we want to run to ensure that runner executes the latter one.
|
||
|
app_file "lib/foo.rb", "# Lib file"
|
||
|
|
||
|
app_file "foo.rb", <<-RUBY
|
||
|
puts "Hello world"
|
||
|
RUBY
|
||
|
|
||
|
assert_equal <<~OUTPUT, run_runner_command("foo.rb")
|
||
|
Hello world
|
||
|
OUTPUT
|
||
|
end
|
||
|
|
||
|
def test_rails_runner_with_ruby_code
|
||
|
assert_equal <<~OUTPUT, run_runner_command('puts "Hello world"')
|
||
|
Hello world
|
||
|
OUTPUT
|
||
|
end
|
||
|
|
||
|
def test_rails_runner_with_syntax_error_in_ruby_code
|
||
|
command_output = run_runner_command("This is not ruby code", allow_failure: true)
|
||
|
|
||
|
assert_match(/Please specify a valid ruby command/, command_output)
|
||
|
assert_equal 1, $?.exitstatus
|
||
|
end
|
||
|
|
||
|
def test_rails_runner_with_name_error_in_ruby_code
|
||
|
assert_raise(NameError) { IDoNotExist }
|
||
|
|
||
|
command_output = run_runner_command("IDoNotExist.new", allow_failure: true)
|
||
|
|
||
|
assert_match(/Please specify a valid ruby command/, command_output)
|
||
|
assert_equal 1, $?.exitstatus
|
||
|
end
|
||
|
|
||
|
private
|
||
|
def run_runner_command(argument, allow_failure: false)
|
||
|
rails "runner", argument, allow_failure: allow_failure
|
||
|
end
|
||
|
end
|