defmastership 1.0.18 → 1.0.19

Sign up to get free protection for your applications and to get access to all the features.
Files changed (39) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.gitlab-ci.yml +15 -1
  4. data/Gemfile +27 -7
  5. data/Guardfile +44 -0
  6. data/config/cucumber.yml +3 -0
  7. data/config/mutant.yml +4 -0
  8. data/config/reek.yml +129 -105
  9. data/config/rubocop.yml +72 -28
  10. data/defmastership.gemspec +5 -3
  11. data/features/changeref.feature +0 -8
  12. data/features/definition_checksum.feature +0 -10
  13. data/features/definition_version.feature +168 -10
  14. data/features/export.feature +23 -18
  15. data/features/modify.feature +1 -5
  16. data/features/rename_included_files.feature +0 -5
  17. data/features/step_definitions/git_steps.rb +19 -0
  18. data/lib/defmastership/constants.rb +5 -3
  19. data/lib/defmastership/definition.rb +2 -2
  20. data/lib/defmastership/document.rb +6 -14
  21. data/lib/defmastership/update_def_modifier.rb +1 -1
  22. data/lib/defmastership/update_def_version_modifier.rb +30 -5
  23. data/lib/defmastership/version.rb +1 -1
  24. data/spec/unit/def_mastership/batch_modifier_spec.rb +2 -0
  25. data/spec/unit/def_mastership/modifier_factory_spec.rb +1 -0
  26. data/spec/unit/def_mastership/modifier_spec.rb +8 -6
  27. data/spec/unit/def_mastership/update_def_modifier_spec.rb +2 -0
  28. data/spec/unit/def_mastership/update_def_version_modifier_spec.rb +225 -33
  29. data/tasks/code_quality.rake +74 -0
  30. data/tasks/test.rake +6 -21
  31. metadata +36 -11
  32. data/.rubocop.yml +0 -76
  33. data/config/devtools.yml +0 -2
  34. data/config/flay.yml +0 -3
  35. data/config/flog.yml +0 -2
  36. data/config/yardstick.yml +0 -2
  37. data/cucumber.yml +0 -2
  38. data/tasks/smelling_code.rake +0 -38
  39. /data/{.rspec → config/rspec} +0 -0
@@ -3,6 +3,8 @@
3
3
 
4
4
  require 'defmastership/constants'
5
5
  require 'defmastership/update_def_modifier'
6
+ require 'git'
7
+ require 'tmpdir'
6
8
 
7
9
  module DefMastership
8
10
  # modify one line after another
@@ -10,7 +12,9 @@ module DefMastership
10
12
  def self.default_config
11
13
  {
12
14
  def_type: '',
13
- ref_document: '',
15
+ ref_document: [],
16
+ ref_tag: '',
17
+ ref_repo: '.',
14
18
  first_version: ''
15
19
  }
16
20
  end
@@ -18,17 +22,33 @@ module DefMastership
18
22
  def initialize(config)
19
23
  @ref_document = Document.new
20
24
 
21
- super(config)
25
+ Helper.normalilize_config(config) if config.key?(:ref_document)
26
+
27
+ super
22
28
  end
23
29
 
24
30
  def do_modifications(adoc_sources)
25
- @ref_document.parse_file_with_preprocessor(config.fetch(:ref_document))
31
+ if ref_tag == ''
32
+ ref_document.each { |ref_doc| @ref_document.parse_file_with_preprocessor(ref_doc) }
33
+ else
34
+ Dir.mktmpdir('defmastership') do |tmpdir|
35
+ parse_ref_files_from_git(adoc_sources, tmpdir)
36
+ end
37
+ end
26
38
 
27
- super(adoc_sources)
39
+ super
28
40
  end
29
41
 
30
42
  private
31
43
 
