rubuild-core 0.0.3

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,45 @@
1
+ require 'rubuild'
2
+ require 'test/unit'
3
+
4
+ class TC_Env_Provider < Test::Unit::TestCase
5
+ def setup
6
+ @rctx = Rubuild::Build::Simple::Factory.new
7
+ @env = Rubuild::Env.new(@rctx)
8
+ @ran = Hash.new
9
+ end
10
+
11
+ def teardown
12
+ @rctx = nil
13
+ @env = nil
14
+ @ran = nil
15
+ end
16
+
17
+ def test_provider
18
+ { 'key1' => 'val1', 'key2' => 'val2' }.each_pair do |key, value|
19
+ loc = Rubuild::Env::Location.new(key, @rctx)
20
+ loc.set_data(value)
21
+ @env.provide(key, loc)
22
+ end
23
+ { 'provide1' => 'key1', 'provide2' => 'key2' }.each_pair do
24
+ |prov_key, req_key|
25
+ Rubuild::Env::Provider.new(@env, prov_key).require(req_key).exec do
26
+ |provider, req|
27
+ provider.set(req + 'extended')
28
+ @ran[prov_key] = true
29
+ end
30
+ end
31
+ Rubuild::Env::Provider.new(@env, 'top').require_(%w[provide1 provide2]).exec do
32
+ |provider|
33
+ provider.set('top')
34
+ end
35
+
36
+ loc1 = Rubuild::Env::Location.new('loc1', @rctx)
37
+ @env.require('top', loc1)
38
+ ctx = @rctx.create_context
39
+ loc1.found_dep.load(ctx)
40
+ ctx.run
41
+ assert_equal('top', loc1.data)
42
+ assert(@ran['provide1'])
43
+ assert(@ran['provide2'])
44
+ end
45
+ end
@@ -0,0 +1,52 @@
1
+ require 'rubuild'
2
+ require 'test/unit'
3
+
4
+ class TC_Env_Requirer < Test::Unit::TestCase
5
+ def setup
6
+ @rctx = Rubuild::Build::Simple::Factory.new
7
+ @env = Rubuild::Env.new(@rctx)
8
+ end
9
+
10
+ def teardown
11
+ @rctx = nil
12
+ @env = nil
13
+ end
14
+
15
+ def populate_env
16
+ { 'key1' => 'val1', 'key2' => 'val2' }.each_pair do |key, value|
17
+ loc = Rubuild::Env::Location.new(key, @rctx)
18
+ loc.set_data(value)
19
+ @env.provide(key, loc)
20
+ end
21
+ end
22
+
23
+ def test_requirerHash
24
+ self.populate_env
25
+ req = Rubuild::Env::Requirer.new(@env, :req1 => 'key1', :req2 => 'key2')
26
+ bctx = @rctx.create_context
27
+ req.location.found_dep.load(bctx)
28
+ bctx.run
29
+ assert_equal('val1', req.location.data[:req1])
30
+ assert_equal('val2', req.location.data[:req2])
31
+ end
32
+
33
+ def test_requirerArray
34
+ self.populate_env
35
+ req = Rubuild::Env::Requirer.new(@env, ['key1', 'key2'])
36
+ bctx = @rctx.create_context
37
+ req.location.found_dep.load(bctx)
38
+ bctx.run
39
+ assert_equal('val1', req.location.data[0])
40
+ assert_equal('val2', req.location.data[1])
41
+ assert_equal(2, req.location.data.size)
42
+ end
43
+
44
+ def test_requirerString
45
+ self.populate_env
46
+ req = Rubuild::Env::Requirer.new(@env, 'key1')
47
+ bctx = @rctx.create_context
48
+ req.location.found_dep.load(bctx)
49
+ bctx.run
50
+ assert_equal('val1', req.location.data)
51
+ end
52
+ end
@@ -0,0 +1,63 @@
1
+ require 'rubuild'
2
+ require 'test/unit'
3
+
4
+ class TC_Info < Test::Unit::TestCase
5
+ def setup
6
+ build_factory = Rubuild::Build::Simple::Factory.new
7
+ @env = Rubuild::Env.new(build_factory)
8
+ @info = Rubuild::Load::Info.new(@env, 'info', 'info')
9
+ end
10
+ def teardown
11
+ end
12
+
13
+ def test_initialization
14
+ assert_same(@info.env, @env)
15
+ assert_equal(@info.location.name, 'info')
16
+ assert_equal(@info.path, 'info')
17
+ end
18
+
19
+ def test_foundDepLoadWorks
20
+ rctx = @env.build_factory.create_context
21
+ @info.location.found_dep.load(rctx)
22
+ rctx.run
23
+ end
24
+
25
+ def test_provideCreatesProvider
26
+ provider = @info.provide(':provide')
27
+ assert(Rubuild::Env::Provider === provider)
28
+ end
29
+
30
+ def provideRequired
31
+ l = Rubuild::Env::Location.new('require', @env.build_factory)
32
+ l.set_data('required')
33
+ @env.provide('require', l)
34
+ end
35
+
36
+ def test_requireCreatesRequirer
37
+ self.provideRequired
38
+ requirer = @info.require('require')
39
+ assert(Rubuild::Env::Requirer === requirer)
40
+ end
41
+
42
+ def test_require!
43
+ self.provideRequired
44
+ @info.require!('require') do |required|
45
+ l = Rubuild::Env::Location.new('provide', @env.build_factory)
46
+ l.set_data(required)
47
+ @env.provide('provide', l)
48
+ end
49
+ rctx = @env.build_factory.create_context
50
+ @info.location.found_dep.load(rctx)
51
+ rctx.run
52
+ assert(@env.has_provider?('provide'))
53
+ end
54
+
55
+ def test_withMeansInstanceEval
56
+ self.provideRequired
57
+ @info.with do
58
+ self.provide('foo').exec do |provider|
59
+ provider.set('foo')
60
+ end
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,119 @@
1
+ require 'rubuild'
2
+ require 'test/unit'
3
+
4
+ class TC_Loader < Test::Unit::TestCase
5
+ TEST_EMPTY = <<T_END
6
+ # empty
7
+ T_END
8
+ TEST_PROVIDE = <<T_END
9
+ p = self.rubuild_info.provide(':key')
10
+ p.exec do
11
+ p.set('foo')
12
+ end
13
+ T_END
14
+
15
+ TESTS = {
16
+ 'empty' => TEST_EMPTY,
17
+ 'provide' => TEST_PROVIDE,
18
+ }
19
+
20
+ def setup
21
+ build_factory = Rubuild::Build::Simple::Factory.new
22
+ @env = Rubuild::Env.new(build_factory)
23
+ @loader = Rubuild::Load::Loader.new(Rubuild::Load::NameSpace::Factory.new)
24
+ @incdir = 'test_rubuild_base_loader'
25
+ Dir.mkdir(@incdir)
26
+ TESTS.each_pair do |fname, contents|
27
+ File.open("#{@incdir}/#{fname}", 'w') do |f|
28
+ f.write(contents)
29
+ end
30
+ end
31
+ end
32
+ def teardown
33
+ @env = nil
34
+ TESTS.keys.each do |fname|
35
+ File.unlink("#{@incdir}/#{fname}")
36
+ end
37
+ Dir.rmdir(@incdir)
38
+ end
39
+
40
+ def test_initialization
41
+ assert(Rubuild::Load::NameSpace::Factory === @loader.ns_factory)
42
+ assert_equal(@loader.inc_paths, [])
43
+ end
44
+
45
+ def test_errorInitialization
46
+ error = Rubuild::Load::Loader::Error.new(@loader, 'message')
47
+ assert_same(error.loader, @loader)
48
+ assert_equal(error.message, 'message')
49
+ end
50
+ def test_errorUnprovisionedInitialization
51
+ error = Rubuild::Load::Loader::Error::Unprovisioned.new(@loader, :findFile)
52
+ assert_same(error.loader, @loader)
53
+ assert_same(error.operation, :findFile)
54
+ assert_equal(error.message, 'findFile method called prior to provision.')
55
+ end
56
+
57
+ def incTestPath
58
+ @loader.inc_paths << @incdir
59
+ end
60
+ def provision
61
+ @loader.provision(@env, 'load/rb')
62
+ end
63
+ def test_provisionCreatesProvider
64
+ self.provision
65
+ assert(@env.has_provider?('load/rb'))
66
+ end
67
+ def test_provisionMeansFrozen
68
+ self.provision
69
+ assert(@loader.frozen?)
70
+ begin
71
+ @loader.inc_paths << 'foo'
72
+ rescue
73
+ assert(true)
74
+ else
75
+ fail("no exception raised")
76
+ end
77
+ end
78
+ def test_provisionProviderIsLoader
79
+ self.provision
80
+ req = Rubuild::Env::Location.new('location', @env.build_factory)
81
+ @env.require('load/rb', req)
82
+ bctx = @env.build_factory.create_context
83
+ req.found_dep.load(bctx)
84
+ bctx.run
85
+ assert_same(req.data, @loader)
86
+ end
87
+ def test_findWithoutProvisionRaisesUnprovisionedError
88
+ self.incTestPath
89
+ assert_raises(Rubuild::Load::Loader::Error::Unprovisioned) do
90
+ @loader.findFile('empty')
91
+ end
92
+ end
93
+ def test_findsEmpty
94
+ self.incTestPath
95
+ self.provision
96
+ assert_equal(
97
+ File.expand_path(@loader.findFile('empty')),
98
+ File.expand_path("#{@incdir}/empty"))
99
+ end
100
+
101
+ def test_loadsProvide
102
+ self.incTestPath
103
+ self.provision
104
+ loc = @loader.loadFile(@env, 'provide')
105
+ rctx = @env.build_factory.create_context
106
+ loc.found_dep.load(rctx)
107
+ rctx.run
108
+ assert(@env.has_provider?('provide:key'))
109
+ end
110
+ def test_loadsString
111
+ self.incTestPath
112
+ self.provision
113
+ loc = @loader.loadString(@env, TEST_PROVIDE, 'provide')
114
+ rctx = @env.build_factory.create_context
115
+ loc.found_dep.load(rctx)
116
+ rctx.run
117
+ assert(@env.has_provider?('provide:key'))
118
+ end
119
+ end
@@ -0,0 +1,43 @@
1
+ require 'rubuild'
2
+ require 'test/unit'
3
+
4
+ class TC_NameSpace < Test::Unit::TestCase
5
+ def setup
6
+ @namespace_factory = Rubuild::Load::NameSpace::Factory.new
7
+ end
8
+
9
+ def teardown
10
+ @ns = nil
11
+ end
12
+
13
+ def createNs
14
+ @ns = @namespace_factory.create
15
+ end
16
+ def test_createReturnsContext
17
+ self.createNs
18
+ assert_same(@ns.superclass, Rubuild::Load::NameSpace::Context)
19
+ end
20
+ def test_contextHasRubuildInfo
21
+ self.createNs
22
+ assert_nothing_raised do
23
+ @ns.rubuild_info = true
24
+ end
25
+ end
26
+ def test_rubuildInfoIsAccessibleInNamespace
27
+ self.createNs
28
+ @ns.rubuild_info = Array.new
29
+ @ns.instance_eval do
30
+ self.rubuild_info << self
31
+ end
32
+ assert_equal(@ns.rubuild_info, [ @ns ])
33
+ end
34
+ def test_cannotDefineInstanceMethods
35
+ self.createNs
36
+ assert_raises(Rubuild::Load::NameSpace::Context::Error::InstanceMethod) do
37
+ @ns.class_eval do
38
+ def foo
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,32 @@
1
+ require 'rubuild'
2
+ require 'test/unit'
3
+
4
+ class TC_Options < Test::Unit::TestCase
5
+ def setup
6
+ end
7
+ def teardown
8
+ end
9
+
10
+ def test_defaults
11
+ opts = Rubuild::Options.new(%w{})
12
+ assert_equal([], opts.inc_paths)
13
+ assert_equal('Rutop', opts.file)
14
+ assert_equal([], opts.args_left)
15
+ end
16
+ def test_withOneIncPath
17
+ opts = Rubuild::Options.new(%w{-I foo})
18
+ assert_equal(['foo'], opts.inc_paths)
19
+ end
20
+ def test_withMultipleIncPaths
21
+ opts = Rubuild::Options.new(%w{-I foo -I bar})
22
+ assert_equal(['foo', 'bar'], opts.inc_paths)
23
+ end
24
+ def test_givenFile
25
+ opts = Rubuild::Options.new(%w{-f foo})
26
+ assert_equal('foo', opts.file)
27
+ end
28
+ def test_argsLeft
29
+ opts = Rubuild::Options.new(%w{-- a b})
30
+ assert_equal(['a', 'b'], opts.args_left)
31
+ end
32
+ end
metadata ADDED
@@ -0,0 +1,159 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rubuild-core
3
+ version: !ruby/object:Gem::Version
4
+ hash: 25
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 3
10
+ version: 0.0.3
11
+ platform: ruby
12
+ authors:
13
+ - Aidan Cully
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2011-01-01 00:00:00 -05:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: safer
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ hash: 19
30
+ segments:
31
+ - 0
32
+ - 3
33
+ - 0
34
+ version: 0.3.0
35
+ type: :runtime
36
+ version_requirements: *id001
37
+ - !ruby/object:Gem::Dependency
38
+ name: rubyforge
39
+ prerelease: false
40
+ requirement: &id002 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ hash: 7
46
+ segments:
47
+ - 2
48
+ - 0
49
+ - 4
50
+ version: 2.0.4
51
+ type: :development
52
+ version_requirements: *id002
53
+ - !ruby/object:Gem::Dependency
54
+ name: hoe
55
+ prerelease: false
56
+ requirement: &id003 !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ hash: 19
62
+ segments:
63
+ - 2
64
+ - 6
65
+ - 2
66
+ version: 2.6.2
67
+ type: :development
68
+ version_requirements: *id003
69
+ description: ""
70
+ email:
71
+ - aidan@panix.com
72
+ executables:
73
+ - rubuild
74
+ extensions: []
75
+
76
+ extra_rdoc_files:
77
+ - History.txt
78
+ - Manifest.txt
79
+ files:
80
+ - .autotest
81
+ - History.txt
82
+ - Manifest.txt
83
+ - Rakefile
84
+ - README.rdoc
85
+ - bin/rubuild
86
+ - examples/printargs
87
+ - lib/rubuild.rb
88
+ - lib/rubuild/build.rb
89
+ - lib/rubuild/build/context.rb
90
+ - lib/rubuild/build/dep.rb
91
+ - lib/rubuild/build/factory.rb
92
+ - lib/rubuild/build/simple.rb
93
+ - lib/rubuild/build/simple/context.rb
94
+ - lib/rubuild/build/simple/dep.rb
95
+ - lib/rubuild/build/simple/factory.rb
96
+ - lib/rubuild/env.rb
97
+ - lib/rubuild/env/location.rb
98
+ - lib/rubuild/env/provider.rb
99
+ - lib/rubuild/env/requirer.rb
100
+ - lib/rubuild/load.rb
101
+ - lib/rubuild/load/info.rb
102
+ - lib/rubuild/load/loader.rb
103
+ - lib/rubuild/load/namespace.rb
104
+ - lib/rubuild/options.rb
105
+ - lib/rubuild/util.rb
106
+ - test/test_dep.rb
107
+ - test/test_env.rb
108
+ - test/test_env_location.rb
109
+ - test/test_env_provider.rb
110
+ - test/test_env_requirer.rb
111
+ - test/test_load_info.rb
112
+ - test/test_load_loader.rb
113
+ - test/test_load_namespace.rb
114
+ - test/test_options.rb
115
+ has_rdoc: true
116
+ homepage: http://rubuild.rubyforge.org
117
+ licenses: []
118
+
119
+ post_install_message:
120
+ rdoc_options:
121
+ - --main
122
+ - README.rdoc
123
+ require_paths:
124
+ - lib
125
+ required_ruby_version: !ruby/object:Gem::Requirement
126
+ none: false
127
+ requirements:
128
+ - - ">="
129
+ - !ruby/object:Gem::Version
130
+ hash: 3
131
+ segments:
132
+ - 0
133
+ version: "0"
134
+ required_rubygems_version: !ruby/object:Gem::Requirement
135
+ none: false
136
+ requirements:
137
+ - - ">="
138
+ - !ruby/object:Gem::Version
139
+ hash: 3
140
+ segments:
141
+ - 0
142
+ version: "0"
143
+ requirements: []
144
+
145
+ rubyforge_project: rubuild
146
+ rubygems_version: 1.3.7
147
+ signing_key:
148
+ specification_version: 3
149
+ summary: ""
150
+ test_files:
151
+ - test/test_dep.rb
152
+ - test/test_env.rb
153
+ - test/test_env_location.rb
154
+ - test/test_env_provider.rb
155
+ - test/test_env_requirer.rb
156
+ - test/test_load_info.rb
157
+ - test/test_load_loader.rb
158
+ - test/test_load_namespace.rb
159
+ - test/test_options.rb