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.
@@ -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