mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* test/misc/test_ruby_mode.rb: test for ruby-mode.el.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31069 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
6917c26a7a
commit
1f9ee467c8
2 changed files with 140 additions and 0 deletions
|
@ -1,3 +1,7 @@
|
||||||
|
Tue Mar 8 23:40:30 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||||
|
|
||||||
|
* test/misc/test_ruby_mode.rb: test for ruby-mode.el.
|
||||||
|
|
||||||
Tue Mar 8 23:27:38 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
|
Tue Mar 8 23:27:38 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
|
||||||
|
|
||||||
* process.c (get_sc_ngroups_max): try to use NGROUPS_MAX at first if
|
* process.c (get_sc_ngroups_max): try to use NGROUPS_MAX at first if
|
||||||
|
|
136
test/misc/test_ruby_mode.rb
Normal file
136
test/misc/test_ruby_mode.rb
Normal file
|
@ -0,0 +1,136 @@
|
||||||
|
require 'test/unit'
|
||||||
|
require 'tempfile'
|
||||||
|
require 'mkmf'
|
||||||
|
|
||||||
|
class TestRubyMode < Test::Unit::TestCase
|
||||||
|
MISCDIR = File.expand_path("../../../misc", __FILE__)
|
||||||
|
if emacs = find_executable0(ENV["EMACS"] || "emacs")
|
||||||
|
EMACS = %W"#{emacs} --quick --batch --load #{MISCDIR}/ruby-mode.el"
|
||||||
|
else
|
||||||
|
EMACS = nil
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
class TestRubyMode
|
||||||
|
EVAL_OPT = "--eval"
|
||||||
|
EXPR_SAVE = "(save-buffer)"
|
||||||
|
EXPR_RUBYMODE = "(ruby-mode)"
|
||||||
|
EXPR_NOBACKUP = "(progn" \
|
||||||
|
" (set (make-local-variable \'backup-inhibited) t)" \
|
||||||
|
" (set-buffer-modified-p t)" \
|
||||||
|
")"
|
||||||
|
|
||||||
|
def run_emacs(src, *exprs)
|
||||||
|
tmp = Tempfile.new(%w"ruby-mode.test. .rb")
|
||||||
|
tmp.puts(src)
|
||||||
|
tmp.close
|
||||||
|
exprs = exprs.map {|expr| [EVAL_OPT, expr]}.flatten
|
||||||
|
exprs.unshift(EVAL_OPT, EXPR_RUBYMODE)
|
||||||
|
exprs.unshift(EVAL_OPT, EXPR_NOBACKUP)
|
||||||
|
output = IO.popen([*EMACS, tmp.path, *exprs, err:[:child, :out]], "r") {|e| e.read}
|
||||||
|
tmp.open
|
||||||
|
result = tmp.read
|
||||||
|
tmp.close!
|
||||||
|
return result, output
|
||||||
|
end
|
||||||
|
|
||||||
|
class TestIndent < self
|
||||||
|
EXPR_INDENT = "(indent-region (point-min) (point-max))"
|
||||||
|
|
||||||
|
def assert_indent(expected, source, *message)
|
||||||
|
if space = expected[/\A\n?(\s*\|)/, 1]
|
||||||
|
space = /^#{Regexp.quote(space)}/m
|
||||||
|
expected.gsub!(space, '')
|
||||||
|
source.gsub!(space, '')
|
||||||
|
end
|
||||||
|
result, output = run_emacs(source, EXPR_INDENT, EXPR_SAVE)
|
||||||
|
assert_match(/^Wrote /, output)
|
||||||
|
assert_equal(expected, result, *message)
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_simple
|
||||||
|
assert_indent('
|
||||||
|
|if foo
|
||||||
|
| bar
|
||||||
|
|end
|
||||||
|
|zot
|
||||||
|
|', '
|
||||||
|
|if foo
|
||||||
|
|bar
|
||||||
|
| end
|
||||||
|
| zot
|
||||||
|
|')
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_keyword_label
|
||||||
|
assert_indent('
|
||||||
|
|bar(class: XXX) do
|
||||||
|
| foo
|
||||||
|
|end
|
||||||
|
|bar
|
||||||
|
|', '
|
||||||
|
|bar(class: XXX) do
|
||||||
|
| foo
|
||||||
|
| end
|
||||||
|
| bar
|
||||||
|
|')
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_method_with_question_mark
|
||||||
|
assert_indent('
|
||||||
|
|if x.is_a?(XXX)
|
||||||
|
| foo
|
||||||
|
|end
|
||||||
|
|', '
|
||||||
|
|if x.is_a?(XXX)
|
||||||
|
| foo
|
||||||
|
| end
|
||||||
|
|')
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_expr_in_regexp
|
||||||
|
assert_indent('
|
||||||
|
|if /#{foo}/ =~ s
|
||||||
|
| x = 1
|
||||||
|
|end
|
||||||
|
|', '
|
||||||
|
|if /#{foo}/ =~ s
|
||||||
|
| x = 1
|
||||||
|
| end
|
||||||
|
|')
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_singleton_class
|
||||||
|
assert_indent('
|
||||||
|
|class<<bar
|
||||||
|
| foo
|
||||||
|
|end
|
||||||
|
|', '
|
||||||
|
|class<<bar
|
||||||
|
|foo
|
||||||
|
| end
|
||||||
|
|')
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_array_literal
|
||||||
|
assert_indent('
|
||||||
|
|foo = [
|
||||||
|
| bar
|
||||||
|
|]
|
||||||
|
|', '
|
||||||
|
|foo = [
|
||||||
|
| bar
|
||||||
|
| ]
|
||||||
|
|')
|
||||||
|
assert_indent('
|
||||||
|
|foo do
|
||||||
|
| [bar]
|
||||||
|
|end
|
||||||
|
|', '
|
||||||
|
|foo do
|
||||||
|
|[bar]
|
||||||
|
| end
|
||||||
|
|')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end if TestRubyMode::EMACS
|
Loading…
Add table
Add a link
Reference in a new issue