gem-compare 1.2.0 → 1.2.1

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
  SHA256:
3
- metadata.gz: 0caaeffb3233009f5be958ac76e97a0f1f30ff83b9029833f83129ccfb682885
4
- data.tar.gz: 40747fe01a1698f048dc67e98b7d28f2a0d52cd9c9f37badeba47ea2bf8f2e3e
3
+ metadata.gz: '096fabc998369169bf705a75200c474ba447d3c356fe315b41e43de604cfb083'
4
+ data.tar.gz: d23ba898f4d201e2e02c83662c3e333b3c3b8a33ab0b4e6bc698a8acc24c0cde
5
5
  SHA512:
6
- metadata.gz: 449146838c58824fb8c9a74b357a2d51ee9f90dc69a10c7e40c8cc859562accb90946114c7c090a93122d4573b9ab8ef7cc175f9543e65c5d61d9361039d97bc
7
- data.tar.gz: 60a07492868fbbe221089b1cb5afe3887e9f7e47f3aeafe72c72271aaf6c9e30f2fbd99560bbc999194b040ab34d19c33d01652c8da2fc22a7e496cd8695c946
6
+ metadata.gz: 2c8ab50db4a790a4af27bd2ed8fe19ffc463a24af0f17e30be05d84cc4b1f2a57d9b02e0650dd6c963d088676c464985577783b92e20c2d819b44dcb3ac3f581
7
+ data.tar.gz: 9814f8ef072e89b299bb5ff3d952ad2247b79867b61328b6e6f50af653ee5128560a5cb271517d1073d888b5022b79fb20228d3c18bcbf94243922da628ee6c5
@@ -47,7 +47,7 @@ class Gem::Comparator
47
47
  curr_permissions = File.stat(curr_file).mode
48
48
 
49
49
  diff = prev_permissions ^ curr_permissions
50
- diff ^= 020 if ignore_group_writable
50
+ diff ^= 020 if diff != 0 && ignore_group_writable
51
51
 
52
52
  if diff != 0
53
53
  " (!) New permissions: " +
@@ -59,13 +59,21 @@ class Gem::Comparator
59
59
 
60
60
  def self.new_file_permissions(file, ignore_group_writable=false)
61
61
  file_permissions = File.stat(file).mode
62
- formatted_file_permissions = format_permissions(file_permissions)
63
62
 
64
- file_permissions ^= 020 if ignore_group_writable
63
+ expected_permissions = if DirUtils.gem_bin_file?(file)
64
+ 0100755
65
+ else
66
+ 0100644
67
+ end
68
+
69
+ permissions_to_compare = if ignore_group_writable && file_permissions != expected_permissions
70
+ file_permissions ^ 020
71
+ else
72
+ file_permissions
73
+ end
65
74
 
66
- unless file_permissions == 0100644 || \
67
- (DirUtils.gem_bin_file?(file) && file_permissions == 0100755)
68
- return " (!) Unexpected permissions: #{formatted_file_permissions}"
75
+ unless permissions_to_compare == expected_permissions
76
+ return " (!) Unexpected permissions: #{format_permissions(file_permissions)}"
69
77
  end
70
78
  ''
71
79
  end
@@ -1,3 +1,3 @@
1
1
  class Gem::Comparator
2
- VERSION = '1.2.0'
2
+ VERSION = '1.2.1'
3
3
  end
@@ -9,9 +9,10 @@ class TestFileListComparator < TestGemComparator
9
9
  assert_equal [], @report['files']['0.0.1->0.0.2']['deleted'].messages
10
10
  assert_equal [], @report['files']['0.0.1->0.0.2']['updated'].messages
11
11
  assert_equal "bin/lorem +3/-0", @report['files']['0.0.2->0.0.3']['added'].lines(1)
12
- assert_equal "(!) File is not executable", @report['files']['0.0.2->0.0.3']['added'].lines(2).strip
13
- assert_equal "(!) Shebang found: #!/usr/bin/ruby", @report['files']['0.0.2->0.0.3']['added'].lines(3).strip
14
- assert_equal "lib/lorem/utils.rb +7/-0", @report['files']['0.0.2->0.0.3']['added'].lines(4).strip
12
+ assert_equal "(!) Unexpected permissions: 100664", @report['files']['0.0.2->0.0.3']['added'].lines(2).strip
13
+ assert_equal "(!) File is not executable", @report['files']['0.0.2->0.0.3']['added'].lines(3).strip
14
+ assert_equal "(!) Shebang found: #!/usr/bin/ruby", @report['files']['0.0.2->0.0.3']['added'].lines(4).strip
15
+ assert_equal "lib/lorem/utils.rb +7/-0", @report['files']['0.0.2->0.0.3']['added'].lines(5).strip
15
16
  assert_nil @report['files']['0.0.2->0.0.3']['added'].lines(6)
