rubygems-update 3.0.0 → 3.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 +4 -4
- data/.rubocop.yml +1 -0
- data/.travis.yml +2 -0
- data/CODE_OF_CONDUCT.md +10 -8
- data/CONTRIBUTING.md +7 -0
- data/History.txt +180 -0
- data/Manifest.txt +5 -3
- data/README.md +6 -0
- data/Rakefile +33 -7
- data/bundler/CHANGELOG.md +11 -0
- data/bundler/lib/bundler/build_metadata.rb +2 -2
- data/bundler/lib/bundler/rubygems_gem_installer.rb +7 -0
- data/bundler/lib/bundler/source/metadata.rb +2 -3
- data/bundler/lib/bundler/version.rb +1 -1
- data/bundler/man/bundle.ronn +3 -0
- data/lib/rubygems/command_manager.rb +12 -4
- data/lib/rubygems/commands/build_command.rb +28 -13
- data/lib/rubygems/commands/owner_command.rb +6 -1
- data/lib/rubygems/commands/push_command.rb +2 -0
- data/lib/rubygems/commands/setup_command.rb +14 -16
- data/lib/rubygems/commands/uninstall_command.rb +16 -6
- data/lib/rubygems/commands/which_command.rb +1 -3
- data/lib/rubygems/defaults.rb +1 -8
- data/lib/rubygems/dependency.rb +1 -1
- data/lib/rubygems/dependency_installer.rb +1 -2
- data/lib/rubygems/dependency_list.rb +1 -1
- data/lib/rubygems/exceptions.rb +0 -4
- data/lib/rubygems/gemcutter_utilities.rb +14 -7
- data/lib/rubygems/install_update_options.rb +1 -1
- data/lib/rubygems/installer.rb +37 -15
- data/lib/rubygems/installer_test_case.rb +2 -2
- data/lib/rubygems/package/old.rb +1 -1
- data/lib/rubygems/package/tar_header.rb +11 -2
- data/lib/rubygems/package.rb +12 -2
- data/lib/rubygems/rdoc.rb +2 -2
- data/lib/rubygems/remote_fetcher.rb +15 -54
- data/lib/rubygems/request.rb +1 -1
- data/lib/rubygems/request_set/gem_dependency_api.rb +11 -10
- data/lib/rubygems/requirement.rb +16 -5
- data/lib/rubygems/resolver.rb +4 -1
- data/lib/rubygems/s3_uri_signer.rb +183 -0
- data/lib/rubygems/security_option.rb +0 -1
- data/lib/rubygems/specification.rb +21 -23
- data/lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA_R3.pem +21 -0
- data/lib/rubygems/stub_specification.rb +1 -2
- data/lib/rubygems/test_case.rb +23 -12
- data/lib/rubygems/uninstaller.rb +1 -1
- data/lib/rubygems/user_interaction.rb +4 -1
- data/lib/rubygems/util.rb +13 -1
- data/lib/rubygems.rb +8 -13
- data/rubygems-update.gemspec +1 -1
- data/test/rubygems/ca_cert.pem +74 -65
- data/test/rubygems/client.pem +103 -45
- data/test/rubygems/ssl_cert.pem +78 -17
- data/test/rubygems/ssl_key.pem +25 -13
- data/test/rubygems/test_bundled_ca.rb +8 -5
- data/test/rubygems/test_gem.rb +55 -13
- data/test/rubygems/test_gem_bundler_version_finder.rb +4 -0
- data/test/rubygems/test_gem_command_manager.rb +10 -0
- data/test/rubygems/test_gem_commands_build_command.rb +1 -0
- data/test/rubygems/test_gem_commands_push_command.rb +15 -0
- data/test/rubygems/test_gem_commands_setup_command.rb +11 -7
- data/test/rubygems/test_gem_commands_uninstall_command.rb +80 -1
- data/test/rubygems/test_gem_ext_cmake_builder.rb +1 -1
- data/test/rubygems/test_gem_indexer.rb +15 -8
- data/test/rubygems/test_gem_installer.rb +191 -22
- data/test/rubygems/test_gem_package.rb +37 -0
- data/test/rubygems/test_gem_package_tar_header.rb +41 -0
- data/test/rubygems/test_gem_package_tar_writer.rb +3 -0
- data/test/rubygems/test_gem_rdoc.rb +1 -135
- data/test/rubygems/test_gem_remote_fetcher.rb +133 -14
- data/test/rubygems/test_gem_request.rb +4 -4
- data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +80 -57
- data/test/rubygems/test_gem_requirement.rb +6 -0
- data/test/rubygems/test_gem_security_policy.rb +1 -1
- data/test/rubygems/test_gem_specification.rb +32 -0
- data/test/rubygems/test_gem_stream_ui.rb +2 -2
- data/test/rubygems/test_gem_text.rb +5 -0
- data/test/rubygems/test_gem_uninstaller.rb +21 -2
- data/test/rubygems/test_gem_util.rb +25 -0
- data/util/ci +6 -1
- data/util/cops/deprecations.rb +52 -0
- data/util/create_certs.sh +27 -0
- data/util/create_encrypted_key.rb +4 -4
- data/util/update_bundled_ca_certificates.rb +1 -3
- metadata +12 -10
- data/lib/rubygems/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem +0 -23
- data/lib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem +0 -25
- /data/lib/rubygems/ssl_certs/{index.rubygems.org → rubygems.org}/GlobalSignRootCA.pem +0 -0
@@ -5,7 +5,6 @@ require 'rubygems/rdoc'
|
|
5
5
|
|
6
6
|
class TestGemRDoc < Gem::TestCase
|
7
7
|
Gem::RDoc.load_rdoc
|
8
|
-
rdoc_4 = Gem::Requirement.new('> 3').satisfied_by?(Gem::RDoc.rdoc_version)
|
9
8
|
|
10
9
|
def setup
|
11
10
|
super
|
@@ -31,29 +30,8 @@ class TestGemRDoc < Gem::TestCase
|
|
31
30
|
Gem.configuration[:rdoc] = nil
|
32
31
|
end
|
33
32
|
|
34
|
-
##
|
35
|
-
# RDoc 4 ships with its own Gem::RDoc which overrides this one which is
|
36
|
-
# shipped for backwards compatibility.
|
37
|
-
|
38
|
-
def rdoc_4?
|
39
|
-
Gem::Requirement.new('>= 4.0.0.preview2').satisfied_by? \
|
40
|
-
@hook.class.rdoc_version
|
41
|
-
end
|
42
|
-
|
43
|
-
def rdoc_3?
|
44
|
-
Gem::Requirement.new('~> 3.0').satisfied_by? @hook.class.rdoc_version
|
45
|
-
end
|
46
|
-
|
47
|
-
def rdoc_3_8_or_better?
|
48
|
-
Gem::Requirement.new('>= 3.8').satisfied_by? @hook.class.rdoc_version
|
49
|
-
end
|
50
|
-
|
51
33
|
def test_initialize
|
52
|
-
|
53
|
-
refute @hook.generate_rdoc
|
54
|
-
else
|
55
|
-
assert @hook.generate_rdoc
|
56
|
-
end
|
34
|
+
refute @hook.generate_rdoc
|
57
35
|
assert @hook.generate_ri
|
58
36
|
|
59
37
|
rdoc = Gem::RDoc.new @a, false, false
|
@@ -75,67 +53,6 @@ class TestGemRDoc < Gem::TestCase
|
|
75
53
|
assert_empty args
|
76
54
|
end
|
77
55
|
|
78
|
-
def test_document
|
79
|
-
skip 'RDoc 3 required' unless rdoc_3?
|
80
|
-
|
81
|
-
options = RDoc::Options.new
|
82
|
-
options.files = []
|
83
|
-
|
84
|
-
rdoc = @hook.new_rdoc
|
85
|
-
@hook.instance_variable_set :@rdoc, rdoc
|
86
|
-
@hook.instance_variable_set :@file_info, []
|
87
|
-
|
88
|
-
@hook.document 'darkfish', options, @a.doc_dir('rdoc')
|
89
|
-
|
90
|
-
assert @hook.rdoc_installed?
|
91
|
-
end unless rdoc_4
|
92
|
-
|
93
|
-
def test_generate
|
94
|
-
skip 'RDoc 3 required' unless rdoc_3?
|
95
|
-
|
96
|
-
FileUtils.mkdir_p @a.doc_dir
|
97
|
-
FileUtils.mkdir_p File.join(@a.gem_dir, 'lib')
|
98
|
-
|
99
|
-
@hook.generate
|
100
|
-
|
101
|
-
assert @hook.rdoc_installed?
|
102
|
-
assert @hook.ri_installed?
|
103
|
-
|
104
|
-
rdoc = @hook.instance_variable_get :@rdoc
|
105
|
-
|
106
|
-
refute rdoc.options.hyperlink_all
|
107
|
-
end unless rdoc_4
|
108
|
-
|
109
|
-
def test_generate_configuration_rdoc_array
|
110
|
-
skip 'RDoc 3 required' unless rdoc_3?
|
111
|
-
|
112
|
-
Gem.configuration[:rdoc] = %w[-A]
|
113
|
-
|
114
|
-
FileUtils.mkdir_p @a.doc_dir
|
115
|
-
FileUtils.mkdir_p File.join(@a.gem_dir, 'lib')
|
116
|
-
|
117
|
-
@hook.generate
|
118
|
-
|
119
|
-
rdoc = @hook.instance_variable_get :@rdoc
|
120
|
-
|
121
|
-
assert rdoc.options.hyperlink_all
|
122
|
-
end unless rdoc_4
|
123
|
-
|
124
|
-
def test_generate_configuration_rdoc_string
|
125
|
-
skip 'RDoc 3 required' unless rdoc_3?
|
126
|
-
|
127
|
-
Gem.configuration[:rdoc] = '-A'
|
128
|
-
|
129
|
-
FileUtils.mkdir_p @a.doc_dir
|
130
|
-
FileUtils.mkdir_p File.join(@a.gem_dir, 'lib')
|
131
|
-
|
132
|
-
@hook.generate
|
133
|
-
|
134
|
-
rdoc = @hook.instance_variable_get :@rdoc
|
135
|
-
|
136
|
-
assert rdoc.options.hyperlink_all
|
137
|
-
end unless rdoc_4
|
138
|
-
|
139
56
|
def test_generate_disabled
|
140
57
|
@hook.generate_rdoc = false
|
141
58
|
@hook.generate_ri = false
|
@@ -146,57 +63,6 @@ class TestGemRDoc < Gem::TestCase
|
|
146
63
|
refute @hook.ri_installed?
|
147
64
|
end
|
148
65
|
|
149
|
-
def test_generate_force
|
150
|
-
skip 'RDoc 3 required' unless rdoc_3?
|
151
|
-
|
152
|
-
FileUtils.mkdir_p @a.doc_dir 'ri'
|
153
|
-
FileUtils.mkdir_p @a.doc_dir 'rdoc'
|
154
|
-
FileUtils.mkdir_p File.join(@a.gem_dir, 'lib')
|
155
|
-
|
156
|
-
@hook.force = true
|
157
|
-
|
158
|
-
@hook.generate
|
159
|
-
|
160
|
-
assert_path_exists File.join(@a.doc_dir('rdoc'), 'index.html')
|
161
|
-
assert_path_exists File.join(@a.doc_dir('ri'), 'cache.ri')
|
162
|
-
end unless rdoc_4
|
163
|
-
|
164
|
-
def test_generate_no_overwrite
|
165
|
-
skip 'RDoc 3 required' unless rdoc_3?
|
166
|
-
|
167
|
-
FileUtils.mkdir_p @a.doc_dir 'ri'
|
168
|
-
FileUtils.mkdir_p @a.doc_dir 'rdoc'
|
169
|
-
FileUtils.mkdir_p File.join(@a.gem_dir, 'lib')
|
170
|
-
|
171
|
-
@hook.generate
|
172
|
-
|
173
|
-
refute_path_exists File.join(@a.doc_dir('rdoc'), 'index.html')
|
174
|
-
refute_path_exists File.join(@a.doc_dir('ri'), 'cache.ri')
|
175
|
-
end unless rdoc_4
|
176
|
-
|
177
|
-
def test_generate_legacy
|
178
|
-
skip 'RDoc < 3.8 required' if rdoc_3_8_or_better?
|
179
|
-
|
180
|
-
FileUtils.mkdir_p @a.doc_dir
|
181
|
-
FileUtils.mkdir_p File.join(@a.gem_dir, 'lib')
|
182
|
-
|
183
|
-
@hook.generate_legacy
|
184
|
-
|
185
|
-
assert @hook.rdoc_installed?
|
186
|
-
assert @hook.ri_installed?
|
187
|
-
end unless rdoc_4
|
188
|
-
|
189
|
-
def test_legacy_rdoc
|
190
|
-
skip 'RDoc < 3.8 required' if rdoc_3_8_or_better?
|
191
|
-
|
192
|
-
FileUtils.mkdir_p @a.doc_dir
|
193
|
-
FileUtils.mkdir_p File.join(@a.gem_dir, 'lib')
|
194
|
-
|
195
|
-
@hook.legacy_rdoc '--op', @a.doc_dir('rdoc')
|
196
|
-
|
197
|
-
assert @hook.rdoc_installed?
|
198
|
-
end unless rdoc_4
|
199
|
-
|
200
66
|
def test_new_rdoc
|
201
67
|
assert_kind_of RDoc::RDoc, @hook.new_rdoc
|
202
68
|
end
|
@@ -648,10 +648,11 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
|
|
648
648
|
assert_equal "murphy", fetcher.fetch_path(@server_uri)
|
649
649
|
end
|
650
650
|
|
651
|
-
def assert_fetch_s3(url)
|
651
|
+
def assert_fetch_s3(url, signature, token=nil, region='us-east-1', instance_profile_json=nil)
|
652
652
|
fetcher = Gem::RemoteFetcher.new nil
|
653
653
|
@fetcher = fetcher
|
654
654
|
$fetched_uri = nil
|
655
|
+
$instance_profile = instance_profile_json
|
655
656
|
|
656
657
|
def fetcher.request(uri, request_class, last_modified = nil)
|
657
658
|
$fetched_uri = uri
|
@@ -660,13 +661,21 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
|
|
660
661
|
res
|
661
662
|
end
|
662
663
|
|
663
|
-
def fetcher.
|
664
|
-
|
664
|
+
def fetcher.s3_uri_signer(uri)
|
665
|
+
require 'json'
|
666
|
+
s3_uri_signer = Gem::S3URISigner.new(uri)
|
667
|
+
def s3_uri_signer.ec2_metadata_credentials_json
|
668
|
+
JSON.parse($instance_profile)
|
669
|
+
end
|
670
|
+
# Running sign operation to make sure uri.query is not mutated
|
671
|
+
s3_uri_signer.sign
|
672
|
+
raise "URI query is not empty: #{uri.query}" unless uri.query.nil?
|
673
|
+
s3_uri_signer
|
665
674
|
end
|
666
675
|
|
667
676
|
data = fetcher.fetch_s3 URI.parse(url)
|
668
677
|
|
669
|
-
assert_equal
|
678
|
+
assert_equal "https://my-bucket.s3.#{region}.amazonaws.com/gems/specs.4.8.gz?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=testuser%2F20190624%2F#{region}%2Fs3%2Faws4_request&X-Amz-Date=20190624T050641Z&X-Amz-Expires=86400#{token ? "&X-Amz-Security-Token=" + token : ""}&X-Amz-SignedHeaders=host&X-Amz-Signature=#{signature}", $fetched_uri.to_s
|
670
679
|
assert_equal 'success', data
|
671
680
|
ensure
|
672
681
|
$fetched_uri = nil
|
@@ -677,14 +686,132 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
|
|
677
686
|
'my-bucket' => {:id => 'testuser', :secret => 'testpass'}
|
678
687
|
}
|
679
688
|
url = 's3://my-bucket/gems/specs.4.8.gz'
|
680
|
-
|
689
|
+
Time.stub :now, Time.at(1561353581) do
|
690
|
+
assert_fetch_s3 url, '20f974027db2f3cd6193565327a7c73457a138efb1a63ea248d185ce6827d41b'
|
691
|
+
end
|
692
|
+
ensure
|
693
|
+
Gem.configuration[:s3_source] = nil
|
694
|
+
end
|
695
|
+
|
696
|
+
def test_fetch_s3_config_creds_with_region
|
697
|
+
Gem.configuration[:s3_source] = {
|
698
|
+
'my-bucket' => {:id => 'testuser', :secret => 'testpass', :region => 'us-west-2'}
|
699
|
+
}
|
700
|
+
url = 's3://my-bucket/gems/specs.4.8.gz'
|
701
|
+
Time.stub :now, Time.at(1561353581) do
|
702
|
+
assert_fetch_s3 url, '4afc3010757f1fd143e769f1d1dabd406476a4fc7c120e9884fd02acbb8f26c9', nil, 'us-west-2'
|
703
|
+
end
|
681
704
|
ensure
|
682
705
|
Gem.configuration[:s3_source] = nil
|
683
706
|
end
|
684
707
|
|
708
|
+
def test_fetch_s3_config_creds_with_token
|
709
|
+
Gem.configuration[:s3_source] = {
|
710
|
+
'my-bucket' => {:id => 'testuser', :secret => 'testpass', :security_token => 'testtoken'}
|
711
|
+
}
|
712
|
+
url = 's3://my-bucket/gems/specs.4.8.gz'
|
713
|
+
Time.stub :now, Time.at(1561353581) do
|
714
|
+
assert_fetch_s3 url, '935160a427ef97e7630f799232b8f208c4a4e49aad07d0540572a2ad5fe9f93c', 'testtoken'
|
715
|
+
end
|
716
|
+
ensure
|
717
|
+
Gem.configuration[:s3_source] = nil
|
718
|
+
end
|
719
|
+
|
720
|
+
def test_fetch_s3_env_creds
|
721
|
+
ENV['AWS_ACCESS_KEY_ID'] = 'testuser'
|
722
|
+
ENV['AWS_SECRET_ACCESS_KEY'] = 'testpass'
|
723
|
+
ENV['AWS_SESSION_TOKEN'] = nil
|
724
|
+
Gem.configuration[:s3_source] = {
|
725
|
+
'my-bucket' => {:provider => 'env'}
|
726
|
+
}
|
727
|
+
url = 's3://my-bucket/gems/specs.4.8.gz'
|
728
|
+
Time.stub :now, Time.at(1561353581) do
|
729
|
+
assert_fetch_s3 url, '20f974027db2f3cd6193565327a7c73457a138efb1a63ea248d185ce6827d41b'
|
730
|
+
end
|
731
|
+
ensure
|
732
|
+
ENV.each_key {|key| ENV.delete(key) if key.start_with?('AWS')}
|
733
|
+
Gem.configuration[:s3_source] = nil
|
734
|
+
end
|
735
|
+
|
736
|
+
def test_fetch_s3_env_creds_with_region
|
737
|
+
ENV['AWS_ACCESS_KEY_ID'] = 'testuser'
|
738
|
+
ENV['AWS_SECRET_ACCESS_KEY'] = 'testpass'
|
739
|
+
ENV['AWS_SESSION_TOKEN'] = nil
|
740
|
+
Gem.configuration[:s3_source] = {
|
741
|
+
'my-bucket' => {:provider => 'env', :region => 'us-west-2'}
|
742
|
+
}
|
743
|
+
url = 's3://my-bucket/gems/specs.4.8.gz'
|
744
|
+
Time.stub :now, Time.at(1561353581) do
|
745
|
+
assert_fetch_s3 url, '4afc3010757f1fd143e769f1d1dabd406476a4fc7c120e9884fd02acbb8f26c9', nil, 'us-west-2'
|
746
|
+
end
|
747
|
+
ensure
|
748
|
+
ENV.each_key {|key| ENV.delete(key) if key.start_with?('AWS')}
|
749
|
+
Gem.configuration[:s3_source] = nil
|
750
|
+
end
|
751
|
+
|
752
|
+
def test_fetch_s3_env_creds_with_token
|
753
|
+
ENV['AWS_ACCESS_KEY_ID'] = 'testuser'
|
754
|
+
ENV['AWS_SECRET_ACCESS_KEY'] = 'testpass'
|
755
|
+
ENV['AWS_SESSION_TOKEN'] = 'testtoken'
|
756
|
+
Gem.configuration[:s3_source] = {
|
757
|
+
'my-bucket' => {:provider => 'env'}
|
758
|
+
}
|
759
|
+
url = 's3://my-bucket/gems/specs.4.8.gz'
|
760
|
+
Time.stub :now, Time.at(1561353581) do
|
761
|
+
assert_fetch_s3 url, '935160a427ef97e7630f799232b8f208c4a4e49aad07d0540572a2ad5fe9f93c', 'testtoken'
|
762
|
+
end
|
763
|
+
ensure
|
764
|
+
ENV.each_key {|key| ENV.delete(key) if key.start_with?('AWS')}
|
765
|
+
Gem.configuration[:s3_source] = nil
|
766
|
+
end
|
767
|
+
|
685
768
|
def test_fetch_s3_url_creds
|
686
769
|
url = 's3://testuser:testpass@my-bucket/gems/specs.4.8.gz'
|
687
|
-
|
770
|
+
Time.stub :now, Time.at(1561353581) do
|
771
|
+
assert_fetch_s3 url, '20f974027db2f3cd6193565327a7c73457a138efb1a63ea248d185ce6827d41b'
|
772
|
+
end
|
773
|
+
end
|
774
|
+
|
775
|
+
def test_fetch_s3_instance_profile_creds
|
776
|
+
Gem.configuration[:s3_source] = {
|
777
|
+
'my-bucket' => {:provider => 'instance_profile'}
|
778
|
+
}
|
779
|
+
|
780
|
+
url = 's3://my-bucket/gems/specs.4.8.gz'
|
781
|
+
Time.stub :now, Time.at(1561353581) do
|
782
|
+
assert_fetch_s3 url, '20f974027db2f3cd6193565327a7c73457a138efb1a63ea248d185ce6827d41b', nil, 'us-east-1',
|
783
|
+
'{"AccessKeyId": "testuser", "SecretAccessKey": "testpass"}'
|
784
|
+
end
|
785
|
+
ensure
|
786
|
+
Gem.configuration[:s3_source] = nil
|
787
|
+
end
|
788
|
+
|
789
|
+
def test_fetch_s3_instance_profile_creds_with_region
|
790
|
+
Gem.configuration[:s3_source] = {
|
791
|
+
'my-bucket' => {:provider => 'instance_profile', :region => 'us-west-2'}
|
792
|
+
}
|
793
|
+
|
794
|
+
url = 's3://my-bucket/gems/specs.4.8.gz'
|
795
|
+
Time.stub :now, Time.at(1561353581) do
|
796
|
+
assert_fetch_s3 url, '4afc3010757f1fd143e769f1d1dabd406476a4fc7c120e9884fd02acbb8f26c9', nil, 'us-west-2',
|
797
|
+
'{"AccessKeyId": "testuser", "SecretAccessKey": "testpass"}'
|
798
|
+
end
|
799
|
+
ensure
|
800
|
+
Gem.configuration[:s3_source] = nil
|
801
|
+
end
|
802
|
+
|
803
|
+
def test_fetch_s3_instance_profile_creds_with_token
|
804
|
+
Gem.configuration[:s3_source] = {
|
805
|
+
'my-bucket' => {:provider => 'instance_profile'}
|
806
|
+
}
|
807
|
+
|
808
|
+
url = 's3://my-bucket/gems/specs.4.8.gz'
|
809
|
+
Time.stub :now, Time.at(1561353581) do
|
810
|
+
assert_fetch_s3 url, '935160a427ef97e7630f799232b8f208c4a4e49aad07d0540572a2ad5fe9f93c', 'testtoken', 'us-east-1',
|
811
|
+
'{"AccessKeyId": "testuser", "SecretAccessKey": "testpass", "Token": "testtoken"}'
|
812
|
+
end
|
813
|
+
ensure
|
814
|
+
Gem.configuration[:s3_source] = nil
|
688
815
|
end
|
689
816
|
|
690
817
|
def refute_fetch_s3(url, expected_message)
|
@@ -1044,12 +1171,4 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
|
|
1044
1171
|
end
|
1045
1172
|
end
|
1046
1173
|
|
1047
|
-
def test_correct_for_windows_path
|
1048
|
-
path = "/C:/WINDOWS/Temp/gems"
|
1049
|
-
assert_equal "C:/WINDOWS/Temp/gems", @fetcher.correct_for_windows_path(path)
|
1050
|
-
|
1051
|
-
path = "/home/skillet"
|
1052
|
-
assert_equal "/home/skillet", @fetcher.correct_for_windows_path(path)
|
1053
|
-
end
|
1054
|
-
|
1055
1174
|
end if defined?(OpenSSL::SSL)
|
@@ -250,7 +250,7 @@ class TestGemRequest < Gem::TestCase
|
|
250
250
|
def test_user_agent_engine
|
251
251
|
util_save_version
|
252
252
|
|
253
|
-
Object.send :remove_const, :RUBY_ENGINE
|
253
|
+
Object.send :remove_const, :RUBY_ENGINE
|
254
254
|
Object.send :const_set, :RUBY_ENGINE, 'vroom'
|
255
255
|
|
256
256
|
ua = make_request(@uri, nil, nil, nil).user_agent
|
@@ -263,7 +263,7 @@ class TestGemRequest < Gem::TestCase
|
|
263
263
|
def test_user_agent_engine_ruby
|
264
264
|
util_save_version
|
265
265
|
|
266
|
-
Object.send :remove_const, :RUBY_ENGINE
|
266
|
+
Object.send :remove_const, :RUBY_ENGINE
|
267
267
|
Object.send :const_set, :RUBY_ENGINE, 'ruby'
|
268
268
|
|
269
269
|
ua = make_request(@uri, nil, nil, nil).user_agent
|
@@ -447,7 +447,7 @@ ERROR: Certificate is an invalid CA certificate
|
|
447
447
|
end
|
448
448
|
|
449
449
|
def util_restore_version
|
450
|
-
Object.send :remove_const, :RUBY_ENGINE
|
450
|
+
Object.send :remove_const, :RUBY_ENGINE
|
451
451
|
Object.send :const_set, :RUBY_ENGINE, @orig_RUBY_ENGINE if
|
452
452
|
defined?(@orig_RUBY_ENGINE)
|
453
453
|
|
@@ -460,7 +460,7 @@ ERROR: Certificate is an invalid CA certificate
|
|
460
460
|
end
|
461
461
|
|
462
462
|
def util_save_version
|
463
|
-
@orig_RUBY_ENGINE = RUBY_ENGINE
|
463
|
+
@orig_RUBY_ENGINE = RUBY_ENGINE
|
464
464
|
@orig_RUBY_PATCHLEVEL = RUBY_PATCHLEVEL
|
465
465
|
@orig_RUBY_REVISION = RUBY_REVISION if defined? RUBY_REVISION
|
466
466
|
end
|
@@ -20,35 +20,28 @@ class TestGemRequestSetGemDependencyAPI < Gem::TestCase
|
|
20
20
|
end
|
21
21
|
|
22
22
|
def with_engine_version(name, version)
|
23
|
-
engine
|
24
|
-
|
25
|
-
engine_version = Object.const_get engine_version_const
|
23
|
+
engine = RUBY_ENGINE
|
24
|
+
engine_version = RUBY_ENGINE_VERSION
|
26
25
|
|
27
|
-
Object.send :remove_const, :RUBY_ENGINE
|
28
|
-
Object.send :remove_const,
|
29
|
-
Object.const_defined? engine_version_const
|
26
|
+
Object.send :remove_const, :RUBY_ENGINE
|
27
|
+
Object.send :remove_const, :RUBY_ENGINE_VERSION
|
30
28
|
|
31
|
-
|
32
|
-
Object.const_set :
|
33
|
-
Object.const_set new_engine_version_const, version if version
|
29
|
+
Object.const_set :RUBY_ENGINE, name if name
|
30
|
+
Object.const_set :RUBY_ENGINE_VERSION, version if version
|
34
31
|
|
35
32
|
Gem.instance_variable_set :@ruby_version, Gem::Version.new(version)
|
36
33
|
|
37
|
-
|
34
|
+
begin
|
35
|
+
yield
|
36
|
+
ensure
|
37
|
+
Object.send :remove_const, :RUBY_ENGINE if name
|
38
|
+
Object.send :remove_const, :RUBY_ENGINE_VERSION if version
|
38
39
|
|
39
|
-
|
40
|
-
|
41
|
-
Object.send :remove_const, new_engine_version_const if version
|
42
|
-
|
43
|
-
Object.send :remove_const, engine_version_const if name == 'ruby' and
|
44
|
-
Object.const_defined? engine_version_const
|
45
|
-
|
46
|
-
Object.const_set :RUBY_ENGINE, engine if engine
|
47
|
-
Object.const_set engine_version_const, engine_version unless
|
48
|
-
Object.const_defined? engine_version_const
|
40
|
+
Object.const_set :RUBY_ENGINE, engine
|
41
|
+
Object.const_set :RUBY_ENGINE_VERSION, engine_version
|
49
42
|
|
50
|
-
|
51
|
-
|
43
|
+
Gem.send :remove_instance_variable, :@ruby_version
|
44
|
+
end
|
52
45
|
end
|
53
46
|
|
54
47
|
def test_gempspec_with_multiple_runtime_deps
|
@@ -283,6 +276,14 @@ class TestGemRequestSetGemDependencyAPI < Gem::TestCase
|
|
283
276
|
refute_empty set.dependencies
|
284
277
|
end
|
285
278
|
|
279
|
+
with_engine_version 'truffleruby', '2.0.0' do
|
280
|
+
set = Gem::RequestSet.new
|
281
|
+
gda = @GDA.new set, 'gem.deps.rb'
|
282
|
+
gda.gem 'a', :platforms => :ruby
|
283
|
+
|
284
|
+
refute_empty set.dependencies
|
285
|
+
end
|
286
|
+
|
286
287
|
with_engine_version 'jruby', '1.7.6' do
|
287
288
|
set = Gem::RequestSet.new
|
288
289
|
gda = @GDA.new set, 'gem.deps.rb'
|
@@ -310,6 +311,12 @@ class TestGemRequestSetGemDependencyAPI < Gem::TestCase
|
|
310
311
|
|
311
312
|
assert_empty @set.dependencies
|
312
313
|
end
|
314
|
+
|
315
|
+
with_engine_version 'truffleruby', '1.2.3' do
|
316
|
+
@gda.gem 'a', :platforms => :mri
|
317
|
+
|
318
|
+
assert_empty @set.dependencies
|
319
|
+
end
|
313
320
|
end
|
314
321
|
|
315
322
|
def test_gem_platforms_maglev
|
@@ -332,6 +339,22 @@ class TestGemRequestSetGemDependencyAPI < Gem::TestCase
|
|
332
339
|
Gem.win_platform = win_platform
|
333
340
|
end
|
334
341
|
|
342
|
+
def test_gem_platforms_truffleruby
|
343
|
+
with_engine_version 'truffleruby', '1.0.0' do
|
344
|
+
set = Gem::RequestSet.new
|
345
|
+
gda = @GDA.new set, 'gem.deps.rb'
|
346
|
+
gda.gem 'a', :platforms => :truffleruby
|
347
|
+
|
348
|
+
refute_empty set.dependencies
|
349
|
+
|
350
|
+
set = Gem::RequestSet.new
|
351
|
+
gda = @GDA.new set, 'gem.deps.rb'
|
352
|
+
gda.gem 'a', :platforms => :maglev
|
353
|
+
|
354
|
+
assert_empty set.dependencies
|
355
|
+
end
|
356
|
+
end
|
357
|
+
|
335
358
|
def test_gem_platforms_multiple
|
336
359
|
win_platform, Gem.win_platform = Gem.win_platform?, false
|
337
360
|
|
@@ -652,20 +675,23 @@ end
|
|
652
675
|
end
|
653
676
|
|
654
677
|
def test_platform_mswin
|
655
|
-
|
656
|
-
|
657
|
-
@gda.
|
678
|
+
if win_platform?
|
679
|
+
util_set_arch 'x86-mswin32-60' do
|
680
|
+
@gda.platform :mswin do
|
681
|
+
@gda.gem 'a'
|
682
|
+
end
|
683
|
+
|
684
|
+
assert_equal [dep('a')], @set.dependencies
|
685
|
+
refute_empty @set.dependencies
|
658
686
|
end
|
687
|
+
else
|
688
|
+
util_set_arch 'i686-darwin8.10.1' do
|
689
|
+
@gda.platform :mswin do
|
690
|
+
@gda.gem 'a'
|
691
|
+
end
|
659
692
|
|
660
|
-
|
661
|
-
end
|
662
|
-
|
663
|
-
util_set_arch 'x86-mswin32-60' do
|
664
|
-
@gda.platform :mswin do
|
665
|
-
@gda.gem 'a'
|
693
|
+
assert_empty @set.dependencies
|
666
694
|
end
|
667
|
-
|
668
|
-
refute_empty @set.dependencies
|
669
695
|
end
|
670
696
|
end
|
671
697
|
|
@@ -708,26 +734,20 @@ end
|
|
708
734
|
end
|
709
735
|
|
710
736
|
def test_platforms
|
711
|
-
|
712
|
-
|
713
|
-
@gda.
|
714
|
-
|
715
|
-
|
716
|
-
assert_equal [dep('a')], @set.dependencies
|
737
|
+
unless win_platform?
|
738
|
+
util_set_arch 'i686-darwin8.10.1' do
|
739
|
+
@gda.platforms :ruby do
|
740
|
+
@gda.gem 'a'
|
741
|
+
end
|
717
742
|
|
718
|
-
|
719
|
-
@gda.gem 'b'
|
720
|
-
end
|
743
|
+
assert_equal [dep('a')], @set.dependencies
|
721
744
|
|
722
|
-
|
723
|
-
|
745
|
+
@gda.platforms :mswin do
|
746
|
+
@gda.gem 'b'
|
747
|
+
end
|
724
748
|
|
725
|
-
|
726
|
-
@gda.platforms :mswin do
|
727
|
-
@gda.gem 'c'
|
749
|
+
assert_equal [dep('a')], @set.dependencies
|
728
750
|
end
|
729
|
-
|
730
|
-
assert_equal [dep('a'), dep('c')], @set.dependencies
|
731
751
|
end
|
732
752
|
end
|
733
753
|
|
@@ -741,6 +761,12 @@ end
|
|
741
761
|
:engine => 'jruby', :engine_version => '1.7.6'
|
742
762
|
|
743
763
|
end
|
764
|
+
|
765
|
+
with_engine_version 'truffleruby', '1.0.0-rc11' do
|
766
|
+
assert @gda.ruby RUBY_VERSION,
|
767
|
+
:engine => 'truffleruby', :engine_version => '1.0.0-rc11'
|
768
|
+
|
769
|
+
end
|
744
770
|
end
|
745
771
|
|
746
772
|
def test_ruby_engine_mismatch_engine
|
@@ -804,23 +830,20 @@ end
|
|
804
830
|
|
805
831
|
def test_with_engine_version
|
806
832
|
version = RUBY_VERSION
|
807
|
-
engine
|
808
|
-
|
809
|
-
engine_version_const = "#{Gem.ruby_engine.upcase}_VERSION"
|
810
|
-
engine_version = Object.const_get engine_version_const
|
833
|
+
engine = Gem.ruby_engine
|
834
|
+
engine_version = RUBY_ENGINE_VERSION
|
811
835
|
|
812
836
|
with_engine_version 'other', '1.2.3' do
|
813
837
|
assert_equal 'other', Gem.ruby_engine
|
814
|
-
assert_equal '1.2.3',
|
838
|
+
assert_equal '1.2.3', RUBY_ENGINE_VERSION
|
815
839
|
|
816
|
-
assert_equal version, RUBY_VERSION
|
840
|
+
assert_equal version, RUBY_VERSION
|
817
841
|
end
|
818
842
|
|
819
843
|
assert_equal version, RUBY_VERSION
|
820
844
|
assert_equal engine, Gem.ruby_engine
|
821
845
|
|
822
|
-
assert_equal engine_version,
|
823
|
-
engine
|
846
|
+
assert_equal engine_version, RUBY_ENGINE_VERSION if engine
|
824
847
|
end
|
825
848
|
|
826
849
|
end
|
@@ -20,6 +20,12 @@ class TestGemRequirement < Gem::TestCase
|
|
20
20
|
refute_requirement_equal "= 1.2", "= 1.3"
|
21
21
|
refute_requirement_equal "= 1.3", "= 1.2"
|
22
22
|
|
23
|
+
refute_requirement_equal "~> 1.3", "~> 1.3.0"
|
24
|
+
refute_requirement_equal "~> 1.3.0", "~> 1.3"
|
25
|
+
|
26
|
+
assert_requirement_equal ["> 2", "~> 1.3"], ["> 2.0", "~> 1.3"]
|
27
|
+
assert_requirement_equal ["> 2.0", "~> 1.3"], ["> 2", "~> 1.3"]
|
28
|
+
|
23
29
|
refute_equal Object.new, req("= 1.2")
|
24
30
|
refute_equal req("= 1.2"), Object.new
|
25
31
|
end
|
@@ -293,7 +293,7 @@ class TestGemSecurityPolicy < Gem::TestCase
|
|
293
293
|
|
294
294
|
def test_subject
|
295
295
|
assert_equal 'email:nobody@example', @no.subject(PUBLIC_CERT)
|
296
|
-
assert_equal '/C=JP/
|
296
|
+
assert_equal '/C=JP/ST=Tokyo/O=RubyGemsTest/CN=CA', @no.subject(CA_CERT)
|
297
297
|
end
|
298
298
|
|
299
299
|
def test_verify
|
@@ -1719,8 +1719,11 @@ dependencies: []
|
|
1719
1719
|
end
|
1720
1720
|
|
1721
1721
|
def test_date_use_env_source_date_epoch
|
1722
|
+
epoch = ENV["SOURCE_DATE_EPOCH"]
|
1722
1723
|
ENV["SOURCE_DATE_EPOCH"] = "123456789"
|
1723
1724
|
assert_equal Time.utc(1973,11,29,0,0,0), @a1.date
|
1725
|
+
ensure
|
1726
|
+
ENV["SOURCE_DATE_EPOCH"] = epoch
|
1724
1727
|
end
|
1725
1728
|
|
1726
1729
|
def test_dependencies
|
@@ -2416,6 +2419,35 @@ end
|
|
2416
2419
|
assert_equal @a2, same_spec
|
2417
2420
|
end
|
2418
2421
|
|
2422
|
+
def test_to_ruby_with_rsa_key
|
2423
|
+
rsa_key = OpenSSL::PKey::RSA.new(2048)
|
2424
|
+
@a2.signing_key = rsa_key
|
2425
|
+
ruby_code = @a2.to_ruby
|
2426
|
+
|
2427
|
+
expected = <<-SPEC
|
2428
|
+
# -*- encoding: utf-8 -*-
|
2429
|
+
# stub: a 2 ruby lib
|
2430
|
+
|
2431
|
+
Gem::Specification.new do |s|
|
2432
|
+
s.name = "a".freeze
|
2433
|
+
s.version = "2"
|
2434
|
+
|
2435
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
|
2436
|
+
s.require_paths = ["lib".freeze]
|
2437
|
+
s.authors = ["A User".freeze]
|
2438
|
+
s.date = "#{Gem::Specification::TODAY.strftime "%Y-%m-%d"}"
|
2439
|
+
s.description = "This is a test description".freeze
|
2440
|
+
s.email = "example@example.com".freeze
|
2441
|
+
s.files = ["lib/code.rb".freeze]
|
2442
|
+
s.homepage = "http://example.com".freeze
|
2443
|
+
s.rubygems_version = "#{Gem::VERSION}".freeze
|
2444
|
+
s.summary = "this is a summary".freeze
|
2445
|
+
end
|
2446
|
+
SPEC
|
2447
|
+
|
2448
|
+
assert_equal expected, ruby_code
|
2449
|
+
end
|
2450
|
+
|
2419
2451
|
def test_to_ruby_for_cache
|
2420
2452
|
@a2.add_runtime_dependency 'b', '1'
|
2421
2453
|
@a2.dependencies.first.instance_variable_set :@type, nil
|
@@ -37,7 +37,7 @@ class TestGemStreamUI < Gem::TestCase
|
|
37
37
|
end
|
38
38
|
|
39
39
|
def test_ask
|
40
|
-
Timeout.timeout(
|
40
|
+
Timeout.timeout(5) do
|
41
41
|
expected_answer = "Arthur, King of the Britons"
|
42
42
|
@in.string = "#{expected_answer}\n"
|
43
43
|
actual_answer = @sui.ask("What is your name?")
|
@@ -55,7 +55,7 @@ class TestGemStreamUI < Gem::TestCase
|
|
55
55
|
end
|
56
56
|
|
57
57
|
def test_ask_for_password
|
58
|
-
Timeout.timeout(
|
58
|
+
Timeout.timeout(5) do
|
59
59
|
expected_answer = "Arthur, King of the Britons"
|
60
60
|
@in.string = "#{expected_answer}\n"
|
61
61
|
actual_answer = @sui.ask_for_password("What is your name?")
|