pluginator 1.1.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (42) hide show
  1. checksums.yaml +4 -4
  2. data/.noexec.yaml +1 -0
  3. data/.travis.yml +5 -1
  4. data/Changelog.md +5 -0
  5. data/Gemfile +6 -3
  6. data/Guardfile +17 -0
  7. data/README.md +18 -0
  8. data/Rakefile +22 -3
  9. data/lib/pluginator/autodetect.rb +61 -18
  10. data/lib/pluginator/group.rb +1 -1
  11. data/lib/pluginator/version.rb +1 -1
  12. data/pluginator.gemspec +4 -1
  13. data/test/gems/gems/fake-gem-name-a-1.0.0/lib/fake-gem-name-a.rb +1 -0
  14. data/{demo → test/gems/gems/fake-gem-name-a-1.0.0/lib}/plugins/something/math/decrease.rb +0 -0
  15. data/{demo → test/gems/gems/fake-gem-name-a-1.0.0/lib}/plugins/something/math/increase.rb +0 -0
  16. data/{demo → test/gems/gems/fake-gem-name-a-1.0.0/lib}/plugins/something/nested/structure/test.rb +0 -0
  17. data/{demo → test/gems/gems/fake-gem-name-a-1.0.0/lib}/plugins/something/stats/max.rb +0 -0
  18. data/test/gems/gems/fake-gem-name-latest-1.0.0/lib/fake-gem-name-latest.rb +1 -0
  19. data/test/gems/gems/fake-gem-name-latest-1.0.0/lib/plugins/latest/version1/max.rb +29 -0
  20. data/test/gems/gems/fake-gem-name-latest-2.0.0/lib/fake-gem-name-latest.rb +1 -0
  21. data/test/gems/gems/fake-gem-name-latest-2.0.0/lib/plugins/latest/version2/max.rb +29 -0
  22. data/test/gems/gems/fake-gem-name-v1a-1.0.0/lib/fake-gem-name-v1a.rb +1 -0
  23. data/test/gems/gems/fake-gem-name-v1a-1.0.0/lib/plugins/v1test/stats/max.rb +29 -0
  24. data/test/gems/gems/fake-gem-name-v1b-1.0.0/lib/fake-gem-name-v1a.rb +1 -0
  25. data/test/gems/gems/fake-gem-name-v1b-1.0.0/lib/plugins/v1test/stats/max.rb +29 -0
  26. data/test/gems/gems/fake-gem-name-v2a-1.0.0/lib/fake-gem-name-v2a.rb +1 -0
  27. data/test/gems/gems/fake-gem-name-v2a-1.0.0/lib/plugins/v2test/stats/max.rb +29 -0
  28. data/test/gems/gems/fake-gem-name-v2b-1.0.0/lib/fake-gem-name-v2b.rb +1 -0
  29. data/test/gems/gems/fake-gem-name-v2b-1.0.0/lib/plugins/v2test/stats/max.rb +29 -0
  30. data/test/gems/specifications/fake-gem-name-a-1.0.0.gemspec +21 -0
  31. data/test/gems/specifications/fake-gem-name-latest-1.0.0.gemspec +21 -0
  32. data/test/gems/specifications/fake-gem-name-latest-2.0.0.gemspec +21 -0
  33. data/test/gems/specifications/fake-gem-name-v1a-1.0.0.gemspec +21 -0
  34. data/test/gems/specifications/fake-gem-name-v1b-1.0.0.gemspec +24 -0
  35. data/test/gems/specifications/fake-gem-name-v2a-1.0.0.gemspec +24 -0
  36. data/test/gems/specifications/fake-gem-name-v2b-1.0.0.gemspec +24 -0
  37. data/test/gems/specifications/pluginator-1.1.0.gemspec +44 -0
  38. data/test/pluginator/autodetect_test.rb +35 -9
  39. data/test/pluginator_test.rb +64 -8
  40. data/test/plugins_test/extensions/class_exist_test.rb +9 -8
  41. data/test/test_helper.rb +38 -3
  42. metadata +55 -6
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1b13964003921b69cd71106774916ce7f5501a9e
4
- data.tar.gz: bb6622b44c91406eebbc3bc869102f433347eb68
3
+ metadata.gz: a5f89e736b2a03c5c15a34e795805bf9b7bb65de
4
+ data.tar.gz: 8bffb346e9161538eaddc7387ab0899e485fc927
5
5
  SHA512:
6
- metadata.gz: 411e703c42de1014e3f0991745d6970e2f8e2688d3fcc989bf26e59ab77607bc252e05de1ea419d7f17f972d3919f3a32d33598bcef04bb8eb672cbdcff7593e
7
- data.tar.gz: 184950e5413b670dcda9424d08017fe490df7231eb54dbe099bafac5927c8e43b573ac916093ee67d199b2fca73eb6c3bdcd97883b3f6a5bcc384fdc4f9a6341
6
+ metadata.gz: 8f3878958c681e05d883c2ee0aace907b31d9500be9ca2fa2f1596bf3bcb2cc582818aae0bc860dd9fd96228fd808050be8357d485aefea81c751439f8d2c0b3
7
+ data.tar.gz: f112ef035f0632413082f639c29ad89b3e2e1e2324c7ae8cbcfcb718f6faafb198c255d7654b78828c81ea7465c2e19c7cfaf1f73c118527b19074dd054d01a9
data/.noexec.yaml ADDED
@@ -0,0 +1 @@
1
+ exclude: [rake,guard]
data/.travis.yml CHANGED
@@ -2,12 +2,16 @@ language: ruby
2
2
  rvm:
3
3
  - jruby
4
4
  - ruby-head
5
- - 2.1.0
5
+ - 2.1
6
6
  - 2.0.0
7
7
  - 1.9.3
8
8
  - 1.9.2
9
9
  - 1.8.7
10
10
  - rbx
11
+ before_script:
12
+ - 'if [[ "$TRAVIS_RUBY_VERSION" == rbx ]]; then gem update bundler; fi'
13
+ script:
14
+ - NOEXEC_DISABLE=1 rake
11
15
  notifications:
12
16
  irc:
13
17
  channels:
data/Changelog.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.2.0
4
+ date: 2014-09-24
5
+
6
+ - improved detection of gems/plugins to load, based on #6
7
+
3
8
  ## 1.1.0
4
9
  date: 2014-06-06
5
10
 
data/Gemfile CHANGED
@@ -25,7 +25,10 @@ gemspec
25
25
 