44
+ def parse_ref_files_from_git(adoc_sources, tmpdir)
45
+ Git.clone(ref_repo, tmpdir, branch: ref_tag)
46
+ ref_sources = ref_document.empty? ? adoc_sources.keys : ref_document
47
+ ref_sources.each do |adoc_file|
48
+ @ref_document.parse_file_with_preprocessor("#{tmpdir}/#{adoc_file}")
49
+ end
50
+ end
51
+
32
52
  def reference_replacement(reference, match)
33
53
  "#{reference}#{version_and_checksum_str(match)}"
34
54
  end
@@ -46,7 +66,7 @@ module DefMastership
46
66
  definition = Helper.def_from_match(document, match)
47
67
  return unless ref_definition
48
68
 
49
- Helper.ref_version(ref_definition, definition, config.fetch(:first_version))
69
+ Helper.ref_version(ref_definition, definition, first_version)
50
70
  end
51
71
 
52
72
  # Helper functions
@@ -61,6 +81,11 @@ module DefMastership
61
81
 
62
82
  new_ref_version ? new_ref_version.next : first_version
63
83
  end
84
+
85
+ def self.normalilize_config(config)
86
+ ref_docs = config.fetch(:ref_document)
87
+ config[:ref_document] = [ref_docs] if ref_docs.instance_of?(String)
88
+ end
64
89
  end
65
90
  end
66
91
  end
@@ -2,6 +2,6 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module DefMastership
5
- VERSION = '1.0.18'
5
+ VERSION = '1.0.19'
6
6
  public_constant :VERSION
7
7
  end
@@ -4,10 +4,12 @@
4
4
  require('defmastership/batch_modifier')
5
5
 
6
6
  module DefMastership
7
+ # Modifier example
7
8
  class TotoModifier
8
9
  include Modifier
9
10
  end
10
11
 
12
+ # Modifier example
11
13
  class TuTuModifier
12
14
  include Modifier
13
15
  end
@@ -4,6 +4,7 @@
4
4
  require('defmastership/modifier_factory')
5
5
 
6
6
  module DefMastership
7
+ # Modifier example
7
8
  class TotoModifier
8
9
  include Modifier
9
10
  end
@@ -3,7 +3,10 @@
3
3
 
4
4
  require('defmastership/modifier')
5
5
 
6
- class DummyclassParrent
6
+ # just a class for test
7
+ class DummyClassParent
8
+ # This method smells of :reek:ControlParameter
9
+ # This method smells of :reek:UtilityFunction
7
10
  def respond_to_missing?(method_name, *_)
8
11
  return true if method_name == :ploup
9
12
 
@@ -11,7 +14,8 @@ class DummyclassParrent
11
14
  end
12
15
  end
13
16
 
14
- class DummyClass < DummyclassParrent
17
+ # just a class for test
18
+ class DummyClass < DummyClassParent
15
19
  include DefMastership::Modifier
16
20
 
17
21
  def self.replacement_methods
@@ -27,19 +31,17 @@ class DummyClass < DummyclassParrent
27
31
  super()
28
32
  end
29
33
 
34
+ # This method smells of :reek:UtilityFunction
30
35
  def replace_pouet_by_foo(line)
31
36
  line.gsub('pouet', 'foo')
32
37
  end
33
38
 
39
+ # This method smells of :reek:UtilityFunction
34
40
  def replace_foo_by_zoo(line)
35
41
  line.gsub('foo', 'zoo')
36
42
  end
37
43
  end
38
44
 
39
- class BadDummyClass < DummyclassParrent
40
- include DefMastership::Modifier
41
- end
42
-
43
45
  RSpec.describe(DefMastership::Modifier) do
44
46
  subject(:modifier) { DummyClass.new({}) }
45
47
 
@@ -4,9 +4,11 @@
4
4
  require('defmastership/update_def_modifier')
5
5
 
6
6
  module DefMastership
7
+ # Just a class for tests
7
8
  class ConcreteRefModifier < UpdateDefModifier
8
9
  private
9
10
 
11
+ # This method smells of :reek:UtilityFunction
10
12
  def reference_replacement(reference, match)
11
13
  "#{reference}_something_#{match[:explicit_version]}"
