Описание мини-теста и нелатинского теста - PullRequest
2 голосов
/ 24 февраля 2012

Ruby 1.9 имеет классную поддержку Unicode, да?

# encoding: utf-8
require 'minitest/spec'
require 'minitest/autorun'

describe "test" do
  it "α β γ δ & a b c d" do
    (1+1).must_equal 3
  end
end

# 1) Failure:
# test_0001__a_b_c_d(TestSpec) [test.rb:7]:
# Expected 3, not 2.

Где мои нелатинские буквы? Я всегда должен писать свои тесты на своем ужасном английском?

Поскольку я могу определять методы с любым символом Unicode:

def α_β_γ_δ_a_b_c_d
  puts "geeeek"
end

α_β_γ_δ_a_b_c_d
#=> "geeeek"

PS Мой вопрос кажется неясным. Я хочу спросить, как сделать описание сбоя minitest, чтобы показать мои нелатинские определения.

1 Ответ

2 голосов
/ 25 февраля 2012

это около регулярное выражение, используемое здесь .он показывает символы utf-8 после исправления обезьяны /\W+/ с /\s+/.

# encoding: utf-8
require 'minitest/spec'
require 'minitest/autorun'

class MiniTest::Spec < MiniTest::Unit::TestCase
  def self.it desc = "anonymous", &block
    block ||= proc { skip "(no tests defined)" }

    @specs ||= 0
    @specs += 1

    # regexp /\W+/ replaced with /\s+/
    name = "test_%04d_%s" % [ @specs, desc.gsub(/\s+/, '_').downcase ]

    define_method name, &block

    self.children.each do |mod|
      mod.send :undef_method, name if mod.public_method_defined? name
    end
  end
end

describe "test" do
  it "α β γ δ & a b c D" do
    (1+1).must_equal 3
  end
end

#   1) Failure:
# test_0001_α_β_γ_δ_&_a_b_c_d(test) [forwarding.rb:24]:
# Expected: 3
#   Actual: 2
...