speg 1.1.2 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/speg/file_generator.rb +41 -14
- data/lib/speg/version.rb +1 -1
- data/spec/lib/speg/file_generator_spec.rb +13 -6
- data/spec/lib/speg/version_spec.rb +1 -1
- data/spec/spec_helper.rb +4 -3
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 36b5e7525897945ea8344efb15b19bc2ee0143403843181c1a67b26142f0fb5c
|
4
|
+
data.tar.gz: ca0d84faaca6e310b37073b900fd6a452ee54d1a36e36f600e5e7c3a57eabb74
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3a8381c7709a520117c05943ef5ba3abb88514771fce2c5b1d2514d56debe17ea0b50045b88ed3e02745b47b8ab852b46eac126b713157b39af62ecfbf10d7b1
|
7
|
+
data.tar.gz: 5278056e3421344786e222a8f6a7e28bfab96c86d72b2d2ea5f905b25968015f5ff084b5024d3829f0f15d0ec26e58c515e68dcce6e7a8beed315839dc250d25
|
data/lib/speg/file_generator.rb
CHANGED
@@ -16,6 +16,14 @@ module Speg
|
|
16
16
|
|
17
17
|
@option_parser.on('--minitest', 'Generate Minitest files') { generate_test_files('test') }
|
18
18
|
|
19
|
+
@option_parser.on('-sg', '--spec_generate ARGUEMENT', 'generate single spec file') do |file_path|
|
20
|
+
generate_single_test_file('spec', file_path)
|
21
|
+
end
|
22
|
+
|
23
|
+
@option_parser.on('-tg', '--test_generate ARGUEMENT', 'generate single test file') do |file_path|
|
24
|
+
generate_single_test_file('test', file_path)
|
25
|
+
end
|
26
|
+
|
19
27
|
if ARGV.empty?
|
20
28
|
puts @option_parser.help
|
21
29
|
exit
|
@@ -24,32 +32,51 @@ module Speg
|
|
24
32
|
@option_parser.parse!
|
25
33
|
end
|
26
34
|
|
27
|
-
def
|
35
|
+
def generate_single_test_file(test_suit, dir)
|
36
|
+
_file_name, file_path, klass_name = file_data(dir, test_suit)
|
37
|
+
|
38
|
+
generate_file(test_suit, file_path, klass_name)
|
39
|
+
end
|
40
|
+
|
41
|
+
def generate_test_files(test_suit)
|
28
42
|
PATHS.each do |path|
|
29
43
|
next unless Dir.exist?(path)
|
30
44
|
|
31
45
|
file_paths(path).each do |dir|
|
32
|
-
file_path = dir
|
33
|
-
file_name = "#{file_path.last.split('.').first}_#{file_suffix}.rb"
|
34
|
-
klass_name = File.basename(file_path.last, '.rb').split('_').map(&:humanize).join('')
|
35
|
-
file_path.pop
|
36
|
-
file_path.shift
|
37
|
-
file_path << file_name
|
38
|
-
file = "#{file_suffix}/#{file_path.join('/')}"
|
46
|
+
file_name, file_path, klass_name = file_data(dir, test_suit)
|
39
47
|
|
40
48
|
# skip if file name is application
|
41
49
|
next if file_name.split('_').first == 'application'
|
42
50
|
|
43
51
|
# skip if spec file exists
|
44
|
-
next if File.exist?(
|
52
|
+
next if File.exist?(file_path)
|
45
53
|
|
46
|
-
|
47
|
-
minitest_template(file, klass_name)
|
48
|
-
else
|
49
|
-
rspec_template(file, klass_name)
|
50
|
-
end
|
54
|
+
generate_file(test_suit, file_path, klass_name)
|
51
55
|
end
|
52
56
|
end
|
53
57
|
end
|
58
|
+
|
59
|
+
private
|
60
|
+
|
61
|
+
# return file_name, file_path and klass_name
|
62
|
+
def file_data(dir, test_suit)
|
63
|
+
file_path = dir.split('/')
|
64
|
+
file_name = "#{file_path.last.split('.').first}_#{test_suit}.rb"
|
65
|
+
klass_name = File.basename(file_path.last, '.rb').split('_').map(&:humanize).join('')
|
66
|
+
file_path.pop
|
67
|
+
file_path.shift
|
68
|
+
file_path << file_name
|
69
|
+
file = "#{test_suit}/#{file_path.join('/')}"
|
70
|
+
|
71
|
+
[file_name, file, klass_name]
|
72
|
+
end
|
73
|
+
|
74
|
+
def generate_file(test_suit, file, klass_name)
|
75
|
+
if test_suit == 'test'
|
76
|
+
minitest_template(file, klass_name)
|
77
|
+
else
|
78
|
+
rspec_template(file, klass_name)
|
79
|
+
end
|
80
|
+
end
|
54
81
|
end
|
55
82
|
end
|
data/lib/speg/version.rb
CHANGED
@@ -5,8 +5,8 @@ RSpec.describe Speg::FileGenerator do
|
|
5
5
|
let(:path){ ['spec/lib/models'] }
|
6
6
|
let(:file_path) { 'spec/lib/models/dummy_model_spec.rb' }
|
7
7
|
|
8
|
-
|
9
|
-
before
|
8
|
+
describe 'generate file' do
|
9
|
+
before do
|
10
10
|
stub_const('Speg::FileGenerator::PATHS', path)
|
11
11
|
described_class.new.generate_test_files('spec')
|
12
12
|
end
|
@@ -14,10 +14,6 @@ RSpec.describe Speg::FileGenerator do
|
|
14
14
|
it 'generates a spec file' do
|
15
15
|
expect(File.exist?('spec/lib/models/test_spec.rb')).to be_truthy
|
16
16
|
end
|
17
|
-
|
18
|
-
xit 'skips existing files' do
|
19
|
-
expect(described_class.new.generate_test_files('spec')).not_to eq file_path
|
20
|
-
end
|
21
17
|
end
|
22
18
|
|
23
19
|
context '#rspec_template' do
|
@@ -31,4 +27,15 @@ RSpec.describe Speg::FileGenerator do
|
|
31
27
|
expect(File.read(file_path)).to include('RSpec.describe DummyModel')
|
32
28
|
end
|
33
29
|
end
|
30
|
+
|
31
|
+
describe '#generate_single_test_file' do
|
32
|
+
before do
|
33
|
+
path = 'spec/lib/models/dummy.rb'
|
34
|
+
described_class.new.generate_single_test_file('test', path)
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'generates single test file' do
|
38
|
+
expect(File.exist?('test/lib/models/dummy_test.rb')).to be_truthy
|
39
|
+
end
|
40
|
+
end
|
34
41
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
|
2
|
+
require 'fileutils'
|
3
3
|
RSpec.configure do |config|
|
4
4
|
# Enable flags like --only-failures and --next-failure
|
5
5
|
config.example_status_persistence_file_path = ".rspec_status"
|
@@ -16,7 +16,8 @@ RSpec.configure do |config|
|
|
16
16
|
spec_file = File.expand_path('spec/lib/models/dummy_model_spec.rb')
|
17
17
|
file = File.expand_path('spec/lib/models/test_spec.rb')
|
18
18
|
|
19
|
-
File.delete(file)
|
20
|
-
File.delete(spec_file)
|
19
|
+
File.delete(file) if File.exist?(file)
|
20
|
+
File.delete(spec_file) if File.exist?(spec_file)
|
21
|
+
FileUtils.rm_rf('test') if Dir.exists?('test')
|
21
22
|
end
|
22
23
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: speg
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Opara Ifeanyi Christian
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-11-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: railties
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '8.0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '8.0'
|
27
27
|
description: This gem creates test/spec files that were not created automatically
|
28
28
|
with rspec/minitest, this is especially helpful if you have to generate multiple
|
29
29
|
test files
|
@@ -71,7 +71,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
71
71
|
- !ruby/object:Gem::Version
|
72
72
|
version: '0'
|
73
73
|
requirements: []
|
74
|
-
rubygems_version: 3.
|
74
|
+
rubygems_version: 3.5.9
|
75
75
|
signing_key:
|
76
76
|
specification_version: 4
|
77
77
|
summary: Create spec/test files for your test framework
|