12
14
  end
@@ -2,6 +2,7 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  require('defmastership/update_def_version_modifier')
5
+ require('git')
5
6
 
6
7
  RSpec.describe(DefMastership::UpdateDefVersionModifier) do
7
8
  subject(:modifier) { described_class.new({}) }
@@ -10,7 +11,7 @@ RSpec.describe(DefMastership::UpdateDefVersionModifier) do
10
11
  it { expect(described_class.ancestors).to(include(DefMastership::Modifier)) }
11
12
  it { is_expected.not_to(be_nil) }
12
13
  it { is_expected.to(have_attributes(def_type: '')) }
13
- it { is_expected.to(have_attributes(ref_document: '')) }
14
+ it { is_expected.to(have_attributes(ref_document: [])) }
14
15
  it { is_expected.to(have_attributes(first_version: '')) }
15
16
  end
16
17
 
@@ -19,45 +20,236 @@ RSpec.describe(DefMastership::UpdateDefVersionModifier) do
19
20
  end
20
21
 
21
22
  describe '#do_modifications' do
22
- subject(:modifier) do
23
- described_class.new(
24
- ref_document: 'ref_doc.adoc',
25
- def_type: 'req',
26
- first_version: 'a'
27
- )
23
+ context 'when only one ref document' do
24
+ subject(:modifier) do
25
+ described_class.new(
26
+ ref_document: 'ref_doc.adoc',
27
+ def_type: 'req',
28
+ first_version: 'a'
29
+ )
30
+ end
31
+
32
+ let(:document) { instance_double(DefMastership::Document, 'document') }
33
+ let(:ref_document) { instance_double(DefMastership::Document, 'ref_document') }
34
+ let(:definition) { instance_double(DefMastership::Definition, 'definition') }
35
+ let(:ref_definition) { instance_double(DefMastership::Definition, 'ref_definitions') }
36
+ let(:adoc_sources) do
37
+ {
38
+ 'file1.adoc' => "[define,req,REFERENCE]\nfile1 line2",
39
+ 'file2.adoc' => "file2 line1\nfile2 line2"
40
+ }
41
+ end
42
+
43
+ before do
44
+ allow(DefMastership::Document).to(receive(:new).twice.and_return(ref_document, document))
45
+ allow(document).to(receive(:parse_file_with_preprocessor).with('file1.adoc'))
46
+ allow(document).to(receive(:parse_file_with_preprocessor).with('file2.adoc'))
47
+ allow(ref_document).to(receive(:parse_file_with_preprocessor).with('ref_doc.adoc'))
48
+ allow(document).to(receive(:ref_to_def).with('REFERENCE').and_return(definition))
49
+ allow(ref_document).to(receive(:ref_to_def).with('REFERENCE').and_return(ref_definition))
50
+ allow(ref_definition).to(receive(:explicit_version).with(no_args).and_return(nil))
51
+ allow(definition).to(receive(:sha256_short).with(no_args).and_return('something'))
52
+ allow(ref_definition).to(receive(:sha256_short).with(no_args).and_return('something_else'))
53
+
54
+ modifier.do_modifications(adoc_sources)
55
+ end
56
+
57
+ it { is_expected.to(have_attributes(ref_document: ['ref_doc.adoc'])) }
58
+ it { expect(DefMastership::Document).to(have_received(:new).twice) }
59
+ it { expect(document).to(have_received(:parse_file_with_preprocessor).twice) }
60
+ it { expect(ref_document).to(have_received(:parse_file_with_preprocessor).with('ref_doc.adoc')) }
61
+
62
+ it do
63
+ expect(modifier.do_modifications(adoc_sources).fetch('file1.adoc')).to(include('REFERENCE(a)'))
64
+ end
28
65
  end
29
66
 
