test_bench-fixture 1.0.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 11a8f07325bd4895d293ada5d0562bfe183c8913ff1f1ed2fb85bf770f37a34f
4
+ data.tar.gz: 3f547833da8e092eeef33a7605621bdd91ac7af38384097dabaacc6eacd493cf
5
+ SHA512:
6
+ metadata.gz: 897778edd91e443502415d4b638517a77835afa40ab53709affab0efd5418b6bb3ce61f2e78bb51782e288bc99c7cd73e98bde4deb7191121e46872d2bb02c48
7
+ data.tar.gz: a2041b6063d7cfb1979e49ce84248dc32229bef552448332774e2dd7c450e255ab17be19e0f2ede7f904647537add7e60f8adc0de7f91142499663b1b5141fc4
@@ -0,0 +1,18 @@
1
+ require 'logger'
2
+ require 'stringio'
3
+
4
+ require 'test_bench/fixture/assertion_failure'
5
+
6
+ require 'test_bench/fixture/output'
7
+ require 'test_bench/fixture/output/null'
8
+ require 'test_bench/fixture/output/log'
9
+ require 'test_bench/fixture/output/substitute'
10
+ require 'test_bench/fixture/output/multiple'
11
+
12
+ require 'test_bench/fixture/error_policy'
13
+
14
+ require 'test_bench/fixture/session'
15
+ require 'test_bench/fixture/session/substitute'
16
+ require 'test_bench/fixture/session/substitute/match_tests'
17
+
18
+ require 'test_bench/fixture/fixture'
@@ -0,0 +1,19 @@
1
+ module TestBench
2
+ module Fixture
3
+ class AssertionFailure < RuntimeError
4
+ def self.build(caller_location=nil)
5
+ caller_location ||= caller_locations.first
6
+
7
+ backtrace = [caller_location.to_s]
8
+
9
+ instance = new(message)
10
+ instance.set_backtrace(backtrace)
11
+ instance
12
+ end
13
+
14
+ def self.message
15
+ 'Assertion failed'
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,10 @@
1
+ require 'tempfile'
2
+
3
+ require 'test_bench/fixture/controls/caller_location'
4
+ require 'test_bench/fixture/controls/error/backtrace'
5
+ require 'test_bench/fixture/controls/error'
6
+ require 'test_bench/fixture/controls/fixture'
7
+ require 'test_bench/fixture/controls/result'
8
+ require 'test_bench/fixture/controls/test_file'
9
+
10
+ require 'test_bench/fixture/controls/output'
@@ -0,0 +1,72 @@
1
+ module TestBench
2
+ module Fixture
3
+ module Controls
4
+ module CallerLocation
5
+ def self.example(file: nil, line_number: nil)
6
+ file ||= self.file
7
+ line_number ||= self.line_number
8
+
9
+ eval(<<~RUBY, TOPLEVEL_BINDING, file, line_number - 2)
10
+ some_class = Class.new do
11
+ def self.some_method
12
+ Thread.current.backtrace_locations[1]
13
+ end
14
+ end
15
+ some_class.some_method
16
+ RUBY
17
+ end
18
+
19
+ def self.file
20
+ 'lib/some_dir/some_file.rb'
21
+ end
22
+
23
+ def self.line_number
24
+ 11
25
+ end
26
+
27
+ module Alternate
28
+ def self.example(line_number: nil)
29
+ line_number ||= self.line_number
30
+
31
+ CallerLocation.example(file: file, line_number: line_number)
32
+ end
33
+
34
+ def self.file
35
+ 'lib/other_dir/other_file.rb'
36
+ end
37
+
38
+ def self.line_number
39
+ 111
40
+ end
41
+
42
+ module Pattern
43
+ def self.example
44
+ /other_dir/
45
+ end
46
+ end
47
+ end
48
+
49
+ Implementation = self
50
+
51
+ module Test
52
+ def self.example(file: nil, line_number: nil)
53
+ file ||= self.file
54
+ line_number ||= self.line_number
55
+
56
+ eval <<~RUBY, TOPLEVEL_BINDING, file, line_number
57
+ proc { Thread.current.backtrace_locations[1] }.call
58
+ RUBY
59
+ end
60
+
61
+ def self.file
62
+ 'test/some_dir/some_test_file.rb'
63
+ end
64
+
65
+ def self.line_number
66
+ 22
67
+ end
68
+ end
69
+ end
70
+ end
71
+ end
72
+ end
@@ -0,0 +1,47 @@
1
+ module TestBench
2
+ module Fixture
3
+ module Controls
4
+ module Error
5
+ def self.example(message=nil, backtrace: nil, backtrace_depth: nil, cause: nil, cls: nil)
6
+ message ||= self.message
7
+ cls ||= Example
8
+ backtrace ||= Backtrace.example(depth: backtrace_depth)
9
+
10
+ if cause == true
11
+ cause = Cause.example
12
+ end
13
+
14
+ error = cls.new(message)
15
+ error.set_backtrace(backtrace)
16
+
17
+ if cause
18
+ begin
19
+ begin
20
+ raise cause
21
+ rescue cause.class
22
+ raise error
23
+ end
24
+ rescue cls
25
+ end
26
+ end
27
+
28
+ error
29
+ end
30
+
31
+ def self.message
32
+ 'Some error'
33
+ end
34
+
35
+ Example = Class.new(RuntimeError)
36
+
37
+ module Cause
38
+ def self.example
39
+ Error.example("Some cause", cls: Example)
40
+ end
41
+
42
+ Example = Class.new(RuntimeError)
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,31 @@
1
+ module TestBench
2
+ module Fixture
3
+ module Controls
4
+ module Error
5
+ module Backtrace
6
+ def self.example(depth: nil)
7
+ depth ||= self.depth
8
+
9
+ controls = [
10
+ CallerLocation,
11
+ CallerLocation::Alternate,
12
+ CallerLocation::Alternate
13
+ ].cycle.first(depth)
14
+
15
+ controls.map.with_index do |control, index|
16
+ line_number = index + 1
17
+
18
+ caller_location = control.example(line_number: line_number)
19
+
20
+ caller_location.to_s
21
+ end
22
+ end
23
+
24
+ def self.depth
25
+ 3
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,85 @@
1
+ module TestBench
2
+ module Fixture
3
+ module Controls
4
+ module Fixture
5
+ def self.example
6
+ Example.new
7
+ end
8
+
9
+ def self.example_class(&block)
10
+ Class.new do
11
+ include TestBench::Fixture
12
+
13
+ class_exec(&block) unless block.nil?
14
+ end
15
+ end
16
+
17
+ module InstanceActuator
18
+ def self.example
19
+ Example.new
20
+ end
21
+
22
+ Example = Fixture.example_class do
23
+ attr_accessor :actuated
24
+ alias_method :actuated?, :actuated
25
+
26
+ def call
27
+ self.actuated = true
28
+ end
29
+ end
30
+
31
+ module Non
32
+ def self.example
33
+ Example.new
34
+ end
35
+
36
+ Example = Fixture.example_class
37
+ end
38
+ end
39
+
40
+ module FactoryMethod
41
+ def self.example
42
+ Example.build
43
+ end
44
+
45
+ Example = Fixture.example_class do
46
+ attr_accessor :build_method_called
47
+ alias_method :build_method_called?, :build_method_called
48
+
49
+ def self.build
50
+ instance = new
51
+ instance.build_method_called = true
52
+ instance
53
+ end
54
+ end
55
+ end
56
+
57
+ module ConstructorArguments
58
+ Example = Fixture.example_class do
59
+ include Fixture
60
+
61
+ attr_reader :arg1, :arg2, :arg3, :arg4, :blk
62
+
63
+ def initialize(arg1, arg2=nil, arg3:, arg4: nil, &blk)
64
+ @arg1, @arg2, @arg3, @arg4, @blk = arg1, arg2, arg3, arg4, blk
65
+ end
66
+ end
67
+
68
+ module FactoryMethod
69
+ Example = Class.new(Example) do
70
+ def initialize(arg1, arg2, arg3, arg4, blk)
71
+ @arg1, @arg2, @arg3, @arg4, @blk = arg1, arg2, arg3, arg4, blk
72
+ end
73
+
74
+ def self.build(arg1, arg2=nil, arg3:, arg4: nil, &blk)
75
+ new(arg1, arg2, arg3, arg4, blk)
76
+ end
77
+ end
78
+ end
79
+ end
80
+
81
+ Example = InstanceActuator::Example
82
+ end
83
+ end
84
+ end
85
+ end
@@ -0,0 +1,64 @@
1
+ module TestBench
2
+ module Fixture
3
+ module Controls
4
+ module Output
5
+ def self.example
6
+ Example.new
7
+ end
8
+
9
+ def self.example_class(&block)
10
+ Class.new do
11
+ include TestBench::Fixture::Output
12
+
13
+ class_exec(&block) unless block.nil?
14
+ end
15
+ end
16
+
17
+ Example = example_class
18
+
19
+ module Exercise
20
+ def self.call(output=nil, &block)
21
+ output ||= Output.example
22
+
23
+ each_method do |method_name, args|
24
+ output.public_send(method_name, *args)
25
+
26
+ block.(method_name, args) unless block.nil?
27
+ end
28
+ end
29
+
30
+ def self.each_method(&block)
31
+ result = Controls::Result.example
32
+ path = Controls::TestFile.path
33
+ fixture = Controls::Fixture.example
34
+ caller_location = Controls::CallerLocation.example
35
+ error = Controls::Error.example
36
+ comment_text = 'Some comment'
37
+ test_title = 'Some test'
38
+ context_title = 'Some Context'
39
+
40
+ {
41
+ :start => [],
42
+ :finish => [result],
43
+ :enter_file => [path],
44
+ :exit_file => [path, result],
45
+ :start_fixture => [fixture],
46
+ :finish_fixture => [fixture, result],
47
+ :assert => [result, caller_location],
48
+ :enter_assert_block => [caller_location],
49
+ :exit_assert_block => [caller_location, result],
50
+ :comment => [comment_text],
51
+ :error => [error],
52
+ :start_test => [test_title],
53
+ :finish_test => [test_title, result],
54
+ :skip_test => [test_title],
55
+ :enter_context => [context_title],
56
+ :exit_context => [context_title, result],
57
+ :skip_context => [context_title]
58
+ }.each(&block)
59
+ end
60
+ end
61
+ end
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,23 @@
1
+ module TestBench
2
+ module Fixture
3
+ module Controls
4
+ module Result
5
+ def self.example
6
+ Pass.example
7
+ end
8
+
9
+ module Pass
10
+ def self.example
11
+ true
12
+ end
13
+ end
14
+
15
+ module Failure
16
+ def self.example
17
+ false
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,72 @@
1
+ module TestBench
2
+ module Fixture
3
+ module Controls
4
+ module TestFile
5
+ def self.example(filename: nil, text: nil, directory: nil)
6
+ filename ||= self.filename
7
+ text ||= text
8
+
9
+ basename, extension, _ = filename.partition('.rb')
10
+
11
+ file = Tempfile.new([basename, extension], directory)
12
+ file.write(text)
13
+ file.close
14
+
15
+ tempfiles << file
16
+
17
+ file.path
18
+ end
19
+
20
+ def self.filename
21
+ 'some_test_file.rb'
22
+ end
23
+
24
+ def self.path
25
+ "test/automated/#{filename}"
26
+ end
27
+
28
+ def self.text
29
+ '# Nothing'
30
+ end
31
+
32
+ def self.tempfiles
33
+ @tempfiles ||= []
34
+ end
35
+
36
+ module Alternate
37
+ def self.example
38
+ TestFile.example(filename: filename)
39
+ end
40
+
41
+ def self.filename
42
+ 'other_test_file.rb'
43
+ end
44
+ end
45
+
46
+ module Pass
47
+ def self.example(directory: nil)
48
+ TestFile.example(filename: filename, directory: directory)
49
+ end
50
+
51
+ def self.filename
52
+ 'some_passing_test.rb'
53
+ end
54
+ end
55
+
56
+ module Failure
57
+ def self.example(directory: nil)
58
+ TestFile.example(text: text, filename: filename, directory: directory)
59
+ end
60
+
61
+ def self.filename
62
+ 'some_failing_test.rb'
63
+ end
64
+
65
+ def self.text
66
+ "raise #{Error.name}.example"
67
+ end
68
+ end
69
+ end
70
+ end
71
+ end
72
+ end