16
17
  assert_equal [], @report['files']['0.0.2->0.0.3']['deleted'].messages
17
18
  assert_equal [], @report['files']['0.0.2->0.0.3']['updated'].messages
@@ -49,6 +49,21 @@ class TestMonitor < TestGemModule
49
49
  file1 = File.join(@v003, 'bin/lorem')
50
50
  file2 = File.join(@v004, 'bin/lorem')
51
51
  assert_equal '(!) New permissions: 100664 -> 100775', Gem::Comparator::Monitor.files_permissions_changes(file1, file2).strip
52
+ assert_equal '(!) New permissions: 100664 -> 100775', Gem::Comparator::Monitor.files_permissions_changes(file1, file2, true).strip
53
+ end
54
+
55
+ def test_files_permissions_changes_no_change
56
+ file1 = Tempfile.new
57
+ file2 = Tempfile.new
58
+ begin
59
+ File.chmod(0644, file1)
60
+ File.chmod(0644, file2)
61
+ assert_equal '', Gem::Comparator::Monitor.files_permissions_changes(file1.path, file2.path)
62
+ assert_equal '', Gem::Comparator::Monitor.files_permissions_changes(file1.path, file2.path, true)
63
+ ensure
64
+ file1.unlink
65
+ file2.unlink
66
+ end
52
67
  end
53
68
 
54
69
  def test_files_permissions_changes_ignores_group_writable_added
@@ -94,16 +109,39 @@ class TestMonitor < TestGemModule
94
109
  file1 = File.join(@v004, 'bin/lorem')
95
110
  file2 = File.join(@v004, 'lib/lorem.rb')
96
111
  assert_equal '(!) Unexpected permissions: 100775', Gem::Comparator::Monitor.new_file_permissions(file1).strip
97
- assert_equal '(!) Unexpected permissions: 100664', Gem::Comparator::Monitor.new_file_permissions(file2).strip
112
+ assert_equal '(!) Unexpected permissions: 100664', Gem::Comparator::Monitor.new_file_permissions(file2).strip
113
+ ignore_group_writable = true
114
+ assert_equal '', Gem::Comparator::Monitor.new_file_permissions(file1, ignore_group_writable).strip
115
+ assert_equal '', Gem::Comparator::Monitor.new_file_permissions(file2, ignore_group_writable).strip
116
+ end
117
+
118
+ def test_new_file_permissions_ignore_group_writable_when_not_group_writable
119
+ file = Tempfile.new
120
+ bin_file = temp_bin_file
121
+ begin
122
+ File.chmod(0644, file)
123
+ assert_equal '', Gem::Comparator::Monitor.new_file_permissions(file.path, true)
124
+
125
+ File.chmod(0755, bin_file)
126
+ assert_equal '', Gem::Comparator::Monitor.new_file_permissions(bin_file.path, true)
127
+ ensure
128
+ file.unlink
129
+ bin_file.unlink
130
+ end
98
131
  end
99
132
 
100
133
  def test_new_file_permissions_ignore_group_writable
101
134
  file = Tempfile.new
135
+ bin_file = temp_bin_file
102
136
  begin
103
137
  File.chmod(0664, file)
104
- assert_equal '', Gem::Comparator::Monitor.new_file_permissions(file, true)
138
+ assert_equal '', Gem::Comparator::Monitor.new_file_permissions(file.path, true)
139
+
140
+ File.chmod(0775, bin_file)
141
+ assert_equal '', Gem::Comparator::Monitor.new_file_permissions(bin_file.path, true)
105
142
  ensure
106
143
  file.unlink
144
+ bin_file.unlink
107
145
  end
108
146
  end
109
147
 
data/test/test_helper.rb CHANGED
@@ -11,6 +11,12 @@ def setup_file_permissions
11
11
  File.chmod(0775, File.join(gemfiles_path, 'lorem-0.0.4', 'bin', 'lorem'))
12
12
  end
13
13
 
14
+ def temp_bin_file
15
+ bin_dir = File.join(Dir.mktmpdir, "bin")
16
+ Dir.mkdir(bin_dir)
17
+ Tempfile.new("", bin_dir)
18
+ end
19
+
14
20
  class TestGemComparator < Minitest::Test
15
21
  def setup
16
22
  super
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gem-compare
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Josef Stribny
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-07-17 00:00:00.000000000 Z
11
+ date: 2022-07-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json