30
- let(:document) { instance_double(DefMastership::Document, 'document') }
31
- let(:ref_document) { instance_double(DefMastership::Document, 'ref_document') }
32
- let(:definition) { instance_double(DefMastership::Definition, 'definition') }
33
- let(:ref_definition) { instance_double(DefMastership::Definition, 'ref_definitions') }
34
- let(:adoc_sources) do
35
- {
36
- 'file1.adoc' => "[define,req,REFERENCE]\nfile1 line2",
37
- 'file2.adoc' => "file2 line1\nfile2 line2"
38
- }
67
+ context 'when more ref document' do
68
+ subject(:modifier) do
69
+ described_class.new(
70
+ ref_document: ['ref_doc1.adoc', 'ref_doc2.adoc'],
71
+ def_type: 'req',
72
+ first_version: 'a'
73
+ )
74
+ end
75
+
76
+ let(:document) { instance_double(DefMastership::Document, 'document') }
77
+ let(:ref_document) { instance_double(DefMastership::Document, 'ref_document') }
78
+ let(:definition) { instance_double(DefMastership::Definition, 'definition') }
79
+ let(:ref_definition) { instance_double(DefMastership::Definition, 'ref_definitions') }
80
+ let(:adoc_sources) do
81
+ {
82
+ 'file1.adoc' => "[define,req,REFERENCE]\nfile1 line2",
83
+ 'file2.adoc' => "file2 line1\nfile2 line2"
84
+ }
85
+ end
86
+
87
+ before do
88
+ allow(DefMastership::Document).to(receive(:new).twice.and_return(ref_document, document))
89
+ allow(document).to(receive(:parse_file_with_preprocessor).with('file1.adoc'))
90
+ allow(document).to(receive(:parse_file_with_preprocessor).with('file2.adoc'))
91
+ allow(ref_document).to(receive(:parse_file_with_preprocessor).with('ref_doc1.adoc'))
92
+ allow(ref_document).to(receive(:parse_file_with_preprocessor).with('ref_doc2.adoc'))
93
+ allow(document).to(receive(:ref_to_def).with('REFERENCE').and_return(definition))
94
+ allow(ref_document).to(receive(:ref_to_def).with('REFERENCE').and_return(ref_definition))
95
+ allow(ref_definition).to(receive(:explicit_version).with(no_args).and_return(nil))
96
+ allow(definition).to(receive(:sha256_short).with(no_args).and_return('something'))
97
+ allow(ref_definition).to(receive(:sha256_short).with(no_args).and_return('something_else'))
98
+
99
+ modifier.do_modifications(adoc_sources)
100
+ end
101
+
102
+ it { expect(DefMastership::Document).to(have_received(:new).twice) }
103
+ it { expect(document).to(have_received(:parse_file_with_preprocessor).twice) }
104
+ it { expect(ref_document).to(have_received(:parse_file_with_preprocessor).with('ref_doc1.adoc')) }
105
+ it { expect(ref_document).to(have_received(:parse_file_with_preprocessor).with('ref_doc2.adoc')) }
39
106
  end
40
107
 
