mudguard 0.2.0 → 0.2.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3a7b56ba51f10b0d6d32fcb120599bc145b275076b30786b6955285f5da26668
4
- data.tar.gz: ca75c47ff5f80584407bb0da9d56b64f7c9e1e65cc8f7fc8b377ea0e8d83fefa
3
+ metadata.gz: a871581e7e7227dcc8c20bc00a925eb3b71bd23f76f1e30f76267fe9bbe97503
4
+ data.tar.gz: 2dec890800cb5661fc6930429d70171c5b29a8e4c888ad6f030d668bb8f0644e
5
5
  SHA512:
6
- metadata.gz: e9bd40c81779ed70c331c0d445b735edb3e561967e65fce1dc228a62ad86fd9298dfaa990d3bded3faec6191b5821204466c9ed29cdf89d12e9eee1678884d81
7
- data.tar.gz: 427d86d72d87f73d11dedfbb7a35d42ead0145919bf85e32dd5c9055bc977a2dadb9be668f76a081e61f54510a6ebb4aa66e7f4b11746da1a222efde3ad5b760
6
+ metadata.gz: 1fd2e9ee1f41f0f3d033ba1015a12b715377366876d835003a4b0dd0e5743cd1728d1a6f739812cabb2017b882e2fda33aeec5dde443e79fcfe65f980ff08fda
7
+ data.tar.gz: 62c6548a4c2b3a3e1bed074be382b3e73b89f60aaa3968217c56d33e4fdc03238a482955697609664055c630c6aa46c634e022f44747123c306ab5f0a5bb31bd
@@ -0,0 +1,35 @@
1
+ # This workflow uses actions that are not certified by GitHub.
2
+ # They are provided by a third-party and are governed by
3
+ # separate terms of service, privacy policy, and support
4
+ # documentation.
5
+ # This workflow will download a prebuilt Ruby version, install dependencies and run tests with Rake
6
+ # For more information see: https://github.com/marketplace/actions/setup-ruby-jruby-and-truffleruby
7
+
8
+ name: Ruby
9
+
10
+ on:
11
+ push:
12
+ branches: [ master ]
13
+ pull_request:
14
+ branches: [ master ]
15
+
16
+ jobs:
17
+ test:
18
+
19
+ runs-on: ubuntu-latest
20
+ strategy:
21
+ matrix:
22
+ ruby-version: ['2.5']
23
+
24
+ steps:
25
+ - uses: actions/checkout@v2
26
+ - name: Set up Ruby
27
+ # To automatically get bug fixes and new Ruby versions for ruby/setup-ruby,
28
+ # change this to (see https://github.com/ruby/setup-ruby#versioning):
29
+ # uses: ruby/setup-ruby@v1
30
+ uses: ruby/setup-ruby@473e4d8fe5dd94ee328fdfca9f8c9c7afc9dae5e
31
+ with:
32
+ ruby-version: ${{ matrix.ruby-version }}
33
+ bundler-cache: true # runs 'bundle install' and caches installed gems automatically
34
+ - name: Run tests
35
+ run: bundle exec rspec --format RSpec::Github::Formatter
data/.gitignore CHANGED
@@ -4,6 +4,9 @@
4
4
  # or operating system, you probably want to add a global ignore instead:
5
5
  # git config --global core.excludesfile '~/.gitignore_global'
6
6
 
7
+ # Ignore RubyMine
8
+ /.idea
9
+
7
10
  # Ignore bundler config.
8
11
  /.bundle
9
12
 
data/.rubocop.yml CHANGED
@@ -19,7 +19,7 @@ Style/Documentation:
19
19
  - 'spec/**/*.rb'
20
20
 
21
21
  Style/HashEachMethods:
22
- Enabled: true
22
+ Enabled: true
23
23
 
24
24
  Style/HashTransformKeys:
25
25
  Enabled: true
@@ -30,3 +30,8 @@ Style/HashTransformValues:
30
30
  Layout/LineLength:
31
31
  Description: 'Limit lines to 100 characters.'
32
32
  Max: 100
33
+
34
+
35
+ Lint/EmptyFile:
36
+ Exclude:
37
+ - 'spec/lib/infrastructure/persistence/project_repository_project/**/*.rb'
data/Gemfile.lock CHANGED
@@ -1,18 +1,18 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- mudguard (0.2.0)
4
+ mudguard (0.2.5)
5
5
  parser (~> 2.7)
