suture 1.1.0 → 1.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +9 -0
- data/lib/suture/error/result_mismatch.rb +4 -4
- data/lib/suture/surgeon/auditor.rb +42 -11
- data/lib/suture/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f33e4939ed0c1027f6785cc54be152ea672ebdb4
|
4
|
+
data.tar.gz: bec9bab57ef345f7095cabf4ece4c84e242b79e1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6ddae427868b0b514a8d4b6c3b413f0185c15321e5cfd0acea5ed044a60d78c5232dba4b4cbb3219b33abca7bfad9350a85aff05849f97dc8f1215d341b650f1
|
7
|
+
data.tar.gz: 15ef4a1b3af52821d69f1c3aa6997b123bcbcdc0570ce6296cf420caf7437f64083a4442bc278427ccb302fb806705faba8acf2ca0c531cac20450fbaf3c2fb7
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,14 @@
|
|
1
1
|
# Change Log
|
2
2
|
|
3
|
+
## [v1.1.0](https://github.com/testdouble/suture/tree/v1.1.0) (2016-09-18)
|
4
|
+
[Full Changelog](https://github.com/testdouble/suture/compare/v1.0.0...v1.1.0)
|
5
|
+
|
6
|
+
**Merged pull requests:**
|
7
|
+
|
8
|
+
- Return the old result when call\_both mismatches and raise is disable [\#63](https://github.com/testdouble/suture/pull/63) ([searls](https://github.com/searls))
|
9
|
+
- excludes example/ from codeclimate analysis [\#62](https://github.com/testdouble/suture/pull/62) ([JoshTGreenwood](https://github.com/JoshTGreenwood))
|
10
|
+
- update version in CHANGELOG \[ci skip\] [\#59](https://github.com/testdouble/suture/pull/59) ([y-yagi](https://github.com/y-yagi))
|
11
|
+
|
3
12
|
## [v1.0.0](https://github.com/testdouble/suture/tree/v1.0.0) (2016-09-07)
|
4
13
|
[Full Changelog](https://github.com/testdouble/suture/compare/v0.5.0...v1.0.0)
|
5
14
|
|
@@ -16,11 +16,11 @@ module Suture::Error
|
|
16
16
|
Arguments: ```
|
17
17
|
#{@plan.args.inspect}
|
18
18
|
```
|
19
|
-
The new code path returned: ```
|
20
|
-
#{@new_result.inspect}
|
19
|
+
The new code path #{@new_result.errored? ? "raised error" : "returned value"}: ```
|
20
|
+
#{@new_result.value.inspect}
|
21
21
|
```
|
22
|
-
The old code path returned: ```
|
23
|
-
#{@old_result.inspect}
|
22
|
+
The old code path #{@old_result.errored? ? "raised error" : "returned value"}: ```
|
23
|
+
#{@old_result.value.inspect}
|
24
24
|
```
|
25
25
|
|
26
26
|
Here's what we recommend you do next:
|
@@ -1,42 +1,73 @@
|
|
1
1
|
require "suture/error/result_mismatch"
|
2
|
+
require "suture/value/result"
|
3
|
+
require "suture/util/compares_results"
|
2
4
|
require "suture/util/scalpel"
|
3
5
|
|
4
6
|
module Suture::Surgeon
|
5
7
|
class Auditor
|
6
8
|
include Suture::Adapter::Log
|
7
9
|
|
10
|
+
def initialize
|
11
|
+
@scalpel = Suture::Util::Scalpel.new
|
12
|
+
end
|
13
|
+
|
8
14
|
def operate(plan)
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
if !plan.comparator.call(old_result, new_result)
|
15
|
+
new_result = result_for(plan, :new)
|
16
|
+
old_result = result_for(plan, :old)
|
17
|
+
if !comparable?(plan, old_result, new_result)
|
13
18
|
handle_mismatch(plan, old_result, new_result)
|
14
19
|
else
|
15
|
-
new_result
|
20
|
+
return_result(new_result)
|
16
21
|
end
|
17
22
|
end
|
18
23
|
|
19
24
|
private
|
20
25
|
|
26
|
+
def result_for(plan, path)
|
27
|
+
begin
|
28
|
+
Suture::Value::Result.returned(@scalpel.cut(plan, path))
|
29
|
+
rescue StandardError => error
|
30
|
+
Suture::Value::Result.errored(error)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def comparable?(plan, old_result, new_result)
|
35
|
+
Suture::Util::ComparesResults.new(plan.comparator).compare(
|
36
|
+
old_result,
|
37
|
+
new_result
|
38
|
+
)
|
39
|
+
end
|
40
|
+
|
21
41
|
def handle_mismatch(plan, old_result, new_result)
|
22
42
|
log_warning(plan, old_result, new_result)
|
23
43
|
if plan.raise_on_result_mismatch
|
24
44
|
raise Suture::Error::ResultMismatch.new(plan, new_result, old_result)
|
25
45
|
elsif plan.return_old_on_result_mismatch
|
26
|
-
old_result
|
46
|
+
return_result(old_result)
|
27
47
|
else
|
28
|
-
new_result
|
48
|
+
return_result(new_result)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
def return_result(result)
|
53
|
+
if result.errored?
|
54
|
+
raise result.value
|
55
|
+
else
|
56
|
+
return result.value
|
29
57
|
end
|
30
58
|
end
|
31
59
|
|
32
60
|
def log_warning(plan, old_result, new_result)
|
33
61
|
log_warn <<-MSG.gsub(/^ {8}/,'')
|
34
62
|
Seam #{plan.name.inspect} is set to :call_both the :new and :old code
|
35
|
-
paths, but they did not match.
|
36
|
-
|
63
|
+
paths, but they did not match.
|
64
|
+
|
65
|
+
The new result #{new_result.errored? ? "raised" : "returned"}: ```
|
66
|
+
#{new_result.value.inspect}
|
37
67
|
```
|
38
|
-
|
39
|
-
|
68
|
+
|
69
|
+
The old result #{old_result.errored? ? "raised" : "returned"}: ```
|
70
|
+
#{old_result.value.inspect}
|
40
71
|
```
|
41
72
|
MSG
|
42
73
|
end
|
data/lib/suture/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: suture
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Justin Searls
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-09-
|
11
|
+
date: 2016-09-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sqlite3
|