code_owners 1.0.8 → 1.0.9

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0c170835202aa29d1d863ac544a039dfa2aaca9b
4
- data.tar.gz: 732f6a87815efa4092ea1404b55180d9bde78f39
3
+ metadata.gz: add8d9474667ea07ea6ad3e207e9a0e085109ac9
4
+ data.tar.gz: 86f55b021ef6314614ac2e5f2a59dfec43adbcd1
5
5
  SHA512:
6
- metadata.gz: b205789714617196c0e067504e8beae29dc585a6601a79279475a3a17cc36b249d61e896c6972d8d2fc2b4780e5df406a86c92226ef6013fd6fb262087733ae6
7
- data.tar.gz: 4e7766d5ee8b1adf676974e8dce8345ce93d2b4b9e868d4295578d35b5656897621c0dcf00e227377024946e2d7429c695e2bf86539fbd24a5992fdce2c9e4fd
6
+ metadata.gz: 6bc09a62ef1d0b86e7a9be070b27c5ed0e21be5b797f29b2597b3c06ffecc8210fd50906319f67028bc8e8a4df3aa2b575ab5ae49a083f2af029f43182d9d074
7
+ data.tar.gz: 62e13f5c44667eff192eabb510dca677a2088e58ce123e3dbaf4ccd16c8ebf9eb1dffa8125d5524161de36df730b9eea83093776ea6a55fb40c72df6f741eec3
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- code_owners (1.0.8)
4
+ code_owners (1.0.9)
5
5
  rake
6
6
 
7
7
  GEM
@@ -1,3 +1,3 @@
1
1
  module CodeOwners
2
- VERSION = "1.0.8"
2
+ VERSION = "1.0.9"
3
3
  end
data/lib/code_owners.rb CHANGED
@@ -19,6 +19,10 @@ module CodeOwners
19
19
  puts message
20
20
  end
21
21
 
22
+ def file_ownerships
23
+ Hash[ ownerships.map { |o| [o[:file], o] } ]
24
+ end
25
+
22
26
  def ownerships
23
27
  patterns = pattern_owners
24
28
  git_owner_info(patterns.map { |p| p[0] }).map do |line, pattern, file|
@@ -77,7 +81,7 @@ module CodeOwners
77
81
  Tempfile.open('codeowner_patterns') do |file|
78
82
  file.write(patterns.join("\n"))
79
83
  file.rewind
80
- `cd #{current_repo_path} && git -c \"core.quotepath=off\" ls-files | xargs -- git -c \"core.quotepath=off\" -c \"core.excludesfile=#{file.path}\" check-ignore --no-index -v -n`
84
+ `cd #{current_repo_path} && git -c \"core.quotepath=off\" ls-files -z | xargs -0 -- git -c \"core.quotepath=off\" -c \"core.excludesfile=#{file.path}\" check-ignore --no-index -v -n`
81
85
  end
82
86
  end
83
87
 
@@ -2,6 +2,23 @@ require 'code_owners'
2
2
  require 'tmpdir'
3
3
 
4
4
  RSpec.describe CodeOwners do |rspec|
5
+ describe ".file_ownerships" do
6
+ it "returns a hash of ownerships keyed by file path" do
7
+ expect(CodeOwners).to receive(:ownerships).and_return(
8
+ [
9
+ { file: "pat2file", owner: "own2", line: "2", pattern: "pat2*" },
10
+ { file: "unowned/file", owner: "UNOWNED", line: nil, pattern: nil }
11
+ ]
12
+ )
13
+ expect(CodeOwners.file_ownerships).to eq(
14
+ {
15
+ "pat2file" => { file: "pat2file", owner: "own2", line: "2", pattern: "pat2*" },
16
+ "unowned/file" => { file: "unowned/file", owner: "UNOWNED", line: nil, pattern: nil }
17
+ }
18
+ )
19
+ end
20
+ end
21
+
5
22
  describe ".ownerships" do
6
23
  it "assigns owners to things" do
7
24
  expect(CodeOwners).to receive(:pattern_owners).and_return([["pat1", "own1"], ["pat2*", "own2"], ["pat3", "own3"]])
@@ -29,7 +46,7 @@ RSpec.describe CodeOwners do |rspec|
29
46
  lib/* @jcheatham
30
47
  some/path/** @someoneelse
31
48
  other/path/* @someoneelse @anotherperson
32
- invalid/codeowners/line
49
+ invalid/code owners/line
33
50
  @AnotherInvalidLine
34
51
  #comment-line (empty line next)
35
52
 
@@ -60,7 +77,7 @@ CODEOWNERS
60
77
 
61
78
  it "prints validation errors and skips lines that aren't the expected format" do
62
79
  expect(CodeOwners).to receive(:current_repo_path).and_return(@d)
63
- expect(CodeOwners).to receive(:log).with("Parse error line 4: \"invalid/codeowners/line \"")
80
+ expect(CodeOwners).to receive(:log).with("Parse error line 4: \"invalid/code owners/line\"")
64
81
  expect(CodeOwners).to receive(:log).with("Parse error line 5: \" @AnotherInvalidLine\"")
65
82
  pattern_owners = CodeOwners.pattern_owners
66
83
  expect(pattern_owners).not_to include(["", "@AnotherInvalidLine"])
@@ -86,6 +103,13 @@ CODEOWNERS
86
103
  expect(raw_ownership.size).to be >= 1
87
104
  expect(raw_ownership).to match(/^(?:.*:\d*:.*\t.*\n)+$/)
88
105
  end
106
+
107
+ context "when path includes a space" do
108
+ it "returns the path in single line" do
109
+ raw_ownership = CodeOwners.raw_git_owner_info(["/spec/files/*"])
110
+ expect(raw_ownership).to match(/.+:\d+:.+\tspec\/files\/file name\.txt\n/)
111
+ end
112
+ end
89
113
  end
90
114
 
91
115
  describe "code_owners" do
@@ -0,0 +1 @@
1
+ This file's name includes a space.
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: code_owners
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.8
4
+ version: 1.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonathan Cheatham
@@ -57,6 +57,7 @@ files:
57
57
  - lib/code_owners.rb
58
58
  - lib/code_owners/version.rb
59
59
  - spec/code_owners_spec.rb
60
+ - spec/files/file name.txt
60
61
  - spec/files/☃.txt
61
62
  homepage: https://github.com/jcheatham/code_owners
62
63
  licenses:
@@ -78,7 +79,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
78
79
  version: '0'
79
80
  requirements: []
80
81
  rubyforge_project:
81
- rubygems_version: 2.5.2.3
82
+ rubygems_version: 2.6.14.4
82
83
  signing_key:
83
84
  specification_version: 4
84
85
  summary: ".github/CODEOWNERS introspection utility gem"