6
6
  rake (~> 13.0)
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
10
10
  specs:
11
- ast (2.4.0)
11
+ ast (2.4.2)
12
12
  byebug (11.1.3)
13
- coderay (1.1.2)
14
- diff-lcs (1.3)
15
- ffi (1.12.2)
13
+ coderay (1.1.3)
14
+ diff-lcs (1.4.4)
15
+ ffi (1.15.0)
16
16
  formatador (0.2.5)
17
17
  guard (2.16.2)
18
18
  formatador (>= 0.2.4)
@@ -28,61 +28,65 @@ GEM
28
28
  guard (~> 2.1)
29
29
  guard-compat (~> 1.1)
30
30
  rspec (>= 2.99.0, < 4.0)
31
- listen (3.2.1)
31
+ listen (3.5.1)
32
32
  rb-fsevent (~> 0.10, >= 0.10.3)
33
33
  rb-inotify (~> 0.9, >= 0.9.10)
34
- lumberjack (1.2.5)
34
+ lumberjack (1.2.8)
35
35
  method_source (1.0.0)
36
36
  nenv (0.3.0)
37
37
  notiffany (0.1.3)
38
38
  nenv (~> 0.1)
39
39
  shellany (~> 0.0)
40
- parallel (1.19.1)
41
- parser (2.7.1.3)
42
- ast (~> 2.4.0)
43
- pry (0.13.1)
40
+ parallel (1.20.1)
41
+ parser (2.7.2.0)
42
+ ast (~> 2.4.1)
43
+ pry (0.14.1)
44
44
  coderay (~> 1.1)
45
45
  method_source (~> 1.0)
46
- pry-byebug (3.9.0)
46
+ pry-byebug (3.8.0)
47
47
  byebug (~> 11.0)
48
- pry (~> 0.13.0)
48
+ pry (~> 0.10)
49
49
  pry-doc (1.1.0)
50
50
  pry (~> 0.11)
51
51
  yard (~> 0.9.11)
52
52
  rainbow (3.0.0)
53
- rake (13.0.1)
53
+ rake (13.0.3)
54
54
  rb-fsevent (0.10.4)
55
55
  rb-inotify (0.10.1)
56
56
  ffi (~> 1.0)
57
- rexml (3.2.4)
58
- rspec (3.9.0)
59
- rspec-core (~> 3.9.0)
60
- rspec-expectations (~> 3.9.0)
61
- rspec-mocks (~> 3.9.0)
62
- rspec-core (3.9.2)
63
- rspec-support (~> 3.9.3)
64
- rspec-expectations (3.9.2)
57
+ regexp_parser (2.1.1)
58
+ rexml (3.2.5)
59
+ rspec (3.10.0)
60
+ rspec-core (~> 3.10.0)
61
+ rspec-expectations (~> 3.10.0)
62
+ rspec-mocks (~> 3.10.0)
63
+ rspec-core (3.10.1)
64
+ rspec-support (~> 3.10.0)
65
+ rspec-expectations (3.10.1)
65
66
  diff-lcs (>= 1.2.0, < 2.0)
66
- rspec-support (~> 3.9.0)
67
- rspec-mocks (3.9.1)
67
+ rspec-support (~> 3.10.0)
68
+ rspec-github (2.3.1)
69
+ rspec-core (~> 3.0)
70
+ rspec-mocks (3.10.2)
68
71
  diff-lcs (>= 1.2.0, < 2.0)
69
- rspec-support (~> 3.9.0)
70
- rspec-support (3.9.3)
71
- rubocop (0.84.0)
72
+ rspec-support (~> 3.10.0)
73
+ rspec-support (3.10.2)
74
+ rubocop (0.93.1)
72
75
  parallel (~> 1.10)
73
- parser (>= 2.7.0.1)
76
+ parser (>= 2.7.1.5)
74
77
  rainbow (>= 2.2.2, < 4.0)
78
+ regexp_parser (>= 1.8)
75
79
  rexml
76
- rubocop-ast (>= 0.0.3)
80
+ rubocop-ast (>= 0.6.0)
77
81
  ruby-progressbar (~> 1.7)
