gsm-sources-manager 1.0.0.alpha3
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 +7 -0
- data/.codeclimate.yml +17 -0
- data/.gitignore +52 -0
- data/.rubocop.yml +1156 -0
- data/.travis.yml +9 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +35 -0
- data/LICENSE +21 -0
- data/README.md +69 -0
- data/Rakefile +24 -0
- data/docs/.gitignore +1 -0
- data/docs/_config.yml +1 -0
- data/docs/_data/changelog.yml +3 -0
- data/docs/_data/index.yml +87 -0
- data/docs/_layouts/default.html +43 -0
- data/docs/css/style.css +177 -0
- data/docs/image/gsm.png +0 -0
- data/docs/index.html +97 -0
- data/exe/gsm +139 -0
- data/gsm.gemspec +29 -0
- data/lib/gsm.rb +6 -0
- data/lib/gsm/bundle.rb +14 -0
- data/lib/gsm/gem.rb +178 -0
- data/lib/gsm/util.rb +4 -0
- data/lib/gsm/version.rb +3 -0
- data/test/conf/good.yml +6 -0
- data/test/conf/multiple.yml +6 -0
- data/test/helper.rb +18 -0
- data/test/test_bundle.rb +17 -0
- data/test/test_gem.rb +198 -0
- data/test/test_version.rb +9 -0
- metadata +137 -0
data/lib/gsm/util.rb
ADDED
data/lib/gsm/version.rb
ADDED
data/test/conf/good.yml
ADDED
data/test/helper.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
require "codeclimate-test-reporter"
|
2
|
+
CodeClimate::TestReporter.start
|
3
|
+
|
4
|
+
require "minitest/autorun"
|
5
|
+
require "shoulda-context"
|
6
|
+
require "gsm"
|
7
|
+
|
8
|
+
def get_bundle_mirror_config
|
9
|
+
outputs = `bundle config`
|
10
|
+
config_line = ""
|
11
|
+
lines = outputs.split("\n")
|
12
|
+
lines.each_index do |idx|
|
13
|
+
if lines[idx].eql?("mirror.https://rubygems.org/")
|
14
|
+
config_line = lines[(idx+1)]
|
15
|
+
end
|
16
|
+
end
|
17
|
+
config_line
|
18
|
+
end
|
data/test/test_bundle.rb
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
require "helper"
|
2
|
+
|
3
|
+
class TestBundle < Minitest::Test
|
4
|
+
context "Test bundle" do
|
5
|
+
should "mirror to url" do
|
6
|
+
Gsm::Bundle.mirror("https://gems.ruby-china.org/", "https://rubygems.org/")
|
7
|
+
output = get_bundle_mirror_config
|
8
|
+
assert_equal(true, output.end_with?("\"https://gems.ruby-china.org/\""))
|
9
|
+
end
|
10
|
+
|
11
|
+
should "reset to default url" do
|
12
|
+
Gsm::Bundle.reset
|
13
|
+
output = get_bundle_mirror_config
|
14
|
+
assert_equal(true, output.end_with?("\"https://rubygems.org/\""))
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
data/test/test_gem.rb
ADDED
@@ -0,0 +1,198 @@
|
|
1
|
+
require "helper"
|
2
|
+
|
3
|
+
class TestGem < Minitest::Test
|
4
|
+
context "init without yaml" do
|
5
|
+
context "load sources" do
|
6
|
+
setup do
|
7
|
+
system("rm test/conf/test_load.yml")
|
8
|
+
`gem sources --add https://rubygems.org/`
|
9
|
+
@gem_load = Gsm::Gem.new("test/conf/test_load.yml")
|
10
|
+
end
|
11
|
+
|
12
|
+
should "load no use_name" do
|
13
|
+
assert_equal("", @gem_load.use_name)
|
14
|
+
end
|
15
|
+
|
16
|
+
should "load sources from gem command" do
|
17
|
+
assert_equal(1, @gem_load.name_pivot)
|
18
|
+
assert_equal({"Amethyst" => "https://rubygems.org/"}, @gem_load.sources)
|
19
|
+
end
|
20
|
+
|
21
|
+
teardown do
|
22
|
+
system("rm test/conf/test_load.yml")
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
context "generate names" do
|
27
|
+
setup do
|
28
|
+
system("rm test/conf/test_name.yml")
|
29
|
+
@gem_name = Gsm::Gem.new("test/conf/test_name.yml")
|
30
|
+
end
|
31
|
+
|
32
|
+
should "pass pivot when name exsits" do
|
33
|
+
@gem_name.add("Emerald", "http://aaa")
|
34
|
+
@gem_name.load("http://aaa\nhttps://aaa\nhttp://bbb")
|
35
|
+
assert_equal(true, @gem_name.sources.has_key?("Chrysocolla"))
|
36
|
+
assert_equal(true, @gem_name.sources.has_key?("Hematite"))
|
37
|
+
end
|
38
|
+
|
39
|
+
should "add postfix when list is long" do
|
40
|
+
source_list = <<EOB
|
41
|
+
http://1
|
42
|
+
http://2
|
43
|
+
http://3
|
44
|
+
http://4
|
45
|
+
http://5
|
46
|
+
http://6
|
47
|
+
http://7
|
48
|
+
http://8
|
49
|
+
http://9
|
50
|
+
http://10
|
51
|
+
http://11
|
52
|
+
http://12
|
53
|
+
http://13
|
54
|
+
http://14
|
55
|
+
http://15
|
56
|
+
http://16
|
57
|
+
http://17
|
58
|
+
http://18
|
59
|
+
http://19
|
60
|
+
http://20
|
61
|
+
http://21
|
62
|
+
http://22
|
63
|
+
http://23
|
64
|
+
EOB
|
65
|
+
assert_equal(false, @gem_name.load(source_list))
|
66
|
+
assert_equal(11, @gem_name.sources.length)
|
67
|
+
end
|
68
|
+
|
69
|
+
teardown do
|
70
|
+
system("rm test/conf/test_name.yml")
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
context "use source" do
|
75
|
+
setup do
|
76
|
+
system("rm test/conf/test_use.yml")
|
77
|
+
@gem_use = Gsm::Gem.new("test/conf/test_use.yml")
|
78
|
+
`gem sources --add https://rubygems.org/`
|
79
|
+
end
|
80
|
+
|
81
|
+
should "succeed" do
|
82
|
+
@gem_use.use("Amethyst")
|
83
|
+
outputs = `gem sources -l`
|
84
|
+
assert_equal("*** CURRENT SOURCES ***\n\nhttps://rubygems.org/\n", outputs)
|
85
|
+
end
|
86
|
+
|
87
|
+
should "fail to apply source" do
|
88
|
+
@gem_use.add("FailSource", "https://ruby-gems.org/")
|
89
|
+
assert_equal(false, @gem_use.use("FailSource"))
|
90
|
+
end
|
91
|
+
|
92
|
+
teardown do
|
93
|
+
system("rm test/conf/test_use.yml")
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
context "add source" do
|
98
|
+
setup do
|
99
|
+
system("rm test/conf/test_add.yml")
|
100
|
+
@gem_add = Gsm::Gem.new("test/conf/test_add.yml")
|
101
|
+
end
|
102
|
+
|
103
|
+
should "return false when name is empty" do
|
104
|
+
assert_equal(false, @gem_add.add("", ""))
|
105
|
+
end
|
106
|
+
|
107
|
+
should "return false when name is nil" do
|
108
|
+
assert_equal(false, @gem_add.add(nil, ""))
|
109
|
+
end
|
110
|
+
|
111
|
+
should "return false when name's length is large than 32" do
|
112
|
+
assert_equal(false, @gem_add.add("abcdefghijklmnopqrstuvwxyzqwertyu", ""))
|
113
|
+
end
|
114
|
+
|
115
|
+
should "return false when name exists" do
|
116
|
+
assert_equal(false, @gem_add.add("Amethyst", ""))
|
117
|
+
end
|
118
|
+
|
119
|
+
should "return false when url is invalid" do
|
120
|
+
assert_equal(false, @gem_add.add("Test", "http-://rubygems.org/"))
|
121
|
+
end
|
122
|
+
|
123
|
+
should "return name when succeed" do
|
124
|
+
assert_equal("Test", @gem_add.add("Test", "https://rubygems.org/"))
|
125
|
+
assert_equal(true, @gem_add.sources.has_key?("Test"))
|
126
|
+
assert_equal("https://rubygems.org/", @gem_add.sources["Test"])
|
127
|
+
end
|
128
|
+
|
129
|
+
teardown do
|
130
|
+
system("rm test/conf/test_add.yml")
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
context "delete source" do
|
135
|
+
setup do
|
136
|
+
system("rm test/conf/test_del.yml")
|
137
|
+
@gem_del = Gsm::Gem.new("test/conf/test_del.yml")
|
138
|
+
@gem_del.add("Test", "https://rubygems.org/")
|
139
|
+
end
|
140
|
+
|
141
|
+
should "return false if source is in use" do
|
142
|
+
@gem_del.add("Amethyst", "https://rubygems.org/")
|
143
|
+
@gem_del.use("Amethyst")
|
144
|
+
assert_equal(false, @gem_del.del("Amethyst"))
|
145
|
+
end
|
146
|
+
|
147
|
+
should "return nil if source inexists" do
|
148
|
+
assert_nil(@gem_del.del("aaa"))
|
149
|
+
end
|
150
|
+
|
151
|
+
should "return name if succeed" do
|
152
|
+
assert_equal("Test", @gem_del.del("Test"))
|
153
|
+
end
|
154
|
+
|
155
|
+
teardown do
|
156
|
+
system("rm test/conf/test_del.yml")
|
157
|
+
end
|
158
|
+
end
|
159
|
+
end
|
160
|
+
|
161
|
+
context "init with good yaml" do
|
162
|
+
setup do
|
163
|
+
@gem = Gsm::Gem.new("test/conf/good.yml")
|
164
|
+
system("cp test/conf/good.yml test/conf/good.yml.bak")
|
165
|
+
end
|
166
|
+
|
167
|
+
should "use_name be rubygems" do
|
168
|
+
assert_equal("rubygems", @gem.use_name)
|
169
|
+
assert_equal("rubygems", @gem.get)
|
170
|
+
end
|
171
|
+
|
172
|
+
should "list sources" do
|
173
|
+
expect = {
|
174
|
+
"rubygems" => "https://rubygems.org/",
|
175
|
+
"rubychina" => "https://gems.ruby-china.org/",
|
176
|
+
"rubytaobao" => "https://ruby.taobao.org/"
|
177
|
+
}
|
178
|
+
assert_equal(expect, @gem.sources)
|
179
|
+
end
|
180
|
+
|
181
|
+
should "return gem url in use when calling to_s" do
|
182
|
+
assert_equal("https://rubygems.org/", @gem.to_s)
|
183
|
+
end
|
184
|
+
|
185
|
+
should "reset all data" do
|
186
|
+
@gem.reset
|
187
|
+
assert_empty(@gem.use_name)
|
188
|
+
assert_empty(@gem.sources)
|
189
|
+
end
|
190
|
+
|
191
|
+
teardown do
|
192
|
+
system("mv test/conf/good.yml.bak test/conf/good.yml")
|
193
|
+
end
|
194
|
+
end
|
195
|
+
|
196
|
+
context "init with multiple local gem sources" do
|
197
|
+
end
|
198
|
+
end
|
metadata
ADDED
@@ -0,0 +1,137 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: gsm-sources-manager
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0.alpha3
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- David Zhang
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-10-18 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: minitest
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: shoulda-context
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: codeclimate-test-reporter
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: mercenary
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 0.3.6
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 0.3.6
|
69
|
+
description: GSM is a simple sources manager for RubyGems.
|
70
|
+
email:
|
71
|
+
- crispgm@gmail.com
|
72
|
+
executables:
|
73
|
+
- gsm
|
74
|
+
extensions: []
|
75
|
+
extra_rdoc_files: []
|
76
|
+
files:
|
77
|
+
- ".codeclimate.yml"
|
78
|
+
- ".gitignore"
|
79
|
+
- ".rubocop.yml"
|
80
|
+
- ".travis.yml"
|
81
|
+
- Gemfile
|
82
|
+
- Gemfile.lock
|
83
|
+
- LICENSE
|
84
|
+
- README.md
|
85
|
+
- Rakefile
|
86
|
+
- docs/.gitignore
|
87
|
+
- docs/_config.yml
|
88
|
+
- docs/_data/changelog.yml
|
89
|
+
- docs/_data/index.yml
|
90
|
+
- docs/_layouts/default.html
|
91
|
+
- docs/css/style.css
|
92
|
+
- docs/image/gsm.png
|
93
|
+
- docs/index.html
|
94
|
+
- exe/gsm
|
95
|
+
- gsm.gemspec
|
96
|
+
- lib/gsm.rb
|
97
|
+
- lib/gsm/bundle.rb
|
98
|
+
- lib/gsm/gem.rb
|
99
|
+
- lib/gsm/util.rb
|
100
|
+
- lib/gsm/version.rb
|
101
|
+
- test/conf/good.yml
|
102
|
+
- test/conf/multiple.yml
|
103
|
+
- test/helper.rb
|
104
|
+
- test/test_bundle.rb
|
105
|
+
- test/test_gem.rb
|
106
|
+
- test/test_version.rb
|
107
|
+
homepage: https://github.com/crispgm/gsm
|
108
|
+
licenses:
|
109
|
+
- MIT
|
110
|
+
metadata: {}
|
111
|
+
post_install_message:
|
112
|
+
rdoc_options: []
|
113
|
+
require_paths:
|
114
|
+
- lib
|
115
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
116
|
+
requirements:
|
117
|
+
- - ">="
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
version: 2.3.0
|
120
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: 1.3.1
|
125
|
+
requirements: []
|
126
|
+
rubyforge_project:
|
127
|
+
rubygems_version: 2.5.1
|
128
|
+
signing_key:
|
129
|
+
specification_version: 4
|
130
|
+
summary: GSM Sources Manager
|
131
|
+
test_files:
|
132
|
+
- test/conf/good.yml
|
133
|
+
- test/conf/multiple.yml
|
134
|
+
- test/helper.rb
|
135
|
+
- test/test_bundle.rb
|
136
|
+
- test/test_gem.rb
|
137
|
+
- test/test_version.rb
|