lookout 2.3.0 → 3.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/README +351 -181
- data/Rakefile +20 -5
- data/lib/lookout-3.0.rb +138 -0
- data/lib/lookout-3.0/actual.rb +30 -0
- data/lib/lookout-3.0/actual/method.rb +31 -0
- data/lib/lookout-3.0/actual/not.rb +13 -0
- data/lib/lookout-3.0/actual/not/method.rb +10 -0
- data/lib/lookout-3.0/aphonic.rb +44 -0
- data/lib/lookout-3.0/diff.rb +29 -0
- data/lib/{lookout → lookout-3.0}/diff/algorithms.rb +1 -1
- data/lib/lookout-3.0/diff/algorithms/difflib.rb +62 -0
- data/lib/lookout-3.0/diff/algorithms/difflib/position.rb +63 -0
- data/lib/{lookout/diff/algorithms/difflib/position/to.rb → lookout-3.0/diff/algorithms/difflib/position/new.rb} +8 -17
- data/lib/lookout-3.0/diff/formats.rb +5 -0
- data/lib/lookout-3.0/diff/formats/inline.rb +43 -0
- data/lib/lookout-3.0/diff/formats/set.rb +48 -0
- data/lib/lookout-3.0/diff/formats/unified.rb +56 -0
- data/lib/lookout-3.0/diff/group.rb +57 -0
- data/lib/lookout-3.0/diff/groups.rb +47 -0
- data/lib/lookout-3.0/diff/match.rb +31 -0
- data/lib/lookout-3.0/diff/operation.rb +41 -0
- data/lib/lookout-3.0/diff/operations.rb +35 -0
- data/lib/lookout-3.0/diff/operations/copy.rb +25 -0
- data/lib/lookout-3.0/diff/operations/delete.rb +5 -0
- data/lib/lookout-3.0/diff/operations/insert.rb +5 -0
- data/lib/lookout-3.0/diff/operations/replace.rb +6 -0
- data/lib/lookout-3.0/diff/slice.rb +97 -0
- data/lib/lookout-3.0/difference.rb +10 -0
- data/lib/lookout-3.0/difference/array.rb +22 -0
- data/lib/lookout-3.0/difference/exception.rb +40 -0
- data/lib/lookout-3.0/difference/hash.rb +31 -0
- data/lib/lookout-3.0/difference/lookout.rb +5 -0
- data/lib/lookout-3.0/difference/lookout/actual.rb +6 -0
- data/lib/lookout-3.0/difference/lookout/actual/method.rb +13 -0
- data/lib/lookout-3.0/difference/lookout/actual/not.rb +6 -0
- data/lib/lookout-3.0/difference/lookout/actual/not/method.rb +9 -0
- data/lib/lookout-3.0/difference/lookout/output.rb +8 -0
- data/lib/lookout-3.0/difference/lookout/reception.rb +21 -0
- data/lib/lookout-3.0/difference/lookout/warning.rb +9 -0
- data/lib/lookout-3.0/difference/module.rb +12 -0
- data/lib/lookout-3.0/difference/object.rb +73 -0
- data/lib/lookout-3.0/difference/range.rb +12 -0
- data/lib/lookout-3.0/difference/regexp.rb +12 -0
- data/lib/lookout-3.0/difference/string.rb +21 -0
- data/lib/lookout-3.0/difference/symbol.rb +21 -0
- data/lib/lookout-3.0/encode.rb +20 -0
- data/lib/lookout-3.0/exception.rb +79 -0
- data/lib/lookout-3.0/exception/backtrace.rb +65 -0
- data/lib/lookout-3.0/exception/unknown.rb +25 -0
- data/lib/lookout-3.0/expect.rb +32 -0
- data/lib/lookout-3.0/expect/classes.rb +6 -0
- data/lib/lookout-3.0/expect/classes/exception.rb +27 -0
- data/lib/lookout-3.0/expect/exception.rb +30 -0
- data/lib/lookout-3.0/expect/object.rb +54 -0
- data/lib/lookout-3.0/expect/object/context.rb +149 -0
- data/lib/lookout-3.0/expectations.rb +69 -0
- data/lib/lookout-3.0/expectations/context.rb +52 -0
- data/lib/lookout-3.0/expected.rb +10 -0
- data/lib/lookout-3.0/expected/array.rb +16 -0
- data/lib/lookout-3.0/expected/classes.rb +5 -0
- data/lib/lookout-3.0/expected/classes/exception.rb +14 -0
- data/lib/lookout-3.0/expected/exception.rb +46 -0
- data/lib/lookout-3.0/expected/falseclass.rb +9 -0
- data/lib/lookout-3.0/expected/hash.rb +14 -0
- data/lib/lookout-3.0/expected/lookout.rb +5 -0
- data/lib/lookout-3.0/expected/lookout/actual.rb +5 -0
- data/lib/lookout-3.0/expected/lookout/actual/method.rb +13 -0
- data/lib/lookout-3.0/expected/lookout/actual/not.rb +6 -0
- data/lib/lookout-3.0/expected/lookout/actual/not/method.rb +13 -0
- data/lib/lookout-3.0/expected/lookout/output.rb +26 -0
- data/lib/lookout-3.0/expected/lookout/reception.rb +24 -0
- data/lib/lookout-3.0/expected/lookout/warning.rb +29 -0
- data/lib/lookout-3.0/expected/module.rb +12 -0
- data/lib/lookout-3.0/expected/object.rb +30 -0
- data/lib/lookout-3.0/expected/range.rb +12 -0
- data/lib/lookout-3.0/expected/regexp.rb +12 -0
- data/lib/lookout-3.0/expected/string.rb +11 -0
- data/lib/lookout-3.0/expected/symbol.rb +21 -0
- data/lib/lookout-3.0/expected/trueclass.rb +9 -0
- data/lib/lookout-3.0/inspect.rb +45 -0
- data/lib/lookout-3.0/interfaces.rb +5 -0
- data/lib/lookout-3.0/interfaces/commandline.rb +109 -0
- data/lib/lookout-3.0/literal.rb +18 -0
- data/lib/lookout-3.0/mock.rb +24 -0
- data/lib/lookout-3.0/object.rb +6 -0
- data/lib/lookout-3.0/object/not.rb +16 -0
- data/lib/lookout-3.0/object/not/receive.rb +18 -0
- data/lib/lookout-3.0/object/to.rb +12 -0
- data/lib/lookout-3.0/object/to/receive.rb +18 -0
- data/lib/lookout-3.0/output.rb +20 -0
- data/lib/lookout-3.0/plugins.rb +7 -0
- data/lib/lookout-3.0/reception.rb +128 -0
- data/lib/lookout-3.0/reception/arguments.rb +20 -0
- data/lib/lookout-3.0/reception/arguments/any.rb +16 -0
- data/lib/lookout-3.0/reception/arguments/error.rb +5 -0
- data/lib/lookout-3.0/reception/arguments/list.rb +17 -0
- data/lib/lookout-3.0/reception/arguments/none.rb +6 -0
- data/lib/lookout-3.0/reception/error.rb +24 -0
- data/lib/lookout-3.0/result.rb +16 -0
- data/lib/lookout-3.0/results.rb +5 -0
- data/lib/lookout-3.0/results/error.rb +18 -0
- data/lib/lookout-3.0/results/failure.rb +15 -0
- data/lib/lookout-3.0/results/success.rb +7 -0
- data/lib/lookout-3.0/stub.rb +55 -0
- data/lib/lookout-3.0/version.rb +133 -0
- data/lib/lookout-3.0/warning.rb +40 -0
- data/test/unit/examples.rb +208 -83
- data/test/unit/{lookout.rb → lookout-3.0.rb} +0 -0
- data/test/unit/lookout-3.0/actual.rb +13 -0
- data/test/unit/lookout-3.0/actual/method.rb +31 -0
- data/test/unit/lookout-3.0/actual/not.rb +15 -0
- data/test/unit/lookout-3.0/actual/not/method.rb +7 -0
- data/test/unit/lookout-3.0/aphonic.rb +31 -0
- data/test/unit/{lookout → lookout-3.0}/diff.rb +0 -0
- data/test/unit/{lookout/diff/group.rb → lookout-3.0/diff/algorithms.rb} +0 -0
- data/test/unit/lookout-3.0/diff/algorithms/difflib.rb +56 -0
- data/test/unit/lookout-3.0/diff/algorithms/difflib/position.rb +92 -0
- data/test/unit/{lookout/diff/algorithms/difflib/position/to.rb → lookout-3.0/diff/algorithms/difflib/position/new.rb} +1 -2
- data/test/unit/{lookout/results.rb → lookout-3.0/diff/formats.rb} +0 -0
- data/test/unit/{lookout → lookout-3.0}/diff/formats/inline.rb +0 -0
- data/test/unit/lookout-3.0/diff/formats/set.rb +26 -0
- data/test/unit/{lookout → lookout-3.0}/diff/formats/unified.rb +0 -0
- data/test/unit/{lookout/results/error.rb → lookout-3.0/diff/group.rb} +0 -0
- data/test/unit/lookout-3.0/diff/groups.rb +102 -0
- data/test/unit/{lookout → lookout-3.0}/diff/match.rb +0 -0
- data/test/unit/lookout-3.0/diff/operation.rb +17 -0
- data/test/unit/lookout-3.0/diff/operations.rb +22 -0
- data/test/unit/lookout-3.0/diff/operations/copy.rb +50 -0
- data/test/unit/lookout-3.0/diff/operations/delete.rb +45 -0
- data/test/unit/lookout-3.0/diff/operations/insert.rb +45 -0
- data/test/unit/lookout-3.0/diff/operations/replace.rb +45 -0
- data/test/unit/lookout-3.0/diff/slice.rb +56 -0
- data/test/unit/{lookout/results/failures/behavior.rb → lookout-3.0/difference.rb} +0 -0
- data/test/unit/lookout-3.0/difference/array.rb +32 -0
- data/test/unit/lookout-3.0/difference/exception.rb +69 -0
- data/test/unit/lookout-3.0/difference/hash.rb +30 -0
- data/test/unit/{lookout/results/failures/state.rb → lookout-3.0/difference/lookout.rb} +0 -0
- data/test/unit/{lookout/results/fulfilled.rb → lookout-3.0/difference/lookout/actual.rb} +0 -0
- data/test/unit/lookout-3.0/difference/lookout/actual/method.rb +7 -0
- data/test/unit/{lookout/runners/console.rb → lookout-3.0/difference/lookout/actual/not.rb} +0 -0
- data/test/unit/lookout-3.0/difference/lookout/actual/not/method.rb +7 -0
- data/test/unit/lookout-3.0/difference/lookout/output.rb +11 -0
- data/test/unit/lookout-3.0/difference/lookout/reception.rb +11 -0
- data/test/unit/lookout-3.0/difference/lookout/warning.rb +11 -0
- data/test/unit/lookout-3.0/difference/module.rb +11 -0
- data/test/unit/lookout-3.0/difference/object.rb +31 -0
- data/test/unit/lookout-3.0/difference/range.rb +11 -0
- data/test/unit/lookout-3.0/difference/regexp.rb +11 -0
- data/test/unit/lookout-3.0/difference/string.rb +29 -0
- data/test/unit/lookout-3.0/difference/symbol.rb +11 -0
- data/test/unit/lookout-3.0/encode.rb +28 -0
- data/test/unit/lookout-3.0/exception.rb +107 -0
- data/test/unit/lookout-3.0/exception/backtrace.rb +75 -0
- data/test/unit/lookout-3.0/exception/unknown.rb +23 -0
- data/test/unit/lookout-3.0/expect.rb +15 -0
- data/test/unit/{lookout/ui/console.rb → lookout-3.0/expect/classes.rb} +0 -0
- data/test/unit/lookout-3.0/expect/classes/exception.rb +41 -0
- data/test/unit/lookout-3.0/expect/exception.rb +63 -0
- data/test/unit/lookout-3.0/expect/object.rb +55 -0
- data/test/unit/lookout-3.0/expect/object/context.rb +120 -0
- data/test/unit/lookout-3.0/expectations.rb +55 -0
- data/test/unit/lookout-3.0/expectations/context.rb +44 -0
- data/test/unit/lookout-3.0/expected.rb +4 -0
- data/test/unit/lookout-3.0/expected/array.rb +19 -0
- data/test/unit/lookout-3.0/expected/classes.rb +4 -0
- data/test/unit/lookout-3.0/expected/classes/exception.rb +7 -0
- data/test/unit/lookout-3.0/expected/exception.rb +24 -0
- data/test/unit/lookout-3.0/expected/falseclass.rb +23 -0
- data/test/unit/lookout-3.0/expected/hash.rb +23 -0
- data/test/unit/lookout-3.0/expected/lookout.rb +4 -0
- data/test/unit/lookout-3.0/expected/lookout/actual.rb +4 -0
- data/test/unit/lookout-3.0/expected/lookout/actual/method.rb +11 -0
- data/test/unit/lookout-3.0/expected/lookout/actual/not.rb +4 -0
- data/test/unit/lookout-3.0/expected/lookout/actual/not/method.rb +11 -0
- data/test/unit/lookout-3.0/expected/lookout/output.rb +27 -0
- data/test/unit/lookout-3.0/expected/lookout/reception.rb +25 -0
- data/test/unit/lookout-3.0/expected/lookout/warning.rb +48 -0
- data/test/unit/lookout-3.0/expected/module.rb +23 -0
- data/test/unit/lookout-3.0/expected/object.rb +24 -0
- data/test/unit/lookout-3.0/expected/range.rb +19 -0
- data/test/unit/lookout-3.0/expected/regexp.rb +19 -0
- data/test/unit/lookout-3.0/expected/string.rb +44 -0
- data/test/unit/lookout-3.0/expected/symbol.rb +35 -0
- data/test/unit/lookout-3.0/expected/trueclass.rb +23 -0
- data/test/unit/lookout-3.0/inspect.rb +39 -0
- data/test/unit/lookout-3.0/interfaces.rb +4 -0
- data/test/unit/lookout-3.0/interfaces/commandline.rb +4 -0
- data/test/unit/lookout-3.0/literal.rb +15 -0
- data/test/unit/lookout-3.0/mock.rb +22 -0
- data/test/unit/lookout-3.0/object.rb +4 -0
- data/test/unit/lookout-3.0/object/not.rb +7 -0
- data/test/unit/lookout-3.0/object/not/receive.rb +9 -0
- data/test/unit/lookout-3.0/object/to.rb +7 -0
- data/test/unit/lookout-3.0/object/to/receive.rb +9 -0
- data/test/unit/lookout-3.0/output.rb +31 -0
- data/test/unit/lookout-3.0/plugins.rb +4 -0
- data/test/unit/lookout-3.0/reception.rb +86 -0
- data/test/unit/lookout-3.0/reception/arguments.rb +23 -0
- data/test/unit/lookout-3.0/reception/arguments/any.rb +15 -0
- data/test/unit/lookout-3.0/reception/arguments/error.rb +4 -0
- data/test/unit/lookout-3.0/reception/arguments/list.rb +19 -0
- data/test/unit/lookout-3.0/reception/arguments/none.rb +15 -0
- data/test/unit/lookout-3.0/reception/error.rb +4 -0
- data/test/unit/lookout-3.0/result.rb +27 -0
- data/test/unit/lookout-3.0/results.rb +4 -0
- data/test/unit/lookout-3.0/results/error.rb +37 -0
- data/test/unit/lookout-3.0/results/failure.rb +21 -0
- data/test/unit/lookout-3.0/results/success.rb +4 -0
- data/test/unit/lookout-3.0/stub.rb +53 -0
- data/test/unit/lookout-3.0/version.rb +4 -0
- data/test/unit/lookout-3.0/warning.rb +47 -0
- metadata +1159 -456
- data/lib/lookout.rb +0 -30
- data/lib/lookout/aphonic.rb +0 -40
- data/lib/lookout/diff.rb +0 -10
- data/lib/lookout/diff/algorithms/difflib.rb +0 -38
- data/lib/lookout/diff/algorithms/difflib/position.rb +0 -92
- data/lib/lookout/diff/formats.rb +0 -7
- data/lib/lookout/diff/formats/hash.rb +0 -53
- data/lib/lookout/diff/formats/inline.rb +0 -39
- data/lib/lookout/diff/formats/unified.rb +0 -57
- data/lib/lookout/diff/group.rb +0 -61
- data/lib/lookout/diff/groups.rb +0 -34
- data/lib/lookout/diff/match.rb +0 -36
- data/lib/lookout/diff/operation.rb +0 -33
- data/lib/lookout/diff/operations.rb +0 -36
- data/lib/lookout/diff/operations/delete.rb +0 -9
- data/lib/lookout/diff/operations/equal.rb +0 -27
- data/lib/lookout/diff/operations/insert.rb +0 -9
- data/lib/lookout/diff/operations/replace.rb +0 -9
- data/lib/lookout/diff/range.rb +0 -91
- data/lib/lookout/equalities.rb +0 -13
- data/lib/lookout/equalities/array.rb +0 -22
- data/lib/lookout/equalities/boolean.rb +0 -9
- data/lib/lookout/equalities/hash.rb +0 -25
- data/lib/lookout/equalities/include.rb +0 -9
- data/lib/lookout/equalities/object.rb +0 -24
- data/lib/lookout/equalities/output.rb +0 -19
- data/lib/lookout/equalities/standarderror.rb +0 -32
- data/lib/lookout/equalities/string.rb +0 -19
- data/lib/lookout/equalities/warning.rb +0 -16
- data/lib/lookout/equality.rb +0 -36
- data/lib/lookout/expectation.rb +0 -69
- data/lib/lookout/expectations.rb +0 -49
- data/lib/lookout/expectations/behavior.rb +0 -20
- data/lib/lookout/expectations/line.rb +0 -29
- data/lib/lookout/expectations/state.rb +0 -31
- data/lib/lookout/expectations/state/warning.rb +0 -26
- data/lib/lookout/mock.rb +0 -20
- data/lib/lookout/mock/method.rb +0 -70
- data/lib/lookout/mock/method/arguments.rb +0 -33
- data/lib/lookout/mock/method/arguments/any.rb +0 -11
- data/lib/lookout/mock/method/arguments/anything.rb +0 -11
- data/lib/lookout/mock/method/arguments/list.rb +0 -15
- data/lib/lookout/mock/method/arguments/none.rb +0 -11
- data/lib/lookout/mock/method/arguments/one.rb +0 -11
- data/lib/lookout/mock/method/calls.rb +0 -11
- data/lib/lookout/mock/method/calls/class.rb +0 -21
- data/lib/lookout/mock/method/calls/exactly.rb +0 -28
- data/lib/lookout/mock/method/calls/instance.rb +0 -25
- data/lib/lookout/mock/method/calls/lower.rb +0 -22
- data/lib/lookout/mock/method/calls/upper.rb +0 -22
- data/lib/lookout/mock/methods.rb +0 -12
- data/lib/lookout/mock/object.rb +0 -12
- data/lib/lookout/object.rb +0 -11
- data/lib/lookout/output.rb +0 -21
- data/lib/lookout/rake/tasks.rb +0 -36
- data/lib/lookout/rake/tasks/gem.rb +0 -49
- data/lib/lookout/rake/tasks/tags.rb +0 -16
- data/lib/lookout/rake/tasks/test.rb +0 -46
- data/lib/lookout/rake/tasks/test/loader.rb +0 -22
- data/lib/lookout/recorder.rb +0 -45
- data/lib/lookout/recorder/not.rb +0 -11
- data/lib/lookout/recorder/tape.rb +0 -21
- data/lib/lookout/recorders.rb +0 -6
- data/lib/lookout/recorders/reception.rb +0 -47
- data/lib/lookout/recorders/state.rb +0 -35
- data/lib/lookout/result.rb +0 -13
- data/lib/lookout/results.rb +0 -25
- data/lib/lookout/results/error.rb +0 -18
- data/lib/lookout/results/error/exception.rb +0 -34
- data/lib/lookout/results/error/exception/backtrace.rb +0 -50
- data/lib/lookout/results/failure.rb +0 -16
- data/lib/lookout/results/failures.rb +0 -6
- data/lib/lookout/results/failures/behavior.rb +0 -5
- data/lib/lookout/results/failures/state.rb +0 -5
- data/lib/lookout/results/fulfilled.rb +0 -5
- data/lib/lookout/results/unsuccessful.rb +0 -31
- data/lib/lookout/runners.rb +0 -6
- data/lib/lookout/runners/console.rb +0 -49
- data/lib/lookout/runners/trackers.rb +0 -5
- data/lib/lookout/runners/trackers/failure.rb +0 -14
- data/lib/lookout/stub.rb +0 -18
- data/lib/lookout/stub/method.rb +0 -105
- data/lib/lookout/stub/methods.rb +0 -18
- data/lib/lookout/stub/object.rb +0 -11
- data/lib/lookout/ui.rb +0 -7
- data/lib/lookout/ui/console.rb +0 -19
- data/lib/lookout/ui/silent.rb +0 -9
- data/lib/lookout/version.rb +0 -5
- data/lib/lookout/warning.rb +0 -7
- data/lib/lookout/xml.rb +0 -17
- data/test/unit/lookout/diff/algorithms/difflib.rb +0 -56
- data/test/unit/lookout/diff/algorithms/difflib/position.rb +0 -92
- data/test/unit/lookout/diff/groups.rb +0 -102
- data/test/unit/lookout/diff/operations.rb +0 -22
- data/test/unit/lookout/diff/operations/delete.rb +0 -45
- data/test/unit/lookout/diff/operations/equal.rb +0 -45
- data/test/unit/lookout/diff/operations/insert.rb +0 -45
- data/test/unit/lookout/diff/operations/replace.rb +0 -45
- data/test/unit/lookout/diff/range.rb +0 -50
- data/test/unit/lookout/equality.rb +0 -113
- data/test/unit/lookout/expectation.rb +0 -47
- data/test/unit/lookout/expectations.rb +0 -36
- data/test/unit/lookout/expectations/behavior.rb +0 -35
- data/test/unit/lookout/expectations/line.rb +0 -29
- data/test/unit/lookout/expectations/state.rb +0 -29
- data/test/unit/lookout/mock/method.rb +0 -143
- data/test/unit/lookout/mock/method/arguments.rb +0 -57
- data/test/unit/lookout/mock/method/arguments/any.rb +0 -11
- data/test/unit/lookout/recorder.rb +0 -11
- data/test/unit/lookout/results/error/exception/backtrace.rb +0 -20
- data/test/unit/lookout/results/unsuccessful.rb +0 -9
- data/test/unit/lookout/runners/trackers/failure.rb +0 -30
- data/test/unit/lookout/stub/method.rb +0 -48
- data/test/unit/lookout/stub/methods.rb +0 -19
- data/test/unit/lookout/xml.rb +0 -55
@@ -0,0 +1,69 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
# Represents the “Expectations” keyword in expectation files and the
|
4
|
+
# expectation files themselves. Used by {Interfaces::Commandline} and should
|
5
|
+
# be used by other interfaces as the main access point to expectation files.
|
6
|
+
# Implemented as an Enumerable over the expect blocks found in any of the
|
7
|
+
# expectations blocks in the expectation file.
|
8
|
+
class Lookout::Expectations
|
9
|
+
# Prepares the enumeration of the expect blocks found in the expectations
|
10
|
+
# file pointed to by the expanded PATH.
|
11
|
+
# @param [String] path
|
12
|
+
Value(:path)
|
13
|
+
include Enumerable
|
14
|
+
|
15
|
+
@@expectations = {}
|
16
|
+
|
17
|
+
class << self
|
18
|
+
def load(path)
|
19
|
+
@@expectations[path] = []
|
20
|
+
begin
|
21
|
+
begin
|
22
|
+
Kernel.load path, true
|
23
|
+
rescue LoadError => e
|
24
|
+
raise e,
|
25
|
+
'cannot load expectations from file: %s' % e,
|
26
|
+
[(Array(e.backtrace).find{ |b| b.start_with? path } or '%s:0' % path)] +
|
27
|
+
Array(e.backtrace) unless e.message.end_with? path
|
28
|
+
raise e,
|
29
|
+
'cannot load expectations from file: no such file or directory',
|
30
|
+
['%s:0' % path]
|
31
|
+
rescue SyntaxError => e
|
32
|
+
raise unless matches = (/\A(.*?:\d+): (.*)/m.match(e.message) rescue nil)
|
33
|
+
raise SyntaxError, matches[2], [matches[1]] + Array(e.backtrace)
|
34
|
+
end
|
35
|
+
@@expectations[path]
|
36
|
+
ensure
|
37
|
+
@@expectations.delete path
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def evaluate(path, &block) @@expectations[path] << block; self end
|
42
|
+
end
|
43
|
+
|
44
|
+
# @overload
|
45
|
+
# Enumerates the expect blocks.
|
46
|
+
#
|
47
|
+
# @yieldparam [Expect::Object] expect
|
48
|
+
# @raise [NoMemoryError, SignalException, SystemExit] If raised; all other
|
49
|
+
# exceptions are caught and turned into failing expect blocks, located at
|
50
|
+
# the source of the exception
|
51
|
+
# @overload
|
52
|
+
# @return [Enumerator<Expect::Object>] An Enumerator over the expect blocks
|
53
|
+
def each
|
54
|
+
return enum_for(__method__) unless block_given?
|
55
|
+
context = Lookout::Expectations::Context.new{ |expect| yield expect }
|
56
|
+
self.class.load(path).each do |expectations|
|
57
|
+
context.instance_eval(&expectations)
|
58
|
+
end
|
59
|
+
self
|
60
|
+
rescue NoMemoryError, SignalException, SystemExit
|
61
|
+
raise
|
62
|
+
rescue Exception => e
|
63
|
+
raise unless location = (Array(e.backtrace).first rescue nil)
|
64
|
+
file, line = Lookout.location(location)
|
65
|
+
raise unless file and line
|
66
|
+
yield nil.to_lookout_expected.expect(file, line){ raise e }
|
67
|
+
self
|
68
|
+
end
|
69
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
# Context in which expectations blocks are evaluated. Plug-ins may add private
|
4
|
+
# methods to this class to make them available to expectations blocks.
|
5
|
+
class Lookout::Expectations::Context
|
6
|
+
# Sets up a context in which the given block will be passed each expect block
|
7
|
+
# found in the expectations blocks evaluated in this context via
|
8
|
+
# #instance_eval.
|
9
|
+
# @yieldparam [Expect] expect
|
10
|
+
def initialize(&block) @block = block end
|
11
|
+
|
12
|
+
private
|
13
|
+
|
14
|
+
# Sets up an expect block, expecting EXPECTED and evaluating BLOCK for the
|
15
|
+
# actual result, then passes it to the block given to the constructor.
|
16
|
+
# @param (see Expect.expect)
|
17
|
+
# @return [self]
|
18
|
+
# @see Expect.expect
|
19
|
+
def expect(expected, &block)
|
20
|
+
@block.call Lookout::Expect.expect(expected,
|
21
|
+
*(block.respond_to?(:source_location) ?
|
22
|
+
block.source_location :
|
23
|
+
Lookout.location(caller.first)),
|
24
|
+
&block)
|
25
|
+
self
|
26
|
+
end
|
27
|
+
|
28
|
+
# @return [Actual] A result wrapper for explicit query expectations
|
29
|
+
def result; Lookout::Actual.new end
|
30
|
+
|
31
|
+
# @param [Object] expected
|
32
|
+
# @return [Literal] A literal expected value for EXPECTED
|
33
|
+
def literal(expected) Lookout::Literal.new(expected) end
|
34
|
+
|
35
|
+
# @param (see Stub::Object#initialize)
|
36
|
+
# @return [Mock::Object] A mock object set up with METHODS
|
37
|
+
def mock(methods = {}) Lookout::Mock.new(methods) end
|
38
|
+
|
39
|
+
# @return [Mock::Method::Arguments::None] An object representing
|
40
|
+
# “without arguments” for mock argument expectations
|
41
|
+
def without_arguments; Lookout::Reception::Arguments::None.new end
|
42
|
+
|
43
|
+
# @param (see Stub::Object#initialize)
|
44
|
+
# @return [Stub::Object] A stub object set up with METHODS
|
45
|
+
def stub(methods = {}) Lookout::Stub.new(methods) end
|
46
|
+
|
47
|
+
# @return [Output] An expected output wrapper around STRING
|
48
|
+
def output(string) Lookout::Output.new(string) end
|
49
|
+
|
50
|
+
# @return [Output] An expected warning wrapper around STRING
|
51
|
+
def warning(string) Lookout::Warning.new(string) end
|
52
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
# Function-like namespace for type-specific expected values. Every {::Object}
|
4
|
+
# should be convertable to a {Lookout::Expected::Object} when it receives
|
5
|
+
# #to_lookout_expected. ::Object implements this method, so all objects are
|
6
|
+
# covered by default. If you have a type that would benefit from more specific
|
7
|
+
# treatment, implement #to_lookout_expected by returning an instance of a
|
8
|
+
# subclass {Lookout::Expected::Object}.
|
9
|
+
module Lookout::Expected
|
10
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
# Represents expected {::Array}s.
|
4
|
+
class Lookout::Expected::Array < Lookout::Expected::Object
|
5
|
+
# @param [::Array] actual
|
6
|
+
# @return [Difference::Array, nil] A difference report between ACTUAL and
|
7
|
+
# {#expected} unless their content exhibit no {Object differences}
|
8
|
+
def difference(actual)
|
9
|
+
Lookout::Difference::Array.new(actual, expected) unless
|
10
|
+
Array === actual and
|
11
|
+
expected.size == actual.size and
|
12
|
+
expected.enum_for(:none?).with_index{ |v, i|
|
13
|
+
v.to_lookout_expected.difference(actual[i])
|
14
|
+
}
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
# Represents expected values that are descendants of {::Exception}.
|
4
|
+
class Lookout::Expected::Classes::Exception < Lookout::Expected::Object
|
5
|
+
# @param (see Object#expect)
|
6
|
+
# @yieldparam [Class] class
|
7
|
+
# @yieldreturn [Class]
|
8
|
+
# @return [Expect::Classes::Exception] An expect block for the receiver at
|
9
|
+
# LINE in FILE that’ll yield the {#expected} exception class and expect it
|
10
|
+
# or one of its descendants to be raised
|
11
|
+
def expect(file, line, &block)
|
12
|
+
Lookout::Expect::Classes::Exception.new(self, file, line, &block)
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
# Represents expected {::Exception}s.
|
4
|
+
class Lookout::Expected::Exception < Lookout::Expected::Object
|
5
|
+
# @param (see Object#expect)
|
6
|
+
# @yieldparam [::Exception] exception
|
7
|
+
# @yieldreturn [::Exception]
|
8
|
+
# @return [Expect::Exception] An expect block for the receiver at LINE in
|
9
|
+
# FILE that’ll yield the expected EXCEPTION and expect the exception to be
|
10
|
+
# raised
|
11
|
+
def expect(file, line, &block)
|
12
|
+
Lookout::Expect::Exception.new(self, file, line, &block)
|
13
|
+
end
|
14
|
+
|
15
|
+
# @param [::Exception] actual
|
16
|
+
# @return [Difference::Exception, nil] A difference report between ACTUAL
|
17
|
+
# and {#expected} unless they’re #equal? or their classes are `#==` and
|
18
|
+
# their messages match or {#expected}s message is a Regexp that matches
|
19
|
+
# actual’s message
|
20
|
+
def difference(actual)
|
21
|
+
Lookout::Difference::Exception.new(actual, expected, regexp) unless
|
22
|
+
expected.equal?(actual) or
|
23
|
+
(expected.class == actual.class and
|
24
|
+
(actual.respond_to? :message rescue false) and
|
25
|
+
(m = actual.message rescue nil) and
|
26
|
+
(regexp ? regexp === m : expected.message == m))
|
27
|
+
end
|
28
|
+
|
29
|
+
private
|
30
|
+
|
31
|
+
# The first test works in Ruby 1.8. In Ruby 1.9, however, #message always
|
32
|
+
# returns a String, unless the conversion raises an error. Sadly, this
|
33
|
+
# conversion can’t keep track of the ‘e’ and ‘n’ options for encoding
|
34
|
+
# handling.
|
35
|
+
# @private
|
36
|
+
def regexp
|
37
|
+
return @regexp if defined? @regexp
|
38
|
+
return @regexp = expected.message if Regexp === expected.message
|
39
|
+
return @regexp = nil unless expected.message =~ /\A\(\?([mix]*)(-[mix]+)?:(.*)\)\z/
|
40
|
+
@regexp = Regexp.new($3,
|
41
|
+
0 |
|
42
|
+
($1.include?('m') ? Regexp::MULTILINE : 0) |
|
43
|
+
($1.include?('i') ? Regexp::IGNORECASE : 0) |
|
44
|
+
($1.include?('x') ? Regexp::EXTENDED : 0))
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
# Represents expected FalseClasses (of which `false` is the only instance).
|
4
|
+
class Lookout::Expected::FalseClass < Lookout::Expected::Object
|
5
|
+
# @param [Boolean] actual
|
6
|
+
# @return [Difference::Object] A difference report between ACTUAL and
|
7
|
+
# {#expected} unless ACTUAL is falseful
|
8
|
+
def difference(actual) super((not not actual)) end
|
9
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
# Represents expected {::Hash}es.
|
4
|
+
class Lookout::Expected::Hash < Lookout::Expected::Object
|
5
|
+
# @param [::Hash] actual
|
6
|
+
# @return [Difference::Hash, nil] A difference report between ACTUAL and
|
7
|
+
# {#expected} unless their content exhibit no {Object differences}
|
8
|
+
def difference(actual)
|
9
|
+
Lookout::Difference::Hash.new(actual, expected) unless
|
10
|
+
Hash === actual and
|
11
|
+
expected.size == actual.size and
|
12
|
+
expected.none?{ |k, v| v.to_lookout_expected.difference(actual[k]) }
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
# Represents expected {::Lookout::Actual::Method}s.
|
4
|
+
class Lookout::Expected::Lookout::Actual::Method < Lookout::Expected::Object
|
5
|
+
# @param [::Object] actual
|
6
|
+
# @return [Difference::Lookout::Actual::Method, nil] A difference report
|
7
|
+
# between ACTUAL and {#expected} unless invoking {#expected} on ACTUAL
|
8
|
+
# returns true
|
9
|
+
def difference(actual)
|
10
|
+
Lookout::Difference::Lookout::Actual::Method.new(actual, expected) unless
|
11
|
+
expected.call(actual)
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
# Represents expected {::Lookout::Actual::Not::Method}s.
|
4
|
+
class Lookout::Expected::Lookout::Actual::Not::Method < Lookout::Expected::Object
|
5
|
+
# @param [::Object] actual
|
6
|
+
# @return [Difference::Lookout::Actual::Not::Method, nil] A difference report
|
7
|
+
# between ACTUAL and {#expected} unless invoking {#expected} on ACTUAL
|
8
|
+
# returns false
|
9
|
+
def difference(actual)
|
10
|
+
Lookout::Difference::Lookout::Actual::Not::Method.new(actual, expected) if
|
11
|
+
expected.call(actual)
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
# Represents expected {::Lookout::Output}s.
|
4
|
+
class Lookout::Expected::Lookout::Output < Lookout::Expected::Object
|
5
|
+
# @param (see Object#expect)
|
6
|
+
# @yieldparam [::IO] io
|
7
|
+
# @yieldreturn [::Lookout::Output]
|
8
|
+
# @return [Expect::Lookout::Output] An expect block for the receiver at LINE
|
9
|
+
# in FILE that’ll yield an IO object that’ll expect to see the {#expected}
|
10
|
+
# output during the execution of the block
|
11
|
+
def expect(file, line, &block)
|
12
|
+
super(file, line){ |expected|
|
13
|
+
output = StringIO.new
|
14
|
+
block.call output
|
15
|
+
expected.class.new(output.string)
|
16
|
+
}
|
17
|
+
end
|
18
|
+
|
19
|
+
# @param [::Lookout::Output] actual
|
20
|
+
# @return [Difference::Lookout::Output, nil] A difference report between
|
21
|
+
# ACTUAL and {#expected} unless they’re `#==`
|
22
|
+
def difference(actual)
|
23
|
+
Lookout::Difference::Lookout::Output.new(actual, expected) unless
|
24
|
+
expected == actual
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
# Represents expected {::Lookout::Reception}s. This is used to check mock
|
4
|
+
# method invocation counts and arguments.
|
5
|
+
class Lookout::Expected::Lookout::Reception < Lookout::Expected::Object
|
6
|
+
# @param (see Object#expect)
|
7
|
+
# @yieldparam (see Object#expect)
|
8
|
+
# @yieldreturn (see Object#expect)
|
9
|
+
# @return [Expect::Object] An expect block for the receiver at LINE in FILE
|
10
|
+
# that’ll yield the {#expected} object and expect the block to call the
|
11
|
+
# method the appropriate number of times
|
12
|
+
def expect(file, line, &block)
|
13
|
+
super file, line, &expected.block(&block)
|
14
|
+
end
|
15
|
+
|
16
|
+
# @param [Integer] actual
|
17
|
+
# @return [Difference::Lookout::Reception, nil] A difference report between
|
18
|
+
# the ACTUAL number of times the method was received and the range of
|
19
|
+
# expected number of receptions unless the earlier lay within the latter
|
20
|
+
def difference(actual)
|
21
|
+
Lookout::Difference::Lookout::Reception.
|
22
|
+
new(actual, expected) unless expected.range === actual
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
# Represents expected {::Lookout::Warning}s.
|
4
|
+
class Lookout::Expected::Lookout::Warning < Lookout::Expected::Object
|
5
|
+
# @param (see Object#expect)
|
6
|
+
# @yield
|
7
|
+
# @yieldreturn [::Lookout::Warning]
|
8
|
+
# @return [Expected::Output] An expect block for the receiver at LINE in FILE
|
9
|
+
# that’ll yield and expect the warning to be output to `$stderr` during the
|
10
|
+
# execution of the block
|
11
|
+
def expect(file, line, &block)
|
12
|
+
super(file, line){ |expected|
|
13
|
+
with_global :$stderr, StringIO.new do
|
14
|
+
with_verbose do
|
15
|
+
block.call
|
16
|
+
expected.class.new($stderr.string)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
}
|
20
|
+
end
|
21
|
+
|
22
|
+
# @param [::Lookout::Warning] actual
|
23
|
+
# @return [Difference::Lookout::Warning, nil] A difference report between
|
24
|
+
# ACTUAL and {#expected} unless they’re `#===`
|
25
|
+
def difference(actual)
|
26
|
+
Lookout::Difference::Lookout::Warning.new(actual, expected) unless
|
27
|
+
expected === actual
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
# Represents expected {::Module}s.
|
4
|
+
class Lookout::Expected::Module < Lookout::Expected::Object
|
5
|
+
# @param [::Module] actual
|
6
|
+
# @return [Difference::Module, nil] A difference report between ACTUAL and
|
7
|
+
# {#expected} unless they’re `#==` or ACTUAL is an {#expected}
|
8
|
+
def difference(actual)
|
9
|
+
Lookout::Difference::Module.new(actual, expected) unless
|
10
|
+
expected == actual or expected === actual
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
# Represents expected {::Object}s. This is the base expected-value class and
|
4
|
+
# may be subclassed if you have a type that would benefit from more specific
|
5
|
+
# treatment than what this class affords. Such a subclass should override
|
6
|
+
# {#expect} and/or {#difference} to set up type-specific expect blocks and/or
|
7
|
+
# difference checks and difference report generation.
|
8
|
+
class Lookout::Expected::Object
|
9
|
+
# Wraps the EXPECTED value.
|
10
|
+
# @param [::Object] expected The expected value
|
11
|
+
Value(:expected)
|
12
|
+
public :expected
|
13
|
+
|
14
|
+
# @param (see Expect::Object#initialize)
|
15
|
+
# @yieldparam (see Expect::Object#initialize)
|
16
|
+
# @yieldreturn (see Expect::Object#initialize)
|
17
|
+
# @return [Expect::Object] An expect block for the receiver at LINE in FILE
|
18
|
+
# that’ll yield the {#expected} object and expect an object that’ll exhibit
|
19
|
+
# no {#difference}s from it to be returned
|
20
|
+
def expect(file, line, &block)
|
21
|
+
Lookout::Expect::Object.new(self, file, line, &block)
|
22
|
+
end
|
23
|
+
|
24
|
+
# @param [::Object] actual
|
25
|
+
# @return [Difference::Object, nil] A difference report between ACTUAL and
|
26
|
+
# {#expected} unless they’re `#==`
|
27
|
+
def difference(actual)
|
28
|
+
Lookout::Difference::Object.new(actual, expected) unless expected == actual
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
# Represents expected {::Range}s.
|
4
|
+
class Lookout::Expected::Range < Lookout::Expected::Object
|
5
|
+
# @param [::Range] actual
|
6
|
+
# @return [Difference::Range, nil] A difference report between ACTUAL and
|
7
|
+
# {#expected} unless they’re `#==` or ACTUAL lays within {#expected}
|
8
|
+
def difference(actual)
|
9
|
+
Lookout::Difference::Range.new(actual, expected) unless
|
10
|
+
expected == actual or expected === actual
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
# Represents expected {::Regexp}s.
|
4
|
+
class Lookout::Expected::Regexp < Lookout::Expected::Object
|
5
|
+
# @param [::Regexp] actual
|
6
|
+
# @return [Difference::Regexp, nil] A difference report between ACTUAL and
|
7
|
+
# {#expected} unless they’re `#==` or ACTUAL is matched by {#expected}
|
8
|
+
def difference(actual)
|
9
|
+
Lookout::Difference::Regexp.new(actual, expected) unless
|
10
|
+
expected == actual or expected === actual
|
11
|
+
end
|
12
|
+
end
|