param_test 0.0.1 → 0.0.2

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.
@@ -28,6 +28,13 @@ module ActiveSupport
28
28
  # end
29
29
  #
30
30
  def param_test(description_template, parameters, &block)
31
+ param_count = format_sequence_count(description_template)
32
+
33
+ if param_count != block.arity
34
+ raise ArgumentError, "Number of arguments expected in description template " +
35
+ "'#{description_template}', doesn't match number of argument to block (#{block.arity})"
36
+ end
37
+
31
38
  parameters.each do |param_set|
32
39
  # Replacing nil values with 'nil' string because nil values will
33
40
  # get converted to an empty string within a test name.
@@ -36,17 +43,16 @@ module ActiveSupport
36
43
  param.nil? ? 'nil' : param
37
44
  end
38
45
  else
39
- sanitized_param_set = param_set.nil? ? 'nil' : param_set
46
+ sanitized_param_set = param_set.nil? ? ['nil'] : [param_set]
40
47
  end
41
48
 
42
- begin
43
- description = description_template % sanitized_param_set
44
- rescue ArgumentError
45
- raise ArgumentError, "Parameter set #{param_set} doesn't match number " +
49
+ if param_count != sanitized_param_set.size
50
+ raise ArgumentError, "Parameter set #{sanitized_param_set} doesn't match number " +
46
51
  "of arguments expected by description template '#{description_template}'"
47
52
  end
48
53
 
49
54
  # Make sure the description generates a unique test method name.
55
+ description = description_template % sanitized_param_set
50
56
  unique_description = description
51
57
  if instance_methods.include? generate_test_name(unique_description)
52
58
  count = 1
@@ -71,6 +77,13 @@ module ActiveSupport
71
77
  sanitized_description = description.gsub(/\s+/,'_')
72
78
  "test_#{sanitized_description}".to_sym
73
79
  end
80
+
81
+ def format_sequence_count(format_string)
82
+ sequences = format_string.scan(/%+/).select do |match|
83
+ match.size.odd?
84
+ end
85
+ sequences.size
86
+ end
74
87
  end
75
88
  end
76
89
  end
data/param_test.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'param_test'
3
- s.version = '0.0.1'
3
+ s.version = '0.0.2'
4
4
  s.platform = Gem::Platform::RUBY
5
5
  s.authors = ['Nik Haldimann']
6
6
  s.email = ['nhaldimann@gmail.com']
@@ -13,7 +13,7 @@ class ParamTestMetaTest < ActiveSupport::TestCase
13
13
 
14
14
  test "empty parameters adds no tests" do
15
15
  test_case = Class.new ActiveSupport::TestCase do
16
- param_test "adds no tests", [] do |param| end
16
+ param_test "adds no tests", [] do || end
17
17
  end
18
18
  assert_test_method_count test_case, 0
19
19
  end
@@ -44,11 +44,32 @@ class ParamTestMetaTest < ActiveSupport::TestCase
44
44
  assert_has_test_method test_case, :test_with_two_params_43_44
45
45
  end
46
46
 
47
- test "uneven parameter lists fails" do
47
+ param_test "mismatching parameter list %s fails for %s", [
48
+ [[[43]], "%s %s"],
49
+ [[[41, 42, 43]], "%s %s"],
50
+ ] do |params, description|
51
+ assert_raise ArgumentError do
52
+ Class.new ActiveSupport::TestCase do
53
+ param_test description,
54
+ params do |first, second| end
55
+ end
56
+ end
57
+ end
58
+
59
+ test "wrong block arity fails" do
60
+ assert_raise ArgumentError do
61
+ Class.new ActiveSupport::TestCase do
62
+ param_test "%s %s",
63
+ [[41, 42]] do |first| end
64
+ end
65
+ end
66
+ end
67
+
68
+ test "more wrong block arity fails" do
48
69
  assert_raise ArgumentError do
49
70
  Class.new ActiveSupport::TestCase do
50
71
  param_test "%s %s",
51
- [[41, 42], [43], [44, 45]] do |first, second| end
72
+ [[41, 42]] do |first, second, third| end
52
73
  end
53
74
  end
54
75
  end
@@ -56,7 +77,7 @@ class ParamTestMetaTest < ActiveSupport::TestCase
56
77
  test "substitutes nil string for nil" do
57
78
  test_case = Class.new ActiveSupport::TestCase do
58
79
  param_test "params %s %s",
59
- [[nil, nil]] do |param| end
80
+ [[nil, nil]] do |first, second| end
60
81
  end
61
82
  assert_test_method_count test_case, 1
62
83
  assert_has_test_method test_case, :test_params_nil_nil
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: param_test
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-01-15 00:00:00.000000000 Z
12
+ date: 2013-01-23 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport