rkwalify 1.4.0.pre.beta → 1.4.0.pre.preview1
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.
- checksums.yaml +4 -4
- data/.gitignore +0 -2
- data/Attic/README-0.7.2.md +0 -8
- data/CHANGELOG.md +2 -49
- data/CONTRIBUTING.md +1 -12
- data/CONTRIBUTORS.md +0 -8
- data/Gemfile.lock +6 -6
- data/README.md +3 -20
- data/ROLL-OUT-STRATEGY.md +11 -24
- data/bin/kwalify.rb +16 -16
- data/contrib/inline-require +1 -1
- data/contrib/kwalify +16 -16
- data/contrib/kwalify-0.7.2 +1 -1
- data/devbin/README.md +1 -14
- data/devbin/chkspelling.sh +10 -19
- data/devbin/got-all-rel-numbers.sh +1 -2
- data/devbin/mkbig-rkwalify.sh +1 -1
- data/devbin/mkgem_file.sh +1 -1
- data/devbin/ug-tests.golden +242 -0
- data/devbin/{smoke-tests.sh → ug-tests.sh} +40 -40
- data/devbin/update-rel-numbers.sh +3 -4
- data/doc-api/classes/CommandOptionError.html +1 -1
- data/doc-api/classes/Kwalify.html +1 -1
- data/doc-api/files/__/README_txt.html +1 -1
- data/doc-api/files/kwalify/errors_rb.html +1 -1
- data/doc-api/files/kwalify/main_rb.html +1 -1
- data/doc-api/files/kwalify/messages_rb.html +1 -1
- data/doc-api/files/kwalify/meta-validator_rb.html +1 -1
- data/doc-api/files/kwalify/parser/base_rb.html +1 -1
- data/doc-api/files/kwalify/parser/yaml_rb.html +1 -1
- data/doc-api/files/kwalify/rule_rb.html +1 -1
- data/doc-api/files/kwalify/types_rb.html +1 -1
- data/doc-api/files/kwalify/util/assert-text-equal_rb.html +1 -1
- data/doc-api/files/kwalify/util/hash-interface_rb.html +1 -1
- data/doc-api/files/kwalify/util/hashlike_rb.html +1 -1
- data/doc-api/files/kwalify/util/option-parser_rb.html +1 -1
- data/doc-api/files/kwalify/util/ordered-hash_rb.html +1 -1
- data/doc-api/files/kwalify/util/testcase-helper_rb.html +1 -1
- data/doc-api/files/kwalify/util_rb.html +1 -1
- data/doc-api/files/kwalify/validator_rb.html +1 -1
- data/doc-api/files/kwalify/yaml-parser_rb.html +1 -1
- data/doc-api/files/kwalify_rb.html +1 -1
- data/examples/address-book/address-book.schema.yaml +1 -1
- data/examples/invoice/invoice.schema.yaml +1 -1
- data/examples/tapkit/tapkit.schema.yaml +1 -1
- data/lib/kwalify/errors.rb +1 -1
- data/lib/kwalify/main.rb +2 -2
- data/lib/kwalify/messages.rb +1 -1
- data/lib/kwalify/meta-validator.rb +1 -1
- data/lib/kwalify/parser/base.rb +1 -1
- data/lib/kwalify/parser/yaml.rb +1 -1
- data/lib/kwalify/rule.rb +1 -1
- data/lib/kwalify/templates/genclass-java.eruby +1 -1
- data/lib/kwalify/templates/genclass-php.eruby +1 -1
- data/lib/kwalify/templates/genclass-ruby.eruby +1 -1
- data/lib/kwalify/types.rb +1 -1
- data/lib/kwalify/util/assert-text-equal.rb +1 -1
- data/lib/kwalify/util/hash-interface.rb +1 -1
- data/lib/kwalify/util/hashlike.rb +1 -1
- data/lib/kwalify/util/option-parser.rb +1 -1
- data/lib/kwalify/util/ordered-hash.rb +1 -1
- data/lib/kwalify/util/testcase-helper.rb +1 -1
- data/lib/kwalify/util.rb +1 -1
- data/lib/kwalify/validator.rb +1 -1
- data/lib/kwalify/version.rb +1 -1
- data/lib/kwalify/yaml-parser.rb +1 -1
- data/lib/kwalify.rb +1 -1
- data/test/Rookbook.yaml +1 -1
- data/test/data/users-guide/answers-validator.rb +1 -1
- data/test/data/users-guide/example_address_book.rb +1 -1
- data/test/data/users-guide/howto3.rb +1 -1
- data/test/data/users-guide/loadbabel.rb +2 -2
- data/test/data/users-guide/loadconfig.rb +2 -2
- data/test/data/users-guide/validate08.rb +1 -1
- data/test/test-action.rb +1 -1
- data/test/test-action.yaml +1 -1
- data/test/test-databinding.rb +1 -1
- data/test/test-databinding.yaml +1 -1
- data/test/test-main.rb +1 -1
- data/test/test-main.yaml +3 -3
- data/test/test-metavalidator.rb +1 -1
- data/test/test-metavalidator.yaml +9 -9
- data/test/test-parser-yaml.rb +1 -1
- data/test/test-parser-yaml.yaml +33 -36
- data/test/test-rule.rb +1 -1
- data/test/test-rule.yaml +1 -1
- data/test/test-users-guide.rb +1 -1
- data/test/test-util.rb +1 -1
- data/test/test-validator.rb +1 -1
- data/test/test-validator.yaml +1 -1
- data/test/test-yaml-parser.rb +1 -1
- data/test/test-yaml-parser.yaml +1 -1
- data/test/test.rb +4 -6
- metadata +3 -7
- data/bin/kwalify +0 -4167
- data/devbin/mktag +0 -3
- data/devbin/ruby_rails_wordlist.txt +0 -195
- data/devbin/smoke-tests.golden +0 -331
data/lib/kwalify/parser/base.rb
CHANGED
data/lib/kwalify/parser/yaml.rb
CHANGED
data/lib/kwalify/rule.rb
CHANGED
data/lib/kwalify/types.rb
CHANGED
data/lib/kwalify/util.rb
CHANGED
data/lib/kwalify/validator.rb
CHANGED
data/lib/kwalify/version.rb
CHANGED
data/lib/kwalify/yaml-parser.rb
CHANGED
data/lib/kwalify.rb
CHANGED
data/test/Rookbook.yaml
CHANGED
|
@@ -7,7 +7,7 @@ require 'kwalify'
|
|
|
7
7
|
class AnswersValidator < Kwalify::Validator
|
|
8
8
|
|
|
9
9
|
## load schema definition
|
|
10
|
-
@@schema = Kwalify::Yaml.load_file('
|
|
10
|
+
@@schema = Kwalify::Yaml.load_file('answers-schema.yaml')
|
|
11
11
|
## or
|
|
12
12
|
## require 'yaml'
|
|
13
13
|
## @@schema = YAML.load_file('answers-schema.yaml')
|
|
@@ -2,7 +2,7 @@ require 'kwalify'
|
|
|
2
2
|
require_relative 'models'
|
|
3
3
|
|
|
4
4
|
## load schema definition
|
|
5
|
-
schema = Kwalify::Yaml.load_file('
|
|
5
|
+
schema = Kwalify::Yaml.load_file('BABEL.schema.yaml',
|
|
6
6
|
:untabify=>true,
|
|
7
7
|
:preceding_alias=>true)
|
|
8
8
|
|
|
@@ -20,7 +20,7 @@ validator = Kwalify::Validator.new(schema)
|
|
|
20
20
|
parser = Kwalify::Yaml::Parser.new(validator)
|
|
21
21
|
parser.preceding_alias = true
|
|
22
22
|
parser.data_binding = true
|
|
23
|
-
ydoc = parser.parse_file('
|
|
23
|
+
ydoc = parser.parse_file('BABEL.data.yaml', :untabify=>true)
|
|
24
24
|
|
|
25
25
|
## show document
|
|
26
26
|
require 'pp'
|
|
@@ -7,11 +7,11 @@ class Config
|
|
|
7
7
|
end
|
|
8
8
|
## create validator object
|
|
9
9
|
require 'kwalify'
|
|
10
|
-
schema = Kwalify::Yaml.load_file('
|
|
10
|
+
schema = Kwalify::Yaml.load_file('config.schema.yaml')
|
|
11
11
|
validator = Kwalify::Validator.new(schema)
|
|
12
12
|
## parse configuration file with data binding
|
|
13
13
|
parser = Kwalify::Yaml::Parser.new(validator)
|
|
14
14
|
parser.data_binding = true # enable data binding
|
|
15
|
-
config = parser.parse_file('
|
|
15
|
+
config = parser.parse_file('config.yaml')
|
|
16
16
|
require 'pp'
|
|
17
17
|
pp config
|
|
@@ -4,7 +4,7 @@ require 'kwalify'
|
|
|
4
4
|
require 'yaml'
|
|
5
5
|
|
|
6
6
|
## load schema definition
|
|
7
|
-
schema = YAML.load_file('
|
|
7
|
+
schema = YAML.load_file('answers-schema.yaml')
|
|
8
8
|
|
|
9
9
|
## create validator for answers
|
|
10
10
|
validator = Kwalify::Validator.new(schema) { |value, rule, path, errors|
|
data/test/test-action.rb
CHANGED
data/test/test-action.yaml
CHANGED
data/test/test-databinding.rb
CHANGED
data/test/test-databinding.yaml
CHANGED
data/test/test-main.rb
CHANGED
data/test/test-main.yaml
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
##
|
|
2
2
|
## $Rev$
|
|
3
|
-
## $Release 1.4.0-
|
|
3
|
+
## $Release: 1.4.0-preview1 $
|
|
4
4
|
## copyright(c) 2005-2010 kuwata-lab all rights reserved.
|
|
5
5
|
##
|
|
6
6
|
---
|
|
@@ -79,7 +79,7 @@
|
|
|
79
79
|
java: CommandOptionException
|
|
80
80
|
message: "-i: invalid command option."
|
|
81
81
|
error_symbol*:
|
|
82
|
-
ruby: !ruby/sym
|
|
82
|
+
ruby: !ruby/sym :command_option_invalid
|
|
83
83
|
java: command.option.invalid
|
|
84
84
|
##
|
|
85
85
|
- name: optionError2
|
|
@@ -92,7 +92,7 @@
|
|
|
92
92
|
java: CommandOptionException
|
|
93
93
|
message: "-f: schema filename is required."
|
|
94
94
|
error_symbol*:
|
|
95
|
-
ruby: !ruby/sym
|
|
95
|
+
ruby: !ruby/sym :command_option_schema_required
|
|
96
96
|
java: command.option.noschema
|
|
97
97
|
####
|
|
98
98
|
##name: optionError3
|
data/test/test-metavalidator.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
##
|
|
2
2
|
## $Rev$
|
|
3
|
-
## $Release 1.4.0-
|
|
3
|
+
## $Release: 1.4.0-preview1 $
|
|
4
4
|
## copyright(c) 2005-2010 kuwata-lab all rights reserved.
|
|
5
5
|
##
|
|
6
6
|
---
|
|
@@ -610,10 +610,10 @@ schema: |
|
|
|
610
610
|
- type: str
|
|
611
611
|
#
|
|
612
612
|
meta-msg: |
|
|
613
|
-
:type_unmatch : [/sequence] '- type:
|
|
613
|
+
:type_unmatch : [/sequence] '- type: str': not a sequence.
|
|
614
614
|
#
|
|
615
615
|
rule-msg: |
|
|
616
|
-
|
|
616
|
+
:sequence_notseq : [/sequence] '- type: str': not a sequence.
|
|
617
617
|
#
|
|
618
618
|
---
|
|
619
619
|
name: sequence_noelem
|
|
@@ -657,10 +657,10 @@ schema: |
|
|
|
657
657
|
type: str
|
|
658
658
|
#
|
|
659
659
|
meta-msg: |
|
|
660
|
-
:type_unmatch : [/mapping] '"name"
|
|
660
|
+
:type_unmatch : [/mapping] '"name":\n type: str': not a mapping.
|
|
661
661
|
#
|
|
662
662
|
rule-msg: |
|
|
663
|
-
:mapping_notmap : [/mapping] '"name"
|
|
663
|
+
:mapping_notmap : [/mapping] '"name":\n type: str': not a mapping.
|
|
664
664
|
#
|
|
665
665
|
---
|
|
666
666
|
name: mapping_noelem
|
|
@@ -976,10 +976,10 @@ schema: |
|
|
|
976
976
|
type: str
|
|
977
977
|
#
|
|
978
978
|
meta-msg: |
|
|
979
|
-
:type_unmatch : [/sequence/0/mapping/id/unique] '
|
|
979
|
+
:type_unmatch : [/sequence/0/mapping/id/unique] 'yes': not a boolean.
|
|
980
980
|
#
|
|
981
981
|
rule-msg: |
|
|
982
|
-
:unique_notbool : [/sequence/0/mapping/id/unique] '
|
|
982
|
+
:unique_notbool : [/sequence/0/mapping/id/unique] 'yes': not a boolean.
|
|
983
983
|
#
|
|
984
984
|
---
|
|
985
985
|
name: unique_notscalar
|
|
@@ -1035,10 +1035,10 @@ schema: |
|
|
|
1035
1035
|
type: str
|
|
1036
1036
|
#
|
|
1037
1037
|
meta-msg: |
|
|
1038
|
-
:type_unmatch : [/sequence/0/mapping/id/ident] '
|
|
1038
|
+
:type_unmatch : [/sequence/0/mapping/id/ident] 'yes': not a boolean.
|
|
1039
1039
|
#
|
|
1040
1040
|
rule-msg: |
|
|
1041
|
-
:ident_notbool : [/sequence/0/mapping/id/ident] '
|
|
1041
|
+
:ident_notbool : [/sequence/0/mapping/id/ident] 'yes': not a boolean.
|
|
1042
1042
|
#
|
|
1043
1043
|
---
|
|
1044
1044
|
name: ident_notscalar
|
data/test/test-parser-yaml.rb
CHANGED
data/test/test-parser-yaml.yaml
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
##
|
|
2
2
|
## $Rev: 59 $
|
|
3
|
-
## $Release 1.4.0-
|
|
3
|
+
## $Release: 1.4.0-preview1 $
|
|
4
4
|
## copyright(c) 2005-2010 kuwata-lab all rights reserved.
|
|
5
5
|
##
|
|
6
6
|
---
|
|
@@ -863,7 +863,7 @@ input: |
|
|
|
863
863
|
|
|
864
864
|
#
|
|
865
865
|
expected: |
|
|
866
|
-
[{"text1"=>" A\n\n B\n C\n"}, {"text2"=>" A\n\n B\n C\n\n\n"}, {"text3"=>" A\n
|
|
866
|
+
[{"text1"=>" A\n\n B\n C\n"}, {"text2"=>" A\n\n B\n C\n\n\n"}, {"text3"=>" A\n\n B\n C"}]
|
|
867
867
|
locations:
|
|
868
868
|
- [ "/", 1, 1 ]
|
|
869
869
|
- [ "/0", 1, 3 ]
|
|
@@ -1177,7 +1177,7 @@ input: |
|
|
|
1177
1177
|
z: *a1
|
|
1178
1178
|
#
|
|
1179
1179
|
expected: |
|
|
1180
|
-
[{"A"
|
|
1180
|
+
[{"A"=>{"x"=>10, "y"=>20, "z"=>{...}}}]
|
|
1181
1181
|
locations:
|
|
1182
1182
|
- [ "/", 1, 1 ]
|
|
1183
1183
|
- [ "/0", 1, 3 ]
|
|
@@ -1244,13 +1244,13 @@ input: |
|
|
|
1244
1244
|
#
|
|
1245
1245
|
expected*:
|
|
1246
1246
|
ruby: |
|
|
1247
|
-
{"
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
"
|
|
1253
|
-
|
|
1247
|
+
{"sequence"=>
|
|
1248
|
+
[{"type"=>"map",
|
|
1249
|
+
"mapping"=>
|
|
1250
|
+
{"name"=>{"type"=>"str"},
|
|
1251
|
+
"post"=>{"enum"=>["exective", "manager", "clerk"], "type"=>"str"},
|
|
1252
|
+
"supervisor"=>{...}}}],
|
|
1253
|
+
"type"=>"seq"}
|
|
1254
1254
|
java: |
|
|
1255
1255
|
{"sequence"=>[{"mapping"=>{"name"=>{"type"=>"str"}, "post"=>{"enum"=>["exective", "manager", "clerk"], "type"=>"str"}, "supervisor"=>{...}}, "type"=>"map"}], "type"=>"seq"}
|
|
1256
1256
|
locations:
|
|
@@ -1296,7 +1296,7 @@ input: |
|
|
|
1296
1296
|
#
|
|
1297
1297
|
expected*:
|
|
1298
1298
|
ruby: |
|
|
1299
|
-
[{"v"
|
|
1299
|
+
[{"v"=>[{...}, [...]]}]
|
|
1300
1300
|
java: |
|
|
1301
1301
|
[{"v"=>[{...}, [...]]}]
|
|
1302
1302
|
##
|
|
@@ -1341,14 +1341,12 @@ input: |
|
|
|
1341
1341
|
#
|
|
1342
1342
|
expected*:
|
|
1343
1343
|
ruby: |
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
|
|
1347
|
-
|
|
1348
|
-
|
|
1349
|
-
|
|
1350
|
-
[{"name" => "root", "email" => "root@localhost"},
|
|
1351
|
-
{"name" => "user1", "email" => "user1@localhost"}]}
|
|
1344
|
+
{"groups"=>
|
|
1345
|
+
[{"name"=>"wheel", "owner"=>{"name"=>"root", "email"=>"root@localhost"}},
|
|
1346
|
+
{"name"=>"users", "owner"=>{"name"=>"user1", "email"=>"user1@localhost"}}],
|
|
1347
|
+
"users"=>
|
|
1348
|
+
[{"name"=>"root", "email"=>"root@localhost"},
|
|
1349
|
+
{"name"=>"user1", "email"=>"user1@localhost"}]}
|
|
1352
1350
|
java: |
|
|
1353
1351
|
locations:
|
|
1354
1352
|
- [ "/", 1, 1 ]
|
|
@@ -1538,7 +1536,7 @@ input: |
|
|
|
1538
1536
|
A: ~
|
|
1539
1537
|
#
|
|
1540
1538
|
expected: |
|
|
1541
|
-
[{"A"=>10, "B"=>20}, {"A"=>
|
|
1539
|
+
[{"A"=>10, "B"=>20}, {"A"=>nil, "B"=>20, "C"=>30}]
|
|
1542
1540
|
locations:
|
|
1543
1541
|
- [ "/", 1, 1 ]
|
|
1544
1542
|
- [ "/0", 1, 3 ]
|
|
@@ -1567,7 +1565,7 @@ input: |
|
|
|
1567
1565
|
- :sym
|
|
1568
1566
|
expected*:
|
|
1569
1567
|
ruby: |
|
|
1570
|
-
["abc", 123, 3.14, true, false, true, false,
|
|
1568
|
+
["abc", 123, 3.14, true, false, true, false, nil, nil, "123", "456", #<Date: 2005-01-01 ((2453372j,0s,0n),+0s,2299161j)>, :sym]
|
|
1571
1569
|
# ruby: |
|
|
1572
1570
|
# ["abc",
|
|
1573
1571
|
# 123,
|
|
@@ -1608,20 +1606,20 @@ input: |
|
|
|
1608
1606
|
# - 2005-01-01 00:00:00 : 2005-01-01 00:00:00
|
|
1609
1607
|
expected*:
|
|
1610
1608
|
ruby: |
|
|
1611
|
-
[{"abc"
|
|
1612
|
-
{123
|
|
1613
|
-
{3.14
|
|
1614
|
-
{true
|
|
1615
|
-
{false
|
|
1616
|
-
{true
|
|
1617
|
-
{false
|
|
1618
|
-
{
|
|
1619
|
-
{
|
|
1620
|
-
{"123"
|
|
1621
|
-
{"456"
|
|
1622
|
-
{#<Date: 2005-01-01 ((2453372j,0s,0n),+0s,2299161j)
|
|
1609
|
+
[{"abc"=>"ABC"},
|
|
1610
|
+
{123=>123},
|
|
1611
|
+
{3.14=>3.14},
|
|
1612
|
+
{true=>true},
|
|
1613
|
+
{false=>false},
|
|
1614
|
+
{true=>true},
|
|
1615
|
+
{false=>false},
|
|
1616
|
+
{nil=>nil},
|
|
1617
|
+
{nil=>nil},
|
|
1618
|
+
{"123"=>"123"},
|
|
1619
|
+
{"456"=>"456"},
|
|
1620
|
+
{#<Date: 2005-01-01 ((2453372j,0s,0n),+0s,2299161j)>=>
|
|
1623
1621
|
#<Date: 2005-01-01 ((2453372j,0s,0n),+0s,2299161j)>},
|
|
1624
|
-
{
|
|
1622
|
+
{:sym=>:sym}]
|
|
1625
1623
|
java: |
|
|
1626
1624
|
[{"abc"=>"ABC"}, {123=>123}, {3.14=>3.14}, {true=>true}, {false=>false}, {true=>true}, {false=>false}, "~ : ~", {nil=>nil}, {"123"=>"123"}, {"456"=>"456"}, {Tue Feb 01 00:00:00 JST 2005=>Tue Feb 01 00:00:00 JST 2005}, {":sym"=>":sym"}]
|
|
1627
1625
|
# {123=>1.23, 3.14=>314, "abc"=>"ABC"}
|
|
@@ -1711,8 +1709,7 @@ input: |
|
|
|
1711
1709
|
- {'A': "\xe6\x97\xa5\xe6\x9c\xac\xe8\xaa\x9e",
|
|
1712
1710
|
"B": "\u65e5\u672c\u8a9e" }
|
|
1713
1711
|
expected: |
|
|
1714
|
-
[["\
|
|
1715
|
-
|
|
1712
|
+
[["\346\227\245\346\234\254\350\252\236", "\346\227\245\346\234\254\350\252\236"], {"A"=>"\346\227\245\346\234\254\350\252\236", "B"=>"\346\227\245\346\234\254\350\252\236"}, ["\346\227\245\346\234\254\350\252\236", "\346\227\245\346\234\254\350\252\236"], {"A"=>"\346\227\245\346\234\254\350\252\236", "B"=>"\346\227\245\346\234\254\350\252\236"}]
|
|
1716
1713
|
locations:
|
|
1717
1714
|
- [ "/", 1, 1 ]
|
|
1718
1715
|
- [ "/0", 2, 2 ]
|
data/test/test-rule.rb
CHANGED
data/test/test-rule.yaml
CHANGED
data/test/test-users-guide.rb
CHANGED
data/test/test-util.rb
CHANGED
data/test/test-validator.rb
CHANGED
data/test/test-validator.yaml
CHANGED
data/test/test-yaml-parser.rb
CHANGED
data/test/test-yaml-parser.yaml
CHANGED
data/test/test.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
###
|
|
2
2
|
### $Rev$
|
|
3
|
-
### $Release 1.4.0-
|
|
3
|
+
### $Release: 1.4.0-preview1 $
|
|
4
4
|
### copyright(c) 2005-2010 kuwata-lab all rights reserved.
|
|
5
5
|
###
|
|
6
6
|
|
|
@@ -56,13 +56,11 @@ if $0 == __FILE__
|
|
|
56
56
|
require 'test-rule.rb'
|
|
57
57
|
|
|
58
58
|
# require 'test-validator.rb' # 37 tests, 72 assertions, 20 failures, 0 errors
|
|
59
|
-
require 'test-metavalidator.rb'
|
|
59
|
+
# require 'test-metavalidator.rb' # 161 tests, 321 assertions, 4 failures, 0 errors
|
|
60
60
|
|
|
61
|
-
|
|
62
|
-
# test_databind4> was redefined [test_databind4(DataBindingTest)]
|
|
63
|
-
# require 'test-databinding.rb'
|
|
61
|
+
require 'test-databinding.rb'
|
|
64
62
|
|
|
65
|
-
require 'test-main.rb'
|
|
63
|
+
# require 'test-main.rb' # 37 tests, 49 assertions, 2 failures, 0 errors
|
|
66
64
|
# require 'test-action.rb' # 22 tests, 26 assertions, 0 failures, 6 ERRORS
|
|
67
65
|
# require 'test-users-guide.rb' # 48 tests, 55 assertions, 29 failures, 0 errors
|
|
68
66
|
|