skillnad 1.2.2

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.
Files changed (68) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +20 -0
  3. data/README.md +172 -0
  4. data/Rakefile +17 -0
  5. data/lib/rubygems/commands/compare_command.rb +105 -0
  6. data/lib/rubygems/comparator/base.rb +45 -0
  7. data/lib/rubygems/comparator/dependency_comparator.rb +110 -0
  8. data/lib/rubygems/comparator/dir_utils.rb +51 -0
  9. data/lib/rubygems/comparator/file_list_comparator.rb +212 -0
  10. data/lib/rubygems/comparator/gemfile_comparator.rb +149 -0
  11. data/lib/rubygems/comparator/monitor.rb +140 -0
  12. data/lib/rubygems/comparator/report/entry.rb +40 -0
  13. data/lib/rubygems/comparator/report.rb +131 -0
  14. data/lib/rubygems/comparator/spec_comparator.rb +66 -0
  15. data/lib/rubygems/comparator/utils.rb +134 -0
  16. data/lib/rubygems/comparator/version.rb +5 -0
  17. data/lib/rubygems/comparator.rb +308 -0
  18. data/lib/rubygems_plugin.rb +4 -0
  19. data/test/gemfiles/lorem-0.0.1/Gemfile +4 -0
  20. data/test/gemfiles/lorem-0.0.1/LICENSE.txt +22 -0
  21. data/test/gemfiles/lorem-0.0.1/README.md +29 -0
  22. data/test/gemfiles/lorem-0.0.1/Rakefile +2 -0
  23. data/test/gemfiles/lorem-0.0.1/lib/lorem/version.rb +3 -0
  24. data/test/gemfiles/lorem-0.0.1/lib/lorem.rb +7 -0
  25. data/test/gemfiles/lorem-0.0.1/lorem.gemspec +24 -0
  26. data/test/gemfiles/lorem-0.0.1.gem +0 -0
  27. data/test/gemfiles/lorem-0.0.2/CHANGELOG.md +6 -0
  28. data/test/gemfiles/lorem-0.0.2/Gemfile +4 -0
  29. data/test/gemfiles/lorem-0.0.2/LICENSE.txt +3 -0
  30. data/test/gemfiles/lorem-0.0.2/README.md +29 -0
  31. data/test/gemfiles/lorem-0.0.2/Rakefile +2 -0
  32. data/test/gemfiles/lorem-0.0.2/lib/lorem/version.rb +3 -0
  33. data/test/gemfiles/lorem-0.0.2/lib/lorem.rb +11 -0
  34. data/test/gemfiles/lorem-0.0.2/lorem.gemspec +24 -0
  35. data/test/gemfiles/lorem-0.0.2.gem +0 -0
  36. data/test/gemfiles/lorem-0.0.3/CHANGELOG.md +14 -0
  37. data/test/gemfiles/lorem-0.0.3/Gemfile +7 -0
  38. data/test/gemfiles/lorem-0.0.3/LICENSE.txt +3 -0
  39. data/test/gemfiles/lorem-0.0.3/README.md +29 -0
  40. data/test/gemfiles/lorem-0.0.3/Rakefile +2 -0
  41. data/test/gemfiles/lorem-0.0.3/bin/lorem +3 -0
  42. data/test/gemfiles/lorem-0.0.3/lib/lorem/utils.rb +7 -0
  43. data/test/gemfiles/lorem-0.0.3/lib/lorem/version.rb +3 -0
  44. data/test/gemfiles/lorem-0.0.3/lib/lorem.rb +11 -0
  45. data/test/gemfiles/lorem-0.0.3/lorem.gemspec +25 -0
  46. data/test/gemfiles/lorem-0.0.3.gem +0 -0
  47. data/test/gemfiles/lorem-0.0.4/CHANGELOG.md +21 -0
  48. data/test/gemfiles/lorem-0.0.4/Gemfile +6 -0
  49. data/test/gemfiles/lorem-0.0.4/LICENSE.txt +3 -0
  50. data/test/gemfiles/lorem-0.0.4/README.md +29 -0
  51. data/test/gemfiles/lorem-0.0.4/Rakefile +2 -0
  52. data/test/gemfiles/lorem-0.0.4/bin/lorem +3 -0
  53. data/test/gemfiles/lorem-0.0.4/lib/lorem/utils.rb +7 -0
  54. data/test/gemfiles/lorem-0.0.4/lib/lorem/version.rb +3 -0
  55. data/test/gemfiles/lorem-0.0.4/lib/lorem.rb +11 -0
  56. data/test/gemfiles/lorem-0.0.4/lorem.gemspec +25 -0
  57. data/test/gemfiles/lorem-0.0.4.gem +0 -0
  58. data/test/rubygems/comparator/test_dependency_comparator.rb +32 -0
  59. data/test/rubygems/comparator/test_dir_utils.rb +47 -0
  60. data/test/rubygems/comparator/test_file_list_comparator.rb +29 -0
  61. data/test/rubygems/comparator/test_gemfile_comparator.rb +16 -0
  62. data/test/rubygems/comparator/test_monitor.rb +183 -0
  63. data/test/rubygems/comparator/test_report.rb +25 -0
  64. data/test/rubygems/comparator/test_spec_comparator.rb +150 -0
  65. data/test/rubygems/comparator/test_utils.rb +35 -0
  66. data/test/rubygems/test_gem_commands_compare_command.rb +41 -0
  67. data/test/test_helper.rb +53 -0
  68. metadata +165 -0
@@ -0,0 +1,24 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'lorem/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "lorem"
8
+ spec.version = Lorem::VERSION
9
+ spec.authors = ["Josef Stribny"]
10
+ spec.email = ["jstribny@redhat.com"]
11
+ spec.summary = "lorem is a gem for testing skillnad"
12
+ spec.description = "lorem changes a lot so we can test skillnad a lot"
13
+ spec.homepage = ""
14
+ spec.license = "GPLv2"
15
+
16
+ spec.files = ["lorem.gemspec", "CHANGELOG.md", "Gemfile", "Rakefile", "LICENSE.txt", "README.md"] +
17
+ Dir.glob("lib/**/*")
18
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
19
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
20
+ spec.require_paths = ["lib"]
21
+
22
+ spec.add_development_dependency "bundler", "~> 1.6"
23
+ spec.add_development_dependency "rake"
24
+ end
Binary file
@@ -0,0 +1,14 @@
1
+ lorem 0.0.3
2
+ ===========
3
+
4
+ - add homepage
5
+ - add some lib files
6
+ - add an executable file
7
+ - change dependencies in gemspec and Gemfile
8
+
9
+ lorem 0.0.2
10
+ ===========
11
+
12
+ - add changelog file
13
+ - change license to GPLv2
14
+ - add new method to lib/lorem.rb
@@ -0,0 +1,7 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in lorem.gemspec
4
+ gemspec
5
+
6
+ gem 'minitest'
7
+ gem 'appraisal'
@@ -0,0 +1,3 @@
1
+ Copyright (c) 2014 Josef Stribny
2
+
3
+ You can use this library under GPLv2 conditions.
@@ -0,0 +1,29 @@
1
+ # Lorem
2
+
3
+ TODO: Write a gem description
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'lorem'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install lorem
18
+
19
+ ## Usage
20
+
21
+ TODO: Write usage instructions here
22
+
23
+ ## Contributing
24
+
25
+ 1. Fork it ( https://github.com/[my-github-username]/lorem/fork )
26
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
27
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
28
+ 4. Push to the branch (`git push origin my-new-feature`)
29
+ 5. Create a new Pull Request
@@ -0,0 +1,2 @@
1
+ require "bundler/gem_tasks"
2
+
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/ruby
2
+
3
+ puts 'Lorem Executable!'
@@ -0,0 +1,7 @@
1
+ def check_something
2
+
3
+ end
4
+
5
+ def make_something
6
+
7
+ end
@@ -0,0 +1,3 @@
1
+ module Lorem
2
+ VERSION = "0.0.3"
3
+ end
@@ -0,0 +1,11 @@
1
+ require "lorem/version"
2
+
3
+ module Lorem
4
+ def hello_world
5
+ puts 'Hello World'
6
+ end
7
+
8
+ def new_method
9
+ raise 'needs to be implemented'
10
+ end
11
+ end
@@ -0,0 +1,25 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'lorem/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "lorem"
8
+ spec.version = Lorem::VERSION
9
+ spec.authors = ["Josef Stribny"]
10
+ spec.email = ["jstribny@redhat.com"]
11
+ spec.summary = "lorem is a gem for testing skillnad"
12
+ spec.description = "lorem changes a lot so we can test skillnad a lot"
13
+ spec.homepage = "http://lorem.lorem"
14
+ spec.license = "GPLv2"
15
+
16
+ spec.files = ["lorem.gemspec", "bin/lorem", "CHANGELOG.md", "Gemfile", "Rakefile", "LICENSE.txt", "README.md"] +
17
+ Dir.glob("lib/**/*")
18
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
19
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
20
+ spec.require_paths = ["lib"]
21
+
22
+ spec.add_dependency "rails", ">= 4.0.0"
23
+ spec.add_development_dependency "bundler", "~> 1.0"
24
+ spec.add_development_dependency "rake", ">= 10.0.0"
25
+ end
Binary file
@@ -0,0 +1,21 @@
1
+ lorem 0.0.4
2
+ ===========
3
+
4
+ - change summary and description
5
+ - make bin/lorem really executable
6
+ - bump dependencies
7
+
8
+ lorem 0.0.3
9
+ ===========
10
+
11
+ - add homepage
12
+ - add some lib files
13
+ - add an executable file
14
+ - change dependencies in gemspec and Gemfile
15
+
16
+ lorem 0.0.2
17
+ ===========
18
+
19
+ - add changelog file
20
+ - change license to GPLv2
21
+ - add new method to lib/lorem.rb
@@ -0,0 +1,6 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in lorem.gemspec
4
+ gemspec
5
+
6
+ gem 'minitest', '5.0.0'
@@ -0,0 +1,3 @@
1
+ Copyright (c) 2014 Josef Stribny
2
+
3
+ You can use this library under GPLv2 conditions.
@@ -0,0 +1,29 @@
1
+ # Lorem
2
+
3
+ TODO: Write a gem description
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'lorem'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install lorem
18
+
19
+ ## Usage
20
+
21
+ TODO: Write usage instructions here
22
+
23
+ ## Contributing
24
+
25
+ 1. Fork it ( https://github.com/[my-github-username]/lorem/fork )
26
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
27
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
28
+ 4. Push to the branch (`git push origin my-new-feature`)
29
+ 5. Create a new Pull Request
@@ -0,0 +1,2 @@
1
+ require "bundler/gem_tasks"
2
+
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/ruby
2
+
3
+ puts 'Lorem Executable!'
@@ -0,0 +1,7 @@
1
+ def check_something
2
+
3
+ end
4
+
5
+ def make_something
6
+
7
+ end
@@ -0,0 +1,3 @@
1
+ module Lorem
2
+ VERSION = "0.0.4"
3
+ end
@@ -0,0 +1,11 @@
1
+ require "lorem/version"
2
+
3
+ module Lorem
4
+ def hello_world
5
+ puts 'Hello World'
6
+ end
7
+
8
+ def new_method
9
+ raise 'needs to be implemented'
10
+ end
11
+ end
@@ -0,0 +1,25 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'lorem/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "lorem"
8
+ spec.version = Lorem::VERSION
9
+ spec.authors = ["Josef Stribny"]
10
+ spec.email = ["jstribny@redhat.com"]
11
+ spec.summary = "lorem is a gem for testing skillnad plugin"
12
+ spec.description = "lorem changes a lot so we can test skillnad plugin a lot"
13
+ spec.homepage = "http://lorem.lorem"
14
+ spec.license = "GPLv2"
15
+
16
+ spec.files = ["lorem.gemspec", "bin/lorem", "CHANGELOG.md", "Gemfile", "Rakefile", "LICENSE.txt", "README.md"] +
17
+ Dir.glob("lib/**/*")
18
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
19
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
20
+ spec.require_paths = ["lib"]
21
+
22
+ spec.add_dependency "rails", ">= 4.1.0"
23
+ spec.add_development_dependency "bundler", "~> 1.1"
24
+ spec.add_development_dependency "rake", ">= 10.0.0"
25
+ end
Binary file
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'test_helper'
4
+
5
+ class TestDependencyComparator < TestGemComparator
6
+
7
+ def test_runtime_dependencies_comparison
8
+ assert_equal 'DIFFERENT runtime dependencies:', @report['runtime_dependency'].header.data
9
+ assert_equal 'DIFFERENT runtime dependencies:', @report['runtime_dependency'].lines(0)
10
+ assert_equal '0.0.2->0.0.3:', @report['runtime_dependency']['0.0.2->0.0.3'].header.data
11
+ assert_equal '0.0.2->0.0.3:', @report['runtime_dependency'].lines(1)
12
+ assert_equal '* Added:', @report['runtime_dependency']['0.0.2->0.0.3']['added'].lines(0)
13
+ assert_equal [], @report['runtime_dependency']['0.0.2->0.0.3']['deleted'].messages
14
+ assert_equal [], @report['runtime_dependency']['0.0.2->0.0.3']['updated'].messages
15
+ assert_equal ['rails [">= 4.0.0"] (runtime)'], @report['runtime_dependency']['0.0.2->0.0.3']['added'].lines(1)
16
+ assert_equal '0.0.3->0.0.4:', @report['runtime_dependency']['0.0.3->0.0.4'].header.data
17
+ assert_equal '0.0.3->0.0.4:', @report['runtime_dependency'].lines(4)
18
+ assert_equal [], @report['runtime_dependency']['0.0.3->0.0.4']['added'].messages
19
+ assert_equal [], @report['runtime_dependency']['0.0.3->0.0.4']['deleted'].messages
20
+ assert_equal ['rails from: [">= 4.0.0"] to: [">= 4.1.0"]'], @report['runtime_dependency']['0.0.3->0.0.4']['updated'].lines(1)
21
+ end
22
+
23
+ def test_development_dependencies_comparison
24
+ assert_equal [], @report['development_dependency']['0.0.1->0.0.2']['added'].messages
25
+ assert_equal [], @report['development_dependency']['0.0.1->0.0.2']['deleted'].messages
26
+ assert_equal [], @report['development_dependency']['0.0.1->0.0.2']['updated'].messages
27
+ assert_equal [], @report['development_dependency']['0.0.2->0.0.3']['added'].messages
28
+ assert_equal [], @report['development_dependency']['0.0.2->0.0.3']['deleted'].messages
29
+ assert_equal 'bundler from: ["~> 1.6"] to: ["~> 1.0"]', @report['development_dependency']['0.0.2->0.0.3']['updated'].lines(1)[0]
30
+ assert_equal 'rake from: [">= 0"] to: [">= 10.0.0"]', @report['development_dependency']['0.0.2->0.0.3']['updated'].lines(1)[1]
31
+ end
32
+ end
@@ -0,0 +1,47 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'test_helper'
4
+
5
+ class TestDirUtils < TestGemModule
6
+
7
+ def test_file_first_line
8
+ file1 = File.join(@v001, 'lib/lorem.rb')
9
+ file2 = File.join(@v002, 'bin/lorem')
10
+ file3 = File.join(@v003, 'bin/lorem')
11
+ assert_equal 'require "lorem/version"', Gem::Comparator::DirUtils.file_first_line(file1)
12
+ assert_nil Gem::Comparator::DirUtils.file_first_line(file2)
13
+ assert_equal '#!/usr/bin/ruby', Gem::Comparator::DirUtils.file_first_line(file3)
14
+ end
15
+
16
+ def test_file_has_shebang?
17
+ file1 = File.join(@v003, 'lib/lorem.rb')
18
+ file2 = File.join(@v004, 'bin/lorem')
19
+ assert_nil Gem::Comparator::DirUtils.file_has_shebang?(file1)
20
+ assert_equal 0, Gem::Comparator::DirUtils.file_has_shebang?(file2)
21
+ end
22
+
23
+ def test_files_same_first_line?
24
+ file1 = File.join(@v001, 'lib/lorem.rb')
25
+ file2 = File.join(@v002, 'lib/lorem.rb')
26
+ file3 = File.join(@v003, 'bin/lorem')
27
+ assert_equal true, Gem::Comparator::DirUtils.files_same_first_line?(file1, file2)
28
+ assert_equal false, Gem::Comparator::DirUtils.files_same_first_line?(file1, file3)
29
+ end
30
+
31
+ def test_gem_bin_file
32
+ file1 = File.join(@v001, 'lib/lorem.rb')
33
+ file2 = File.join(@v004, 'bin/lorem')
34
+ assert_nil Gem::Comparator::DirUtils.gem_bin_file?(file1)
35
+ assert_equal 0, Gem::Comparator::DirUtils.gem_bin_file?(file2)
36
+ end
37
+
38
+ def test_dirs_of_files
39
+ files = ['Rakefile', '/dir1/file1', '/dir2/file2']
40
+ assert_equal ["Rakefile", "/dir1/", "/dir2/"], Gem::Comparator::DirUtils.dirs_of_files(files)
41
+ end
42
+
43
+ def test_remove_subdirs
44
+ dirs = ['/dir1/dir2/dir3', '/dir1/dir2', '/dir', 'Gemfile']
45
+ assert_equal ["/dir1/dir2", "/dir", "Gemfile"], Gem::Comparator::DirUtils.remove_subdirs(dirs)
46
+ end
47
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'test_helper'
4
+
5
+ class TestFileListComparator < TestGemComparator
6
+
7
+ def test_files_comparison
8
+ assert_equal 'DIFFERENT files:', @report['files'].header.data
9
+ assert_equal '0.0.1->0.0.2:', @report['files'].lines(1)
10
+ assert_equal "CHANGELOG.md +6/-0", @report['files']['0.0.1->0.0.2']['added'].lines(1)
11
+ assert_equal [], @report['files']['0.0.1->0.0.2']['deleted'].messages
12
+ assert_equal [], @report['files']['0.0.1->0.0.2']['updated'].messages
13
+ assert_equal "bin/lorem +3/-0", @report['files']['0.0.2->0.0.3']['added'].lines(1)
14
+ assert_equal "(!) Unexpected permissions: 100664", @report['files']['0.0.2->0.0.3']['added'].lines(2).strip
15
+ assert_equal "(!) File is not executable", @report['files']['0.0.2->0.0.3']['added'].lines(3).strip
16
+ assert_equal "(!) Shebang found: #!/usr/bin/ruby", @report['files']['0.0.2->0.0.3']['added'].lines(4).strip
17
+ assert_equal "lib/lorem/utils.rb +7/-0", @report['files']['0.0.2->0.0.3']['added'].lines(5).strip
18
+ assert_nil @report['files']['0.0.2->0.0.3']['added'].lines(6)
19
+ assert_equal [], @report['files']['0.0.2->0.0.3']['deleted'].messages
20
+ assert_equal [], @report['files']['0.0.2->0.0.3']['updated'].messages
21
+ assert_equal [], @report['files']['0.0.3->0.0.4']['added'].messages
22
+ assert_equal [], @report['files']['0.0.3->0.0.4']['deleted'].messages
23
+ assert_equal [], @report['files']['0.0.3->0.0.4']['updated'].messages
24
+ end
25
+
26
+ def test_test_files_comparison
27
+ assert_equal 'SAME test_files:', @report['test_files'].header.data
28
+ end
29
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'test_helper'
4
+
5
+ class TestGemfileComparator < TestGemComparator
6
+
7
+ def test_gemfile_comparison
8
+ assert_equal '0.0.1->0.0.2:', @report['gemfiles']['0.0.1->0.0.2'].header.data
9
+ assert_equal [], @report['gemfiles']['0.0.1->0.0.2'].messages
10
+ assert_equal [], @report['gemfiles']['0.0.2->0.0.3'].messages
11
+ assert_equal [], @report['gemfiles']['0.0.3->0.0.4']['added'].messages
12
+ assert_equal '* Deleted', @report['gemfiles']['0.0.3->0.0.4'].lines(1)
13
+ assert_equal ['appraisal [">= 0"] (runtime)'], @report['gemfiles']['0.0.3->0.0.4']['deleted'].lines(1)
14
+ assert_equal ['minitest from: [">= 0"] to: ["= 5.0.0"]'], @report['gemfiles']['0.0.3->0.0.4']['updated'].lines(1)
15
+ end
16
+ end
@@ -0,0 +1,183 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'test_helper'
4
+
5
+ class TestMonitor < TestGemModule
6
+
7
+ def test_lines_changed
8
+ file1 = File.join(@v001, 'lib/lorem.rb')
9
+ file2 = File.join(@v002, 'lib/lorem.rb')
10
+ assert_equal '+4/-0', Gem::Comparator::Monitor.lines_changed(file1, file2)
11
+ end
12
+
13
+ def test_compact_files_diff
14
+ file1 = File.join(@v001, 'lib/lorem.rb')
15
+ file2 = File.join(@v002, 'lib/lorem.rb')
16
+ assert_equal '++++', Gem::Comparator::Monitor.compact_files_diff(file1, file2)
17
+ end
18
+
19
+ def test_files_added_diff
20
+ file1 = nil
21
+ file2 = File.join(@v003, 'lib/lorem/utils.rb')
22
+ diff = Gem::Comparator::Monitor.files_diff(file1, file2)
23
+ expected_diff = <<~EOF
24
+ @@ -0,0 +1,7 @@
25
+ +def check_something
26
+ +
27
+ +end
28
+ +
29
+ +def make_something
30
+ +
31
+ +end
32
+ EOF
33
+ assert_equal expected_diff, diff.split(/\n/, 3)[2]
34
+ end
35
+
36
+ def test_files_diff
37
+ file1 = File.join(@v001, 'lib/lorem.rb')
38
+ file2 = File.join(@v002, 'lib/lorem.rb')
39
+ diff = Gem::Comparator::Monitor.files_diff(file1, file2)
40
+ expected_diff = <<~EOF
41
+ @@ -6,0 +7,4 @@
42
+ +
43
+ + def new_method
44
+ + raise 'needs to be implemented'
45
+ + end
46
+ EOF
47
+ assert_equal expected_diff, diff.split(/\n/, 3)[2]
48
+ end
49
+
50
+ def test_files_permissions_changes
51
+ file1 = File.join(@v003, 'bin/lorem')
52
+ file2 = File.join(@v004, 'bin/lorem')
53
+ assert_equal '(!) New permissions: 100664 -> 100775', Gem::Comparator::Monitor.files_permissions_changes(file1, file2).strip
54
+ assert_equal '(!) New permissions: 100664 -> 100775', Gem::Comparator::Monitor.files_permissions_changes(file1, file2, true).strip
55
+ end
56
+
57
+ def test_files_permissions_changes_no_change
58
+ file1 = Tempfile.new
59
+ file2 = Tempfile.new
60
+ begin
61
+ File.chmod(0644, file1)
62
+ File.chmod(0644, file2)
63
+ assert_equal '', Gem::Comparator::Monitor.files_permissions_changes(file1.path, file2.path)
64
+ assert_equal '', Gem::Comparator::Monitor.files_permissions_changes(file1.path, file2.path, true)
65
+ ensure
66
+ file1.unlink
67
+ file2.unlink
68
+ end
69
+ end
70
+
71
+ def test_files_permissions_changes_ignores_group_writable_added
72
+ file1 = Tempfile.new
73
+ file2 = Tempfile.new
74
+ begin
75
+ File.chmod(0644, file1)
76
+ File.chmod(0664, file2)
77
+ assert_equal '', Gem::Comparator::Monitor.files_permissions_changes(file1.path, file2.path, true)
78
+ ensure
79
+ file1.unlink
80
+ file2.unlink
81
+ end
82
+ end
83
+
84
+ def test_files_permissions_changes_ignores_group_writable_other_changes
85
+ file1 = Tempfile.new
86
+ file2 = Tempfile.new
87
+ begin
88
+ File.chmod(0644, file1)
89
+ File.chmod(0660, file2)
90
+ assert_equal ' (!) New permissions: 100644 -> 100660', Gem::Comparator::Monitor.files_permissions_changes(file1.path, file2.path, true)
91
+ ensure
92
+ file1.unlink
93
+ file2.unlink
94
+ end
95
+ end
96
+
97
+ def test_files_permissions_changes_ignores_group_writable_removed
98
+ file1 = Tempfile.new
99
+ file2 = Tempfile.new
100
+ begin
101
+ File.chmod(0664, file1)
102
+ File.chmod(0644, file2)
103
+ assert_equal '', Gem::Comparator::Monitor.files_permissions_changes(file1.path, file2.path, true)
104
+ ensure
105
+ file1.unlink
106
+ file2.unlink
107
+ end
108
+ end
109
+
110
+ def test_new_file_permissions
111
+ file1 = File.join(@v004, 'bin/lorem')
112
+ file2 = File.join(@v004, 'lib/lorem.rb')
113
+ assert_equal '(!) Unexpected permissions: 100775', Gem::Comparator::Monitor.new_file_permissions(file1).strip
114
+ assert_equal '(!) Unexpected permissions: 100664', Gem::Comparator::Monitor.new_file_permissions(file2).strip
115
+ ignore_group_writable = true
116
+ assert_equal '', Gem::Comparator::Monitor.new_file_permissions(file1, ignore_group_writable).strip
117
+ assert_equal '', Gem::Comparator::Monitor.new_file_permissions(file2, ignore_group_writable).strip
118
+ end
119
+
120
+ def test_new_file_permissions_ignore_group_writable_when_not_group_writable
121
+ file = Tempfile.new
122
+ bin_file = temp_bin_file
123
+ begin
124
+ File.chmod(0644, file)
125
+ assert_equal '', Gem::Comparator::Monitor.new_file_permissions(file.path, true)
126
+
127
+ File.chmod(0755, bin_file)
128
+ assert_equal '', Gem::Comparator::Monitor.new_file_permissions(bin_file.path, true)
129
+ ensure
130
+ file.unlink
131
+ bin_file.unlink
132
+ end
133
+ end
134
+
135
+ def test_new_file_permissions_ignore_group_writable
136
+ file = Tempfile.new
137
+ bin_file = temp_bin_file
138
+ begin
139
+ File.chmod(0664, file)
140
+ assert_equal '', Gem::Comparator::Monitor.new_file_permissions(file.path, true)
141
+
142
+ File.chmod(0775, bin_file)
143
+ assert_equal '', Gem::Comparator::Monitor.new_file_permissions(bin_file.path, true)
144
+ ensure
145
+ file.unlink
146
+ bin_file.unlink
147
+ end
148
+ end
149
+
150
+ def test_new_file_permissions_ignore_group_writable_unreadable
151
+ file = Tempfile.new
152
+ begin
153
+ File.chmod(0660, file)
154
+ assert_equal ' (!) Unexpected permissions: 100660', Gem::Comparator::Monitor.new_file_permissions(file.path, true)
155
+ ensure
156
+ file.unlink
157
+ end
158
+ end
159
+
160
+ def test_files_executability_changes
161
+ file1 = File.join(@v003, 'bin/lorem')
162
+ file2 = File.join(@v004, 'bin/lorem')
163
+ assert_equal '(!) File is now executable!', Gem::Comparator::Monitor.files_executability_changes(file1, file2).strip
164
+ end
165
+
166
+ def test_new_file_executability
167
+ file1 = File.join(@v003, 'bin/lorem')
168
+ file2 = File.join(@v004, 'bin/lorem')
169
+ assert_equal '(!) File is not executable', Gem::Comparator::Monitor.new_file_executability(file1).strip
170
+ assert_equal '', Gem::Comparator::Monitor.new_file_executability(file2).strip
171
+ end
172
+
173
+ def test_files_shebang_changes
174
+ file1 = File.join(@v003, 'bin/lorem')
175
+ file2 = File.join(@v004, 'bin/lorem')
176
+ assert_equal '', Gem::Comparator::Monitor.files_shebang_changes(file1, file2).strip
177
+ end
178
+
179
+ def test_new_file_shebang
180
+ file1 = File.join(@v003, 'bin/lorem')
181
+ assert_equal '(!) Shebang found: #!/usr/bin/ruby', Gem::Comparator::Monitor.new_file_shebang(file1).strip
182
+ end
183
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../../test_helper'
4
+ require 'rubygems/comparator'
5
+
6
+ class TestGemComparatorReport < Minitest::Test
7
+ def setup
8
+ super
9
+ @report = Gem::Comparator::Report.new
10
+ @report['1'] << '1'
11
+ @report['1']['2'] << '2'
12
+ @report['1']['unused'].set_header 'Unused'
13
+ @report['1.1'].section do
14
+ nest('1.1.1').section do
15
+ puts [3, 3]
16
+ end
17
+ puts []
18
+ end
19
+ end
20
+
21
+ def test_all_messages
22
+ assert_equal 2, @report['1'].all_messages.size
23
+ assert_equal 1, @report['1.1'].all_messages.size
24
+ end
25
+ end