41
- before do
42
- allow(DefMastership::Document).to(receive(:new).twice.and_return(ref_document, document))
43
- allow(document).to(receive(:parse_file_with_preprocessor).with('file1.adoc'))
44
- allow(document).to(receive(:parse_file_with_preprocessor).with('file2.adoc'))
45
- allow(ref_document).to(receive(:parse_file_with_preprocessor).with('ref_doc.adoc'))
46
- allow(document).to(receive(:ref_to_def).with('REFERENCE').and_return(definition))
47
- allow(ref_document).to(receive(:ref_to_def).with('REFERENCE').and_return(ref_definition))
48
- allow(ref_definition).to(receive(:explicit_version).with(no_args).and_return(nil))
49
- allow(definition).to(receive(:sha256_short).with(no_args).and_return('something'))
50
- allow(ref_definition).to(receive(:sha256_short).with(no_args).and_return('something_else'))
51
-
52
- modifier.do_modifications(adoc_sources)
108
+ context 'when ref_tag is provided' do
109
+ subject(:modifier) do
110
+ described_class.new(
111
+ ref_tag: 'THE_TAG',
112
+ def_type: 'req',
113
+ first_version: 'a'
114
+ )
115
+ end
116
+
117
+ let(:document) { instance_double(DefMastership::Document, 'document') }
118
+ let(:ref_document) { instance_double(DefMastership::Document, 'ref_document') }
119
+ let(:definition) { instance_double(DefMastership::Definition, 'definition') }
120
+ let(:ref_definition) { instance_double(DefMastership::Definition, 'ref_definitions') }
121
+ let(:adoc_sources) do
122
+ {
123
+ 'file1.adoc' => "[define,req,REFERENCE]\nfile1 line2",
124
+ 'file2.adoc' => "file2 line1\nfile2 line2"
125
+ }
126
+ end
127
+
128
+ before do
129
+ allow(Dir).to(receive(:mktmpdir).and_yield('tmp'))
130
+ allow(Git).to(receive(:clone))
131
+ allow(DefMastership::Document).to(receive(:new).twice.and_return(ref_document, document))
132
+ allow(document).to(receive(:parse_file_with_preprocessor).with('file1.adoc'))
133
+ allow(document).to(receive(:parse_file_with_preprocessor).with('file2.adoc'))
134
+ allow(ref_document).to(receive(:parse_file_with_preprocessor).with('tmp/file1.adoc'))
135
+ allow(ref_document).to(receive(:parse_file_with_preprocessor).with('tmp/file2.adoc'))
136
+ allow(document).to(receive(:ref_to_def).with('REFERENCE').and_return(definition))
137
+ allow(ref_document).to(receive(:ref_to_def).with('REFERENCE').and_return(ref_definition))
138
+ allow(ref_definition).to(receive(:explicit_version).with(no_args).and_return(nil))
139
+ allow(definition).to(receive(:sha256_short).with(no_args).and_return('something'))
140
+ allow(ref_definition).to(receive(:sha256_short).with(no_args).and_return('something_else'))
141
+
142
+ modifier.do_modifications(adoc_sources)
143
+ end
144
+
145
+ it { expect(Dir).to(have_received(:mktmpdir).with('defmastership')) }
146
+ it { expect(Git).to(have_received(:clone).with('.', 'tmp', branch: 'THE_TAG')) }
147
+ it { expect(DefMastership::Document).to(have_received(:new).twice) }
148
+ it { expect(ref_document).to(have_received(:parse_file_with_preprocessor).with('tmp/file1.adoc')) }
149
+ it { expect(ref_document).to(have_received(:parse_file_with_preprocessor).with('tmp/file2.adoc')) }
150
+ it { expect(ref_document).to(have_received(:parse_file_with_preprocessor).twice) }
151
+
152
+ it do
153
+ expect(modifier.do_modifications(adoc_sources).fetch('file1.adoc')).to(include('REFERENCE(a)'))
154
+ end
53
155
  end
54
156
 
55
- it { expect(DefMastership::Document).to(have_received(:new).twice) }
56
- it { expect(document).to(have_received(:parse_file_with_preprocessor).twice) }
57
- it { expect(ref_document).to(have_received(:parse_file_with_preprocessor).with('ref_doc.adoc')) }
157
+ context 'when ref_tag and ref_repo is provided' do
158
+ subject(:modifier) do
159
+ described_class.new(
160
+ ref_tag: 'THE_TAG',
161
+ ref_repo: 'not dot',
162
+ def_type: 'req',
163
+ first_version: 'a'
164
+ )
165
+ end
166
+
167
+ let(:document) { instance_double(DefMastership::Document, 'document') }
168
+ let(:ref_document) { instance_double(DefMastership::Document, 'ref_document') }
169
+ let(:definition) { instance_double(DefMastership::Definition, 'definition') }
170
+ let(:ref_definition) { instance_double(DefMastership::Definition, 'ref_definitions') }
171
+ let(:adoc_sources) do
172
+ {
173
+ 'file1.adoc' => "[define,req,REFERENCE]\nfile1 line2",
174
+ 'file2.adoc' => "file2 line1\nfile2 line2"
175
+ }
176
+ end
177
+
178
+ before do
179
+ allow(Dir).to(receive(:mktmpdir).and_yield('tmp'))
180
+ allow(Git).to(receive(:clone))
181
+ allow(DefMastership::Document).to(receive(:new).twice.and_return(ref_document, document))
182
+ allow(document).to(receive(:parse_file_with_preprocessor).with('file1.adoc'))
183
+ allow(document).to(receive(:parse_file_with_preprocessor).with('file2.adoc'))
184
+ allow(ref_document).to(receive(:parse_file_with_preprocessor).with('tmp/file1.adoc'))
185
+ allow(ref_document).to(receive(:parse_file_with_preprocessor).with('tmp/file2.adoc'))
186
+ allow(document).to(receive(:ref_to_def).with('REFERENCE').and_return(definition))
187
+ allow(ref_document).to(receive(:ref_to_def).with('REFERENCE').and_return(ref_definition))
188
+ allow(ref_definition).to(receive(:explicit_version).with(no_args).and_return(nil))
189
+ allow(definition).to(receive(:sha256_short).with(no_args).and_return('something'))
190
+ allow(ref_definition).to(receive(:sha256_short).with(no_args).and_return('something_else'))
191
+
192
+ modifier.do_modifications(adoc_sources)
193
+ end
194
+
195
+ it { expect(Dir).to(have_received(:mktmpdir).with('defmastership')) }
196
+ it { expect(Git).to(have_received(:clone).with('not dot', 'tmp', branch: 'THE_TAG')) }
197
+ it { expect(DefMastership::Document).to(have_received(:new).twice) }
198
+ it { expect(ref_document).to(have_received(:parse_file_with_preprocessor).with('tmp/file1.adoc')) }
199
+ it { expect(ref_document).to(have_received(:parse_file_with_preprocessor).with('tmp/file2.adoc')) }
200
+ it { expect(ref_document).to(have_received(:parse_file_with_preprocessor).twice) }
58
201
 
59
- it do
60
- expect(modifier.do_modifications(adoc_sources).fetch('file1.adoc')).to(include('REFERENCE(a)'))
202
+ it do
203
+ expect(modifier.do_modifications(adoc_sources).fetch('file1.adoc')).to(include('REFERENCE(a)'))
204
+ end
205
+ end
206
+
207
+ context 'when both ref_tag and ref_document are provided' do
208
+ subject(:modifier) do
209
+ described_class.new(
210
+ ref_tag: 'THE_TAG',
211
+ ref_document: './another/doc.adoc',
212
+ def_type: 'req',
213
+ first_version: 'a'
214
+ )
215
+ end
216
+
217
+ let(:document) { instance_double(DefMastership::Document, 'document') }
218
+ let(:ref_document) { instance_double(DefMastership::Document, 'ref_document') }
219
+ let(:definition) { instance_double(DefMastership::Definition, 'definition') }
220
+ let(:ref_definition) { instance_double(DefMastership::Definition, 'ref_definitions') }
221
+ let(:adoc_sources) do
222
+ {
223
+ 'file1.adoc' => "[define,req,REFERENCE]\nfile1 line2",
224
+ 'file2.adoc' => "file2 line1\nfile2 line2"
225
+ }
226
+ end
227
+
228
+ before do
229
+ allow(Dir).to(receive(:mktmpdir).and_yield('tmp'))
230
+ allow(Git).to(receive(:clone))
231
+ allow(DefMastership::Document).to(receive(:new).twice.and_return(ref_document, document))
232
+ allow(document).to(receive(:parse_file_with_preprocessor).with('file1.adoc'))
233
+ allow(document).to(receive(:parse_file_with_preprocessor).with('file2.adoc'))
234
+ allow(ref_document).to(receive(:parse_file_with_preprocessor))
235
+ allow(document).to(receive(:ref_to_def).with('REFERENCE').and_return(definition))
236
+ allow(ref_document).to(receive(:ref_to_def).with('REFERENCE').and_return(ref_definition))
237
+ allow(ref_definition).to(receive(:explicit_version).with(no_args).and_return(nil))
238
+ allow(definition).to(receive(:sha256_short).with(no_args).and_return('something'))
239
+ allow(ref_definition).to(receive(:sha256_short).with(no_args).and_return('something_else'))
240
+
241
+ modifier.do_modifications(adoc_sources)
242
+ end
243
+
244
+ it { expect(Dir).to(have_received(:mktmpdir).with('defmastership')) }
245
+ it { expect(Git).to(have_received(:clone).with('.', 'tmp', branch: 'THE_TAG')) }
246
+ it { expect(DefMastership::Document).to(have_received(:new).twice) }
247
+ it { expect(ref_document).to(have_received(:parse_file_with_preprocessor).with('tmp/./another/doc.adoc')) }
248
+ it { expect(ref_document).to(have_received(:parse_file_with_preprocessor).once) }
249
+
250
+ it do
251
+ expect(modifier.do_modifications(adoc_sources).fetch('file1.adoc')).to(include('REFERENCE(a)'))
252
+ end
61
253
  end