78
82
  unicode-display_width (>= 1.4.0, < 2.0)
79
- rubocop-ast (0.0.3)
80
- parser (>= 2.7.0.1)
81
- ruby-progressbar (1.10.1)
83
+ rubocop-ast (1.4.1)
84
+ parser (>= 2.7.1.5)
85
+ ruby-progressbar (1.11.0)
82
86
  shellany (0.0.1)
83
- thor (1.0.1)
87
+ thor (1.1.0)
84
88
  unicode-display_width (1.7.0)
85
- yard (0.9.25)
89
+ yard (0.9.26)
86
90
 
87
91
  PLATFORMS
88
92
  ruby
@@ -97,6 +101,7 @@ DEPENDENCIES
97
101
  pry-doc (~> 1.0)
98
102
  rake (~> 13.0)
99
103
  rspec (~> 3.9)
104
+ rspec-github
100
105
  rubocop (~> 0.80)
101
106
 
102
107
  BUNDLED WITH
data/Guardfile CHANGED
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  rspec_options = {
4
- cmd: "rspec",
4
+ cmd: "bundle exec rspec",
5
5
  notification: false,
6
6
  failed_mode: :focus
7
7
  }
@@ -12,5 +12,5 @@ guard "rspec", rspec_options do
12
12
  watch(%r{^lib/mudguard/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
13
13
  watch(%r{^lib/mudguard/(.+)\.rb$}) { |m| Dir.glob("spec/lib/#{m[1]}_*.rb") }
14
14
  watch("spec/spec_helper.rb") { "spec" }
15
- watch(%r{^exe\/mudguard$}) { |_| "spec/exe/mudguard_spec.rb" }
15
+ watch(%r{^exe/mudguard$}) { |_| "spec/exe/mudguard_spec.rb" }
16
16
  end
@@ -7,15 +7,7 @@ module Mudguard
7
7
  # Knows all constants of the project
8
8
  class Consts
9
9
  def initialize(sources:)
10
- @consts = sources
11
- .flat_map(&:find_consts)
12
- .each_with_object(Hash.new { |h, k| h[k] = {} }) do |c, a|
13
- path = split_hierarchy(c)
14
- const_name = path.last
15
- module_names = path.take(path.count - 1)
16
- sub_module = module_names.reduce(a) { |h, m| h[m] }
17
- sub_module[const_name] = {} unless sub_module.key?(const_name)
18
- end
10
+ @consts = sources.flat_map(&:find_consts).each_with_object({}, &method(:add_const))
19
11
  end
20
12
 
21
13
  def resolve(module_name, const_name)
@@ -35,6 +27,14 @@ module Mudguard
35
27
 
36
28
  private
37
29
 
30
+ def add_const(const, all_consts)
31
+ path = split_hierarchy(const)
32
+ const_name = path.last
33
+ module_names = path.take(path.count - 1)
34
+ sub_module = module_names.reduce(all_consts) { |h, m| h.key?(m) ? h[m] : h[m] = {} }
35
+ sub_module[const_name] = {} unless sub_module.key?(const_name)
36
+ end
37
+
38
38
  SEPARATOR = "::"
39
39
 
40
40
  def find_const_deeper(current_module, remaining_modules, consts, const_path)
@@ -6,7 +6,7 @@ module Mudguard
6
6
  class Dependency
7
7
  attr_reader :location, :dependency
8
8
 
9
- def initialize(location: nil, dependency:)
9
+ def initialize(dependency:, location: nil)
10
10
  @location = location
11
11
  @dependency = dependency
12
12
  end
@@ -1,6 +1,13 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "parser/current"
3
+ orig = $VERBOSE
4
+ begin
5
+ $VERBOSE = nil # silence warning when ruby versions are not exactly matching
6
+ require "parser/current"
7
+ ensure
8
+ $VERBOSE = orig
9
+ end
10
+
4
11
  require_relative "dependency"
5
12
  require_relative "dependency_visitor"
6
13
  require_relative "const_visitor"
@@ -13,16 +13,24 @@ module Mudguard
13
13
  def load_source_policies(project_path)
14
14
  file = PolicyFile.read(project_path)
15
15
  scopes = file.flat_map do |patterns, policies|
16
- sources = RubyFiles.select(project_path, patterns: [patterns])
17
- sources.flat_map { |s| { source: s, policies: policies } }
16
+ build_scope(patterns, policies, project_path)
18
17
  end
19
18
 
20
19
  sources = scopes.group_by { |e| e[:source] }
21
20
 
22
- sources.map do |source, group|
23
- policies = group.flat_map { |r| r[:policies] }.uniq
24
- Domain::SourcePolicies.new(source: source, policies: policies)
25
- end
21
+ sources.map(&method(:build_policies))
22
+ end
23
+
24
+ private
25
+
26
+ def build_policies(source, group)
27
+ policies = group.flat_map { |r| r[:policies] }.uniq
28
+ Domain::SourcePolicies.new(source: source, policies: policies)
29
+ end
30
+
31
+ def build_scope(patterns, policies, project_path)
32
+ sources = RubyFiles.select(project_path, patterns: [patterns])
33
+ sources.flat_map { |s| { source: s, policies: policies } }
26
34
  end
27
35
  end
28
36
  end
@@ -25,7 +25,7 @@ module Mudguard
25
25
  def enumerate_files(project_path, patterns)
26
26
  project_path_name = Pathname.new(project_path)
27
27
  ruby_files = patterns.map { |p| File.join(project_path, p) }
28
- Dir.glob(ruby_files).map do |f|
28
+ Dir.glob(ruby_files).select { |f| File.file?(f) }.map do |f|
29
29
  file_path_name = Pathname.new(f)
30
30
  diff_path = file_path_name.relative_path_from(project_path_name).to_s
31
31
  Mudguard::Domain::Source.new(location: File.join("./", diff_path),
@@ -12,6 +12,8 @@ module Mudguard
12
12
  # Provides Mudguard Rake Tasks
13
13
  class Task < ::Rake::TaskLib
14
14
  def initialize(project_dir: Dir.pwd)
15
+ super()
16
+
15
17
  @project_dir = project_dir
16
18
 
17
19
  desc "Run Mudguard"
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Mudguard
4
- VERSION = "0.2.0"
4
+ VERSION = "0.2.5"
5
5
  end
data/mudguard.gemspec CHANGED
@@ -17,6 +17,7 @@ Gem::Specification.new do |spec|
17
17
 
18
18
  spec.metadata["homepage_uri"] = spec.homepage
19
19
  spec.metadata["source_code_uri"] = spec.homepage
20
+ spec.required_ruby_version = ">= 2.5.3"
20
21
 
21
22
  # Specify which files should be added to the gem when it is released.
22
23
  # The `git ls-files -z` loads the files in the RubyGem that have been
@@ -37,6 +38,7 @@ Gem::Specification.new do |spec|
37
38
  spec.add_development_dependency "pry-doc", "~>1.0"
38
39
  spec.add_development_dependency "rake", "~>13.0"
39
40
  spec.add_development_dependency "rspec", "~> 3.9"
41
+ spec.add_development_dependency "rspec-github"
40
42
  spec.add_development_dependency "rubocop", "~>0.80"
41
43
 
42
44
  spec.add_dependency "parser", "~>2.7"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mudguard
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jorg Jenni
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-06-12 00:00:00.000000000 Z
11
+ date: 2021-05-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -122,6 +122,20 @@ dependencies:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
124
  version: '3.9'
125
+ - !ruby/object:Gem::Dependency
126
+ name: rspec-github
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
125
139
  - !ruby/object:Gem::Dependency
126
140
  name: rubocop
127
141
  requirement: !ruby/object:Gem::Requirement
@@ -173,6 +187,7 @@ extensions: []
173
187
  extra_rdoc_files: []
174
188
  files:
175
189
  - ".envrc"
190
+ - ".github/workflows/ruby.yml"
176
191
  - ".gitignore"
177
192
  - ".mudguard.yml"
178
193
  - ".rubocop.yml"
@@ -225,7 +240,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
225
240
  requirements:
226
241
  - - ">="
227
242
  - !ruby/object:Gem::Version
228
- version: '0'
243
+ version: 2.5.3
229
244
  required_rubygems_version: !ruby/object:Gem::Requirement
230
245
  requirements:
231
246
  - - ">="