the_array_comparator 0.4.0 → 0.5.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/Gemfile +1 -0
- data/Gemfile.lock +5 -4
- data/README.md +66 -5
- data/Rakefile +1 -93
- data/gemfiles/Gemfile.default +1 -0
- data/lib/the_array_comparator/comparator.rb +1 -1
- data/lib/the_array_comparator/result.rb +7 -1
- data/lib/the_array_comparator/sample.rb +6 -0
- data/lib/the_array_comparator/version.rb +2 -2
- data/spec/comparator/comparator_spec.rb +15 -0
- data/spec/sample_spec.rb +5 -0
- metadata +2 -2
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,14 +1,12 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
the_array_comparator (0.
|
5
|
-
|
4
|
+
the_array_comparator (0.4.0)
|
5
|
+
activesupport
|
6
6
|
|
7
7
|
GEM
|
8
8
|
remote: https://rubygems.org/
|
9
9
|
specs:
|
10
|
-
active_support (3.0.0)
|
11
|
-
activesupport (= 3.0.0)
|
12
10
|
activesupport (3.0.0)
|
13
11
|
arrayfields (4.7.4)
|
14
12
|
aruba (0.5.1)
|
@@ -43,6 +41,8 @@ GEM
|
|
43
41
|
debugger-ruby_core_source (1.1.8)
|
44
42
|
diff-lcs (1.1.3)
|
45
43
|
fattr (2.2.1)
|
44
|
+
fedux_org-stdlib (0.1.0)
|
45
|
+
activesupport
|
46
46
|
ffaker (1.15.0)
|
47
47
|
ffi (1.4.0)
|
48
48
|
fuubar (1.1.0)
|
@@ -107,6 +107,7 @@ DEPENDENCIES
|
|
107
107
|
awesome_print
|
108
108
|
churn
|
109
109
|
debugger
|
110
|
+
fedux_org-stdlib
|
110
111
|
ffaker
|
111
112
|
fuubar
|
112
113
|
github-markup
|
data/README.md
CHANGED
@@ -3,9 +3,14 @@
|
|
3
3
|
[](https://codeclimate.com/github/maxmeyer/the_array_comparator)
|
4
4
|
[](https://travis-ci.org/maxmeyer/the_array_comparator)
|
5
5
|
|
6
|
-
|
7
|
-
|
8
|
-
|
6
|
+
|
7
|
+
The Array Comparator lets you add multiple checks comparing two arrays each.
|
8
|
+
This way it lets you write more concise tests and makes error detection in a
|
9
|
+
commandline environment a lot easier -- [Use Cases](#use_cases). If you're
|
10
|
+
interested, please have a look at the <a
|
11
|
+
href="http://www.github.com/maxmeyer/the_array_comparator">git repository</a>.
|
12
|
+
|
13
|
+
|
9
14
|
|
10
15
|
It also supports caching of previous comparism runs to reduce the amount of
|
11
16
|
time for each subsequent run - if no further check was added.
|
@@ -28,6 +33,7 @@ Or install it yourself as:
|
|
28
33
|
|
29
34
|
Currently the following strategies are supported
|
30
35
|
<table>
|
36
|
+
<caption>Supported search strategies for checks</caption>
|
31
37
|
<tr>
|
32
38
|
<th>Strategy</th>
|
33
39
|
<th>Description</th>
|
@@ -66,6 +72,45 @@ Currently the following strategies are supported
|
|
66
72
|
</tr>
|
67
73
|
</table>
|
68
74
|
|
75
|
+
To add a check you need to use `#add_check`-method. It accepts four arguments
|
76
|
+
* `data`: The data which should be searched
|
77
|
+
* `strategy`: The kind of check which should be added (see the table above for supported strategies)
|
78
|
+
* `keywords`: The keywords which should be looked up in data
|
79
|
+
* `options` (optional): Options for the check to be added (see the table below for valid options)
|
80
|
+
|
81
|
+
```ruby
|
82
|
+
comparator.add_check data , operation, keywords, options
|
83
|
+
```
|
84
|
+
|
85
|
+
<table>
|
86
|
+
<caption>Supported options for check</caption>
|
87
|
+
<tr>
|
88
|
+
<th>Option</th>
|
89
|
+
<th>Description</th>
|
90
|
+
</tr>
|
91
|
+
<tr>
|
92
|
+
<td>:tag</td>
|
93
|
+
<td>If you need to know which check caused the test suite to fail, add a
|
94
|
+
tag to the check. The array comparator records the sample which fails the
|
95
|
+
whole test suite. You can use *whatever* you want/can imagine as a tag:
|
96
|
+
e.g. `String`, `Symbol`. Personally I prefer to use `Symbol`s.</td>
|
97
|
+
</tr>
|
98
|
+
<tr>
|
99
|
+
<td>:exceptions</td>
|
100
|
+
<td>Some times you have a quite generic check which matches to many lines
|
101
|
+
in the sample. To help you with that, you can add an exception to a
|
102
|
+
check.</td>
|
103
|
+
</tr>
|
104
|
+
</table>
|
105
|
+
|
106
|
+
```ruby
|
107
|
+
comparator.add_check data , operation, keywords, tag: :test_tag, exceptions: [ 'lala' ]
|
108
|
+
```
|
109
|
+
|
110
|
+
If you ask the comparator for success before a check was added, it will return
|
111
|
+
`true`. If you ask it for the `#failed_sample` it will return an empty result
|
112
|
+
to you.
|
113
|
+
|
69
114
|
### Simple example
|
70
115
|
|
71
116
|
```ruby
|
@@ -103,7 +148,7 @@ data = %w{ acd b }
|
|
103
148
|
keyword_overlap = %w{ a b }
|
104
149
|
exceptions = %w{ cd }
|
105
150
|
|
106
|
-
comparator.add_check data , :contains_all_as_substring, keyword_overlap, exceptions
|
151
|
+
comparator.add_check data , :contains_all_as_substring, keyword_overlap, exceptions: exceptions
|
107
152
|
|
108
153
|
result = comparator.success?
|
109
154
|
puts result #should be false
|
@@ -130,6 +175,7 @@ puts result #should be true
|
|
130
175
|
### Example with tag
|
131
176
|
|
132
177
|
```ruby
|
178
|
+
#simple, isn't it?
|
133
179
|
require 'the_array_comparator'
|
134
180
|
comparator = TheArrayComparator::Comparator.new
|
135
181
|
data = %w{ a b c d }
|
@@ -137,10 +183,25 @@ keyword_successfull = %w{ a b }
|
|
137
183
|
keyword_failed = %w{ e }
|
138
184
|
|
139
185
|
comparator.add_check data , :contains_all , keyword_successfull
|
186
|
+
#comparator.add_check data , :contains_all , keyword_failed, tag: :this_is_another_tag
|
140
187
|
comparator.add_check data , :contains_all , keyword_failed, tag: 'this is a failed sample'
|
141
188
|
|
142
189
|
comparator.success?
|
143
|
-
puts comparator.result.failed_sample
|
190
|
+
puts comparator.result.failed_sample.tag
|
191
|
+
|
192
|
+
#use WHATEVER you want!
|
193
|
+
require 'the_array_comparator'
|
194
|
+
require 'ostruct'
|
195
|
+
comparator = TheArrayComparator::Comparator.new
|
196
|
+
data = %w{ a b c d }
|
197
|
+
keyword_successfull = %w{ a b }
|
198
|
+
keyword_failed = %w{ e }
|
199
|
+
|
200
|
+
comparator.add_check data , :contains_all , keyword_successfull
|
201
|
+
comparator.add_check data , :contains_all , keyword_failed, tag: OpenStruct.new( id: 1, text: 'this is another tag as well' )
|
202
|
+
|
203
|
+
comparator.success?
|
204
|
+
puts comparator.result.failed_sample.tag.text
|
144
205
|
```
|
145
206
|
|
146
207
|
### Example with access to result
|
data/Rakefile
CHANGED
@@ -1,93 +1 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
unless ENV['TRAVIS_CI'] == 'true'
|
4
|
-
namespace :gem do
|
5
|
-
require 'bundler/gem_tasks'
|
6
|
-
end
|
7
|
-
|
8
|
-
require 'yard'
|
9
|
-
require 'rubygems/package_task'
|
10
|
-
require 'active_support/core_ext/string/strip'
|
11
|
-
end
|
12
|
-
|
13
|
-
YARD::Rake::YardocTask.new() do |y|
|
14
|
-
# y.options << '--verbose'
|
15
|
-
end
|
16
|
-
|
17
|
-
desc 'start tmux'
|
18
|
-
task :terminal do
|
19
|
-
sh "script/terminal"
|
20
|
-
end
|
21
|
-
|
22
|
-
task :term => :terminal
|
23
|
-
task :t => :terminal
|
24
|
-
|
25
|
-
namespace :version do
|
26
|
-
version_file = Dir.glob('lib/**/version.rb').first
|
27
|
-
|
28
|
-
desc 'bump version of library to new version'
|
29
|
-
task :bump do
|
30
|
-
|
31
|
-
new_version = ENV['VERSION'] || ENV['version']
|
32
|
-
|
33
|
-
raw_module_name = File.open(version_file, "r").readlines.grep(/module/).first
|
34
|
-
module_name = raw_module_name.chomp.match(/module\s+(\S+)/) {$1}
|
35
|
-
|
36
|
-
version_string = %Q{#main #{module_name}
|
37
|
-
module #{module_name}
|
38
|
-
VERSION = '#{new_version}'
|
39
|
-
end}
|
40
|
-
|
41
|
-
File.open(version_file, "w") do |f|
|
42
|
-
f.write version_string.strip_heredoc
|
43
|
-
end
|
44
|
-
|
45
|
-
sh "git add #{version_file}"
|
46
|
-
sh "git commit -m 'version bump to #{new_version}'"
|
47
|
-
project = 'the_array_comparator'
|
48
|
-
sh "git tag #{project}-v#{new_version}"
|
49
|
-
end
|
50
|
-
|
51
|
-
desc 'show version of library'
|
52
|
-
task :show do
|
53
|
-
raw_version = File.open(version_file, "r").readlines.grep(/VERSION/).first
|
54
|
-
|
55
|
-
if raw_version
|
56
|
-
version = raw_version.chomp.match(/VERSION\s+=\s+["']([^'"]+)["']/) { $1 }
|
57
|
-
puts version
|
58
|
-
else
|
59
|
-
warn "Could not parse version file \"#{version_file}\""
|
60
|
-
end
|
61
|
-
|
62
|
-
end
|
63
|
-
|
64
|
-
desc 'Restore version file from git repository'
|
65
|
-
task :restore do
|
66
|
-
sh "git checkout #{version_file}"
|
67
|
-
end
|
68
|
-
|
69
|
-
end
|
70
|
-
|
71
|
-
namespace :travis do
|
72
|
-
desc 'Runs travis-lint to check .travis.yml'
|
73
|
-
task :check do
|
74
|
-
sh 'travis-lint'
|
75
|
-
end
|
76
|
-
end
|
77
|
-
|
78
|
-
namespace :test do
|
79
|
-
desc 'Run specs'
|
80
|
-
task :specs do
|
81
|
-
sh 'bundle exec rspec spec'
|
82
|
-
end
|
83
|
-
|
84
|
-
desc 'Run tests in "travis mode"'
|
85
|
-
task :travis_specs do
|
86
|
-
ENV['TRAVIS_CI'] = 'true'
|
87
|
-
sh 'rspec spec'
|
88
|
-
end
|
89
|
-
end
|
90
|
-
|
91
|
-
task :console do
|
92
|
-
sh 'script/console'
|
93
|
-
end
|
1
|
+
require 'fedux_org/stdlib/rake'
|
data/gemfiles/Gemfile.default
CHANGED
@@ -37,5 +37,11 @@ module TheArrayComparator
|
|
37
37
|
@tag = tag
|
38
38
|
end
|
39
39
|
|
40
|
+
# Check if sample is blank: no values for keywords, data, exceptions, tag
|
41
|
+
#
|
42
|
+
# @return [true,false] the result of check
|
43
|
+
def blank?
|
44
|
+
@keywords.blank? and @data.blank? and @exceptions.blank? and @tag.blank?
|
45
|
+
end
|
40
46
|
end
|
41
47
|
end
|
@@ -165,4 +165,19 @@ describe Comparator do
|
|
165
165
|
result = comparator.result
|
166
166
|
expect(result.failed_sample).to eq(c.sample)
|
167
167
|
end
|
168
|
+
|
169
|
+
it "tells you the result of the check although no checks were added" do
|
170
|
+
comparator = Comparator.new
|
171
|
+
comparator.success?
|
172
|
+
result = comparator.result
|
173
|
+
expect( comparator.success? ).to eq(true)
|
174
|
+
end
|
175
|
+
|
176
|
+
it "returns an empty result if no checks were added but it is asked for a result" do
|
177
|
+
comparator = Comparator.new
|
178
|
+
comparator.success?
|
179
|
+
|
180
|
+
result = comparator.result
|
181
|
+
expect(result.failed_sample).to be_blank
|
182
|
+
end
|
168
183
|
end
|
data/spec/sample_spec.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: the_array_comparator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
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-
|
12
|
+
date: 2013-11-22 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|