26
26
  group :development do
27
27
  # statistics only on MRI 2.0 - avoid problems on older rubies
28
- gem "redcarpet", :platforms => [:mri_20]
29
- gem "simplecov", :platforms => [:mri_20]
30
- gem "coveralls", :platforms => [:mri_20]
28
+ gem "redcarpet", :platforms => [:mri_20]
29
+ gem "simplecov", :platforms => [:mri_20]
30
+ gem "coveralls", :platforms => [:mri_20]
31
+ gem "guard", :platforms => [:mri_20]
32
+ gem "guard-minitest", :platforms => [:mri_20]
33
+ gem "guard-yard", :platforms => [:mri_20]
31
34
  end
data/Guardfile ADDED
@@ -0,0 +1,17 @@
1
+ # A sample Guardfile
2
+ # More info at https://github.com/guard/guard#readme
3
+
4
+ guard :minitest, :include => %w[lib test], :bundler => false do
5
+ watch(%r{^lib/plugins/pluginator/(.*/)?([^/]+)\.rb$}) { |m|
6
+ "test/plugins_test/#{m[1]}#{m[2]}_test.rb"
7
+ }
8
+ watch(%r{^lib/(.*/)?([^/]+)\.rb$}) { |m|
9
+ "test/#{m[1]}#{m[2]}_test.rb"
10
+ }
11
+ watch(%r{^test/(.*)\/?(.*)_test\.rb$})
12
+ watch(%r{^test/test_helper\.rb$}) { 'test' }
13
+ end
14
+
15
+ guard 'yard' do
16
+ watch(%r{^lib/.+\.rb})
17
+ end
data/README.md CHANGED
@@ -129,6 +129,18 @@ plugins.first_one("<type>") => first_plugin # nil when none
129
129
  - `MissingPlugin` - raised when plugin can not be found, generated by `*!` methods
130
130
  - `MissingType` - raised when type can not be found, generated by `*!` methods
131
131
 
132
+ ## Versioning plugins
133
+
134
+ In case plugin gets moved to other gem you can sdpecify which gem to
135
+ use for loading the plugin by specifying plugin version in gems gemspec
136
+ metadata:
137
+
138
+ ```ruby
139
+ s.metadata = {
140
+ "plugins/v2test/stats/max.rb" => "1"
141
+ }
142
+ ```
143
+
132
144
  ## Examples
133
145
 
134
146
  ### Example 1 - task plugins
@@ -191,6 +203,12 @@ Pluginator.find("rvm2", type: "hooks/after_install").type.each{ |plugin|
191
203
  }
