libgems 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/libgems.rb +17 -22
- data/lib/libgems/commands/build_command.rb +1 -1
- data/lib/libgems/custom_require.rb +5 -2
- data/lib/libgems/requirement.rb +4 -0
- data/lib/libgems/source_index.rb +1 -1
- data/lib/libgems/specification.rb +6 -2
- data/lib/libgems/version.rb +5 -0
- data/test/simple_gem.rb +2 -2
- data/test/test_gem_commands_specification_command.rb +5 -5
- data/test/test_gem_indexer.rb +1 -1
- data/test/test_gem_installer.rb +1 -1
- data/test/test_gem_server.rb +5 -5
- data/test/test_gem_specification.rb +18 -18
- metadata +3 -3
data/lib/libgems.rb
CHANGED
@@ -98,7 +98,7 @@ require 'thread'
|
|
98
98
|
module LibGems
|
99
99
|
NAME = 'LibGems'
|
100
100
|
GEM_NAME = 'libgems'
|
101
|
-
VERSION = '0.0.
|
101
|
+
VERSION = '0.0.3'
|
102
102
|
GEM_VERSION = '1.3.8'
|
103
103
|
|
104
104
|
##
|
@@ -173,40 +173,33 @@ module LibGems
|
|
173
173
|
@pre_uninstall_hooks ||= []
|
174
174
|
@pre_install_hooks ||= []
|
175
175
|
|
176
|
+
|
177
|
+
def self.rubygems_compat?
|
178
|
+
@using_rubygems_compat
|
179
|
+
end
|
180
|
+
|
176
181
|
##
|
177
|
-
#
|
182
|
+
# Run code with Gem = LibGems
|
178
183
|
|
179
|
-
def self.
|
180
|
-
|
184
|
+
def self.with_rubygems_compat
|
185
|
+
unless LibGems.rubygems_compat?
|
181
186
|
begin
|
187
|
+
@using_rubygems_compat = true
|
182
188
|
libgems_original_gem = nil
|
183
189
|
if Object.const_defined?(:Gem)
|
184
190
|
libgems_original_gem = Object::Gem
|
185
191
|
Object.send(:remove_const, :Gem)
|
186
192
|
end
|
187
193
|
Object.const_set(:Gem, LibGems)
|
188
|
-
|
194
|
+
yield
|
189
195
|
ensure
|
190
196
|
Object.send(:remove_const, :Gem)
|
191
197
|
Object.const_set(:Gem, libgems_original_gem) if libgems_original_gem
|
198
|
+
@using_rubygems_compat = false
|
192
199
|
end
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
##
|
197
|
-
# Run code with Gem = LibGems
|
198
|
-
|
199
|
-
def self.with_rubygems_compat
|
200
|
-
libgems_original_gem = nil
|
201
|
-
if Object.const_defined?(:Gem)
|
202
|
-
libgems_original_gem = Object::Gem
|
203
|
-
Object.send(:remove_const, :Gem)
|
200
|
+
else
|
201
|
+
yield
|
204
202
|
end
|
205
|
-
Object.const_set(:Gem, LibGems)
|
206
|
-
yield
|
207
|
-
ensure
|
208
|
-
Object.send(:remove_const, :Gem)
|
209
|
-
Object.const_set(:Gem, libgems_original_gem) if libgems_original_gem
|
210
203
|
end
|
211
204
|
|
212
205
|
##
|
@@ -471,7 +464,7 @@ module LibGems
|
|
471
464
|
base = File.basename(gp)
|
472
465
|
specfn = File.join(dir, "specifications", base + ".gemspec")
|
473
466
|
if File.exist?(specfn)
|
474
|
-
spec =
|
467
|
+
spec = with_rubygems_compat{ eval(File.read(specfn)) }
|
475
468
|
spec.require_paths.each do |rp|
|
476
469
|
yield(File.join(gp, rp))
|
477
470
|
end
|
@@ -1251,5 +1244,7 @@ class << LibGems
|
|
1251
1244
|
end
|
1252
1245
|
end
|
1253
1246
|
|
1247
|
+
require 'libgems/custom_require'
|
1248
|
+
|
1254
1249
|
LibGems.clear_paths
|
1255
1250
|
LibGems.load_configuration
|
@@ -47,7 +47,7 @@ class LibGems::Commands::BuildCommand < LibGems::Command
|
|
47
47
|
|
48
48
|
def yaml?(filename)
|
49
49
|
line = open(filename) { |f| line = f.gets }
|
50
|
-
result = line =~ %r{!ruby/object:
|
50
|
+
result = line =~ %r{!ruby/object:Gem::Specification}
|
51
51
|
result
|
52
52
|
end
|
53
53
|
end
|
@@ -26,11 +26,14 @@ module Kernel
|
|
26
26
|
# that file has already been loaded is preserved.
|
27
27
|
|
28
28
|
def require(path) # :doc:
|
29
|
-
|
29
|
+
# If we're using rubygems compat mode we don't want to call the original RubyGems require
|
30
|
+
require_method = (LibGems.rubygems_compat? && defined?(gem_original_require)) ?
|
31
|
+
:gem_original_require : :libgems_original_require
|
32
|
+
send(require_method, path)
|
30
33
|
rescue LoadError => load_error
|
31
34
|
if load_error.message.end_with?(path)
|
32
35
|
if LibGems.try_activate(path)
|
33
|
-
return
|
36
|
+
return send(require_method, path)
|
34
37
|
end
|
35
38
|
end
|
36
39
|
|
data/lib/libgems/requirement.rb
CHANGED
data/lib/libgems/source_index.rb
CHANGED
@@ -92,7 +92,7 @@ class LibGems::SourceIndex
|
|
92
92
|
end.untaint
|
93
93
|
|
94
94
|
begin
|
95
|
-
gemspec = LibGems.
|
95
|
+
gemspec = LibGems.with_rubygems_compat{ eval(spec_code, binding, file_name) }
|
96
96
|
|
97
97
|
if gemspec.is_a?(LibGems::Specification)
|
98
98
|
gemspec.loaded_from = file_name
|
@@ -505,7 +505,7 @@ class LibGems::Specification
|
|
505
505
|
raise "NESTED Specification.load calls not allowed!" if @@gather
|
506
506
|
@@gather = proc { |gs| gemspec = gs }
|
507
507
|
data = File.read filename
|
508
|
-
LibGems.
|
508
|
+
LibGems.with_rubygems_compat{ eval(data, nil, filename) }
|
509
509
|
gemspec
|
510
510
|
ensure
|
511
511
|
@@gather = nil
|
@@ -708,10 +708,14 @@ class LibGems::Specification
|
|
708
708
|
encode_with map
|
709
709
|
end
|
710
710
|
end
|
711
|
-
ret.gsub("!ruby/object:LibGems", "!ruby/object:Gem")
|
711
|
+
ret #.to_s.gsub("!ruby/object:LibGems", "!ruby/object:Gem").to_yaml
|
712
712
|
end
|
713
713
|
end
|
714
714
|
|
715
|
+
def to_yaml_type
|
716
|
+
"!ruby/object:Gem::Specification"
|
717
|
+
end
|
718
|
+
|
715
719
|
def init_with coder # :nodoc:
|
716
720
|
yaml_initialize coder.tag, coder.map
|
717
721
|
end
|
data/lib/libgems/version.rb
CHANGED
data/test/simple_gem.rb
CHANGED
@@ -23,10 +23,10 @@ SIMPLE_GEM = <<-GEMDATA
|
|
23
23
|
end
|
24
24
|
|
25
25
|
__END__
|
26
|
-
--- !ruby/object:
|
26
|
+
--- !ruby/object:Gem::Specification
|
27
27
|
rubygems_version: "1.0"
|
28
28
|
name: testing
|
29
|
-
version: !ruby/object:
|
29
|
+
version: !ruby/object:Gem::Version
|
30
30
|
version: 1.2.3
|
31
31
|
date: 2004-03-18 22:01:52.859121 -05:00
|
32
32
|
platform:
|
@@ -19,7 +19,7 @@ class TestGemCommandsSpecificationCommand < RubyGemTestCase
|
|
19
19
|
@cmd.execute
|
20
20
|
end
|
21
21
|
|
22
|
-
assert_match %r|
|
22
|
+
assert_match %r|Gem::Specification|, @ui.output
|
23
23
|
assert_match %r|name: foo|, @ui.output
|
24
24
|
assert_equal '', @ui.error
|
25
25
|
end
|
@@ -35,7 +35,7 @@ class TestGemCommandsSpecificationCommand < RubyGemTestCase
|
|
35
35
|
@cmd.execute
|
36
36
|
end
|
37
37
|
|
38
|
-
assert_match %r|
|
38
|
+
assert_match %r|Gem::Specification|, @ui.output
|
39
39
|
assert_match %r|name: foo|, @ui.output
|
40
40
|
assert_match %r|version: 0.0.1|, @ui.output
|
41
41
|
assert_match %r|version: 0.0.2|, @ui.output
|
@@ -65,7 +65,7 @@ class TestGemCommandsSpecificationCommand < RubyGemTestCase
|
|
65
65
|
@cmd.execute
|
66
66
|
end
|
67
67
|
|
68
|
-
assert_match %r|
|
68
|
+
assert_match %r|Gem::Specification|, @ui.output
|
69
69
|
assert_match %r|name: foo|, @ui.output
|
70
70
|
assert_equal '', @ui.error
|
71
71
|
end
|
@@ -115,7 +115,7 @@ class TestGemCommandsSpecificationCommand < RubyGemTestCase
|
|
115
115
|
@cmd.execute
|
116
116
|
end
|
117
117
|
|
118
|
-
assert_match %r|\A--- !ruby/object:
|
118
|
+
assert_match %r|\A--- !ruby/object:Gem::Specification|, @ui.output
|
119
119
|
assert_match %r|name: foo|, @ui.output
|
120
120
|
end
|
121
121
|
|
@@ -130,7 +130,7 @@ class TestGemCommandsSpecificationCommand < RubyGemTestCase
|
|
130
130
|
@cmd.execute
|
131
131
|
end
|
132
132
|
|
133
|
-
assert_match %r|
|
133
|
+
assert_match %r|Gem::Specification.new|, @ui.output
|
134
134
|
assert_match %r|s.name = %q\{foo\}|, @ui.output
|
135
135
|
assert_equal '', @ui.error
|
136
136
|
end
|
data/test/test_gem_indexer.rb
CHANGED
@@ -520,7 +520,7 @@ eighty characters.</pre>
|
|
520
520
|
yaml_path = File.join @tempdir, 'yaml'
|
521
521
|
dump_path = File.join @tempdir, "Marshal.#{@marshal_version}"
|
522
522
|
|
523
|
-
yaml_index = YAML.load_file yaml_path
|
523
|
+
yaml_index = LibGems.with_rubygems_compat{ YAML.load_file yaml_path }
|
524
524
|
dump_index = Marshal.load LibGems.read_binary(dump_path)
|
525
525
|
|
526
526
|
dump_index.each do |_,gem|
|
data/test/test_gem_installer.rb
CHANGED
@@ -840,7 +840,7 @@ load LibGems.bin_path('a', 'my_exec', version)
|
|
840
840
|
@installer.write_spec
|
841
841
|
|
842
842
|
assert File.exist?(spec_file)
|
843
|
-
assert_equal @spec, LibGems.
|
843
|
+
assert_equal @spec, LibGems.with_rubygems_compat{ eval(File.read(spec_file)) }
|
844
844
|
end
|
845
845
|
|
846
846
|
def old_ruby_required
|
data/test/test_gem_server.rb
CHANGED
@@ -119,7 +119,7 @@ class TestGemServer < RubyGemTestCase
|
|
119
119
|
assert @res['date']
|
120
120
|
assert_equal 'application/x-deflate', @res['content-type']
|
121
121
|
|
122
|
-
spec = YAML.load LibGems.inflate(@res.body)
|
122
|
+
spec = LibGems.with_rubygems_compat{ YAML.load LibGems.inflate(@res.body) }
|
123
123
|
assert_equal 'a', spec.name
|
124
124
|
assert_equal LibGems::Version.new(1), spec.version
|
125
125
|
end
|
@@ -136,7 +136,7 @@ class TestGemServer < RubyGemTestCase
|
|
136
136
|
assert @res['date']
|
137
137
|
assert_equal 'application/x-deflate', @res['content-type']
|
138
138
|
|
139
|
-
spec = YAML.load LibGems.inflate(@res.body)
|
139
|
+
spec = LibGems.with_rubygems_compat{ YAML.load LibGems.inflate(@res.body) }
|
140
140
|
assert_equal 'a', spec.name
|
141
141
|
assert_equal LibGems::Version.new(1), spec.version
|
142
142
|
assert_equal LibGems::Platform.local, spec.platform
|
@@ -154,7 +154,7 @@ class TestGemServer < RubyGemTestCase
|
|
154
154
|
assert @res['date']
|
155
155
|
assert_equal 'application/x-deflate', @res['content-type']
|
156
156
|
|
157
|
-
spec = YAML.load LibGems.inflate(@res.body)
|
157
|
+
spec = LibGems.with_rubygems_compat{ YAML.load LibGems.inflate(@res.body) }
|
158
158
|
assert_equal 'a', spec.name
|
159
159
|
assert_equal LibGems::Version.new(1), spec.version
|
160
160
|
end
|
@@ -318,7 +318,7 @@ class TestGemServer < RubyGemTestCase
|
|
318
318
|
si = LibGems::SourceIndex.new
|
319
319
|
si.add_specs @a1, @a2
|
320
320
|
|
321
|
-
assert_equal si, YAML.load(@res.body)
|
321
|
+
assert_equal si, LibGems.with_rubygems_compat{ YAML.load(@res.body) }
|
322
322
|
end
|
323
323
|
|
324
324
|
def test_yaml_Z
|
@@ -334,7 +334,7 @@ class TestGemServer < RubyGemTestCase
|
|
334
334
|
si = LibGems::SourceIndex.new
|
335
335
|
si.add_specs @a1, @a2
|
336
336
|
|
337
|
-
assert_equal si, YAML.load(LibGems.inflate(@res.body))
|
337
|
+
assert_equal si, LibGems.with_rubygems_compat{ YAML.load(LibGems.inflate(@res.body)) }
|
338
338
|
end
|
339
339
|
|
340
340
|
def util_listen
|
@@ -152,7 +152,7 @@ EOF
|
|
152
152
|
end
|
153
153
|
|
154
154
|
def test_self_load_legacy_ruby
|
155
|
-
spec = LibGems.
|
155
|
+
spec = LibGems.with_rubygems_compat{ eval LEGACY_RUBY_SPEC }
|
156
156
|
assert_equal 'keyedlist', spec.name
|
157
157
|
assert_equal '0.4.0', spec.version.to_s
|
158
158
|
assert_equal true, spec.has_rdoc?
|
@@ -162,7 +162,7 @@ EOF
|
|
162
162
|
end
|
163
163
|
|
164
164
|
def test_self_load_rubygems_style
|
165
|
-
spec = LibGems.
|
165
|
+
spec = LibGems.with_rubygems_compat{ eval RUBYGEMS_SPEC }
|
166
166
|
assert_equal LibGems::Specification, spec.class
|
167
167
|
assert_equal 'rubygems-compatible', spec.name
|
168
168
|
assert_equal '1.0', spec.version.to_s
|
@@ -811,11 +811,11 @@ EOF
|
|
811
811
|
expected = <<-SPEC
|
812
812
|
# -*- encoding: utf-8 -*-
|
813
813
|
|
814
|
-
|
814
|
+
Gem::Specification.new do |s|
|
815
815
|
s.name = %q{a}
|
816
816
|
s.version = \"2\"
|
817
817
|
|
818
|
-
s.required_rubygems_version =
|
818
|
+
s.required_rubygems_version = Gem::Requirement.new(\"> 0\") if s.respond_to? :required_rubygems_version=
|
819
819
|
s.authors = [\"A User\"]
|
820
820
|
s.date = %q{#{LibGems::Specification::TODAY.strftime "%Y-%m-%d"}}
|
821
821
|
s.description = %q{This is a test description}
|
@@ -827,9 +827,9 @@ LibGems::Specification.new do |s|
|
|
827
827
|
s.summary = %q{this is a summary}
|
828
828
|
|
829
829
|
if s.respond_to? :specification_version then
|
830
|
-
s.specification_version = #{
|
830
|
+
s.specification_version = #{Gem::Specification::CURRENT_SPECIFICATION_VERSION}
|
831
831
|
|
832
|
-
if
|
832
|
+
if Gem::Version.new(Gem::GEM_VERSION) >= Gem::Version.new('1.2.0') then
|
833
833
|
s.add_runtime_dependency(%q<b>, [\"= 1\"])
|
834
834
|
else
|
835
835
|
s.add_dependency(%q<b>, [\"= 1\"])
|
@@ -842,7 +842,7 @@ end
|
|
842
842
|
|
843
843
|
assert_equal expected, ruby_code
|
844
844
|
|
845
|
-
same_spec = LibGems.
|
845
|
+
same_spec = LibGems.with_rubygems_compat{ eval ruby_code }
|
846
846
|
|
847
847
|
assert_equal @a2, same_spec
|
848
848
|
end
|
@@ -857,12 +857,12 @@ end
|
|
857
857
|
expected = <<-SPEC
|
858
858
|
# -*- encoding: utf-8 -*-
|
859
859
|
|
860
|
-
|
860
|
+
Gem::Specification.new do |s|
|
861
861
|
s.name = %q{a}
|
862
862
|
s.version = \"1\"
|
863
|
-
s.platform =
|
863
|
+
s.platform = Gem::Platform.new(#{expected_platform})
|
864
864
|
|
865
|
-
s.required_rubygems_version =
|
865
|
+
s.required_rubygems_version = Gem::Requirement.new(\">= 0\") if s.respond_to? :required_rubygems_version=
|
866
866
|
s.authors = [\"A User\"]
|
867
867
|
s.date = %q{#{LibGems::Specification::TODAY.strftime "%Y-%m-%d"}}
|
868
868
|
s.default_executable = %q{exec}
|
@@ -884,7 +884,7 @@ LibGems::Specification.new do |s|
|
|
884
884
|
if s.respond_to? :specification_version then
|
885
885
|
s.specification_version = 3
|
886
886
|
|
887
|
-
if
|
887
|
+
if Gem::Version.new(Gem::GEM_VERSION) >= Gem::Version.new('1.2.0') then
|
888
888
|
s.add_runtime_dependency(%q<rake>, [\"> 0.4\"])
|
889
889
|
s.add_runtime_dependency(%q<jabber4r>, [\"> 0.0.0\"])
|
890
890
|
s.add_runtime_dependency(%q<pqa>, [\"> 0.4\", \"<= 0.6\"])
|
@@ -903,15 +903,15 @@ end
|
|
903
903
|
|
904
904
|
assert_equal expected, ruby_code
|
905
905
|
|
906
|
-
same_spec = LibGems.
|
906
|
+
same_spec = LibGems.with_rubygems_compat{ eval ruby_code }
|
907
907
|
|
908
908
|
assert_equal @a1, same_spec
|
909
909
|
end
|
910
910
|
|
911
911
|
def test_to_ruby_legacy
|
912
|
-
gemspec1 = LibGems.
|
912
|
+
gemspec1 = LibGems.with_rubygems_compat{ eval LEGACY_RUBY_SPEC }
|
913
913
|
ruby_code = gemspec1.to_ruby
|
914
|
-
gemspec2 = LibGems.
|
914
|
+
gemspec2 = LibGems.with_rubygems_compat{ eval ruby_code }
|
915
915
|
|
916
916
|
assert_equal gemspec1, gemspec2
|
917
917
|
end
|
@@ -922,7 +922,7 @@ end
|
|
922
922
|
|
923
923
|
ruby_code = @a2.to_ruby
|
924
924
|
|
925
|
-
same_spec = LibGems.
|
925
|
+
same_spec = LibGems.with_rubygems_compat{ eval ruby_code }
|
926
926
|
|
927
927
|
assert_equal 'old_platform', same_spec.original_platform
|
928
928
|
end
|
@@ -932,7 +932,7 @@ end
|
|
932
932
|
|
933
933
|
refute_match '!!null', yaml_str
|
934
934
|
|
935
|
-
same_spec = YAML.load(yaml_str)
|
935
|
+
same_spec = LibGems.with_rubygems_compat{ YAML.load(yaml_str) }
|
936
936
|
|
937
937
|
assert_equal @a1, same_spec
|
938
938
|
end
|
@@ -941,7 +941,7 @@ end
|
|
941
941
|
@a1.platform = LibGems::Platform.local
|
942
942
|
yaml_str = @a1.to_yaml
|
943
943
|
|
944
|
-
same_spec = YAML.load(yaml_str)
|
944
|
+
same_spec = LibGems.with_rubygems_compat{ YAML.load(yaml_str) }
|
945
945
|
|
946
946
|
assert_equal LibGems::Platform.local, same_spec.platform
|
947
947
|
|
@@ -960,7 +960,7 @@ end
|
|
960
960
|
|
961
961
|
yaml_str = @a1.to_yaml
|
962
962
|
|
963
|
-
same_spec = YAML.load yaml_str
|
963
|
+
same_spec = LibGems.with_rubygems_compat{ YAML.load yaml_str }
|
964
964
|
|
965
965
|
assert_equal LibGems::Platform.new('powerpc-darwin7'), same_spec.platform
|
966
966
|
assert_equal 'powerpc-darwin7.9.0', same_spec.original_platform
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: libgems
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.0.
|
5
|
+
version: 0.0.3
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Jim Weirich
|
@@ -13,7 +13,7 @@ autorequire:
|
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
15
|
|
16
|
-
date: 2011-06-
|
16
|
+
date: 2011-06-14 00:00:00 Z
|
17
17
|
dependencies: []
|
18
18
|
|
19
19
|
description: |
|
@@ -290,7 +290,7 @@ files:
|
|
290
290
|
homepage: http://rubygems.org
|
291
291
|
licenses: []
|
292
292
|
|
293
|
-
post_install_message: "Upgraded from LibGems to LibGems 0.0.
|
293
|
+
post_install_message: "Upgraded from LibGems to LibGems 0.0.3\n\
|
294
294
|
\xEF\xBB\xBF=== 1.3.8 / 2011-05-16\n\n\
|
295
295
|
SlimGems is born! SlimGems is a fork of RubyGems, see README.md for more.\n\n"
|
296
296
|
rdoc_options: []
|