62
254
  end
63
255
 
@@ -0,0 +1,74 @@
1
+ # Copyright (c) 2023 Jerome Arbez-Gindre
2
+ # frozen_string_literal: true
3
+
4
+ # rubocop:disable Metrics/BlockLength
5
+ namespace 'quality' do
6
+ begin
7
+ require('rubocop/rake_task')
8
+
9
+ RuboCop::RakeTask.new do |task|
10
+ task.options << '--display-cop-names'
11
+ task.options << '--config=config/rubocop.yml'
12
+ end
13
+ rescue LoadError
14
+ task(:rubocop) do
15
+ puts('Install rubocop to run its rake tasks')
16
+ end
17
+ end
18
+
19
+ begin
20
+ require('reek/rake/task')
21
+
22
+ Reek::Rake::Task.new do |task|
23
+ task.fail_on_error = true
24
+ task.source_files = '{lib,spec}/**/*.rb'
25
+ task.reek_opts = '--config config/reek.yml --single-line'
26
+ end
27
+ rescue LoadError
28
+ task(:reek) do
29
+ puts('Install reek to run its rake tasks')
30
+ end
31
+ end
32
+
33
+ begin
34
+ require('flay_task')
35
+
36
+ FlayTask.new(:flay, 200, %w[bin lib]) do |task|
37
+ task.verbose = true
38
+ end
39
+ rescue LoadError
40
+ task(:flay) do
41
+ puts('Install flay to run its rake tasks')
42
+ end
43
+ end
44
+
45
+ begin
46
+ require('rubycritic/rake_task')
47
+
48
+ RubyCritic::RakeTask.new do |task|
49
+ task.verbose = true
50
+ task.options = '--no-browser'
51
+ end
52
+ rescue LoadError
53
+ task(:rubycritic) do
54
+ puts('Install rubycritic to run its rake tasks')
55
+ end
56
+ end
57
+
58
+ desc 'Runs all quality code check'
59
+ task(
60
+ all: [
61
+ 'quality:rubocop',
62
+ 'quality:reek',
63
+ 'quality:flay',
64
+ 'quality:rubycritic'
65
+ ]
66
+ )
67
+ end
68
+ # rubocop:enable Metrics/BlockLength
69
+
70
+ desc 'Synonym for quality:rubocop'
71
+ task(rubocop: 'quality:rubocop')
72
+
73
+ desc 'Synonym for quality:reek'
74
+ task(reek: 'quality:reek')
data/tasks/test.rake CHANGED
@@ -5,30 +5,15 @@ require('cucumber/rake/task')
5
5
  require('rspec/core/rake_task')
6
6
 
7
7
  namespace 'test' do