192
204
  ```
193
205
 
206
+ ## Testing
207
+
208
+ ```bash
209
+ NOEXEC_DISABLE=1 rake test
210
+ ```
211
+
194
212
  ## License
195
213
 
196
214
  Copyright 2013 Michal Papis <mpapis@gmail.com>
data/Rakefile CHANGED
@@ -19,12 +19,31 @@ You should have received a copy of the GNU Lesser General Public License
19
19
  along with pluginator. If not, see <http://www.gnu.org/licenses/>.
20
20
  =end
21
21
 
22
- require "rake/testtask"
22
+ default_tasks = []
23
+
24
+ begin
25
+ require "yard"
26
+ YARD::Rake::YardocTask.new do |t|
27
+ t.files = ["lib/**/*.rb"]
28
+ # TODO: see https://github.com/lsegal/yard/pull/800
29
+ #~ t.stats_options = ["--list-undoc", "--compact"]
30
+ t.options = ["--no-stats"]
31
+ t.after = Proc.new do
32
+ YARD::CLI::Stats.new.run("--list-undoc", "--compact", "--use-cache")
33
+ end
34
+ end
23
35
 
24
- task :default => [:test]
36
+ task :docs => [:yard]
37
+ default_tasks << :yard
38
+ rescue LoadError
39
+ end
25
40
 
41
+ require "rake/testtask"
26
42
  Rake::TestTask.new do |t|
27
43
  t.verbose = true
28
- t.libs.push("demo", "test")
44
+ t.libs.push("test")
29
45
  t.pattern = "test/**/*_test.rb"
30
46
  end
47
+ default_tasks << :test
48
+
49
+ task :default => default_tasks
@@ -35,6 +35,7 @@ module Pluginator
35
35
  setup_autodetect(options[:type])
36
36
  end
37
37
 
38
+ # Return the forced type
38
39
  def type
39
40
  @plugins[@force_type] unless @force_type.nil?
40
41
  end
@@ -57,33 +58,75 @@ module Pluginator
57
58
  end
58
59
 
59
60
  def load_files(file_names)
60
- file_names.each do |file_name|
61
- path, name, type = split_file_name(file_name, @group)
61
+ unique_gemspec_paths(file_names).each do |gemspec, path, name, type|
62
+ gemspec.activate
62
63
  load_plugin(path) and
63
64
  register_plugin(type, name2class(name))
64
65
  end
65
66
  end
66
67
 
67
- def load_plugin(path)
68
- gemspec = Gem::Specification.find_by_path(path)
68
+ def unique_gemspec_paths(file_names)
69
+ all = gemspec_and_paths(file_names)
70
+ gemspecs = all.map(&:first)
71
+ selected =
72
+ gemspecs.group_by{|spec| spec.name}.map(&:last).map do |specs|
73
+ activated = specs.find(&:activated?)
74
+ activated || specs.sort.last
75
+ end
76
+ all.map do |gemspec, path, name, type|
77
+ found = selected.find{|spec| spec == gemspec}
78
+ [found, path, name, type] if found
79
+ end.compact
80
+ end
81
+
82
+ def gemspec_and_paths(file_names)
83
+ unique_parsed_paths(file_names).map do |path, name, type|
84
+ gemspec = gemspec_for_path(path)
85
+ [gemspec, path, name, type] if gemspec
86
+ end.compact
87
+ end
88
+
89
+ def unique_parsed_paths(file_names)
90
+ file_names.map do |file_name|
91
+ split_file_name(file_name, @group)
92
+ end.sort.uniq
93
+ end
94
+
95
+ def gemspec_for_path(path)
96
+ gemspecs = Gem::Specification._all.reject do |spec|
97
+ Dir.glob( File.join( spec.lib_dirs_glob, path ) ).empty?
98
+ end
99
+ case gemspecs.size
100
+ when 0
101
+ nil
102
+ when 1
103
+ gemspecs.first
104
+ else
105
+ find_latest_plugin_version(gemspecs, path)
106
+ end
107
+ end
108
+
109
+ def find_latest_plugin_version(gemspecs, path)
110
+ gemspecs = gemspecs.sort_by{|spec| [((spec.metadata||{})[path]||"0").to_i, spec.name, spec.version]}
111
+ last = gemspecs.last
112
+ return last if gemspecs.size == 1
113
+
114
+ activated = gemspecs.find(&:activated?)
115
+ best = Gem::Specification.find_by_path(path)
69
116
  if
70
- gemspec
117
+ (activated.nil? || last == activated) &&
118
+ !best.activated?
71
119
  then
72
- activated =
73
- Gem::Specification.find do |spec|
74
- spec.name == gemspec.name && spec.activated?
75
- end
76
- gemspec.activate if !gemspec.activated? && activated.nil?
77
- if
78
- activated.nil? || activated == gemspec
79
- then
80
- require path
81
- true
82
- else
83
- nil
84
- end
120
+ last
121
+ else
122
+ best
85
123
  end
86
124
  end
87
125
 
126
+ def load_plugin(path)
127
+ require path
128
+ true
129
+ end
130
+
88
131
  end
89
132
  end
@@ -46,7 +46,7 @@ module Pluginator
46
46
  def register_plugin(type, klass)
47
47
  type = type.to_s
48
48
  @plugins[type] ||= []
49
- @plugins[type].push(klass)
49
+ @plugins[type].push(klass) unless @plugins[type].include?(klass)
50
50
  end
51
51
 
52
52
  private
@@ -19,5 +19,5 @@ along with pluginator. If not, see <http://www.gnu.org/licenses/>.
19
19
 
20
20
  module Pluginator
21
21
  # Version of Pluginator
22
- VERSION = "1.1.0"
22
+ VERSION = "1.2.0"
23
23
  end
data/pluginator.gemspec CHANGED
@@ -1,5 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
  # -*- encoding: utf-8 -*-
3
+ # stub: PLUGINATOR ruby lib
3
4
 
4
5
  =begin
5
6
  Copyright 2013
@@ -22,7 +23,9 @@ You should have received a copy of the GNU Lesser General Public License
22
23
  along with pluginator. If not, see <http://www.gnu.org/licenses/>.
23
24
  =end
24
25
 
25
- require File.expand_path("../lib/pluginator/version.rb", __FILE__)
26
+ lib = File.expand_path('../lib', __FILE__)
27
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
28
+ require "pluginator/version"
26
29
 
27
30
  Gem::Specification.new do |s|
28
31
  s.email = ["mpapis@gmail.com", "envygeeks@gmail.com", "mose@mose.com"]
@@ -0,0 +1,29 @@
1
+ =begin
2
+ Copyright 2013 Michal Papis <mpapis@gmail.com>
3
+
4
+ This file is part of pluginator.
5
+
6
+ pluginator is free software: you can redistribute it and/or modify
7
+ it under the terms of the GNU Lesser General Public License as published
8
+ by the Free Software Foundation, either version 3 of the License, or
9
+ (at your option) any later version.
10
+
11
+ pluginator is distributed in the hope that it will be useful,
12
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ GNU Lesser General Public License for more details.
15
+
16
+ You should have received a copy of the GNU Lesser General Public License
17
+ along with pluginator. If not, see <http://www.gnu.org/licenses/>.
18
+ =end
19
+
20
+ class Latest::Version1::Max
21
+
22
+ def self.handles?(what)
23
+ %w{ max maximum }.include?(what)
24
+ end
25
+
26
+ def self.action
27
+ 42
28
+ end
29
+ end
@@ -0,0 +1,29 @@
1
+ =begin
2
+ Copyright 2013 Michal Papis <mpapis@gmail.com>
3
+
4
+ This file is part of pluginator.
5
+
6
+ pluginator is free software: you can redistribute it and/or modify
7
+ it under the terms of the GNU Lesser General Public License as published
8
+ by the Free Software Foundation, either version 3 of the License, or
9
+ (at your option) any later version.
10
+
11
+ pluginator is distributed in the hope that it will be useful,
12
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ GNU Lesser General Public License for more details.
15
+
16
+ You should have received a copy of the GNU Lesser General Public License
17
+ along with pluginator. If not, see <http://www.gnu.org/licenses/>.
18
+ =end
19
+
20
+ class Latest::Version2::Max
21
+
22
+ def self.handles?(what)
23
+ %w{ max maximum }.include?(what)
24
+ end
25
+
26
+ def self.action
27
+ 42
28
+ end
29
+ end
@@ -0,0 +1,29 @@
1
+ =begin
2
+ Copyright 2013 Michal Papis <mpapis@gmail.com>
3
+
4
+ This file is part of pluginator.
5
+
6
+ pluginator is free software: you can redistribute it and/or modify
7
+ it under the terms of the GNU Lesser General Public License as published
8
+ by the Free Software Foundation, either version 3 of the License, or
9
+ (at your option) any later version.
10
+
11
+ pluginator is distributed in the hope that it will be useful,
12
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ GNU Lesser General Public License for more details.
15
+
16
+ You should have received a copy of the GNU Lesser General Public License
17
+ along with pluginator. If not, see <http://www.gnu.org/licenses/>.
18
+ =end
19
+
20
+ class V1test::Stats::Max
21
+
22
+ def self.handles?(what)
23
+ %w{ max maximum }.include?(what)
24
+ end
25
+
26
+ def self.action
27
+ 41
28
+ end
29
+ end
@@ -0,0 +1,29 @@
1
+ =begin
2
+ Copyright 2013 Michal Papis <mpapis@gmail.com>
3
+
4
+ This file is part of pluginator.
5
+
6
+ pluginator is free software: you can redistribute it and/or modify
7
+ it under the terms of the GNU Lesser General Public License as published
8
+ by the Free Software Foundation, either version 3 of the License, or
9
+ (at your option) any later version.
10
+
11
+ pluginator is distributed in the hope that it will be useful,
12
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ GNU Lesser General Public License for more details.
15
+
16
+ You should have received a copy of the GNU Lesser General Public License
17
+ along with pluginator. If not, see <http://www.gnu.org/licenses/>.
18
+ =end
19
+
20
+ class V1test::Stats::Max
21
+
22
+ def self.handles?(what)
23
+ %w{ max maximum }.include?(what)
24
+ end
25
+
26
+ def self.action
27
+ 42
28
+ end
29
+ end
@@ -0,0 +1,29 @@
1
+ =begin
2
+ Copyright 2013 Michal Papis <mpapis@gmail.com>
3
+
4
+ This file is part of pluginator.
5
+
6
+ pluginator is free software: you can redistribute it and/or modify
7
+ it under the terms of the GNU Lesser General Public License as published
8
+ by the Free Software Foundation, either version 3 of the License, or
9
+ (at your option) any later version.
10
+
11
+ pluginator is distributed in the hope that it will be useful,
12
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ GNU Lesser General Public License for more details.
15
+
16
+ You should have received a copy of the GNU Lesser General Public License
17
+ along with pluginator. If not, see <http://www.gnu.org/licenses/>.
18
+ =end
19
+
20
+ class V2test::Stats::Max
21
+
22
+ def self.handles?(what)
23
+ %w{ max maximum }.include?(what)
24
+ end
25
+
26
+ def self.action
27
+ 41
28
+ end
29
+ end
@@ -0,0 +1,29 @@
1
+ =begin
2
+ Copyright 2013 Michal Papis <mpapis@gmail.com>
3
+
4
+ This file is part of pluginator.
5
+
6
+ pluginator is free software: you can redistribute it and/or modify
7
+ it under the terms of the GNU Lesser General Public License as published
8
+ by the Free Software Foundation, either version 3 of the License, or
9
+ (at your option) any later version.
10
+
11
+ pluginator is distributed in the hope that it will be useful,
12
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ GNU Lesser General Public License for more details.
15
+
16
+ You should have received a copy of the GNU Lesser General Public License
17
+ along with pluginator. If not, see <http://www.gnu.org/licenses/>.
18
+ =end
19
+
20
+ class V2test::Stats::Max
21
+
22
+ def self.handles?(what)
23
+ %w{ max maximum }.include?(what)
24
+ end
25
+
26
+ def self.action
27
+ 42
28
+ end
29
+ end
@@ -0,0 +1,21 @@
1
+ # -*- encoding: utf-8 -*-
2
+ # stub: fake-gem-name-a 1.0.0 ruby lib
3
+
4
+ Gem::Specification.new do |s|
5
+ s.name = "fake-gem-name-a"
6
+ s.version = "1.0.0"
7
+
8
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
9
+ s.require_paths = ["lib"]
10
+ s.authors = ["Michal Papis"]
11
+ s.date = "2014-09-21"
12
+ s.description = "Do nothing"
13
+ s.email = ["mpapis@gmail.com"]
14
+ s.files = Dir["../../gems/#{s.name}-#{s.version}/lib/**/*.rb"]
15
+ s.homepage = "https://rvm.io"
16
+ s.licenses = ["LGPL v3"]
17
+ s.rubygems_version = "2.2.2"
18
+ s.summary = "Do Nothing"
19
+
20
+ s.installed_by_version = "2.2.2" if s.respond_to? :installed_by_version
21
+ end
@@ -0,0 +1,21 @@
1
+ # -*- encoding: utf-8 -*-
2
+ # stub: fake-gem-name-latest 1.0.0 ruby lib
3
+
4
+ Gem::Specification.new do |s|
5
+ s.name = "fake-gem-name-latest"
6
+ s.version = "1.0.0"
7
+
8
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
9
+ s.require_paths = ["lib"]
10
+ s.authors = ["Michal Papis"]
11
+ s.date = "2014-09-21"
12
+ s.description = "Do nothing"
13
+ s.email = ["mpapis@gmail.com"]
14
+ s.files = Dir["../../gems/#{s.name}-#{s.version}/lib/**/*.rb"]
15
+ s.homepage = "https://rvm.io"
16
+ s.licenses = ["LGPL v3"]
17
+ s.rubygems_version = "2.2.2"
18
+ s.summary = "Do Nothing"
19
+
20
+ s.installed_by_version = "2.2.2" if s.respond_to? :installed_by_version
21
+ end
@@ -0,0 +1,21 @@
1
+ # -*- encoding: utf-8 -*-
2
+ # stub: fake-gem-name-latest 2.0.0 ruby lib
3
+
4
+ Gem::Specification.new do |s|
5
+ s.name = "fake-gem-name-latest"
6
+ s.version = "2.0.0"
7
+
8
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
9
+ s.require_paths = ["lib"]
10
+ s.authors = ["Michal Papis"]
11
+ s.date = "2014-09-21"
12
+ s.description = "Do nothing"
13
+ s.email = ["mpapis@gmail.com"]
14
+ s.files = Dir["../../gems/#{s.name}-#{s.version}/lib/**/*.rb"]
15
+ s.homepage = "https://rvm.io"
16
+ s.licenses = ["LGPL v3"]
17
+ s.rubygems_version = "2.2.2"
18
+ s.summary = "Do Nothing"
19
+
20
+ s.installed_by_version = "2.2.2" if s.respond_to? :installed_by_version
21
+ end
@@ -0,0 +1,21 @@
1
+ # -*- encoding: utf-8 -*-
2
+ # stub: fake-gem-name-v1a 1.0.0 ruby lib
3
+
4
+ Gem::Specification.new do |s|
5
+ s.name = "fake-gem-name-v1a"
6
+ s.version = "1.0.0"
7
+
8
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
9
+ s.require_paths = ["lib"]
10
+ s.authors = ["Michal Papis"]
11
+ s.date = "2014-09-21"
12
+ s.description = "Do nothing"
13
+ s.email = ["mpapis@gmail.com"]
14
+ s.files = Dir["../../gems/#{s.name}-#{s.version}/lib/**/*.rb"]
15
+ s.homepage = "https://rvm.io"
16
+ s.licenses = ["LGPL v3"]
17
+ s.rubygems_version = "2.2.2"
18
+ s.summary = "Do Nothing"
19
+
20
+ s.installed_by_version = "2.2.2" if s.respond_to? :installed_by_version
21
+ end
@@ -0,0 +1,24 @@
1
+ # -*- encoding: utf-8 -*-
2
+ # stub: fake-gem-name-v1b 1.0.0 ruby lib
3
+
4
+ Gem::Specification.new do |s|
5
+ s.name = "fake-gem-name-v1b"
6
+ s.version = "1.0.0"
7
+
8
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
9
+ s.require_paths = ["lib"]
10
+ s.authors = ["Michal Papis"]
11
+ s.date = "2014-09-21"
12
+ s.description = "Do nothing"
13
+ s.email = ["mpapis@gmail.com"]
14
+ s.files = Dir["../../gems/#{s.name}-#{s.version}/lib/**/*.rb"]
15
+ s.homepage = "https://rvm.io"
16
+ s.licenses = ["LGPL v3"]
17
+ s.rubygems_version = "2.2.2"
18
+ s.summary = "Do Nothing"
19
+ s.metadata = {
20
+ "plugins/v1test/stats/max.rb" => "1"
21
+ }
22
+
23
+ s.installed_by_version = "2.2.2" if s.respond_to? :installed_by_version
24
+ end
@@ -0,0 +1,24 @@
1
+ # -*- encoding: utf-8 -*-
2
+ # stub: fake-gem-name-v2a 1.0.0 ruby lib
3
+
4
+ Gem::Specification.new do |s|
5
+ s.name = "fake-gem-name-v2a"
6
+ s.version = "1.0.0"
7
+
8
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
9
+ s.require_paths = ["lib"]
10
+ s.authors = ["Michal Papis"]
11
+ s.date = "2014-09-21"
12
+ s.description = "Do nothing"
13
+ s.email = ["mpapis@gmail.com"]
14
+ s.files = Dir["../../gems/#{s.name}-#{s.version}/lib/**/*.rb"]
15
+ s.homepage = "https://rvm.io"
16
+ s.licenses = ["LGPL v3"]
17
+ s.rubygems_version = "2.2.2"
18
+ s.summary = "Do Nothing"
19
+ s.metadata = {
20
+ "plugins/v2test/stats/max.rb" => "2"
21
+ }
22
+
23
+ s.installed_by_version = "2.2.2" if s.respond_to? :installed_by_version
24
+ end
@@ -0,0 +1,24 @@
1
+ # -*- encoding: utf-8 -*-
2
+ # stub: fake-gem-name-v2b 1.0.0 ruby lib
3
+
4
+ Gem::Specification.new do |s|
5
+ s.name = "fake-gem-name-v2b"
6
+ s.version = "1.0.0"
7
+
8
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
9
+ s.require_paths = ["lib"]
10
+ s.authors = ["Michal Papis"]
11
+ s.date = "2014-09-21"
12
+ s.description = "Do nothing"
13
+ s.email = ["mpapis@gmail.com"]
14
+ s.files = Dir["../../gems/#{s.name}-#{s.version}/lib/**/*.rb"]
15
+ s.homepage = "https://rvm.io"
16
+ s.licenses = ["LGPL v3"]
17
+ s.rubygems_version = "2.2.2"
18
+ s.summary = "Do Nothing"
19
+ s.metadata = {
20
+ "plugins/v2test/stats/max.rb" => "1"
21
+ }
22
+
23
+ s.installed_by_version = "2.2.2" if s.respond_to? :installed_by_version
24
+ end
@@ -0,0 +1,44 @@
1
+ #!/usr/bin/env ruby
2
+ # -*- encoding: utf-8 -*-
3
+ # stub: PLUGINATOR ruby lib
4
+
5
+ =begin
6
+ Copyright 2013
7
+ - Michal Papis <mpapis@gmail.com>
8
+ - Jordon Bedwell <envygeeks@gmail.com>
9
+
10
+ This file is part of pluginator.
11
+
12
+ pluginator is free software: you can redistribute it and/or modify
13
+ it under the terms of the GNU Lesser General Public License as published
14
+ by the Free Software Foundation, either version 3 of the License, or
15
+ (at your option) any later version.
16
+
17
+ pluginator is distributed in the hope that it will be useful,
18
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
19
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20
+ GNU Lesser General Public License for more details.
21
+
22
+ You should have received a copy of the GNU Lesser General Public License
23
+ along with pluginator. If not, see <http://www.gnu.org/licenses/>.
24
+ =end
25
+
26
+ lib = File.expand_path('../lib', __FILE__)
27
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
28
+ require "pluginator/version"
29
+
30
+ Gem::Specification.new do |s|
31
+ s.email = ["mpapis@gmail.com", "envygeeks@gmail.com", "mose@mose.com"]
32
+ s.authors = ["Michal Papis", "Jordon Bedwell", "Mose"]
33
+ s.name = "pluginator"
34
+ s.version = Pluginator::VERSION
35
+ s.license = "LGPL v3"
36
+ s.files = `git ls-files`.split("\n")
37
+ s.required_ruby_version = ">= 1.8.7"
38
+ s.add_development_dependency("rake")
39
+ s.add_development_dependency("minitest")
40
+ # s.add_development_dependency("smf-gem")
41
+ s.homepage = "https://github.com/rvm/pluginator"
42
+ s.summary = "Rubygems plugin system using Gem.find_files."
43
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
44
+ end
@@ -20,18 +20,29 @@ along with pluginator. If not, see <http://www.gnu.org/licenses/>.
20
20
  require 'test_helper'
21
21
  require 'pluginator/autodetect'
22
22
 
23
- def demo_file(path)
24
- File.expand_path(File.join("..", "..", "..", "demo", path), __FILE__)
23
+ def gem_file(path, options = {})
24
+ options.merge!({
25
+ :gem_name => "fake-gem-name-a",
26
+ :gem_version => "1.0.0",
27
+ })
28
+ File.expand_path(
29
+ File.join(
30
+ "../../gems/gems/#{options[:gem_name]}-#{options[:gem_version]}/lib",
31
+ path
32
+ ),
33
+ __FILE__
34
+ )
25
35
  end
26
36
 
27
- def demo_files(*paths)
28
- paths.flatten.map{|path| demo_file(path) }
37
+ def gem_files(*paths)
38
+ options = paths.last.is_a?(::Hash) ? paths.pop : {}
39
+ paths.flatten.map{|path| gem_file(path, options) }
29
40
  end
30
41
 
31
42
  describe Pluginator::Autodetect do
32
43
  before do
33
- @math_files = demo_files("plugins/something/math/increase.rb", "plugins/something/math/decrease.rb")
34
- @all_files = demo_files(
44
+ @math_files = gem_files("plugins/something/math/increase.rb", "plugins/something/math/decrease.rb")
45
+ @all_files = gem_files(
35
46
  "plugins/something/math/increase.rb", "plugins/something/math/decrease.rb",
36
47
  "plugins/something/nested/structure/test.rb", "plugins/something/stats/max.rb"
37
48
  )
@@ -47,12 +58,12 @@ describe Pluginator::Autodetect do
47
58
  @pluginator.group.must_equal("something")
48
59
  end
49
60
 
50
- it "has demo file" do
51
- File.exists?(demo_file("plugins/something/math/increase.rb")).must_equal(true)
61
+ it "has gem file" do
62
+ File.exists?(gem_file("plugins/something/math/increase.rb")).must_equal(true)
52
63
  end
53
64
 
54
65
  it "loads plugin" do
55
- @pluginator.send(:load_plugin, "plugins/something/math/increase.rb")
66
+ @pluginator.send(:load_plugin, "plugins/something/math/increase.rb").must_equal(true)
56
67
  end
57
68
 
58
69
  it "finds files existing group" do
@@ -105,6 +116,7 @@ describe Pluginator::Autodetect do
105
116
 
106
117
  it "makes group plugins work" do
107
118
  pluginator = Pluginator::Autodetect.new("something")
119
+ pluginator.types.must_include('math')
108
120
  pluginator["math"].detect{|plugin| plugin.type == "increase" }.action(2).must_equal(3)
109
121
  pluginator["math"].detect{|plugin| plugin.type == "decrease" }.action(5).must_equal(4)
110
122
  end
@@ -122,4 +134,18 @@ describe Pluginator::Autodetect do
122
134
  pluginator.type.must_equal(pluginator['math'])
123
135
  end
124
136
 
137
+ it "loads self" do
138
+ pluginator = Pluginator::Autodetect.new("pluginator")
139
+ pluginator.types.must_include('extensions')
140
+ pluginator.types.size.must_equal(1)
141
+ pluginator["extensions"].map(&:to_s).sort.must_equal([
142
+ "Pluginator::Extensions::ClassExist",
143
+ "Pluginator::Extensions::Conversions",
144
+ "Pluginator::Extensions::FirstAsk",
145
+ "Pluginator::Extensions::FirstClass",
146
+ "Pluginator::Extensions::Matching",
147
+ "Pluginator::Extensions::PluginsMap"
148
+ ])
149
+ end
150
+
125
151
  end
@@ -20,8 +20,8 @@ along with pluginator. If not, see <http://www.gnu.org/licenses/>.
20
20
  require 'test_helper'
21
21
  require 'pluginator'
22
22
 
23
- class PluginatorTest < MiniTest::Unit::TestCase
24
- def test_loads_plugins_automatically_for_group
23
+ describe Pluginator do
24
+ it "loads_plugins_automatically_for_group" do
25
25
  pluginator = Pluginator.find("something")
26
26
  pluginator.types.must_include('stats')
27
27
  pluginator.types.must_include('math')
@@ -34,24 +34,80 @@ class PluginatorTest < MiniTest::Unit::TestCase
34
34
  plugins.wont_include("Something::Math::Add")
35
35
  end
36
36
 
37
- def test_loads_plugins_automatically_for_group_type
37
+ it "loads_plugins_automatically_for_group_type" do
38
38
  pluginator = Pluginator.find("something", :type => "stats")
39
39
  pluginator.types.must_include('stats')
40
40
  pluginator.types.size.must_equal(1)
41
41
  end
42
42
 
43
- def test_loads_existing_extensions_symbol
43
+ it "loads_existing_extensions_symbol" do
44
44
  pluginator = Pluginator.find("something", :extends => :conversions)
45
45
  pluginator.public_methods.map(&:to_sym).must_include(:class2string)
46
46
  pluginator.public_methods.map(&:to_sym).must_include(:string2class)
47
47
  pluginator.public_methods.map(&:to_sym).wont_include(:plugins_map)
48
48
  end
49
49
 
50
- def test_loads_nested_plugins
50
+ it "loads_nested_plugins" do
51
51
  pluginator = Pluginator.find("something")
52
52
  pluginator.types.must_include('nested/structure')
53
- plugins = pluginator["nested/structure"].map(&:to_s)
54
- plugins.size.must_equal(1)
55
- plugins.must_include("Something::Nested::Structure::Test")
53
+ pluginator["nested/structure"].map(&:to_s).must_equal(["Something::Nested::Structure::Test"])
54
+ end
55
+
56
+ it "loads_only_plugins_from_latest_version_of_gem" do
57
+ all_gems = Gem::Specification._all.map{|s| "#{s.name}-#{s.version}" }
58
+ all_gems.must_include("fake-gem-name-latest-1.0.0")
59
+ all_gems.must_include("fake-gem-name-latest-2.0.0")
60
+ active_gems = Gem::Specification._all.map{|s| "#{s.name}-#{s.version}" if s.activated? }.compact
61
+ active_gems.wont_include("fake-gem-name-latest-1.0.0")
62
+ active_gems.wont_include("fake-gem-name-latest-2.0.0")
63
+
64
+ pluginator = Pluginator.find("latest")
65
+
66
+ active_gems = Gem::Specification._all.map{|s| "#{s.name}-#{s.version}" if s.activated? }.compact
67
+ active_gems.wont_include("fake-gem-name-latest-1.0.0")
68
+ active_gems.must_include("fake-gem-name-latest-2.0.0")
69
+
70
+ pluginator.types.must_include('version2')
71
+ pluginator.types.wont_include('version1')
72
+ pluginator.types.size.must_equal(1)
73
+ pluginator["version2"].map(&:to_s).must_equal(["Latest::Version2::Max"])
74
+ end
75
+
76
+ it "loads_latest_version_of_plugin_from_two_gems_v1" do
77
+ all_gems = Gem::Specification._all.map{|s| "#{s.name}-#{s.version}" }
78
+ all_gems.must_include("fake-gem-name-v1a-1.0.0")
79
+ all_gems.must_include("fake-gem-name-v1b-1.0.0")
80
+ active_gems = Gem::Specification._all.map{|s| "#{s.name}-#{s.version}" if s.activated? }.compact
81
+ active_gems.wont_include("fake-gem-name-v1a-1.0.0")
82
+
83
+ pluginator = Pluginator.find("v1test")
84
+
85
+ active_gems = Gem::Specification._all.map{|s| "#{s.name}-#{s.version}" if s.activated? }.compact
86
+ active_gems.wont_include("fake-gem-name-v1a-1.0.0")
87
+ active_gems.must_include("fake-gem-name-v1b-1.0.0")
88
+
89
+ pluginator.types.must_include('stats')
90
+ pluginator.types.size.must_equal(1)
91
+ pluginator["stats"].map(&:to_s).must_equal(["V1test::Stats::Max"])
92
+ pluginator["stats"].first.action.must_equal(42)
93
+ end
94
+
95
+ it "loads_latest_version_of_plugin_from_two_gems_v2" do
96
+ all_gems = Gem::Specification._all.map{|s| "#{s.name}-#{s.version}" }
97
+ all_gems.must_include("fake-gem-name-v2a-1.0.0")
98
+ all_gems.must_include("fake-gem-name-v2b-1.0.0")
99
+ active_gems = Gem::Specification._all.map{|s| "#{s.name}-#{s.version}" if s.activated? }.compact
100
+ active_gems.wont_include("fake-gem-name-v2a-1.0.0")
101
+
102
+ pluginator = Pluginator.find("v2test")
103
+
104
+ active_gems = Gem::Specification._all.map{|s| "#{s.name}-#{s.version}" if s.activated? }.compact
105
+ active_gems.must_include("fake-gem-name-v2a-1.0.0")
106
+ active_gems.wont_include("fake-gem-name-v2b-1.0.0")
107
+
108
+ pluginator.types.must_include('stats')
109
+ pluginator.types.size.must_equal(1)
110
+ pluginator["stats"].map(&:to_s).must_equal(["V2test::Stats::Max"])
111
+ pluginator["stats"].first.action.must_equal(41)
56
112
  end
57
113
  end
@@ -26,19 +26,20 @@ class ClassExistTester
26
26
  include Pluginator::Extensions::ClassExist
27
27
  end
28
28
 
29
- class Pluginator::Extensions::ClassExistTest < MiniTest::Unit::TestCase
30
- def setup
31
- @tester = ClassExistTester.new
32
- @tester.plugins = { "stats" => [
29
+ describe Pluginator::Extensions::ClassExist do
30
+ subject do
31
+ tester = ClassExistTester.new
32
+ tester.plugins = { "stats" => [
33
33
  Something::Stats::Max
34
34
  ] }
35
+ tester
35
36
  end
36
37
 
37
- def test_plugin_exist
38
- @tester.class_exist?("stats", "max").must_equal( true )
38
+ it "plugin exists" do
39
+ subject.class_exist?("stats", "max").must_equal( true )
39
40
  end
40
41
 
41
- def test_plugin_missing
42
- @tester.class_exist?("stats", "min").must_equal( false )
42
+ it "plugin missing" do
43
+ subject.class_exist?("stats", "min").must_equal( false )
43
44
  end
44
45
  end
data/test/test_helper.rb CHANGED
@@ -19,8 +19,34 @@ You should have received a copy of the GNU Lesser General Public License
19
19
  along with pluginator. If not, see <http://www.gnu.org/licenses/>.
20
20
  =end
21
21
 
22
+ require 'rubygems'
23
+ require 'minitest'
24
+
25
+ # fix lib in LOAD_PATH and load version for gems manipulation
26
+ lib = File.expand_path('../lib', __FILE__)
27
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
28
+ require "pluginator/version"
29
+
30
+ # remove old links in fake gem home
31
+ `rm -f #{File.expand_path("../gems/specifications/pluginator-*.gemspec", __FILE__)}`
32
+ `rm -f #{File.expand_path("../gems/gems/pluginator-*", __FILE__)}`
33
+
34
+ # create new links in fake gem home
35
+ File.symlink(File.expand_path("../../pluginator.gemspec", __FILE__), File.expand_path("../gems/specifications/pluginator-#{Pluginator::VERSION}.gemspec", __FILE__))
36
+ File.symlink(File.expand_path("../../", __FILE__), File.expand_path("../gems/gems/pluginator-#{Pluginator::VERSION}", __FILE__))
37
+
38
+ # register our own path with gems
39
+ # duplicate from Gemfile for non bundler
40
+ Gem.path << File.expand_path("../gems", __FILE__)
41
+ Gem.refresh
42
+
43
+ # make sure pluginator is available as gem for tests of pluginator plugins
44
+ #Gem::Specification.add_spec(Gem::Specification.load(File.expand_path("../gems/specifications/pluginator-#{Pluginator::VERSION}.gemspec", __FILE__)))
45
+ gem 'pluginator'
46
+
22
47
  if
