mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
783763bde9
The current code base is not uniform. After some discussion, we have chosen to go with double quotes by default.
136 lines
3.9 KiB
Ruby
136 lines
3.9 KiB
Ruby
require "active_support/test_case"
|
|
require "active_support/testing/autorun"
|
|
require "rails/generators/rails/app/app_generator"
|
|
require "tempfile"
|
|
|
|
module Rails
|
|
module Generators
|
|
class ARGVScrubberTest < ActiveSupport::TestCase # :nodoc:
|
|
# Future people who read this... These tests are just to surround the
|
|
# current behavior of the ARGVScrubber, they do not mean that the class
|
|
# *must* act this way, I just want to prevent regressions.
|
|
|
|
def test_version
|
|
["-v", "--version"].each do |str|
|
|
scrubber = ARGVScrubber.new [str]
|
|
output = nil
|
|
exit_code = nil
|
|
scrubber.extend(Module.new {
|
|
define_method(:puts) { |string| output = string }
|
|
define_method(:exit) { |code| exit_code = code }
|
|
})
|
|
scrubber.prepare!
|
|
assert_equal "Rails #{Rails::VERSION::STRING}", output
|
|
assert_equal 0, exit_code
|
|
end
|
|
end
|
|
|
|
def test_default_help
|
|
argv = ["zomg", "how", "are", "you"]
|
|
scrubber = ARGVScrubber.new argv
|
|
args = scrubber.prepare!
|
|
assert_equal ["--help"] + argv.drop(1), args
|
|
end
|
|
|
|
def test_prepare_returns_args
|
|
scrubber = ARGVScrubber.new ["hi mom"]
|
|
args = scrubber.prepare!
|
|
assert_equal "--help", args.first
|
|
end
|
|
|
|
def test_no_mutations
|
|
scrubber = ARGVScrubber.new ["hi mom"].freeze
|
|
args = scrubber.prepare!
|
|
assert_equal "--help", args.first
|
|
end
|
|
|
|
def test_new_command_no_rc
|
|
scrubber = Class.new(ARGVScrubber) {
|
|
def self.default_rc_file
|
|
File.join(Dir.tmpdir, "whatever")
|
|
end
|
|
}.new ["new"]
|
|
args = scrubber.prepare!
|
|
assert_equal [], args
|
|
end
|
|
|
|
def test_new_homedir_rc
|
|
file = Tempfile.new "myrcfile"
|
|
file.puts "--hello-world"
|
|
file.flush
|
|
|
|
message = nil
|
|
scrubber = Class.new(ARGVScrubber) {
|
|
define_singleton_method(:default_rc_file) do
|
|
file.path
|
|
end
|
|
define_method(:puts) { |msg| message = msg }
|
|
}.new ["new"]
|
|
args = scrubber.prepare!
|
|
assert_equal ["--hello-world"], args
|
|
assert_match "hello-world", message
|
|
assert_match file.path, message
|
|
ensure
|
|
file.close
|
|
file.unlink
|
|
end
|
|
|
|
def test_rc_whitespace_separated
|
|
file = Tempfile.new "myrcfile"
|
|
file.puts "--hello --world"
|
|
file.flush
|
|
|
|
message = nil
|
|
scrubber = Class.new(ARGVScrubber) {
|
|
define_method(:puts) { |msg| message = msg }
|
|
}.new ["new", "--rc=#{file.path}"]
|
|
args = scrubber.prepare!
|
|
assert_equal ["--hello", "--world"], args
|
|
ensure
|
|
file.close
|
|
file.unlink
|
|
end
|
|
|
|
def test_new_rc_option
|
|
file = Tempfile.new "myrcfile"
|
|
file.puts "--hello-world"
|
|
file.flush
|
|
|
|
message = nil
|
|
scrubber = Class.new(ARGVScrubber) {
|
|
define_method(:puts) { |msg| message = msg }
|
|
}.new ["new", "--rc=#{file.path}"]
|
|
args = scrubber.prepare!
|
|
assert_equal ["--hello-world"], args
|
|
assert_match "hello-world", message
|
|
assert_match file.path, message
|
|
ensure
|
|
file.close
|
|
file.unlink
|
|
end
|
|
|
|
def test_new_rc_option_and_custom_options
|
|
file = Tempfile.new "myrcfile"
|
|
file.puts "--hello"
|
|
file.puts "--world"
|
|
file.flush
|
|
|
|
scrubber = Class.new(ARGVScrubber) {
|
|
define_method(:puts) { |msg| }
|
|
}.new ["new", "tenderapp", "--love", "--rc=#{file.path}"]
|
|
|
|
args = scrubber.prepare!
|
|
assert_equal ["tenderapp", "--hello", "--world", "--love"], args
|
|
ensure
|
|
file.close
|
|
file.unlink
|
|
end
|
|
|
|
def test_no_rc
|
|
scrubber = ARGVScrubber.new ["new", "--no-rc"]
|
|
args = scrubber.prepare!
|
|
assert_equal [], args
|
|
end
|
|
end
|
|
end
|
|
end
|