gemdev 0.1.1 → 0.1.2
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.
- data/MIT-LICENSE +21 -0
- data/README +100 -0
- data/lib/gemdev.rb +14 -6
- data/lib/test/unit/subsets.rb +22 -6
- data/test/gemdev_test_suite.rb +1 -0
- data/test/subsets_test.rb +7 -2
- metadata +5 -3
data/MIT-LICENSE
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
Copyright (c) 2006-2007, Regents of the University of Colorado.
|
2
|
+
Developer:: Simon Chiang, Biomolecular Structure Program
|
3
|
+
Support:: UCHSC School of Medicine Deans Academic Enrichment Fund
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this
|
6
|
+
software and associated documentation files (the "Software"), to deal in the Software
|
7
|
+
without restriction, including without limitation the rights to use, copy, modify, merge,
|
8
|
+
publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons
|
9
|
+
to whom the Software is furnished to do so, subject to the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be included in all copies or
|
12
|
+
substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
18
|
+
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
19
|
+
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
20
|
+
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
21
|
+
OTHER DEALINGS IN THE SOFTWARE.
|
data/README
CHANGED
@@ -0,0 +1,100 @@
|
|
1
|
+
# = GemDev
|
2
|
+
# Utilities simplifying gem development.
|
3
|
+
#
|
4
|
+
# == Introduction
|
5
|
+
# RubyGems is an amazing packaging system, hands down. GemDev
|
6
|
+
# provides some extensions to make it easy to develop multiple,
|
7
|
+
# interrelated gems at once by allowing you to specify your gem
|
8
|
+
# development folders in the RubyGems configuration file (.gemrc). Additionally, test
|
9
|
+
# extensions are provided to permit test subsetting.
|
10
|
+
#
|
11
|
+
# Copyright (c) 2006-2007, Regents of the University of Colorado.
|
12
|
+
# Developer:: Simon Chiang, Biomolecular Structure Program
|
13
|
+
# Support:: UCHSC School of Medicine Deans Academic Enrichment Fund
|
14
|
+
# Licence:: MIT-Style
|
15
|
+
#
|
16
|
+
# == GemDev Usage
|
17
|
+
# For specifying development folders, add one big glob or a list of filepaths
|
18
|
+
# to the .gemrc file, keyed by 'development'. GemDev will look for 'Rakefile'
|
19
|
+
# in every folder specified and read and instantiate each Gem::Specification
|
20
|
+
# included therein. As a result, you can require the gems as if they were
|
21
|
+
# already installed.
|
22
|
+
#
|
23
|
+
# Say you were developing 'ioutils' in folder '/path/to/ioutils' with the sample
|
24
|
+
# Rakefile (see below) at '/path/to/ioutils/Rakefile'.
|
25
|
+
#
|
26
|
+
# To specify this file add to '.gemrc':
|
27
|
+
#
|
28
|
+
# development: /path/to/{ioutils, another_gem}
|
29
|
+
#
|
30
|
+
# or:
|
31
|
+
#
|
32
|
+
# development:
|
33
|
+
# - /path/to/ioutils
|
34
|
+
# - /path/to/another_gem
|
35
|
+
#
|
36
|
+
# In your scripts:
|
37
|
+
#
|
38
|
+
# require 'gemdev'
|
39
|
+
# require 'ioutils' # => now works
|
40
|
+
#
|
41
|
+
# == Subsets Usage
|
42
|
+
# Subsets are provided to make unit testing more convenient.
|
43
|
+
#
|
44
|
+
# Example:
|
45
|
+
#
|
46
|
+
# require 'gemdev'
|
47
|
+
# require 'test/unit/subsets'
|
48
|
+
#
|
49
|
+
# class YourTest < Test::Unit::TestCase
|
50
|
+
# # only runs if ENV['benchmark']=true
|
51
|
+
# def test_benchmark_some_method
|
52
|
+
# benchmark_test do |x|
|
53
|
+
# x.report("speed") {...}
|
54
|
+
# end
|
55
|
+
# end
|
56
|
+
# end
|
57
|
+
#
|
58
|
+
# == Sample Rakefile
|
59
|
+
#
|
60
|
+
# require 'rake'
|
61
|
+
# require 'rake/testtask'
|
62
|
+
# require 'rake/rdoctask'
|
63
|
+
# require 'rake/gempackagetask'
|
64
|
+
#
|
65
|
+
# # tasks
|
66
|
+
# desc 'Default: Run tests.'
|
67
|
+
# task :default => :test
|
68
|
+
#
|
69
|
+
# desc 'Run tests.'
|
70
|
+
# Rake::TestTask.new(:test) do |t|
|
71
|
+
# t.libs << 'lib'
|
72
|
+
# t.pattern = File.join('test', ENV['subset'] || '', ENV['pattern'] || '**/*_test.rb')
|
73
|
+
# t.verbose = true
|
74
|
+
# end
|
75
|
+
#
|
76
|
+
# #
|
77
|
+
# # Gem specification
|
78
|
+
# #
|
79
|
+
# Gem::manage_gems
|
80
|
+
# spec = Gem::Specification.new do |s|
|
81
|
+
# s.name = "ioutils"
|
82
|
+
# s.version = "0.1.0"
|
83
|
+
# s.author = "Simon Chiang"
|
84
|
+
# s.email = "simon.chiang@uchsc.edu"
|
85
|
+
# s.homepage = "http://rubyforge.org/projects/ioutils/"
|
86
|
+
# s.platform = Gem::Platform::RUBY
|
87
|
+
# s.files = Dir.glob("{test,lib,docs}/**/*")
|
88
|
+
# s.require_path = "lib"
|
89
|
+
# s.autorequire = "ioutils"
|
90
|
+
# s.test_file = "test/ioutils_test_suite.rb"
|
91
|
+
#
|
92
|
+
# s.has_rdoc = true
|
93
|
+
# s.extra_rdoc_files = ["README"]
|
94
|
+
# s.add_dependency("gemdev", ">= 0.1.1")
|
95
|
+
# s.add_dependency("activesupport", ">= 1.4.2")
|
96
|
+
# end
|
97
|
+
#
|
98
|
+
# Rake::GemPackageTask.new(spec) do |pkg|
|
99
|
+
# pkg.need_tar = true
|
100
|
+
# end
|
data/lib/gemdev.rb
CHANGED
@@ -15,9 +15,7 @@ module Gem
|
|
15
15
|
def full_gem_path=(input)
|
16
16
|
@full_gem_path = input
|
17
17
|
end
|
18
|
-
end
|
19
18
|
|
20
|
-
class Specification
|
21
19
|
def self.load_devel(path)
|
22
20
|
gemspecs = []
|
23
21
|
fail "NESTED Specification.load calls not allowed!" if @@gather
|
@@ -43,10 +41,18 @@ module Gem
|
|
43
41
|
@@gather = nil
|
44
42
|
end
|
45
43
|
end
|
46
|
-
end
|
47
44
|
|
48
|
-
|
49
|
-
|
45
|
+
class GemPathSearcher
|
46
|
+
def refresh!
|
47
|
+
# cut and paste of the initialize routine
|
48
|
+
@gemspecs = init_gemspecs
|
49
|
+
@lib_dirs = {}
|
50
|
+
@gemspecs.each do |spec|
|
51
|
+
@lib_dirs[spec.object_id] = lib_dirs(spec)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
50
56
|
|
51
57
|
if File.exists?(Gem.config_file)
|
52
58
|
config = YAML.load_file(Gem.config_file)
|
@@ -64,4 +70,6 @@ if File.exists?(Gem.config_file)
|
|
64
70
|
Gem.source_index.add_spec(spec)
|
65
71
|
end
|
66
72
|
end
|
67
|
-
end
|
73
|
+
end
|
74
|
+
|
75
|
+
Gem.searcher.refresh!
|
data/lib/test/unit/subsets.rb
CHANGED
@@ -9,6 +9,17 @@ require 'pp'
|
|
9
9
|
class Test::Unit::TestCase
|
10
10
|
|
11
11
|
class << self
|
12
|
+
# Access to the case-insensitive ENV variables
|
13
|
+
def env(type, reset=false)
|
14
|
+
if @env_vars.nil? || reset
|
15
|
+
@env_vars = {}
|
16
|
+
ENV.each_pair do |key, value|
|
17
|
+
@env_vars[key.downcase] = value
|
18
|
+
end
|
19
|
+
end
|
20
|
+
@env_vars[type.downcase]
|
21
|
+
end
|
22
|
+
|
12
23
|
# Causes a whole test suite to require one of the listed platforms
|
13
24
|
# in order to run. See match_platform? for details.
|
14
25
|
#
|
@@ -187,9 +198,14 @@ class Test::Unit::TestCase
|
|
187
198
|
print ' '
|
188
199
|
end
|
189
200
|
|
190
|
-
#
|
201
|
+
# Access to the case-insensitive ENV variables
|
202
|
+
def env(type)
|
203
|
+
self.class.env(type)
|
204
|
+
end
|
205
|
+
|
206
|
+
# Returns true if the env_var(var) is set and matches /^true%/i
|
191
207
|
def env_true?(var)
|
192
|
-
|
208
|
+
env(var) && env(var) =~ /^true$/i
|
193
209
|
end
|
194
210
|
|
195
211
|
# Returns true if the subset type or 'ALL' is specified in ENV
|
@@ -197,13 +213,13 @@ class Test::Unit::TestCase
|
|
197
213
|
env_true?(type) || env_true?("ALL") ? true : false
|
198
214
|
end
|
199
215
|
|
200
|
-
# Returns true if the pretty-print string for obj matches the regexp specified in
|
216
|
+
# Returns true if the pretty-print string for obj matches the regexp specified in env_var(type).
|
201
217
|
# Returns the default value if 'ALL' is specified in ENV or type is not specified in ENV.
|
202
218
|
def match_regexp?(type, obj, default=true)
|
203
219
|
return true if env_true?("ALL")
|
204
|
-
return default unless
|
220
|
+
return default unless env(type)
|
205
221
|
|
206
|
-
spp(obj) =~ Regexp.new(
|
222
|
+
spp(obj) =~ Regexp.new(env(type)) ? true : false
|
207
223
|
end
|
208
224
|
|
209
225
|
# Calling method iterates over the call stack, and returns the first calling
|
@@ -227,7 +243,7 @@ class Test::Unit::TestCase
|
|
227
243
|
def subset_test(type, skip=type[0..0].downcase, &block)
|
228
244
|
type = type.upcase
|
229
245
|
type_test = "#{type}_TEST"
|
230
|
-
if run_subset?(type) ||
|
246
|
+
if run_subset?(type) || env(type_test)
|
231
247
|
if match_regexp?(type_test, calling_method)
|
232
248
|
yield
|
233
249
|
else
|
data/test/gemdev_test_suite.rb
CHANGED
data/test/subsets_test.rb
CHANGED
@@ -2,6 +2,11 @@ require File.join(File.dirname(__FILE__), 'gemdev_test_helper.rb')
|
|
2
2
|
require 'test/unit/subsets'
|
3
3
|
|
4
4
|
class SubsetsTest < Test::Unit::TestCase
|
5
|
+
class << self
|
6
|
+
def env(type)
|
7
|
+
super(type, true)
|
8
|
+
end
|
9
|
+
end
|
5
10
|
|
6
11
|
def setup
|
7
12
|
ENV['ALL'] = nil
|
@@ -40,7 +45,7 @@ class SubsetsTest < Test::Unit::TestCase
|
|
40
45
|
assert_equal true, run_subset?('type')
|
41
46
|
end
|
42
47
|
|
43
|
-
def
|
48
|
+
def test_run_subset_true_if_ENV_all_is_true
|
44
49
|
ENV['ALL'] = "true"
|
45
50
|
assert_equal true, run_subset?('type')
|
46
51
|
end
|
@@ -61,7 +66,7 @@ class SubsetsTest < Test::Unit::TestCase
|
|
61
66
|
end
|
62
67
|
end
|
63
68
|
|
64
|
-
def
|
69
|
+
def test_match_regexp_returns_true_if_ENV_all_true
|
65
70
|
ENV['ALL'] = "true"
|
66
71
|
assert_equal true, match_regexp?('type', 1, "default")
|
67
72
|
end
|
metadata
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
|
-
rubygems_version: 0.9.
|
2
|
+
rubygems_version: 0.9.2
|
3
3
|
specification_version: 1
|
4
4
|
name: gemdev
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.1.
|
7
|
-
date: 2007-
|
6
|
+
version: 0.1.2
|
7
|
+
date: 2007-05-08 00:00:00 -06:00
|
8
8
|
summary: Making gem development a bit easier.
|
9
9
|
require_paths:
|
10
10
|
- lib
|
@@ -49,12 +49,14 @@ files:
|
|
49
49
|
- lib/test/unit
|
50
50
|
- lib/test/unit/subsets.rb
|
51
51
|
- README
|
52
|
+
- MIT-LICENSE
|
52
53
|
test_files:
|
53
54
|
- test/gemdev_test_suite.rb
|
54
55
|
rdoc_options: []
|
55
56
|
|
56
57
|
extra_rdoc_files:
|
57
58
|
- README
|
59
|
+
- MIT-LICENSE
|
58
60
|
executables: []
|
59
61
|
|
60
62
|
extensions: []
|