23
- RUBY_VERSION == "2.0.0" # check Gemfile
48
+ RUBY_VERSION == "2.0.0" && # check Gemfile
49
+ $0 != "-e" # do not do that in guard
24
50
  then
25
51
  require "coveralls"
26
52
  require "simplecov"
@@ -32,7 +58,6 @@ then
32
58
  ]
33
59
  command_name "Unit Tests"
34
60
  add_filter "/test/"
35
- add_filter "/demo/"
36
61
  end
37
62
 
38
63
  Coveralls.noisy = true unless ENV['CI']
@@ -45,6 +70,16 @@ module Something
45
70
  module Structure; end
46
71
  end
47
72
  end
73
+ module Latest
74
+ module Version1; end
75
+ module Version2; end
76
+ end
77
+ module V1test
78
+ module Stats; end
79
+ end
80
+ module V2test
81
+ module Stats; end
82
+ end
48
83
 
49
- require 'minitest/autorun'
84
+ require 'minitest/autorun' unless $0=="-e" # skip in guard
50
85
  require 'minitest/unit'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pluginator
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michal Papis
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2014-06-06 00:00:00.000000000 Z
13
+ date: 2014-09-24 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rake
@@ -50,17 +50,15 @@ extensions: []
50
50
  extra_rdoc_files: []
