Pregunta

Ruby 1.9 tiene un excelente soporte Unicode, ¿no?

# 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.

¿Dónde están mis letras no latinas?¿Siempre debería escribir mis exámenes en mi horrible inglés?

Porque puedo definir métodos con cualquier símbolo Unicode:

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

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

PD Mi pregunta parece no estar clara.Quiero preguntar cómo hacer que la descripción del error del minitest muestre mis definiciones no latinas.

¿Fue útil?

Solución

se trata expresión regular utilizada aquí.muestra caracteres utf-8 después del parche de mono /\W+/ con /\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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top