gsm-sources-manager 1.0.0.alpha3

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,4 @@
1
+ module Gsm
2
+ module Util
3
+ end
4
+ end
@@ -0,0 +1,3 @@
1
+ module Gsm
2
+ VERSION = "1.0.0.alpha3".freeze
3
+ end
@@ -0,0 +1,6 @@
1
+ ---
2
+ :use: rubygems
3
+ :sources:
4
+ rubygems: https://rubygems.org/
5
+ rubychina: https://gems.ruby-china.org/
6
+ rubytaobao: https://ruby.taobao.org/
@@ -0,0 +1,6 @@
1
+ ---
2
+ :sources:
3
+ rubygems: https://rubygems.org/
4
+ rubychina: https://gems.ruby-china.org/
5
+ rubytaobao: https://ruby.taobao.org/
6
+ :use: rubygems
@@ -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
@@ -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
@@ -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
@@ -0,0 +1,9 @@
1
+ require "helper"
2
+
3
+ class TestVersion < Minitest::Test
4
+ context nil do
5
+ should "return current version" do
6
+ pass Gsm::VERSION
7
+ end
8
+ end
9
+ 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