51
51
  files:
52
52
  - .gitignore
53
+ - .noexec.yaml
53
54
  - .travis.yml
54
55
  - COPYING
55
56
  - COPYING.LESSER
56
57
  - Changelog.md
57
58
  - Gemfile
59
+ - Guardfile
58
60
  - README.md
59
61
  - Rakefile
60
- - demo/plugins/something/math/decrease.rb
61
- - demo/plugins/something/math/increase.rb
62
- - demo/plugins/something/nested/structure/test.rb
63
- - demo/plugins/something/stats/max.rb
64
62
  - lib/pluginator.rb
65
63
  - lib/pluginator/autodetect.rb
66
64
  - lib/pluginator/errors.rb
@@ -75,6 +73,31 @@ files:
75
73
  - lib/plugins/pluginator/extensions/matching.rb
76
74
  - lib/plugins/pluginator/extensions/plugins_map.rb
77
75
  - pluginator.gemspec
76
+ - test/gems/gems/fake-gem-name-a-1.0.0/lib/fake-gem-name-a.rb
77
+ - test/gems/gems/fake-gem-name-a-1.0.0/lib/plugins/something/math/decrease.rb
78
+ - test/gems/gems/fake-gem-name-a-1.0.0/lib/plugins/something/math/increase.rb
79
+ - test/gems/gems/fake-gem-name-a-1.0.0/lib/plugins/something/nested/structure/test.rb
80
+ - test/gems/gems/fake-gem-name-a-1.0.0/lib/plugins/something/stats/max.rb
81
+ - test/gems/gems/fake-gem-name-latest-1.0.0/lib/fake-gem-name-latest.rb
82
+ - test/gems/gems/fake-gem-name-latest-1.0.0/lib/plugins/latest/version1/max.rb
83
+ - test/gems/gems/fake-gem-name-latest-2.0.0/lib/fake-gem-name-latest.rb
84
+ - test/gems/gems/fake-gem-name-latest-2.0.0/lib/plugins/latest/version2/max.rb
85
+ - test/gems/gems/fake-gem-name-v1a-1.0.0/lib/fake-gem-name-v1a.rb
86
+ - test/gems/gems/fake-gem-name-v1a-1.0.0/lib/plugins/v1test/stats/max.rb
87
+ - test/gems/gems/fake-gem-name-v1b-1.0.0/lib/fake-gem-name-v1a.rb
88
+ - test/gems/gems/fake-gem-name-v1b-1.0.0/lib/plugins/v1test/stats/max.rb
89
+ - test/gems/gems/fake-gem-name-v2a-1.0.0/lib/fake-gem-name-v2a.rb
90
+ - test/gems/gems/fake-gem-name-v2a-1.0.0/lib/plugins/v2test/stats/max.rb
91
+ - test/gems/gems/fake-gem-name-v2b-1.0.0/lib/fake-gem-name-v2b.rb
92
+ - test/gems/gems/fake-gem-name-v2b-1.0.0/lib/plugins/v2test/stats/max.rb
93
+ - test/gems/specifications/fake-gem-name-a-1.0.0.gemspec
94
+ - test/gems/specifications/fake-gem-name-latest-1.0.0.gemspec
95
+ - test/gems/specifications/fake-gem-name-latest-2.0.0.gemspec
96
+ - test/gems/specifications/fake-gem-name-v1a-1.0.0.gemspec
97
+ - test/gems/specifications/fake-gem-name-v1b-1.0.0.gemspec
98
+ - test/gems/specifications/fake-gem-name-v2a-1.0.0.gemspec
99
+ - test/gems/specifications/fake-gem-name-v2b-1.0.0.gemspec
100
+ - test/gems/specifications/pluginator-1.1.0.gemspec
78
101
  - test/pluginator/autodetect_test.rb
