calcifer 0.3.0 → 0.4.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/.github/workflows/main.yml +41 -0
- data/Gemfile.lock +23 -2
- data/README.md +9 -1
- data/calcifer.gemspec +2 -1
- data/lib/calcifer/factories/list_file_factory.rb +47 -0
- data/lib/calcifer/finders/files_branch_diff_finder.rb +22 -0
- data/lib/calcifer/graph/graph_list_file.rb +27 -0
- data/lib/calcifer/version.rb +1 -1
- data/lib/calcifer.rb +9 -21
- metadata +25 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c7d116a75730c531b8425c3358f6988fd46c3cf480fa73e6fea53a783ae9db4e
|
4
|
+
data.tar.gz: bcd079c57f89dcdedac1c6d3f43d656a09dff5b14a058b6655a218c76ab6a97e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e12138c209b2a7a49aced35daa7c9f181d0b7668a6066a3a565135480781ff1c12ffe6157d35201f0e9892f97fbe9bc4c756ab41a88a0cfaf992578c6fbe67a6
|
7
|
+
data.tar.gz: 6f2b9e7ca8fe6392804f9a641559ce4df4998734f81bf3b8cd227172860a4486dd222e2d8f6dea67d85cd3d518b49d72e7323db351927e084193efd4b16cf46a
|
@@ -0,0 +1,41 @@
|
|
1
|
+
# This is a basic workflow to help you get started with Actions
|
2
|
+
|
3
|
+
name: CI
|
4
|
+
|
5
|
+
# Controls when the workflow will run
|
6
|
+
on:
|
7
|
+
# Triggers the workflow on push or pull request events but only for the main branch
|
8
|
+
push:
|
9
|
+
branches: [ main ]
|
10
|
+
pull_request:
|
11
|
+
branches: [ main ]
|
12
|
+
|
13
|
+
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
|
14
|
+
jobs:
|
15
|
+
# This workflow contains a single job called "build"
|
16
|
+
build:
|
17
|
+
# The type of runner that the job will run on
|
18
|
+
runs-on: ubuntu-latest
|
19
|
+
|
20
|
+
steps:
|
21
|
+
- name: Checkout code
|
22
|
+
uses: actions/checkout@v2
|
23
|
+
|
24
|
+
- name: Setup Ruby and install gems
|
25
|
+
uses: actions/setup-ruby@v1
|
26
|
+
with:
|
27
|
+
ruby-version: 2.6
|
28
|
+
|
29
|
+
- name: Build env
|
30
|
+
run: |
|
31
|
+
sudo apt-get -yqq install libpq-dev
|
32
|
+
gem install bundler:1.17.0
|
33
|
+
bundle install
|
34
|
+
|
35
|
+
- name: Run Rspec
|
36
|
+
run: bundle exec rspec
|
37
|
+
- name: Run Rubocop
|
38
|
+
run: bundle exec rubocop
|
39
|
+
|
40
|
+
|
41
|
+
|
data/Gemfile.lock
CHANGED
@@ -1,16 +1,23 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
calcifer (0.
|
5
|
-
rgl
|
4
|
+
calcifer (0.4.0)
|
5
|
+
rgl (~> 0.5.7)
|
6
6
|
|
7
7
|
GEM
|
8
8
|
remote: https://rubygems.org/
|
9
9
|
specs:
|
10
|
+
ast (2.4.2)
|
10
11
|
diff-lcs (1.5.0)
|
11
12
|
generator (0.0.1)
|
12
13
|
lazy_priority_queue (0.1.1)
|
14
|
+
parallel (1.21.0)
|
15
|
+
parser (3.1.0.0)
|
16
|
+
ast (~> 2.4.1)
|
17
|
+
rainbow (3.1.1)
|
13
18
|
rake (10.5.0)
|
19
|
+
regexp_parser (2.2.0)
|
20
|
+
rexml (3.2.5)
|
14
21
|
rgl (0.5.7)
|
15
22
|
lazy_priority_queue (~> 0.1.0)
|
16
23
|
stream (~> 0.5.3)
|
@@ -27,8 +34,21 @@ GEM
|
|
27
34
|
diff-lcs (>= 1.2.0, < 2.0)
|
28
35
|
rspec-support (~> 3.10.0)
|
29
36
|
rspec-support (3.10.3)
|
37
|
+
rubocop (1.25.1)
|
38
|
+
parallel (~> 1.10)
|
39
|
+
parser (>= 3.1.0.0)
|
40
|
+
rainbow (>= 2.2.2, < 4.0)
|
41
|
+
regexp_parser (>= 1.8, < 3.0)
|
42
|
+
rexml
|
43
|
+
rubocop-ast (>= 1.15.1, < 2.0)
|
44
|
+
ruby-progressbar (~> 1.7)
|
45
|
+
unicode-display_width (>= 1.4.0, < 3.0)
|
46
|
+
rubocop-ast (1.15.1)
|
47
|
+
parser (>= 3.0.1.1)
|
48
|
+
ruby-progressbar (1.11.0)
|
30
49
|
stream (0.5.3)
|
31
50
|
generator
|
51
|
+
unicode-display_width (2.1.0)
|
32
52
|
|
33
53
|
PLATFORMS
|
34
54
|
ruby
|
@@ -38,6 +58,7 @@ DEPENDENCIES
|
|
38
58
|
calcifer!
|
39
59
|
rake (~> 10.0)
|
40
60
|
rspec (~> 3.0)
|
61
|
+
rubocop (~> 1.25)
|
41
62
|
|
42
63
|
BUNDLED WITH
|
43
64
|
1.17.3
|
data/README.md
CHANGED
@@ -1,4 +1,6 @@
|
|
1
1
|
# Calcifer
|
2
|
+
|
3
|
+
Calcifer helps you find test files that are directly related to the files you changed.
|
2
4
|
## Installation
|
3
5
|
|
4
6
|
Add this line to your application's Gemfile:
|
@@ -17,8 +19,14 @@ Or install it yourself as:
|
|
17
19
|
|
18
20
|
## Usage
|
19
21
|
|
20
|
-
|
22
|
+
To search for related files using uncommitted changes, just do the following
|
23
|
+
|
24
|
+
$ bundle exec calcifer | xargs bundle exec rspec
|
25
|
+
|
26
|
+
To search for related files using the other branch changes as a reference, just do the following
|
27
|
+
|
21
28
|
|
29
|
+
$ bundle exec calcifer -b 'branch_name' | xargs bundle exec rspec
|
22
30
|
## Contributing
|
23
31
|
|
24
32
|
Bug reports and pull requests are welcome on GitHub at https://github.com/GustavoDuarteM/calcifer. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
|
data/calcifer.gemspec
CHANGED
@@ -39,9 +39,10 @@ Gem::Specification.new do |spec|
|
|
39
39
|
spec.executables = ['calcifer']
|
40
40
|
spec.require_paths = ["lib"]
|
41
41
|
|
42
|
-
spec.add_dependency 'rgl'
|
42
|
+
spec.add_dependency 'rgl', "~>0.5.7"
|
43
43
|
|
44
44
|
spec.add_development_dependency "bundler", "~> 1.17"
|
45
45
|
spec.add_development_dependency "rake", "~> 10.0"
|
46
46
|
spec.add_development_dependency "rspec", "~> 3.0"
|
47
|
+
spec.add_development_dependency "rubocop", "~> 1.25"
|
47
48
|
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Calcifer
|
4
|
+
module Factories
|
5
|
+
class ListFileFactory
|
6
|
+
PARAM_BRANCH = ['-b', '-branch'].freeze
|
7
|
+
|
8
|
+
def initialize(params)
|
9
|
+
@params = params
|
10
|
+
end
|
11
|
+
|
12
|
+
def fabricate
|
13
|
+
extract_parameters
|
14
|
+
|
15
|
+
return Calcifer::Finders::FilesDiffFinder.new if @branch.nil?
|
16
|
+
|
17
|
+
Calcifer::Finders::FilesBranchDiffFinder.new(@branch)
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def extract_parameters
|
23
|
+
params_list.each do |param|
|
24
|
+
param_branch(param)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def params_list
|
29
|
+
@params_list = []
|
30
|
+
(0..@params.length - 1).step(2) do |num|
|
31
|
+
range = 2 + num
|
32
|
+
@params_list << @params[num..range]
|
33
|
+
end
|
34
|
+
|
35
|
+
@params_list
|
36
|
+
end
|
37
|
+
|
38
|
+
def param_branch(array_param)
|
39
|
+
param, value = array_param
|
40
|
+
|
41
|
+
return unless PARAM_BRANCH.include?(param)
|
42
|
+
|
43
|
+
@branch = value
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Calcifer
|
4
|
+
module Finders
|
5
|
+
class FilesBranchDiffFinder
|
6
|
+
def initialize(branch)
|
7
|
+
@branch = branch
|
8
|
+
end
|
9
|
+
|
10
|
+
def execute
|
11
|
+
@file_list = git_files.split.map(&lambda { |file_path|
|
12
|
+
file = File.open(file_path)
|
13
|
+
file if file.size.positive? && File.extname(file.path) == '.rb'
|
14
|
+
}).compact
|
15
|
+
end
|
16
|
+
|
17
|
+
def git_files
|
18
|
+
`git diff --name-only #{@branch}...`
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Calcifer
|
4
|
+
module Graph
|
5
|
+
class GraphListFile
|
6
|
+
def initialize(file_list)
|
7
|
+
@file_list = file_list
|
8
|
+
end
|
9
|
+
|
10
|
+
def execute
|
11
|
+
graph_list_file = @file_list.map(&->(file) { Calcifer::Buiders::RootFileBuilder.new(file).build }).compact
|
12
|
+
|
13
|
+
graph_list_file.each do |graph|
|
14
|
+
related_files = Calcifer::Finders::FileRelatedFinder.new(graph.module_name).execute
|
15
|
+
graph_vertices = related_files.map { |related_file| [graph.file_path, related_file] }
|
16
|
+
graph.graph_root.add_edges(*graph_vertices)
|
17
|
+
end
|
18
|
+
|
19
|
+
graph_list_file
|
20
|
+
end
|
21
|
+
|
22
|
+
def file_list
|
23
|
+
Calcifer::Finders::FilesDiffFinder.new.execute
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
data/lib/calcifer/version.rb
CHANGED
data/lib/calcifer.rb
CHANGED
@@ -5,27 +5,15 @@ require 'rgl/adjacency'
|
|
5
5
|
|
6
6
|
module Calcifer
|
7
7
|
class Error < StandardError; end
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
def graph_list_file
|
19
|
-
graph_list_file = file_list.map(&->(file) { Calcifer::Buiders::RootFileBuilder.new(file).build }).compact
|
20
|
-
|
21
|
-
graph_list_file.each do |graph|
|
22
|
-
related_files = Calcifer::Finders::FileRelatedFinder.new(graph.module_name).execute
|
23
|
-
graph_vertices = related_files.map { |related_file| [graph.file_path, related_file] }
|
24
|
-
graph.graph_root.add_edges(*graph_vertices)
|
8
|
+
class << self
|
9
|
+
def execute
|
10
|
+
file_list_finder = Calcifer::Factories::ListFileFactory.new(ARGV).fabricate
|
11
|
+
file_list = file_list_finder.execute
|
12
|
+
graph_list_file = Calcifer::Graph::GraphListFile.new(file_list).execute
|
13
|
+
spec_files_path = graph_list_file.map(&:related_files_paths).flatten
|
14
|
+
spec_files_path_list = Calcifer::Finders::SpecFilesRelatedFinder.new(spec_files_path).execute
|
15
|
+
|
16
|
+
printf `echo #{spec_files_path_list}`
|
25
17
|
end
|
26
18
|
end
|
27
|
-
|
28
|
-
def file_list
|
29
|
-
Calcifer::Finders::FilesDiffFinder.new.execute
|
30
|
-
end
|
31
19
|
end
|
metadata
CHANGED
@@ -1,29 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: calcifer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gustavo Duarte
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-04-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rgl
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 0.5.7
|
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: 0.5.7
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -66,6 +66,20 @@ dependencies:
|
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '3.0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rubocop
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '1.25'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '1.25'
|
69
83
|
description:
|
70
84
|
email:
|
71
85
|
- gustavo_dmuniz@yahoo.com.br
|
@@ -74,6 +88,7 @@ executables:
|
|
74
88
|
extensions: []
|
75
89
|
extra_rdoc_files: []
|
76
90
|
files:
|
91
|
+
- ".github/workflows/main.yml"
|
77
92
|
- ".gitignore"
|
78
93
|
- ".rspec"
|
79
94
|
- ".rubocop.yml"
|
@@ -90,10 +105,13 @@ files:
|
|
90
105
|
- calcifer.gemspec
|
91
106
|
- lib/calcifer.rb
|
92
107
|
- lib/calcifer/builders/root_file_builder.rb
|
108
|
+
- lib/calcifer/factories/list_file_factory.rb
|
93
109
|
- lib/calcifer/finders/file_related_finder.rb
|
110
|
+
- lib/calcifer/finders/files_branch_diff_finder.rb
|
94
111
|
- lib/calcifer/finders/files_diff_finder.rb
|
95
112
|
- lib/calcifer/finders/module_name_finder.rb
|
96
113
|
- lib/calcifer/finders/spec_files_related_finder.rb
|
114
|
+
- lib/calcifer/graph/graph_list_file.rb
|
97
115
|
- lib/calcifer/graph/root_file.rb
|
98
116
|
- lib/calcifer/version.rb
|
99
117
|
homepage: https://github.com/GustavoDuarteM/calcifer
|
@@ -117,7 +135,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
117
135
|
- !ruby/object:Gem::Version
|
118
136
|
version: '0'
|
119
137
|
requirements: []
|
120
|
-
rubygems_version: 3.
|
138
|
+
rubygems_version: 3.1.6
|
121
139
|
signing_key:
|
122
140
|
specification_version: 4
|
123
141
|
summary: This gem helps to find class test files related to pending changes in git.
|