sinclair 1.4.1 → 1.4.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (63) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +5 -3
  3. data/.rubocop.yml +20 -4
  4. data/Dockerfile +8 -4
  5. data/README.md +1 -1
  6. data/config/yardstick.yml +10 -35
  7. data/lib/sinclair.rb +87 -18
  8. data/lib/sinclair/config.rb +3 -0
  9. data/lib/sinclair/config/methods_builder.rb +15 -1
  10. data/lib/sinclair/config_builder.rb +1 -0
  11. data/lib/sinclair/config_class.rb +1 -0
  12. data/lib/sinclair/config_factory.rb +15 -0
  13. data/lib/sinclair/configurable.rb +1 -0
  14. data/lib/sinclair/matchers.rb +20 -6
  15. data/lib/sinclair/matchers/add_class_method.rb +56 -0
  16. data/lib/sinclair/matchers/add_class_method_to.rb +98 -0
  17. data/lib/sinclair/matchers/add_instance_method.rb +85 -0
  18. data/lib/sinclair/matchers/add_instance_method_to.rb +119 -0
  19. data/lib/sinclair/matchers/add_method.rb +11 -73
  20. data/lib/sinclair/matchers/add_method_to.rb +13 -111
  21. data/lib/sinclair/method_definition.rb +18 -58
  22. data/lib/sinclair/method_definition/block_definition.rb +37 -6
  23. data/lib/sinclair/method_definition/class_block_definition.rb +22 -0
  24. data/lib/sinclair/method_definition/class_method_definition.rb +50 -0
  25. data/lib/sinclair/method_definition/class_string_definition.rb +24 -0
  26. data/lib/sinclair/method_definition/instance_block_definition.rb +22 -0
  27. data/lib/sinclair/method_definition/instance_method_definition.rb +48 -0
  28. data/lib/sinclair/method_definition/instance_string_definition.rb +24 -0
  29. data/lib/sinclair/method_definition/string_definition.rb +39 -5
  30. data/lib/sinclair/method_definitions.rb +28 -0
  31. data/lib/sinclair/options_parser.rb +5 -0
  32. data/lib/sinclair/version.rb +1 -1
  33. data/sinclair.gemspec +16 -10
  34. data/spec/integration/yard/sinclair/matchers/add_class_method_spec.rb +23 -0
  35. data/spec/integration/yard/sinclair/matchers/add_class_method_to_spec.rb +19 -0
  36. data/spec/integration/yard/sinclair/matchers/{add_method_spec.rb → add_instance_method_spec.rb} +3 -3
  37. data/spec/integration/yard/sinclair/matchers/{add_method_to_spec.rb → add_instance_method_to_spec.rb} +1 -1
  38. data/spec/integration/yard/sinclair/method_definition/class_block_definition_spec.rb +34 -0
  39. data/spec/integration/yard/sinclair/method_definition/class_method_definition_spec.rb +28 -0
  40. data/spec/integration/yard/sinclair/method_definition/class_string_definition_spec.rb +23 -0
  41. data/spec/integration/yard/sinclair/method_definition/{block_definition_spec.rb → instance_block_definition_spec.rb} +2 -2
  42. data/spec/integration/yard/sinclair/method_definition/instance_method_definition_spec.rb +35 -0
  43. data/spec/integration/yard/sinclair/method_definition/{string_definition_spec.rb → instance_string_definition_spec.rb} +1 -1
  44. data/spec/integration/yard/sinclair_spec.rb +32 -5
  45. data/spec/lib/sinclair/matchers/add_class_method_spec.rb +36 -0
  46. data/spec/lib/sinclair/matchers/add_class_method_to_spec.rb +77 -0
  47. data/spec/lib/sinclair/matchers/{add_method_spec.rb → add_instance_method_spec.rb} +11 -4
  48. data/spec/lib/sinclair/matchers/{add_method_to_spec.rb → add_instance_method_to_spec.rb} +2 -2
  49. data/spec/lib/sinclair/matchers_spec.rb +17 -2
  50. data/spec/lib/sinclair/method_definition/class_block_definition_spec.rb +29 -0
  51. data/spec/lib/sinclair/method_definition/class_string_definition_spec.rb +27 -0
  52. data/spec/lib/sinclair/method_definition/{block_definition_spec.rb → instance_block_definition_spec.rb} +2 -2
  53. data/spec/lib/sinclair/method_definition/{string_definition_spec.rb → instance_string_definition_spec.rb} +2 -2
  54. data/spec/lib/sinclair/method_definition_spec.rb +52 -6
  55. data/spec/lib/sinclair_spec.rb +83 -0
  56. data/spec/support/models/dummy_class_builder.rb +11 -0
  57. data/spec/support/shared_examples/class_method_definition.rb +96 -0
  58. data/spec/support/shared_examples/{method_definition.rb → instance_method_definition.rb} +0 -0
  59. metadata +148 -45
  60. data/scripts/check_readme.sh +0 -6
  61. data/scripts/rubycritic.sh +0 -10
  62. data/spec/integration/sinclair/matchers_spec.rb +0 -99
  63. data/spec/integration/yard/sinclair/method_definition_spec.rb +0 -56