79
102
  - test/pluginator/extendable_autodetect_test.rb
80
103
  - test/pluginator/group_test.rb
@@ -112,6 +135,31 @@ signing_key:
112
135
  specification_version: 4
113
136
  summary: Rubygems plugin system using Gem.find_files.
114
137
  test_files:
138
+ - test/gems/gems/fake-gem-name-a-1.0.0/lib/fake-gem-name-a.rb
139
+ - test/gems/gems/fake-gem-name-a-1.0.0/lib/plugins/something/math/decrease.rb
140
+ - test/gems/gems/fake-gem-name-a-1.0.0/lib/plugins/something/math/increase.rb
141
+ - test/gems/gems/fake-gem-name-a-1.0.0/lib/plugins/something/nested/structure/test.rb
142
+ - test/gems/gems/fake-gem-name-a-1.0.0/lib/plugins/something/stats/max.rb
143
+ - test/gems/gems/fake-gem-name-latest-1.0.0/lib/fake-gem-name-latest.rb
144
+ - test/gems/gems/fake-gem-name-latest-1.0.0/lib/plugins/latest/version1/max.rb
145
+ - test/gems/gems/fake-gem-name-latest-2.0.0/lib/fake-gem-name-latest.rb
146
+ - test/gems/gems/fake-gem-name-latest-2.0.0/lib/plugins/latest/version2/max.rb
147
+ - test/gems/gems/fake-gem-name-v1a-1.0.0/lib/fake-gem-name-v1a.rb
148
+ - test/gems/gems/fake-gem-name-v1a-1.0.0/lib/plugins/v1test/stats/max.rb
149
+ - test/gems/gems/fake-gem-name-v1b-1.0.0/lib/fake-gem-name-v1a.rb
150
+ - test/gems/gems/fake-gem-name-v1b-1.0.0/lib/plugins/v1test/stats/max.rb
151
+ - test/gems/gems/fake-gem-name-v2a-1.0.0/lib/fake-gem-name-v2a.rb
152
+ - test/gems/gems/fake-gem-name-v2a-1.0.0/lib/plugins/v2test/stats/max.rb
153
+ - test/gems/gems/fake-gem-name-v2b-1.0.0/lib/fake-gem-name-v2b.rb
154
+ - test/gems/gems/fake-gem-name-v2b-1.0.0/lib/plugins/v2test/stats/max.rb
155
+ - test/gems/specifications/fake-gem-name-a-1.0.0.gemspec
156
+ - test/gems/specifications/fake-gem-name-latest-1.0.0.gemspec
157
+ - test/gems/specifications/fake-gem-name-latest-2.0.0.gemspec
158
+ - test/gems/specifications/fake-gem-name-v1a-1.0.0.gemspec
159
+ - test/gems/specifications/fake-gem-name-v1b-1.0.0.gemspec
160
+ - test/gems/specifications/fake-gem-name-v2a-1.0.0.gemspec
161
+ - test/gems/specifications/fake-gem-name-v2b-1.0.0.gemspec
162
+ - test/gems/specifications/pluginator-1.1.0.gemspec
115
163
  - test/pluginator/autodetect_test.rb
116
164
  - test/pluginator/extendable_autodetect_test.rb
117
165
  - test/pluginator/group_test.rb
@@ -124,3 +172,4 @@ test_files:
124
172
  - test/plugins_test/extensions/matching_test.rb
125
173
  - test/plugins_test/extensions/plugins_map_test.rb
126
174
  - test/test_helper.rb
175
+ has_rdoc: