irpack 0.2.5 → 0.2.6

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.
@@ -24,6 +24,7 @@ freely, subject to the following restrictions:
24
24
 
25
25
  require 'test/unit'
26
26
  require 'irpack'
27
+ require 'irpack/specification'
27
28
  require 'utils'
28
29
 
29
30
  class TC_IRPack < Test::Unit::TestCase
@@ -60,7 +61,7 @@ class TC_IRPack < Test::Unit::TestCase
60
61
  def test_ironruby_libraries
61
62
  libs = IRPack.ironruby_libraries
62
63
  assert(libs.size>0)
63
- libs.each do |src, dst|
64
+ libs.each do |dst, src|
64
65
  assert_match(/^stdlib\/((ruby\/1\.9\.1|ironruby)\/.+)/, dst)
65
66
  assert_match(/#{$1}$/, src)
66
67
  assert(File.file?(src))
@@ -84,16 +85,18 @@ class TC_IRPack < Test::Unit::TestCase
84
85
  RB
85
86
  f.path
86
87
  end
87
- files = {
88
- entry => 'entry.rb',
89
- hello => 'hello.rb',
88
+ spec = IRPack::Specification.new
89
+ spec.files = {
90
+ 'entry.rb' => entry,
91
+ 'hello.rb' => hello,
90
92
  }
91
- outfile = tempfilename('.exe')
92
- assert_equal(File.expand_path(outfile), IRPack.pack(outfile, files, 'entry.rb'))
93
- assert_equal('Hello World!', `#{outfile}`.chomp)
93
+ spec.output_file = tempfilename('.exe')
94
+ spec.entry_file = 'entry.rb'
95
+ assert_equal(File.expand_path(spec.output_file), IRPack.pack(spec))
96
+ assert_equal('Hello World!', `#{spec.output_file}`.chomp)
94
97
  end
95
98
 
96
- def test_pack_with_complete
99
+ def test_pack_with_embed_stdlibs
97
100
  entry = Tempfile.open(File.basename(__FILE__)) do |f|
98
101
  f.write <<-RB
99
102
  require 'stringio'
@@ -102,12 +105,13 @@ class TC_IRPack < Test::Unit::TestCase
102
105
  RB
103
106
  f.path
104
107
  end
105
- files = {
106
- entry => 'entry.rb',
108
+ spec = IRPack::Specification.new {|spec|
109
+ spec.entry_file = entry
110
+ spec.output_file = tempfilename('.exe')
111
+ spec.embed_stdlibs = true
107
112
  }
108
- outfile = tempfilename('.exe')
109
- assert_equal(File.expand_path(outfile), IRPack.pack(outfile, files, 'entry.rb', complete: true))
110
- assert_equal('Hello', `#{outfile}`.chomp)
113
+ assert_equal(File.expand_path(spec.output_file), IRPack.pack(spec))
114
+ assert_equal('Hello', `#{spec.output_file}`.chomp)
111
115
  end
112
116
  end
113
117
 
@@ -30,16 +30,16 @@ class TC_Packager < Test::Unit::TestCase
30
30
  include Utils
31
31
 
32
32
  SrcFiles = {
33
- File.join(File.dirname(__FILE__), 'test_packager.rb') => 'foo.rb',
34
- File.join(File.dirname(__FILE__), 'test_cscompiler.rb') => 'bar.rb',
33
+ 'foo.rb' => File.join(File.dirname(__FILE__), 'test_packager.rb'),
34
+ 'bar.rb' => File.join(File.dirname(__FILE__), 'test_cscompiler.rb'),
35
35
  }
36
36
 
37
37
  def test_pack
38
38
  package_file = tempfilename
39
39
  IRPack::Packager.pack(SrcFiles, package_file)
40
40
  package = System::IO::Packaging::Package.open(package_file, System::IO::FileMode.open)
41
- SrcFiles.each do |src, dest|
42
- uri = System::Uri.new(File.join('/', dest), System::UriKind.relative)
41
+ SrcFiles.each do |dst, src|
42
+ uri = System::Uri.new(File.join('/', dst), System::UriKind.relative)
43
43
  assert(package.part_exists(uri))
44
44
  stream = package.get_part(uri).get_stream
45
45
  bytes = System::Array[System::Byte].new(stream.length)
@@ -0,0 +1,237 @@
1
+ =begin
2
+ Copyright (c) 2011 Ryuichi Sakamoto.
3
+
4
+ This software is provided 'as-is', without any express or implied
5
+ warranty. In no event will the authors be held liable for any damages
6
+ arising from the use of this software.
7
+
8
+ Permission is granted to anyone to use this software for any purpose,
9
+ including commercial applications, and to alter it and redistribute it
10
+ freely, subject to the following restrictions:
11
+
12
+ 1. The origin of this software must not be misrepresented; you must not
13
+ claim that you wrote the original software. If you use this software
14
+ in a product, an acknowledgment in the product documentation would be
15
+ appreciated but is not required.
16
+
17
+ 2. Altered source versions must be plainly marked as such, and must not be
18
+ misrepresented as being the original software.
19
+
20
+ 3. This notice may not be removed or altered from any source
21
+ distribution.
22
+ =end
23
+
24
+ require 'test/unit'
25
+ require 'irpack/specification'
26
+
27
+ class TC_Specification < Test::Unit::TestCase
28
+ def test_construct
29
+ spec = IRPack::Specification.new
30
+ assert_nil(spec.output_file)
31
+ assert_nil(spec.entry_file)
32
+ assert_nil(spec.module_name)
33
+ assert(spec.files.empty?)
34
+ assert(spec.base_paths.empty?)
35
+ assert(!spec.compress)
36
+ assert_equal(:exe, spec.target)
37
+ assert(spec.embed_assemblies)
38
+ assert(!spec.embed_stdlibs)
39
+ assert_kind_of(IRPack::Specification::RuntimeOptions, spec.runtime_options)
40
+ end
41
+
42
+ def test_construct_with_block
43
+ arg = nil
44
+ spec = IRPack::Specification.new do |block_arg|
45
+ arg = block_arg
46
+ end
47
+ assert_same(arg, spec)
48
+ end
49
+
50
+ def test_map_entry_no_entry_file
51
+ spec = IRPack::Specification.new
52
+ assert_raise(ArgumentError) do
53
+ spec.map_entry
54
+ end
55
+ end
56
+
57
+ def test_map_entry_no_base_paths
58
+ spec = IRPack::Specification.new
59
+ spec.entry_file = 'bin/main.rb'
60
+ assert_equal('bin/main.rb', spec.map_entry)
61
+ end
62
+
63
+ def test_map_entry_base_paths
64
+ spec = IRPack::Specification.new
65
+ spec.entry_file = 'foo/bar/main.rb'
66
+ spec.base_paths << 'foo'
67
+ assert_equal('bar/main.rb', spec.map_entry)
68
+ end
69
+
70
+ def test_map_files_no_entry_file
71
+ spec = IRPack::Specification.new
72
+ assert_raise(ArgumentError) do
73
+ spec.map_files
74
+ end
75
+ end
76
+
77
+ def test_map_files_only_entry_file
78
+ spec = IRPack::Specification.new
79
+ spec.entry_file = 'foo.rb'
80
+ pack_files = spec.map_files
81
+ assert_equal(1, pack_files.size)
82
+ assert_equal(File.expand_path('foo.rb'), pack_files['foo.rb'])
83
+ end
84
+
85
+ def test_map_files_with_file_array
86
+ files = [
87
+ 'foo.rb',
88
+ 'foo/bar.rb',
89
+ 'foo/bar/baz.rb',
90
+ 'hoge/fuga/piyo.rb',
91
+ ]
92
+ spec = IRPack::Specification.new
93
+ spec.entry_file = files.first
94
+ spec.files = files
95
+ pack_files = spec.map_files
96
+ assert_equal(files.size, pack_files.size)
97
+ files.each do |file|
98
+ assert_equal(File.expand_path(file), pack_files[file])
99
+ end
100
+ end
101
+
102
+ def test_map_files_with_base_paths
103
+ files = [
104
+ 'bin/foo.rb',
105
+ 'lib/foo/bar.rb',
106
+ 'lib/foo/bar/baz.rb',
107
+ 'hoge/fuga/piyo.rb',
108
+ ]
109
+ spec = IRPack::Specification.new
110
+ spec.entry_file = files.first
111
+ spec.files = files
112
+ spec.base_paths << 'lib'
113
+ spec.base_paths << 'hoge'
114
+ pack_files = spec.map_files
115
+ assert_equal(files.size, pack_files.size)
116
+ assert_equal(File.expand_path('bin/foo.rb'), pack_files['bin/foo.rb'])
117
+ assert_equal(File.expand_path('lib/foo/bar.rb'), pack_files['foo/bar.rb'])
118
+ assert_equal(File.expand_path('lib/foo/bar/baz.rb'), pack_files['foo/bar/baz.rb'])
119
+ assert_equal(File.expand_path('hoge/fuga/piyo.rb'), pack_files['fuga/piyo.rb'])
120
+ end
121
+
122
+ def test_map_files_with_base_paths
123
+ files = [
124
+ 'bin/foo.rb',
125
+ 'lib/foo/bar.rb',
126
+ 'lib/foo/bar/baz.rb',
127
+ 'hoge/fuga/piyo.rb',
128
+ 'hoge/main.rb',
129
+ ]
130
+ spec = IRPack::Specification.new
131
+ spec.entry_file = 'main.rb'
132
+ spec.files = files
133
+ spec.base_paths << 'lib'
134
+ spec.base_paths << 'hoge'
135
+ spec.base_paths << 'hoge/fuga'
136
+ pack_files = spec.map_files
137
+ assert_equal(files.size, pack_files.size)
138
+ assert_equal(File.expand_path('bin/foo.rb'), pack_files['bin/foo.rb'])
139
+ assert_equal(File.expand_path('lib/foo/bar.rb'), pack_files['foo/bar.rb'])
140
+ assert_equal(File.expand_path('lib/foo/bar/baz.rb'), pack_files['foo/bar/baz.rb'])
141
+ assert_equal(File.expand_path('hoge/fuga/piyo.rb'), pack_files['piyo.rb'])
142
+ assert_equal(File.expand_path('hoge/main.rb'), pack_files['main.rb'])
143
+ end
144
+
145
+ def test_map_files_with_base_paths_no_entry
146
+ files = []
147
+ spec = IRPack::Specification.new
148
+ spec.entry_file = 'hoge/main.rb'
149
+ spec.files = files
150
+ spec.base_paths << 'lib'
151
+ spec.base_paths << 'hoge'
152
+ pack_files = spec.map_files
153
+ assert_equal(files.size+1, pack_files.size)
154
+ assert_equal(File.expand_path('hoge/main.rb'), pack_files['main.rb'])
155
+ end
156
+
157
+ def test_map_files_hash
158
+ files = {
159
+ 'main.rb' => 'bin/main.rb',
160
+ 'bin/foo.rb' => 'bin/foo.rb',
161
+ 'foo/bar.rb' => 'lib/foo/bar.rb',
162
+ 'foo/bar/baz.rb' => 'lib/foo/bar/baz.rb',
163
+ 'fuga/piyo.rb' => 'hoge/fuga/piyo.rb',
164
+ }
165
+ spec = IRPack::Specification.new
166
+ spec.entry_file = 'main.rb'
167
+ spec.files = files
168
+ pack_files = spec.map_files
169
+ assert_equal(files.size, pack_files.size)
170
+ assert_equal(File.expand_path('bin/main.rb'), pack_files['main.rb'])
171
+ assert_equal(File.expand_path('bin/foo.rb'), pack_files['bin/foo.rb'])
172
+ assert_equal(File.expand_path('lib/foo/bar.rb'), pack_files['foo/bar.rb'])
173
+ assert_equal(File.expand_path('lib/foo/bar/baz.rb'), pack_files['foo/bar/baz.rb'])
174
+ assert_equal(File.expand_path('hoge/fuga/piyo.rb'), pack_files['fuga/piyo.rb'])
175
+ end
176
+
177
+ def test_map_files_hash_no_entry
178
+ files = {}
179
+ spec = IRPack::Specification.new
180
+ spec.entry_file = 'bin/main.rb'
181
+ spec.files = files
182
+ pack_files = spec.map_files
183
+ assert_equal(files.size+1, pack_files.size)
184
+ assert_equal(File.expand_path('bin/main.rb'), pack_files['bin/main.rb'])
185
+ end
186
+ end
187
+
188
+ class TC_Specification_RuntimeOptions < Test::Unit::TestCase
189
+ def test_construct
190
+ opts = IRPack::Specification::RuntimeOptions.new
191
+ assert(!opts.debug_mode)
192
+ assert(!opts.no_adaptive_compilation)
193
+ assert_equal(-1, opts.compilation_threshold)
194
+ assert(!opts.exception_detail)
195
+ assert(!opts.show_clr_exceptions)
196
+ assert_equal(1, opts.warning_level)
197
+ assert(!opts.debug_variable)
198
+ assert(!opts.profile)
199
+ assert(!opts.trace)
200
+ assert(opts.required_paths.empty?)
201
+ assert(opts.search_paths.empty?)
202
+ assert(!opts.pass_exceptions)
203
+ assert(!opts.private_binding)
204
+ end
205
+
206
+ def test_to_hash
207
+ opts = IRPack::Specification::RuntimeOptions.new
208
+ opts.debug_mode = true
209
+ opts.no_adaptive_compilation = true
210
+ opts.compilation_threshold = 42
211
+ opts.exception_detail = true
212
+ opts.show_clr_exceptions = true
213
+ opts.warning_level = 2
214
+ opts.debug_variable = true
215
+ opts.profile = true
216
+ opts.trace = true
217
+ opts.required_paths << 'stringio'
218
+ opts.search_paths << 'lib'
219
+ opts.pass_exceptions = true
220
+ opts.private_binding = true
221
+ hash = opts.to_hash
222
+ assert_equal(opts.debug_mode, hash[:DebugMode])
223
+ assert_equal(opts.private_binding, hash[:PrivateBinding])
224
+ assert_equal(opts.no_adaptive_compilation, hash[:NoAdaptiveCompilation])
225
+ assert_equal(opts.compilation_threshold, hash[:CompilationThreshold])
226
+ assert_equal(opts.exception_detail, hash[:ExceptionDetail])
227
+ assert_equal(opts.show_clr_exceptions, hash[:ShowClrExceptions])
228
+ assert_equal(opts.pass_exceptions, hash[:PassExceptions])
229
+ assert_equal(opts.profile, hash[:Profile])
230
+ assert_equal(opts.warning_level, hash[:Verbosity])
231
+ assert_equal(opts.debug_variable, hash[:DebugVariable])
232
+ assert_equal(opts.trace, hash[:EnableTracing])
233
+ assert_equal(opts.required_paths, hash[:RequiredPaths])
234
+ assert_equal(opts.search_paths, hash[:SearchPaths])
235
+ end
236
+ end
237
+
@@ -68,6 +68,7 @@ module Utils
68
68
  Microsoft.Dynamic
69
69
  Microsoft.Scripting
70
70
  Microsoft.Scripting.Core
71
+ Microsoft.Scripting.Metadata
71
72
  IronRuby
72
73
  IronRuby.Libraries
73
74
  IronRuby.Libraries.Yaml
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: irpack
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.2.5
5
+ version: 0.2.6
6
6
  platform: ruby
7
7
  authors:
8
8
  - kumaryu
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-11-09 00:00:00 +09:00
13
+ date: 2011-12-24 00:00:00 +09:00
14
14
  default_executable:
15
15
  dependencies: []
16
16
 
@@ -33,14 +33,19 @@ files:
33
33
  - lib/irpack/entrypoint.rb
34
34
  - lib/irpack/missing.rb
35
35
  - lib/irpack/packager.rb
36
+ - lib/irpack/rake/generateexetask.rb
37
+ - lib/irpack/specification.rb
36
38
  - lib/irpack.rb
39
+ - test/fixtures/foo.rb
37
40
  - test/test_application.rb
38
41
  - test/test_bootloader.rb
39
42
  - test/test_cscompiler.rb
40
43
  - test/test_entrypoint.rb
44
+ - test/test_generateexetask.rb
41
45
  - test/test_irpack.rb
42
46
  - test/test_missing.rb
43
47
  - test/test_packager.rb
48
+ - test/test_specification.rb
44
49
  - test/utils.rb
45
50
  - README.rdoc
46
51
  has_rdoc: true
@@ -73,11 +78,14 @@ signing_key:
73
78
  specification_version: 3
74
79
  summary: Generate a standalone executable file from IronRuby scripts.
75
80
  test_files:
81
+ - test/fixtures/foo.rb
76
82
  - test/test_application.rb
77
83
  - test/test_bootloader.rb
78
84
  - test/test_cscompiler.rb
79
85
  - test/test_entrypoint.rb
86
+ - test/test_generateexetask.rb
80
87
  - test/test_irpack.rb
81
88
  - test/test_missing.rb
82
89
  - test/test_packager.rb
90
+ - test/test_specification.rb
83
91
  - test/utils.rb