* 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:
nobu 2011-03-08 14:40:33 +00:00
Родитель 6917c26a7a
Коммит 1f9ee467c8
2 изменённых файлов: 140 добавлений и 0 удалений

Просмотреть файл

@ -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>
* process.c (get_sc_ngroups_max): try to use NGROUPS_MAX at first if

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