8
- RSpec::Core::RakeTask.new(:spec)
9
-
10
- cuke_results = 'features_results.html'
11
- CLEAN << cuke_results
12
-
13
- Cucumber::Rake::Task.new(:features) do |t|
14
- opts = ['features'] +
15
- ['--format', 'html'] +
16
- ['-o', cuke_results] +
17
- ['--format', 'progress'] +
18
- ['-x']
19
-
20
- opts += ['--tags', ENV.fetch('TAGS').split.join(' or ')] if ENV['TAGS']
21
- t.cucumber_opts = opts
8
+ RSpec::Core::RakeTask.new(:spec) do |t|
9
+ t.rspec_opts = ['--options config/rspec']
22
10
  end
23
11
 
12
+ CLEAN << 'features_results.html'
13
+
14
+ Cucumber::Rake::Task.new(:features)
24
15
  Cucumber::Rake::Task.new('features:wip') do |t|
25
- t.cucumber_opts = ['features'] +
26
- ['--format', 'html'] +
27
- ['-o', cuke_results] +
28
- ['--format', 'pretty'] +
29
- ['-x'] +
30
- ['-s'] +
31
- ['--tags', '@wip and not @pending']
16
+ t.cucumber_opts = ['--profile wip']
32
17
  end
33
18
 
34
19
  desc 'Runs all unit tests and acceptance tests'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: defmastership
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.18
4
+ version: 1.0.19
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jérôme Arbez-Gindre
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-03-09 00:00:00.000000000 Z
11
+ date: 2024-07-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aasm
@@ -38,6 +38,34 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '2'
41
+ - !ruby/object:Gem::Dependency
42
+ name: csv
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3'
55
+ - !ruby/object:Gem::Dependency
56
+ name: git
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '1'
41
69
  - !ruby/object:Gem::Dependency
42
70
  name: gli
43
71
  requirement: !ruby/object:Gem::Requirement
@@ -63,21 +91,17 @@ extra_rdoc_files:
63
91
  files:
64
92
  - ".gitignore"
65
93
  - ".gitlab-ci.yml"
66
- - ".rspec"
67
- - ".rubocop.yml"
68
94
  - Gemfile
95
+ - Guardfile
69
96
  - LICENSE
70
97
  - README.rdoc
71
98
  - Rakefile
72
99
  - bin/defmastership
73
- - config/devtools.yml
74
- - config/flay.yml
75
- - config/flog.yml
100
+ - config/cucumber.yml
76
101
  - config/mutant.yml
77
102
  - config/reek.yml
103
+ - config/rspec
78
104
  - config/rubocop.yml
79
- - config/yardstick.yml
80
- - cucumber.yml
81
105
  - defmastership.gemspec
82
106
  - defmastership.rdoc
83
107
  - features/changeref.feature
@@ -88,6 +112,7 @@ files:
88
112
  - features/modify.feature
89
113
  - features/rename_included_files.feature
90
114
  - features/step_definitions/defmastership_steps.rb
115
+ - features/step_definitions/git_steps.rb
91
116
  - features/support/env.rb
92
117
  - lib/defmastership.rb
93
118
  - lib/defmastership/batch_modifier.rb
@@ -130,9 +155,9 @@ files:
130
155
  - spec/unit/def_mastership/update_def_modifier_spec.rb
131
156
  - spec/unit/def_mastership/update_def_version_modifier_spec.rb
132
157
  - spec/unit/def_mastership_spec.rb
158
+ - tasks/code_quality.rake
133
159
  - tasks/console.rake
134
160
  - tasks/package.task
135
- - tasks/smelling_code.rake
136
161
  - tasks/test.rake
137
162
  homepage: https://gitlab.com/jjag/defmastership/
138
163
  licenses:
@@ -158,7 +183,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
158
183
  - !ruby/object:Gem::Version
159
184
  version: '0'
160
185
  requirements: []
161
- rubygems_version: 3.5.6
186
+ rubygems_version: 3.5.9
162
187
  signing_key:
163
188
  specification_version: 4
164
189
  summary: Handling of references and definitions with asciidoctor