rspec-i18n 0.2.1 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +13 -0
- data/History.rdoc +17 -2
- data/License.txt +1 -1
- data/README.rdoc +17 -6
- data/Rakefile +6 -4
- data/TODO.txt +5 -5
- data/VERSION.yml +3 -3
- data/examples/i18n/pt/person_spec.rb +117 -12
- data/lib/spec-i18n/command_line/language_help_formatter.rb +67 -14
- data/lib/spec-i18n/command_line/options.rb +18 -17
- data/lib/spec-i18n/dsl/main.rb +1 -1
- data/lib/spec-i18n/example/before_and_after_hooks.rb +14 -9
- data/lib/spec-i18n/example/example_group_methods.rb +1 -1
- data/lib/spec-i18n/example/subject.rb +29 -0
- data/lib/spec-i18n/example.rb +2 -1
- data/lib/spec-i18n/expectations/extensions/kernel.rb +1 -1
- data/lib/spec-i18n/languages.yml +40 -3
- data/lib/spec-i18n/matchers/be.rb +19 -0
- data/lib/spec-i18n/matchers/method_missing.rb +25 -0
- data/lib/spec-i18n/matchers/register_all_matchers.rb +10 -0
- data/lib/spec-i18n/matchers/translate_basic_matchers.rb +28 -0
- data/lib/spec-i18n/matchers.rb +6 -0
- data/lib/spec-i18n/parser/natural_language.rb +19 -27
- data/lib/spec-i18n/runner/configuration.rb +3 -0
- data/lib/spec-i18n/spec_language.rb +3 -0
- data/lib/spec-i18n.rb +2 -1
- data/rspec-i18n.gemspec +57 -18
- data/spec/spec-i18n/command_line/language_help_formatter_spec.rb +73 -4
- data/spec/spec-i18n/dsl/main_spec.rb +1 -1
- data/spec/spec-i18n/example/subject_spec.rb +125 -0
- data/spec/spec-i18n/expectations/kernel_spec.rb +1 -0
- data/spec/spec-i18n/matchers/be_close_spec.rb +40 -0
- data/spec/spec-i18n/matchers/be_instance_of_spec.rb +32 -0
- data/spec/spec-i18n/matchers/be_kind_of_spec.rb +37 -0
- data/spec/spec-i18n/matchers/be_spec.rb +61 -0
- data/spec/spec-i18n/matchers/eql_spec.rb +33 -0
- data/spec/spec-i18n/matchers/equal_spec.rb +26 -0
- data/spec/spec-i18n/matchers/exist_spec.rb +45 -0
- data/spec/spec-i18n/matchers/have_spec.rb +61 -0
- data/spec/spec-i18n/matchers/include_spec.rb +34 -0
- data/spec/spec-i18n/matchers/match_spec.rb +36 -0
- data/spec/spec-i18n/matchers/raise_error_spec.rb +25 -0
- data/spec/spec-i18n/matchers/register_all_matchers_spec.rb +17 -0
- data/spec/spec-i18n/matchers/satisfy_spec.rb +28 -0
- data/spec/spec-i18n/parser/natural_language_spec.rb +42 -58
- data/spec/spec-i18n/spec_examples/pt/pessoa_spec.rb +153 -0
- data/spec/spec-i18n/spec_language_spec.rb +6 -0
- data/spec/spec.opts +1 -1
- data/spec/spec_helper.rb +44 -0
- metadata +66 -13
- data/pkg/rspec-i18n-0.1.0.gem +0 -0
- data/pkg/rspec-i18n-0.2.0.gem +0 -0
- data/spec/spec-i18n/example_spec.rb +0 -47
data/.gitignore
ADDED
data/History.rdoc
CHANGED
@@ -1,3 +1,18 @@
|
|
1
|
+
=== Version 1.0.0
|
2
|
+
|
3
|
+
* enhancements
|
4
|
+
* Support for rspec 1.3
|
5
|
+
* Add the translation of following matchers: be_close, be_instance_of,
|
6
|
+
be_kind_of, eql, equal, exist, have(have_exactly), have_at_least,
|
7
|
+
have_at_most, include, match, raise_error(raise_exception), satisfy
|
8
|
+
* Add the translation of subject keywords(subject, its, should and should_not)
|
9
|
+
* Add the matchers and hooks in executable list keywords
|
10
|
+
* Removing the cucumber dependency and add term-ansicolor and
|
11
|
+
terminal-table dependency
|
12
|
+
* Add the be predicates for the rspec 1.3
|
13
|
+
* Refactoring Parser::NaturalLanguage.get(SpecI18n.spec_language)
|
14
|
+
duplications
|
15
|
+
|
1
16
|
=== Version 0.2.1
|
2
17
|
|
3
18
|
This release has some bugfixes in the command_line executable
|
@@ -14,8 +29,8 @@ This release has improvements to the commandline and some fixes internals
|
|
14
29
|
|
15
30
|
This is the first preview release of Rspec-i18n, a Internacionalization Development library for Ruby.
|
16
31
|
|
17
|
-
* Added translation to all the base keywords(describe, it, should, should_not,
|
32
|
+
* Added translation to all the base keywords(describe, it, should, should_not,
|
18
33
|
before(:each), before(:all), before(:suite), after(:each), after(:all),
|
19
34
|
after(:suite))
|
20
35
|
* Added a languages.yml. Will be translated to all languages.
|
21
|
-
* Added a simple parser for the read the languages in languages.yml.
|
36
|
+
* Added a simple parser for the read the languages in languages.yml.
|
data/License.txt
CHANGED
data/README.rdoc
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
= Rspec-i18n
|
2
2
|
|
3
|
+
* http://github.com/tomas-stefano/rspec-i18n/wikis
|
4
|
+
* http://gemcutter.org/gems/rspec-i18n
|
5
|
+
* http://rspec-i18n.lighthouseapp.com
|
6
|
+
|
3
7
|
== Description
|
4
8
|
|
5
9
|
The Rspec-i18n gem provide a easy way to write specs in any language you
|
@@ -11,8 +15,9 @@ But if you don't prefer that, you'll like the Rspec-i18n.
|
|
11
15
|
|
12
16
|
== Synopsis
|
13
17
|
|
14
|
-
Rspec-i18n will supports any language you want
|
15
|
-
|
18
|
+
Rspec-i18n will supports any language you want
|
19
|
+
(See http://github.com/tomas-stefano/rspec-i18n/blob/master/lib/spec-i18n/languages.yml file).
|
20
|
+
This is Portuguese(Brazil):
|
16
21
|
|
17
22
|
require 'spec'
|
18
23
|
require 'spec-i18n'
|
@@ -26,7 +31,7 @@ Portuguese(Brazil):
|
|
26
31
|
|
27
32
|
# In spec/pessoa_spec.rb
|
28
33
|
|
29
|
-
|
34
|
+
require 'spec_helper'
|
30
35
|
|
31
36
|
descreva Pessoa do
|
32
37
|
antes(:de_cada) do
|
@@ -41,11 +46,17 @@ Portuguese(Brazil):
|
|
41
46
|
|
42
47
|
== Examples
|
43
48
|
|
44
|
-
See more examples in
|
49
|
+
See more examples in http://github.com/tomas-stefano/rspec-i18n/blob/master/examples/i18n
|
45
50
|
|
46
51
|
== Listing the available languages
|
47
52
|
|
48
|
-
|
53
|
+
rspec-i18n --language help
|
54
|
+
|
55
|
+
== Listing the available keywords for the language
|
56
|
+
|
57
|
+
rspec-i18n --language pt
|
58
|
+
|
59
|
+
rspec-i18n --language es
|
49
60
|
|
50
61
|
== Adding a new language or completing a existing one(based on Cucumber implementation)
|
51
62
|
|
@@ -53,7 +64,7 @@ See more examples in the examples folder
|
|
53
64
|
2. Add your language keywords to languages.yml
|
54
65
|
3. Commit and push your changes - then send a pull request at Github
|
55
66
|
|
56
|
-
|
67
|
+
** OBS: Hints for better words in languages.yml are Welcome =D.
|
57
68
|
|
58
69
|
== Install
|
59
70
|
|
data/Rakefile
CHANGED
@@ -12,7 +12,7 @@ POST_MESSAGE = <<-POST_INSTALL_MESSAGE
|
|
12
12
|
|
13
13
|
Thank you for installing rspec-i18n-#{SpecI18n::VERSION}
|
14
14
|
Please be sure to read http://wiki.github.com/tomas-stefano/rspec-i18n/upgrading
|
15
|
-
for
|
15
|
+
for information about this release.
|
16
16
|
|
17
17
|
Remember: 'TDD is a muscle. You have to exercise it.' =) (Brian Liles)
|
18
18
|
|
@@ -29,11 +29,13 @@ begin
|
|
29
29
|
gemspec.homepage = "http://github.com/tomas-stefano/rspec-i18n"
|
30
30
|
gemspec.authors = ["Tomas D'Stefano"]
|
31
31
|
|
32
|
-
gemspec.add_dependency('rspec', '>= 1.
|
33
|
-
gemspec.add_dependency('
|
32
|
+
gemspec.add_dependency('rspec', '>= 1.3.0')
|
33
|
+
gemspec.add_dependency('terminal-table', '>= 1.4.2')
|
34
|
+
gemspec.add_dependency('term-ansicolor', '1.0.4')
|
34
35
|
|
35
36
|
gemspec.add_development_dependency('rspec', '>= 1.2.9')
|
36
|
-
gemspec.add_development_dependency('
|
37
|
+
gemspec.add_development_dependency('terminal-table', '>= 1.4.2')
|
38
|
+
gemspec.add_development_dependency('term-ansicolor', '1.0.4')
|
37
39
|
|
38
40
|
gemspec.post_install_message = POST_MESSAGE
|
39
41
|
end
|
data/TODO.txt
CHANGED
@@ -1,25 +1,24 @@
|
|
1
1
|
== Refactoring
|
2
2
|
|
3
|
-
* The SpecI18n::Parser::NaturalLanguage.get(SpecI18n.spec_language) is duplicated in
|
4
|
-
some places - check a better way to implement this
|
5
3
|
* Simplified more and more tests!
|
6
4
|
* Find the right module for the example group specs(it/example) (I think =>
|
7
5
|
Spec::Example::ExampleGroupMethods but I think I was wrong)
|
6
|
+
* Need better hints for the 'its' word
|
8
7
|
|
9
8
|
== Future
|
10
9
|
|
11
|
-
* Translate all matchers
|
12
|
-
* Translate subjects
|
13
10
|
* Translate shared examples
|
11
|
+
* Translate nil, true, false and empty.
|
14
12
|
* Put a #language header in the spec_helper file (Cucumber Style) instead load from config(maintain the two options)
|
15
13
|
* Create the directory features to test with Cucumber
|
14
|
+
* Verifying if it's possible to translate error and success messages
|
16
15
|
* Make the describe/it i18n available from a class
|
17
16
|
|
18
17
|
Example:
|
19
18
|
# class PilhaSpec < Spec::ExampleGroup
|
20
19
|
# descreva Pilha, "sem nenhum elemento"
|
21
20
|
#
|
22
|
-
# antes
|
21
|
+
# antes do
|
23
22
|
# @pilha = Pilha.new
|
24
23
|
# end
|
25
24
|
#
|
@@ -30,3 +29,4 @@
|
|
30
29
|
# end
|
31
30
|
|
32
31
|
* Check a better way to manipulating the mocks and stubs for i18n (What do you think?)
|
32
|
+
* Verify the following matchers: simple_matcher, wrap_expectation, respond_to, change and match_unless_raises.
|
data/VERSION.yml
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
require 'rubygems'
|
2
|
-
require 'spec'
|
3
2
|
require 'spec-i18n'
|
4
3
|
|
5
4
|
Spec::Runner.configure do |config|
|
@@ -7,23 +6,40 @@ Spec::Runner.configure do |config|
|
|
7
6
|
end
|
8
7
|
|
9
8
|
class Pessoa
|
10
|
-
|
11
|
-
def initialize(nome, sobrenome,
|
9
|
+
attr_accessor :idade
|
10
|
+
def initialize(nome, sobrenome, opcoes={})
|
12
11
|
@nome = nome
|
13
12
|
@sobrenome = sobrenome
|
14
|
-
@idade = idade
|
13
|
+
@idade = opcoes[:idade]
|
15
14
|
end
|
16
15
|
|
17
16
|
def nome_completo
|
18
17
|
"#{@nome} #{@sobrenome}"
|
19
18
|
end
|
19
|
+
|
20
|
+
def maior_de_idade?
|
21
|
+
return true if @idade >= 18
|
22
|
+
false
|
23
|
+
end
|
24
|
+
|
25
|
+
def pronto_para_votar?
|
26
|
+
maior_de_idade?
|
27
|
+
end
|
28
|
+
|
29
|
+
def pronto_para_dirigir?
|
30
|
+
maior_de_idade?
|
31
|
+
end
|
32
|
+
|
33
|
+
def autorizado_a_beber?
|
34
|
+
maior_de_idade?
|
35
|
+
end
|
20
36
|
end
|
21
37
|
|
22
|
-
# Silly Tests
|
38
|
+
# Silly Tests for show to you how to use this library in portuguese language
|
23
39
|
descreva Pessoa do
|
24
40
|
|
25
41
|
antes(:de_todos) do
|
26
|
-
@pessoa = Pessoa.new("
|
42
|
+
@pessoa = Pessoa.new("Homer", "Simpson")
|
27
43
|
end
|
28
44
|
|
29
45
|
antes(:de_cada) do
|
@@ -37,13 +53,102 @@ descreva Pessoa do
|
|
37
53
|
depois(:de_cada) do
|
38
54
|
@outras_pessoas = []
|
39
55
|
end
|
40
|
-
|
41
|
-
|
42
|
-
@
|
56
|
+
|
57
|
+
depois(:suite) do
|
58
|
+
@pessoas = []
|
43
59
|
end
|
44
|
-
|
45
|
-
|
46
|
-
|
60
|
+
|
61
|
+
exemplo 'deve ser uma instancia da classe Pessoa' do
|
62
|
+
@pessoa.deve ser_instancia_de(Pessoa)
|
63
|
+
end
|
64
|
+
|
65
|
+
exemplo 'deve incluir uma pessoa' do
|
66
|
+
@pessoas.deve incluir(@pessoa)
|
67
|
+
end
|
68
|
+
|
69
|
+
exemplo 'deve ser do tipo Pessoa' do
|
70
|
+
@pessoa.deve ser_do_tipo(Pessoa)
|
71
|
+
end
|
72
|
+
|
73
|
+
exemplo 'deve ter pelo menos uma pessoa' do
|
74
|
+
@pessoas.deve ter_no_minimo(1).items
|
75
|
+
end
|
76
|
+
|
77
|
+
exemplo 'deve ter exatamente duas pessoas' do
|
78
|
+
@pessoas << @pessoa
|
79
|
+
@pessoas.deve ter_exatamente(2).items
|
80
|
+
end
|
81
|
+
|
82
|
+
exemplo 'deve ter no maximo tres pessoas' do
|
83
|
+
@pessoas = []
|
84
|
+
@pessoas.deve ter_no_maximo(3).items
|
47
85
|
end
|
48
86
|
|
87
|
+
contexto "Nome completo" do
|
88
|
+
|
89
|
+
antes(:de_cada_exemplo) do
|
90
|
+
@pessoa = Pessoa.new("Tomás", "D'Stefano")
|
91
|
+
end
|
92
|
+
|
93
|
+
exemplo "deve retornar o nome completo" do
|
94
|
+
@pessoa.nome_completo.deve ==("Tomás D'Stefano")
|
95
|
+
end
|
96
|
+
|
97
|
+
exemplo 'nome completo não pode ser nulo' do
|
98
|
+
@pessoa.nome_completo.nao_deve ser_igual_a(nil)
|
99
|
+
end
|
100
|
+
|
101
|
+
end
|
102
|
+
|
103
|
+
contexto "a idade" do
|
104
|
+
|
105
|
+
antes(:de_todos_exemplos) do
|
106
|
+
@pessoa = Pessoa.new("Aaromn", "Monkey", :idade => 20)
|
107
|
+
end
|
108
|
+
|
109
|
+
especificar "deve ser opcional" do
|
110
|
+
@pessoa.idade.deve ser_igual_a(20)
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
contexto 'maior de idade' do
|
115
|
+
assunto { Pessoa.new('Aaron', 'Monkey', :idade => 18) }
|
116
|
+
|
117
|
+
exemplo "deve estar pronto para votar" do
|
118
|
+
deve estar_pronto_para_votar
|
119
|
+
end
|
120
|
+
|
121
|
+
exemplo "deve ser maior de idade" do
|
122
|
+
deve ser_maior_de_idade
|
123
|
+
end
|
124
|
+
|
125
|
+
exemplo "deve estar pronto para dirigir" do
|
126
|
+
assunto.deve estar_pronto_para_dirigir
|
127
|
+
end
|
128
|
+
|
129
|
+
exemplo "deve estar autorizado para beber =D" do
|
130
|
+
assunto.deve estar_autorizado_a_beber
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
contexto 'menor de idade' do
|
135
|
+
assunto { Pessoa.new('Aaron', 'Monkey', :idade => 17) }
|
136
|
+
|
137
|
+
exemplo "nao deve estar pronto para votar" do
|
138
|
+
nao_deve estar_pronto_para_votar
|
139
|
+
end
|
140
|
+
|
141
|
+
exemplo "nao deve ser maior de idade" do
|
142
|
+
nao_deve ser_maior_de_idade
|
143
|
+
end
|
144
|
+
|
145
|
+
exemplo "nao deve estar pronto para votar" do
|
146
|
+
assunto.nao_deve estar_pronto_para_votar
|
147
|
+
end
|
148
|
+
|
149
|
+
exemplo "nao deve estar autorizado para beber =(" do
|
150
|
+
assunto.nao_deve estar_autorizado_a_beber
|
151
|
+
end
|
152
|
+
end
|
153
|
+
|
49
154
|
end
|
@@ -1,7 +1,5 @@
|
|
1
|
-
require '
|
2
|
-
require '
|
3
|
-
require 'cucumber/formatter/unicode'
|
4
|
-
require 'cucumber/cli/language_help_formatter'
|
1
|
+
require 'term/ansicolor'
|
2
|
+
require 'terminal-table/import'
|
5
3
|
require 'spec-i18n/parser'
|
6
4
|
|
7
5
|
module SpecI18n
|
@@ -9,26 +7,81 @@ module SpecI18n
|
|
9
7
|
class LanguageHelpFormatter
|
10
8
|
|
11
9
|
class << self
|
10
|
+
include SpecI18n::Parser
|
11
|
+
include Term::ANSIColor
|
12
|
+
|
13
|
+
String.class_eval do
|
14
|
+
include Term::ANSIColor
|
15
|
+
end
|
12
16
|
|
13
17
|
# Cucumber print table is loading
|
14
18
|
# because I don't want reiventing the wheel
|
15
19
|
#
|
16
20
|
def list_languages_and_exit(io)
|
17
|
-
|
18
|
-
|
21
|
+
languages = list_languages
|
22
|
+
|
23
|
+
languages_table = table do
|
24
|
+
self.headings = ['Language', 'Name', 'Native']
|
25
|
+
languages.each do |language|
|
26
|
+
add_row language
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
print_table io, languages_table, :exit => true
|
19
31
|
end
|
20
32
|
|
21
33
|
def list_keywords_and_exit(io, lang)
|
22
|
-
|
23
|
-
|
24
|
-
|
34
|
+
|
35
|
+
language = NaturalLanguage.get(lang)
|
36
|
+
|
37
|
+
keywords = list_basic_keywords(language)
|
38
|
+
|
39
|
+
print_table io, table(nil, *keywords)
|
40
|
+
|
41
|
+
advanced_keywords = list_advanced_keywords(io, language)
|
42
|
+
|
43
|
+
print_table io, advanced_keywords, :exit => true
|
44
|
+
end
|
45
|
+
|
46
|
+
def list_languages
|
47
|
+
languages = SpecI18n::SPEC_LANGUAGES.keys.sort.map do |lang|
|
48
|
+
[ lang, grep_value(lang, 'name'), grep_value(lang, 'native') ]
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
def grep_value(lang, key)
|
53
|
+
SpecI18n::SPEC_LANGUAGES[lang][key]
|
54
|
+
end
|
55
|
+
|
56
|
+
def list_basic_keywords(language)
|
57
|
+
NaturalLanguage::BASIC_KEYWORDS.map do |keyword|
|
58
|
+
words = language.keywords[keyword]
|
59
|
+
[ keyword, words.split('|').join(' / ')]
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
def list_advanced_keywords(io, language)
|
64
|
+
NaturalLanguage::ADVANCED_KEYWORDS.map do |keyword|
|
65
|
+
language_keywords = [keyword]
|
66
|
+
language.keywords[keyword].map do |key, values|
|
67
|
+
language_keywords << [key, values.to_s.split('|').join(' / ')]
|
68
|
+
end
|
69
|
+
|
70
|
+
keywords_table = table do
|
71
|
+
self.headings = [language_keywords.shift]
|
72
|
+
language_keywords.each do |keywords|
|
73
|
+
add_row keywords
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
keywords_table
|
78
|
+
|
79
|
+
end
|
25
80
|
end
|
26
81
|
|
27
|
-
def print_table(io, raw, options)
|
28
|
-
|
29
|
-
|
30
|
-
Cucumber::Ast::TreeWalker.new(nil, [formatter]).visit_multiline_arg(table)
|
31
|
-
Kernel.exit(0)
|
82
|
+
def print_table(io, raw, options={})
|
83
|
+
io.puts raw.to_s.send(options[:color] || :green).bold
|
84
|
+
Kernel.exit(0) if options[:exit]
|
32
85
|
end
|
33
86
|
end
|
34
87
|
|
@@ -13,34 +13,35 @@ module SpecI18n
|
|
13
13
|
def parse!(args)
|
14
14
|
@args = args
|
15
15
|
@args.extend(::OptionParser::Arguable)
|
16
|
-
|
17
16
|
@args.options do |opts|
|
18
|
-
opts.banner = [ "Usage: rspec-i18n [options] [LANGUAGE]", "",
|
19
|
-
"
|
20
|
-
|
21
|
-
"rspec-i18n --language pt"].join("\n")
|
22
|
-
|
23
|
-
opts.on("-l LANGUAGE", "--language LANGUAGE",
|
24
|
-
"List keywords for a particular language",
|
17
|
+
opts.banner = [ "Usage: rspec-i18n [options] [LANGUAGE]", "", "Examples:",
|
18
|
+
"rspec-i18n --language help", "rspec-i18n --language pt"].join("\n")
|
19
|
+
opts.on("-l LANGUAGE", "--language LANGUAGE", "List keywords for a particular language",
|
25
20
|
%{Run with "--language help" to see all languages}) do |language|
|
26
|
-
|
27
|
-
LanguageHelpFormatter.list_languages_and_exit(@output_stream)
|
28
|
-
else
|
29
|
-
LanguageHelpFormatter.list_keywords_and_exit(@output_stream, language)
|
30
|
-
end
|
21
|
+
print_languages(language)
|
31
22
|
end
|
32
23
|
opts.on_tail("-v", "--version", "Show version.") do
|
33
|
-
|
34
|
-
Kernel.exit(0)
|
24
|
+
print_and_exit(SpecI18n::VERSION)
|
35
25
|
end
|
36
26
|
opts.on_tail("-h", "--help", "You're looking at it.") do
|
37
|
-
|
38
|
-
Kernel.exit(0)
|
27
|
+
print_and_exit(opts.help)
|
39
28
|
end
|
40
29
|
end.parse!
|
41
30
|
self
|
42
31
|
end
|
43
32
|
|
33
|
+
def print_languages(language)
|
34
|
+
if language == 'help'
|
35
|
+
LanguageHelpFormatter.list_languages_and_exit(@output_stream)
|
36
|
+
else
|
37
|
+
LanguageHelpFormatter.list_keywords_and_exit(@output_stream, language)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def print_and_exit(message)
|
42
|
+
@output_stream.puts message
|
43
|
+
Kernel.exit(0)
|
44
|
+
end
|
44
45
|
end
|
45
46
|
end
|
46
47
|
end
|
data/lib/spec-i18n/dsl/main.rb
CHANGED
@@ -8,7 +8,7 @@ module Spec
|
|
8
8
|
#
|
9
9
|
# Register alias for the language specified
|
10
10
|
def register_adverbs
|
11
|
-
language = SpecI18n
|
11
|
+
language = SpecI18n.natural_language
|
12
12
|
@adverbs = language.dsl_keywords
|
13
13
|
@adverbs.each do |key, values|
|
14
14
|
values.map { |value| alias_method value, key }
|
@@ -3,17 +3,16 @@ module Spec
|
|
3
3
|
module BeforeAndAfterHooks
|
4
4
|
|
5
5
|
def register_hooks
|
6
|
-
language = SpecI18n
|
6
|
+
language = SpecI18n.natural_language
|
7
7
|
language.before_and_after_keywords.each do |key, values|
|
8
8
|
values.map { |value| alias_method value, key }
|
9
9
|
end
|
10
10
|
end
|
11
11
|
|
12
12
|
def before_parts(scope)
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
end
|
13
|
+
|
14
|
+
scope = grep_language_and_scope(scope) || scope
|
15
|
+
|
17
16
|
case scope
|
18
17
|
when :each; before_each_parts
|
19
18
|
when :all; before_all_parts
|
@@ -22,16 +21,22 @@ module Spec
|
|
22
21
|
end
|
23
22
|
|
24
23
|
def after_parts(scope)
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
end
|
24
|
+
|
25
|
+
scope = grep_language_and_scope(scope) || scope
|
26
|
+
|
29
27
|
case scope
|
30
28
|
when :each; after_each_parts
|
31
29
|
when :all; after_all_parts
|
32
30
|
when :suite; after_suite_parts
|
33
31
|
end
|
34
32
|
end
|
33
|
+
|
34
|
+
def grep_language_and_scope(scope)
|
35
|
+
if SpecI18n.spec_language
|
36
|
+
language = SpecI18n.natural_language
|
37
|
+
scope = grep_the_scope(scope, language.hooks_params_keywords)
|
38
|
+
end
|
39
|
+
end
|
35
40
|
|
36
41
|
# Receive a String Scope and return the scope in english for
|
37
42
|
# the rspec run the right method
|
@@ -3,7 +3,7 @@ module Spec
|
|
3
3
|
module ExampleGroupMethods
|
4
4
|
|
5
5
|
def self.register_example_adverbs
|
6
|
-
language = SpecI18n
|
6
|
+
language = SpecI18n.natural_language
|
7
7
|
@adverbs = language.example_group_keywords
|
8
8
|
@adverbs.each do |key, values|
|
9
9
|
values.map do |value|
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module Spec
|
2
|
+
module Example
|
3
|
+
module Subject
|
4
|
+
module ExampleGroupMethods
|
5
|
+
# TODO: Removing Duplications
|
6
|
+
class << self
|
7
|
+
def register_subjects
|
8
|
+
language = SpecI18n.natural_language
|
9
|
+
subject_and_its_keywords = language.subject_keywords.merge(language.its_keywords)
|
10
|
+
subject_and_its_keywords.each do |key, values|
|
11
|
+
values.map { |value| alias_method value, key }
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
module ExampleMethods
|
17
|
+
class << self
|
18
|
+
def register_subjects
|
19
|
+
language = SpecI18n.natural_language
|
20
|
+
subject_and_expectation_keywords = language.subject_keywords.merge(language.expectation_keywords)
|
21
|
+
subject_and_expectation_keywords.each do |key, values|
|
22
|
+
values.map { |value| alias_method value, key }
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
data/lib/spec-i18n/example.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
module Kernel
|
2
2
|
def register_expectations_keywords
|
3
|
-
language = SpecI18n
|
3
|
+
language = SpecI18n.natural_language
|
4
4
|
@adverbs = language.expectation_keywords
|
5
5
|
@adverbs.each do |key, values|
|
6
6
|
values.map { |value| alias_method value, key }
|