regtest 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Changelog +5 -0
- data/README.md +114 -0
- data/Rakefile +4 -1
- data/lib/regtest.rb +19 -10
- metadata +6 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: abd6f8185f73664165e398cca0bef2b0939745a4
|
4
|
+
data.tar.gz: 4365febeeb57037f5f07d8719307926364ca0764
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9cc05a81f6ab89b4c049e495a7936ed43ca608cab90b13e2e02ad365f7565f97f73b798d5bd0f6d31db4fb1eefaef102a781727bb12a53296f893406d41a6653
|
7
|
+
data.tar.gz: 2fb9fe69b682acfc98c660de78e1ad699da386c85e04a8ec60be3666ecf66e8e64d782fbbcd9081c9402ba4f687eb748a18bc5e1f56adf8b162db1d8db75838a
|
data/Changelog
CHANGED
data/README.md
ADDED
@@ -0,0 +1,114 @@
|
|
1
|
+
# Regtest - Simple Regression Testing For Ruby Projects
|
2
|
+
|
3
|
+
## Description
|
4
|
+
|
5
|
+
This library support a very simple way to do regression testing in Ruby projects.
|
6
|
+
I am using it for integration testing of my projects
|
7
|
+
[mini_exiftool](https://github.com/janfri/mini_exiftool/tree/master/regtest)
|
8
|
+
and [multi_exiftool](https://github.com/janfri/multi_exiftool-redesign/tree/master/regtest)
|
9
|
+
to check if exiftool itself returns different values or
|
10
|
+
new tags in newer versions.
|
11
|
+
|
12
|
+
## Installation
|
13
|
+
|
14
|
+
Installing the gem with
|
15
|
+
gem install regtest
|
16
|
+
or put a copy of regtest.rb in your project.
|
17
|
+
|
18
|
+
## Using
|
19
|
+
|
20
|
+
The idea behind regtest is the following workflow:
|
21
|
+
1. Writing samples
|
22
|
+
2. Running samples
|
23
|
+
3. Checking results (differences between the actual results and the
|
24
|
+
results of a previous run of your samples)
|
25
|
+
|
26
|
+
### Writing Samples
|
27
|
+
|
28
|
+
A samples file is a simple Ruby script with one ore more samples,
|
29
|
+
for example
|
30
|
+
require 'regtest'
|
31
|
+
|
32
|
+
Regtest.sample 'String result' do
|
33
|
+
# Doing something to get the result of the sample
|
34
|
+
# end make sure it is the result of the block
|
35
|
+
'some text'
|
36
|
+
end
|
37
|
+
|
38
|
+
Regtest.sample 'Division by zero' do
|
39
|
+
# If an exception occurs while execution of the
|
40
|
+
# block it is catched and used as value for the
|
41
|
+
# sample
|
42
|
+
2 / 0
|
43
|
+
end
|
44
|
+
|
45
|
+
The name of the sample (parameter of the `Regtest.sample` method)
|
46
|
+
and the results of the samples (return value of the block) are stored
|
47
|
+
in YAML format. So it should be a YAML friendly value as String,
|
48
|
+
Number, boolean value, Symbol.
|
49
|
+
Results could also be an Array or Hash with such values.
|
50
|
+
|
51
|
+
You can also include Regtest to have the sample method at
|
52
|
+
top level.
|
53
|
+
require 'regtest'
|
54
|
+
include Regtest
|
55
|
+
|
56
|
+
sample :x do
|
57
|
+
:x
|
58
|
+
end
|
59
|
+
|
60
|
+
By convention sample files are stored in a directory `regtest`
|
61
|
+
in your Ruby application.
|
62
|
+
|
63
|
+
|
64
|
+
### Running Samples
|
65
|
+
|
66
|
+
Wether you run your examples manually
|
67
|
+
ruby -I lib regtest/*.rb
|
68
|
+
or using the Rake task of regtest:
|
69
|
+
Add the line
|
70
|
+
require 'regtest/task'
|
71
|
+
to your Rakefile and you can run your samples with
|
72
|
+
rake regtest
|
73
|
+
|
74
|
+
### Checking Results
|
75
|
+
|
76
|
+
The results of each samples file are stored as a collection of
|
77
|
+
YAML documents in a corresponding results file (YAML) per samples
|
78
|
+
file.
|
79
|
+
For example for the samples files
|
80
|
+
regtest/foo.rb
|
81
|
+
regtest/bar.rb
|
82
|
+
are the corresponding results files
|
83
|
+
regtest/foo.yml
|
84
|
+
regtest/bar.yml
|
85
|
+
|
86
|
+
So the content of the results file of the example above is
|
87
|
+
---
|
88
|
+
sample: String result
|
89
|
+
result: some text
|
90
|
+
---
|
91
|
+
sample: Division by zero
|
92
|
+
exception: divided by 0
|
93
|
+
|
94
|
+
Each time you run one ore more samples file the corresponding
|
95
|
+
results file will be overwritten (or generated if not yet
|
96
|
+
existend) with the actual result values of your samples.
|
97
|
+
So source code version control programm is the tool to determine
|
98
|
+
changes between older runs of the samples.
|
99
|
+
Therefore the samples file and their corresponding results files
|
100
|
+
should be taken under version control.
|
101
|
+
|
102
|
+
## Source Code
|
103
|
+
|
104
|
+
The code is hosted on [github](https://github.com/janfri/regtest) and
|
105
|
+
[gitorious](https://gitorious.org/regtest).
|
106
|
+
Change it to your needs. Release a fork. It is open source.
|
107
|
+
|
108
|
+
## Author
|
109
|
+
|
110
|
+
Jan Friedrich <janfri26@gmail.com>
|
111
|
+
|
112
|
+
## License
|
113
|
+
|
114
|
+
Regtest is licensed under the same terms as Ruby itself.
|
data/Rakefile
CHANGED
@@ -2,9 +2,12 @@ require 'rim'
|
|
2
2
|
require 'rim/check_version'
|
3
3
|
require 'rim/gem'
|
4
4
|
|
5
|
+
$:.unshift 'lib'
|
6
|
+
require 'regtest/task'
|
7
|
+
|
5
8
|
Rim.setup do |p|
|
6
9
|
p.name = 'regtest'
|
7
|
-
p.version = '0.
|
10
|
+
p.version = '0.3.0'
|
8
11
|
p.authors = 'Jan Friedrich'
|
9
12
|
p.email = 'janfri26@gmail.com'
|
10
13
|
p.summary = 'Regression testing in Ruby.'
|
data/lib/regtest.rb
CHANGED
@@ -1,15 +1,17 @@
|
|
1
1
|
#
|
2
|
-
# Regtest - Regression
|
2
|
+
# Regtest - Simple Regression Testing For Ruby Projects
|
3
3
|
#
|
4
4
|
# Copyright 2014 by Jan Friedrich (janfri26@gmail.com)
|
5
|
-
# License:
|
5
|
+
# License: Regtest is licensed under the same terms as Ruby itself.
|
6
6
|
#
|
7
7
|
|
8
8
|
require 'yaml'
|
9
9
|
|
10
10
|
module Regtest
|
11
11
|
|
12
|
-
|
12
|
+
@count = 0
|
13
|
+
@results = {}
|
14
|
+
@start = Time.now
|
13
15
|
|
14
16
|
def sample name
|
15
17
|
h = {}
|
@@ -21,17 +23,18 @@ module Regtest
|
|
21
23
|
h['exception'] = e.message
|
22
24
|
end
|
23
25
|
output_filename = caller.first.split(/:/).first.sub(/\.rb/, '') << '.yml'
|
24
|
-
unless
|
25
|
-
puts unless
|
26
|
+
unless Regtest.results[output_filename]
|
27
|
+
puts unless Regtest.results.empty?
|
26
28
|
puts File.basename(output_filename, '.yml')
|
27
|
-
|
29
|
+
Regtest.results[output_filename] = []
|
28
30
|
end
|
29
|
-
|
31
|
+
Regtest.results[output_filename] << h
|
32
|
+
Regtest.count += 1
|
30
33
|
print '.'; $stdout.flush
|
31
34
|
end
|
32
35
|
|
33
|
-
|
34
|
-
|
36
|
+
class << self
|
37
|
+
attr_accessor :count, :results, :start
|
35
38
|
end
|
36
39
|
|
37
40
|
module_function :sample
|
@@ -40,7 +43,10 @@ end
|
|
40
43
|
|
41
44
|
at_exit do
|
42
45
|
ARGV.each {|a| load a}
|
43
|
-
|
46
|
+
sample_count = Regtest.count
|
47
|
+
sample_time = Time.now - Regtest.start
|
48
|
+
puts format("\n\n%d samples executed in %.2f s (%.2f samples/s)", sample_count, sample_time, sample_count / sample_time)
|
49
|
+
save_start = Time.now
|
44
50
|
Regtest.results.each_pair do |filename,arr|
|
45
51
|
File.open(filename, 'w') do |f|
|
46
52
|
arr.each do |h|
|
@@ -48,4 +54,7 @@ at_exit do
|
|
48
54
|
end
|
49
55
|
end
|
50
56
|
end
|
57
|
+
files_count = Regtest.results.size
|
58
|
+
save_time = Time.now - save_start
|
59
|
+
puts format("%d files written in %.2f s (%.2f files/s)", files_count, save_time, files_count / save_time)
|
51
60
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: regtest
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jan Friedrich
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-02-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rim
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 1.8.
|
19
|
+
version: 1.8.1
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 1.8.
|
26
|
+
version: 1.8.1
|
27
27
|
description: Regression testing in Ruby.
|
28
28
|
email: janfri26@gmail.com
|
29
29
|
executables: []
|
@@ -31,6 +31,7 @@ extensions: []
|
|
31
31
|
extra_rdoc_files: []
|
32
32
|
files:
|
33
33
|
- Changelog
|
34
|
+
- README.md
|
34
35
|
- Rakefile
|
35
36
|
- lib/regtest.rb
|
36
37
|
- lib/regtest/task.rb
|
@@ -54,7 +55,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
54
55
|
version: '0'
|
55
56
|
requirements: []
|
56
57
|
rubyforge_project:
|
57
|
-
rubygems_version: 2.2.
|
58
|
+
rubygems_version: 2.2.2
|
58
59
|
signing_key:
|
59
60
|
specification_version: 4
|
60
61
|
summary: Regression testing in Ruby.
|