Question

Ruby 1.9 a obtenu un support cool Unicode, oui?

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

Où sont mes lettres non latines? Je devrais toujours écrire mes tests dans mon horrible anglais?

Parce que je peux définir des méthodes avec n'importe quel symbole Unicode:

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

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

Ps Ma question ne semble pas claire. Je veux demander comment faire la description de l'échec de Minitest pour montrer mes définitions non latines.

Était-ce utile?

La solution

c'est à propos de Regexp utilisé ici. il montre des caractères UTF-8 après le patchage du singe /\W+/ avec /\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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top