@@ -1,6 +0,0 @@
1
- #! /bin/bash
2
-
3
- PROJECT=sinclair
4
- VERSION=$(grep VERSION lib/$PROJECT/version.rb | sed -e "s/.*'\(.*\)'/\1/g")
5
-
6
- grep https://www.rubydoc.info/gems/$PROJECT/$VERSION README.md
@@ -1,10 +0,0 @@
1
- #!/bin/bash
2
-
3
- DIFF_LIST=$(git diff --name-only $CIRCLE_SHA1 $(git merge-base $CIRCLE_SHA1 origin/master) | grep "^lib/")
4
-
5
- if [ ! -z "$DIFF_LIST" ]; then
6
- mkdir -p tmp/rubycritic/compare
7
- bundle exec rubycritic --format console --branch origin/master -t 0 --maximum-decrease 1 $DIFF_LIST
8
- else
9
- echo "No changes detected. Skipping rubycritic..."
10
- fi
@@ -1,99 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- describe Sinclair::Matchers do
6
- describe 'add_method_to' do
7
- let(:method) { :the_method }
8
- let(:klass) { Class.new }
9
- let(:instance) { klass.new }
10
- let(:expectation) do
11
- expect { block.call }.to add_method(method).to(instance)
12
- end
13
- let(:block) { proc { klass.send(:define_method, method) {} } }
14
-
15
- context 'when method is added' do
16
- it 'returns a succes' do
17
- expect { expectation }.not_to raise_error
18
- end
19
- end
20
-
21
- context 'when method is not added' do
22
- let(:block) { proc {} }
23
-
24
- it 'raises expectation error' do
25
- expect { expectation }.to raise_error(
26
- RSpec::Expectations::ExpectationNotMetError,
27
- "expected 'the_method' to be added to #{klass} but it didn't"
28
- )
29
- end
30
- end
31
-
32
- context 'when method existed before' do
33
- before do
34
- block.call
35
- end
36
-
37
- it 'raises expectation error' do
38
- expect { expectation }.to raise_error(
39
- RSpec::Expectations::ExpectationNotMetError,
40
- "expected 'the_method' to be added to #{klass} but it already existed"
41
- )
42
- end
43
- end
44
-
45
- context 'when negating' do
46
- let(:expectation) do
47
- expect { block.call }.not_to add_method(method).to(instance)
48
- end
49
-
50
- context 'when method is not added' do
51
- let(:block) { proc {} }
52
-
53
- it 'returns a succes' do
54
- expect { expectation }.not_to raise_error
55
- end
56
- end
57
-
58
- context 'when method is added' do
59
- it 'raises expectation error' do
60
- expect { expectation }.to raise_error(
61
- RSpec::Expectations::ExpectationNotMetError,
62
- "expected 'the_method' not to be added to #{klass} but it was"
63
- )
64
- end
65
- end
66
-
67
- context 'when method existed before' do
68
- before do
69
- block.call
70
- end
71
-
72
- it 'returns a succes' do
73
- expect { expectation }.not_to raise_error
74
- end
75
- end
76
- end
77
- end
78
-
79
- describe 'add method' do
80
- let(:method) { :the_method }
81
- let(:klass) { Class.new }
82
- let(:expectation) do
83
- expect { block.call }.to add_method(method)
84
- end
85
- let(:block) { proc { klass.send(:define_method, method) {} } }
86
- let(:expected_error) do
87
- 'You should specify which instance the method is being added to' \
88
- "add_method(:#{method}).to(instance)"
89
- end
90
-
91
- context 'when not calling to' do
92
- it 'raises error' do
93
- expect { expectation }.to raise_error(
94
- SyntaxError, expected_error
95
- )
96
- end
97
- end
98
- end
99
- end
@@ -1,56 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- describe Sinclair::MethodDefinition do
6
- describe 'yard' do
7
- describe '#build' do
8
- describe 'using string method with no options' do
9
- subject(:method_definition) do
10
- described_class.from(name, code)
11
- end
12
-
13
- let(:klass) { Class.new }
14
- let(:instance) { klass.new }
15
- let(:code) { '@x = @x.to_i ** 2 + 1' }
16
- let(:name) { :sequence }
17
-
18
- it 'adds a dynamic method' do
19
- expect { method_definition.build(klass) }.to add_method(name).to(instance)
20
- expect { instance.sequence }
21
- .to change { instance.instance_variable_get(:@x) }.from(nil).to 1
22
- expect(instance.sequence).to eq(2)
23
- expect(instance.sequence).to eq(5)
24
- end
25
-
26
- it 'changes instance variable' do
27
- method_definition.build(klass)
28
-
29
- expect { instance.sequence }
30
- .to change { instance.instance_variable_get(:@x) }
31
- .from(nil).to 1
32
- end
33
- end
34
-
35
- describe 'using block with cache option' do
36
- subject(:method_definition) do
37
- described_class.from(name, cached: true) do
38
- @x = @x.to_i**2 + 1
39
- end
40
- end
41
-
42
- let(:klass) { Class.new }
43
- let(:instance) { klass.new }
44
- let(:name) { :sequence }
45
-
46
- it 'adds a dynamic method' do
47
- expect { method_definition.build(klass) }.to add_method(name).to(instance)
48
- expect { instance.sequence }
49
- .to change { instance.instance_variable_get(:@x) }.from(nil).to 1
50
- expect { instance.sequence }.not_to change(instance, :sequence)
51
- expect(instance.instance_variable_get(:@sequence)).to eq(1)
52
- end
53
- end
54
- end
55
- end
56
- end