elliottcable-echoe 3.1.1

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.
Files changed (114) hide show
  1. data/CHANGELOG +69 -0
  2. data/LICENSE +184 -0
  3. data/MIT-LICENSE +21 -0
  4. data/Manifest +113 -0
  5. data/README +114 -0
  6. data/Rakefile +15 -0
  7. data/TODO +4 -0
  8. data/echoe.gemspec +37 -0
  9. data/lib/echoe/client.rb +25 -0
  10. data/lib/echoe/extensions.rb +57 -0
  11. data/lib/echoe/platform.rb +36 -0
  12. data/lib/echoe/rubygems.rb +41 -0
  13. data/lib/echoe.rb +717 -0
  14. data/vendor/rake/CHANGES +400 -0
  15. data/vendor/rake/MIT-LICENSE +21 -0
  16. data/vendor/rake/README +285 -0
  17. data/vendor/rake/Rakefile +418 -0
  18. data/vendor/rake/TODO +20 -0
  19. data/vendor/rake/bin/rake +31 -0
  20. data/vendor/rake/doc/example/Rakefile1 +38 -0
  21. data/vendor/rake/doc/example/Rakefile2 +35 -0
  22. data/vendor/rake/doc/example/a.c +6 -0
  23. data/vendor/rake/doc/example/b.c +6 -0
  24. data/vendor/rake/doc/example/main.c +11 -0
  25. data/vendor/rake/doc/glossary.rdoc +51 -0
  26. data/vendor/rake/doc/jamis.rb +591 -0
  27. data/vendor/rake/doc/proto_rake.rdoc +127 -0
  28. data/vendor/rake/doc/rake.1.gz +0 -0
  29. data/vendor/rake/doc/rakefile.rdoc +534 -0
  30. data/vendor/rake/doc/rational.rdoc +151 -0
  31. data/vendor/rake/doc/release_notes/rake-0.4.14.rdoc +23 -0
  32. data/vendor/rake/doc/release_notes/rake-0.4.15.rdoc +35 -0
  33. data/vendor/rake/doc/release_notes/rake-0.5.0.rdoc +53 -0
  34. data/vendor/rake/doc/release_notes/rake-0.5.3.rdoc +78 -0
  35. data/vendor/rake/doc/release_notes/rake-0.5.4.rdoc +46 -0
  36. data/vendor/rake/doc/release_notes/rake-0.6.0.rdoc +141 -0
  37. data/vendor/rake/doc/release_notes/rake-0.7.0.rdoc +119 -0
  38. data/vendor/rake/doc/release_notes/rake-0.7.1.rdoc +59 -0
  39. data/vendor/rake/doc/release_notes/rake-0.7.2.rdoc +121 -0
  40. data/vendor/rake/doc/release_notes/rake-0.7.3.rdoc +47 -0
  41. data/vendor/rake/doc/release_notes/rake-0.8.0.rdoc +114 -0
  42. data/vendor/rake/doc/release_notes/rake-0.8.2.rdoc +165 -0
  43. data/vendor/rake/doc/release_notes/rake-0.8.3.rdoc +112 -0
  44. data/vendor/rake/install.rb +88 -0
  45. data/vendor/rake/lib/rake/classic_namespace.rb +8 -0
  46. data/vendor/rake/lib/rake/clean.rb +33 -0
  47. data/vendor/rake/lib/rake/contrib/compositepublisher.rb +24 -0
  48. data/vendor/rake/lib/rake/contrib/ftptools.rb +153 -0
  49. data/vendor/rake/lib/rake/contrib/publisher.rb +75 -0
  50. data/vendor/rake/lib/rake/contrib/rubyforgepublisher.rb +18 -0
  51. data/vendor/rake/lib/rake/contrib/sshpublisher.rb +47 -0
  52. data/vendor/rake/lib/rake/contrib/sys.rb +209 -0
  53. data/vendor/rake/lib/rake/gempackagetask.rb +103 -0
  54. data/vendor/rake/lib/rake/loaders/makefile.rb +35 -0
  55. data/vendor/rake/lib/rake/packagetask.rb +185 -0
  56. data/vendor/rake/lib/rake/rake_test_loader.rb +5 -0
  57. data/vendor/rake/lib/rake/rdoctask.rb +147 -0
  58. data/vendor/rake/lib/rake/ruby182_test_unit_fix.rb +23 -0
  59. data/vendor/rake/lib/rake/runtest.rb +23 -0
  60. data/vendor/rake/lib/rake/tasklib.rb +23 -0
  61. data/vendor/rake/lib/rake/testtask.rb +161 -0
  62. data/vendor/rake/lib/rake/win32.rb +54 -0
  63. data/vendor/rake/lib/rake.rb +2468 -0
  64. data/vendor/rake/test/capture_stdout.rb +26 -0
  65. data/vendor/rake/test/check_expansion.rb +5 -0
  66. data/vendor/rake/test/contrib/test_sys.rb +47 -0
  67. data/vendor/rake/test/data/chains/Rakefile +15 -0
  68. data/vendor/rake/test/data/default/Rakefile +19 -0
  69. data/vendor/rake/test/data/dryrun/Rakefile +22 -0
  70. data/vendor/rake/test/data/file_creation_task/Rakefile +33 -0
  71. data/vendor/rake/test/data/imports/Rakefile +19 -0
  72. data/vendor/rake/test/data/imports/deps.mf +1 -0
  73. data/vendor/rake/test/data/multidesc/Rakefile +17 -0
  74. data/vendor/rake/test/data/namespace/Rakefile +57 -0
  75. data/vendor/rake/test/data/rakelib/test1.rb +3 -0
  76. data/vendor/rake/test/data/rbext/rakefile.rb +3 -0
  77. data/vendor/rake/test/data/sample.mf +12 -0
  78. data/vendor/rake/test/data/statusreturn/Rakefile +8 -0
  79. data/vendor/rake/test/data/unittest/Rakefile +1 -0
  80. data/vendor/rake/test/filecreation.rb +32 -0
  81. data/vendor/rake/test/functional.rb +15 -0
  82. data/vendor/rake/test/in_environment.rb +30 -0
  83. data/vendor/rake/test/rake_test_setup.rb +10 -0
  84. data/vendor/rake/test/reqfile.rb +3 -0
  85. data/vendor/rake/test/reqfile2.rb +3 -0
  86. data/vendor/rake/test/session_functional.rb +337 -0
  87. data/vendor/rake/test/shellcommand.rb +3 -0
  88. data/vendor/rake/test/test_application.rb +694 -0
  89. data/vendor/rake/test/test_clean.rb +14 -0
  90. data/vendor/rake/test/test_definitions.rb +82 -0
  91. data/vendor/rake/test/test_earlytime.rb +35 -0
  92. data/vendor/rake/test/test_extension.rb +63 -0
  93. data/vendor/rake/test/test_file_creation_task.rb +62 -0
  94. data/vendor/rake/test/test_file_task.rb +139 -0
  95. data/vendor/rake/test/test_filelist.rb +618 -0
  96. data/vendor/rake/test/test_fileutils.rb +250 -0
  97. data/vendor/rake/test/test_ftp.rb +59 -0
  98. data/vendor/rake/test/test_invocation_chain.rb +75 -0
  99. data/vendor/rake/test/test_makefile_loader.rb +25 -0
  100. data/vendor/rake/test/test_multitask.rb +45 -0
  101. data/vendor/rake/test/test_namespace.rb +36 -0
  102. data/vendor/rake/test/test_package_task.rb +116 -0
  103. data/vendor/rake/test/test_pathmap.rb +209 -0
  104. data/vendor/rake/test/test_rake.rb +41 -0
  105. data/vendor/rake/test/test_require.rb +33 -0
  106. data/vendor/rake/test/test_rules.rb +347 -0
  107. data/vendor/rake/test/test_task_arguments.rb +89 -0
  108. data/vendor/rake/test/test_task_manager.rb +170 -0
  109. data/vendor/rake/test/test_tasklib.rb +12 -0
  110. data/vendor/rake/test/test_tasks.rb +371 -0
  111. data/vendor/rake/test/test_test_task.rb +75 -0
  112. data/vendor/rake/test/test_top_level_functions.rb +84 -0
  113. data/vendor/rake/test/test_win32.rb +57 -0
  114. metadata +195 -0
@@ -0,0 +1,185 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # Define a package task libarary to aid in the definition of
4
+ # redistributable package files.
5
+
6
+ require 'rake'
7
+ require 'rake/tasklib'
8
+
9
+ module Rake
10
+
11
+ # Create a packaging task that will package the project into
12
+ # distributable files (e.g zip archive or tar files).
13
+ #
14
+ # The PackageTask will create the following targets:
15
+ #
16
+ # [<b>:package</b>]
17
+ # Create all the requested package files.
18
+ #
19
+ # [<b>:clobber_package</b>]
20
+ # Delete all the package files. This target is automatically
21
+ # added to the main clobber target.
22
+ #
23
+ # [<b>:repackage</b>]
24
+ # Rebuild the package files from scratch, even if they are not out
25
+ # of date.
26
+ #
27
+ # [<b>"<em>package_dir</em>/<em>name</em>-<em>version</em>.tgz"</b>]
28
+ # Create a gzipped tar package (if <em>need_tar</em> is true).
29
+ #
30
+ # [<b>"<em>package_dir</em>/<em>name</em>-<em>version</em>.tar.gz"</b>]
31
+ # Create a gzipped tar package (if <em>need_tar_gz</em> is true).
32
+ #
33
+ # [<b>"<em>package_dir</em>/<em>name</em>-<em>version</em>.tar.bz2"</b>]
34
+ # Create a bzip2'd tar package (if <em>need_tar_bz2</em> is true).
35
+ #
36
+ # [<b>"<em>package_dir</em>/<em>name</em>-<em>version</em>.zip"</b>]
37
+ # Create a zip package archive (if <em>need_zip</em> is true).
38
+ #
39
+ # Example:
40
+ #
41
+ # Rake::PackageTask.new("rake", "1.2.3") do |p|
42
+ # p.need_tar = true
43
+ # p.package_files.include("lib/**/*.rb")
44
+ # end
45
+ #
46
+ class PackageTask < TaskLib
47
+ # Name of the package (from the GEM Spec).
48
+ attr_accessor :name
49
+
50
+ # Version of the package (e.g. '1.3.2').
51
+ attr_accessor :version
52
+
53
+ # Directory used to store the package files (default is 'pkg').
54
+ attr_accessor :package_dir
55
+
56
+ # True if a gzipped tar file (tgz) should be produced (default is false).
57
+ attr_accessor :need_tar
58
+
59
+ # True if a gzipped tar file (tar.gz) should be produced (default is false).
60
+ attr_accessor :need_tar_gz
61
+
62
+ # True if a bzip2'd tar file (tar.bz2) should be produced (default is false).
63
+ attr_accessor :need_tar_bz2
64
+
65
+ # True if a zip file should be produced (default is false)
66
+ attr_accessor :need_zip
67
+
68
+ # List of files to be included in the package.
69
+ attr_accessor :package_files
70
+
71
+ # Tar command for gzipped or bzip2ed archives. The default is 'tar'.
72
+ attr_accessor :tar_command
73
+
74
+ # Zip command for zipped archives. The default is 'zip'.
75
+ attr_accessor :zip_command
76
+
77
+ # Create a Package Task with the given name and version.
78
+ def initialize(name=nil, version=nil)
79
+ init(name, version)
80
+ yield self if block_given?
81
+ define unless name.nil?
82
+ end
83
+
84
+ # Initialization that bypasses the "yield self" and "define" step.
85
+ def init(name, version)
86
+ @name = name
87
+ @version = version
88
+ @package_files = Rake::FileList.new
89
+ @package_dir = 'pkg'
90
+ @need_tar = false
91
+ @need_tar_gz = false
92
+ @need_tar_bz2 = false
93
+ @need_zip = false
94
+ @tar_command = 'tar'
95
+ @zip_command = 'zip'
96
+ end
97
+
98
+ # Create the tasks defined by this task library.
99
+ def define
100
+ fail "Version required (or :noversion)" if @version.nil?
101
+ @version = nil if :noversion == @version
102
+
103
+ desc "Build all the packages"
104
+ task :package
105
+
106
+ desc "Force a rebuild of the package files"
107
+ task :repackage => [:clobber_package, :package]
108
+
109
+ desc "Remove package products"
110
+ task :clobber_package do
111
+ rm_r package_dir rescue nil
112
+ end
113
+
114
+ task :clobber => [:clobber_package]
115
+
116
+ [
117
+ [need_tar, tgz_file, "z"],
118
+ [need_tar_gz, tar_gz_file, "z"],
119
+ [need_tar_bz2, tar_bz2_file, "j"]
120
+ ].each do |(need, file, flag)|
121
+ if need
122
+ task :package => ["#{package_dir}/#{file}"]
123
+ file "#{package_dir}/#{file}" => [package_dir_path] + package_files do
124
+ chdir(package_dir) do
125
+ sh %{env}
126
+ sh %{#{@tar_command} #{flag}cvf #{file} #{package_name}}
127
+ end
128
+ end
129
+ end
130
+ end
131
+
132
+ if need_zip
133
+ task :package => ["#{package_dir}/#{zip_file}"]
134
+ file "#{package_dir}/#{zip_file}" => [package_dir_path] + package_files do
135
+ chdir(package_dir) do
136
+ sh %{#{@zip_command} -r #{zip_file} #{package_name}}
137
+ end
138
+ end
139
+ end
140
+
141
+ directory package_dir
142
+
143
+ file package_dir_path => @package_files do
144
+ mkdir_p package_dir rescue nil
145
+ @package_files.each do |fn|
146
+ f = File.join(package_dir_path, fn)
147
+ fdir = File.dirname(f)
148
+ mkdir_p(fdir) if !File.exist?(fdir)
149
+ if File.directory?(fn)
150
+ mkdir_p(f)
151
+ else
152
+ rm_f f
153
+ safe_ln(fn, f)
154
+ end
155
+ end
156
+ end
157
+ self
158
+ end
159
+
160
+ def package_name
161
+ @version ? "#{@name}-#{@version}" : @name
162
+ end
163
+
164
+ def package_dir_path
165
+ "#{package_dir}/#{package_name}"
166
+ end
167
+
168
+ def tgz_file
169
+ "#{package_name}.tgz"
170
+ end
171
+
172
+ def tar_gz_file
173
+ "#{package_name}.tar.gz"
174
+ end
175
+
176
+ def tar_bz2_file
177
+ "#{package_name}.tar.bz2"
178
+ end
179
+
180
+ def zip_file
181
+ "#{package_name}.zip"
182
+ end
183
+ end
184
+
185
+ end
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # Load the test files from the command line.
4
+
5
+ ARGV.each { |f| load f unless f =~ /^-/ }
@@ -0,0 +1,147 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'rake'
4
+ require 'rake/tasklib'
5
+
6
+ module Rake
7
+
8
+ # Create a documentation task that will generate the RDoc files for
9
+ # a project.
10
+ #
11
+ # The RDocTask will create the following targets:
12
+ #
13
+ # [<b><em>rdoc</em></b>]
14
+ # Main task for this RDOC task.
15
+ #
16
+ # [<b>:clobber_<em>rdoc</em></b>]
17
+ # Delete all the rdoc files. This target is automatically
18
+ # added to the main clobber target.
19
+ #
20
+ # [<b>:re<em>rdoc</em></b>]
21
+ # Rebuild the rdoc files from scratch, even if they are not out
22
+ # of date.
23
+ #
24
+ # Simple Example:
25
+ #
26
+ # Rake::RDocTask.new do |rd|
27
+ # rd.main = "README.rdoc"
28
+ # rd.rdoc_files.include("README.rdoc", "lib/**/*.rb")
29
+ # end
30
+ #
31
+ # You may wish to give the task a different name, such as if you are
32
+ # generating two sets of documentation. For instance, if you want to have a
33
+ # development set of documentation including private methods:
34
+ #
35
+ # Rake::RDocTask.new(:rdoc_dev) do |rd|
36
+ # rd.main = "README.doc"
37
+ # rd.rdoc_files.include("README.rdoc", "lib/**/*.rb")
38
+ # rd.options << "--all"
39
+ # end
40
+ #
41
+ # The tasks would then be named :<em>rdoc_dev</em>, :clobber_<em>rdoc_dev</em>, and
42
+ # :re<em>rdoc_dev</em>.
43
+ #
44
+ class RDocTask < TaskLib
45
+ # Name of the main, top level task. (default is :rdoc)
46
+ attr_accessor :name
47
+
48
+ # Name of directory to receive the html output files. (default is "html")
49
+ attr_accessor :rdoc_dir
50
+
51
+ # Title of RDoc documentation. (default is none)
52
+ attr_accessor :title
53
+
54
+ # Name of file to be used as the main, top level file of the
55
+ # RDoc. (default is none)
56
+ attr_accessor :main
57
+
58
+ # Name of template to be used by rdoc. (defaults to rdoc's default)
59
+ attr_accessor :template
60
+
61
+ # List of files to be included in the rdoc generation. (default is [])
62
+ attr_accessor :rdoc_files
63
+
64
+ # List of options to be passed rdoc. (default is [])
65
+ attr_accessor :options
66
+
67
+ # Run the rdoc process as an external shell (default is false)
68
+ attr_accessor :external
69
+
70
+ # Create an RDoc task named <em>rdoc</em>. Default task name is +rdoc+.
71
+ def initialize(name=:rdoc) # :yield: self
72
+ @name = name
73
+ @rdoc_files = Rake::FileList.new
74
+ @rdoc_dir = 'html'
75
+ @main = nil
76
+ @title = nil
77
+ @template = nil
78
+ @external = false
79
+ @options = []
80
+ yield self if block_given?
81
+ define
82
+ end
83
+
84
+ # Create the tasks defined by this task lib.
85
+ def define
86
+ if name.to_s != "rdoc"
87
+ desc "Build the RDOC HTML Files"
88
+ end
89
+
90
+ desc "Build the #{name} HTML Files"
91
+ task name
92
+
93
+ desc "Force a rebuild of the RDOC files"
94
+ task "re#{name}" => ["clobber_#{name}", name]
95
+
96
+ desc "Remove rdoc products"
97
+ task "clobber_#{name}" do
98
+ rm_r rdoc_dir rescue nil
99
+ end
100
+
101
+ task :clobber => ["clobber_#{name}"]
102
+
103
+ directory @rdoc_dir
104
+ task name => [rdoc_target]
105
+ file rdoc_target => @rdoc_files + [Rake.application.rakefile] do
106
+ rm_r @rdoc_dir rescue nil
107
+ args = option_list + @rdoc_files
108
+ if @external
109
+ argstring = args.join(' ')
110
+ sh %{ruby -Ivendor vender/rd #{argstring}}
111
+ else
112
+ require 'rdoc/rdoc'
113
+ RDoc::RDoc.new.document(args)
114
+ end
115
+ end
116
+ self
117
+ end
118
+
119
+ def option_list
120
+ result = @options.dup
121
+ result << "-o" << @rdoc_dir
122
+ result << "--main" << quote(main) if main
123
+ result << "--title" << quote(title) if title
124
+ result << "-T" << quote(template) if template
125
+ result
126
+ end
127
+
128
+ def quote(str)
129
+ if @external
130
+ "'#{str}'"
131
+ else
132
+ str
133
+ end
134
+ end
135
+
136
+ def option_string
137
+ option_list.join(' ')
138
+ end
139
+
140
+ private
141
+
142
+ def rdoc_target
143
+ "#{rdoc_dir}/index.html"
144
+ end
145
+
146
+ end
147
+ end
@@ -0,0 +1,23 @@
1
+ module Test
2
+ module Unit
3
+ module Collector
4
+ class Dir
5
+ undef collect_file
6
+ def collect_file(name, suites, already_gathered)
7
+ # loadpath = $:.dup
8
+ dir = File.dirname(File.expand_path(name))
9
+ $:.unshift(dir) unless $:.first == dir
10
+ if(@req)
11
+ @req.require(name)
12
+ else
13
+ require(name)
14
+ end
15
+ find_test_cases(already_gathered).each{|t| add_suite(suites, t.suite)}
16
+ ensure
17
+ # $:.replace(loadpath)
18
+ $:.delete_at $:.rindex(dir)
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,23 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'test/unit'
4
+ require 'test/unit/assertions'
5
+
6
+ module Rake
7
+ include Test::Unit::Assertions
8
+
9
+ def run_tests(pattern='test/test*.rb', log_enabled=false)
10
+ Dir["#{pattern}"].each { |fn|
11
+ puts fn if log_enabled
12
+ begin
13
+ load fn
14
+ rescue Exception => ex
15
+ puts "Error in #{fn}: #{ex.message}"
16
+ puts ex.backtrace
17
+ assert false
18
+ end
19
+ }
20
+ end
21
+
22
+ extend self
23
+ end
@@ -0,0 +1,23 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'rake'
4
+
5
+ module Rake
6
+
7
+ # Base class for Task Libraries.
8
+ class TaskLib
9
+ include Cloneable
10
+
11
+ # Make a symbol by pasting two strings together.
12
+ #
13
+ # NOTE: DEPRECATED! This method is kinda stupid. I don't know why
14
+ # I didn't just use string interpolation. But now other task
15
+ # libraries depend on this so I can't remove it without breaking
16
+ # other people's code. So for now it stays for backwards
17
+ # compatibility. BUT DON'T USE IT.
18
+ def paste(a,b) # :nodoc:
19
+ (a.to_s + b.to_s).intern
20
+ end
21
+ end
22
+
23
+ end
@@ -0,0 +1,161 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # Define a task library for running unit tests.
4
+
5
+ require 'rake'
6
+ require 'rake/tasklib'
7
+
8
+ module Rake
9
+
10
+ # Create a task that runs a set of tests.
11
+ #
12
+ # Example:
13
+ #
14
+ # Rake::TestTask.new do |t|
15
+ # t.libs << "test"
16
+ # t.test_files = FileList['test/test*.rb']
17
+ # t.verbose = true
18
+ # end
19
+ #
20
+ # If rake is invoked with a "TEST=filename" command line option,
21
+ # then the list of test files will be overridden to include only the
22
+ # filename specified on the command line. This provides an easy way
23
+ # to run just one test.
24
+ #
25
+ # If rake is invoked with a "TESTOPTS=options" command line option,
26
+ # then the given options are passed to the test process after a
27
+ # '--'. This allows Test::Unit options to be passed to the test
28
+ # suite.
29
+ #
30
+ # Examples:
31
+ #
32
+ # rake test # run tests normally
33
+ # rake test TEST=just_one_file.rb # run just one test file.
34
+ # rake test TESTOPTS="-v" # run in verbose mode
35
+ # rake test TESTOPTS="--runner=fox" # use the fox test runner
36
+ #
37
+ class TestTask < TaskLib
38
+
39
+ # Name of test task. (default is :test)
40
+ attr_accessor :name
41
+
42
+ # List of directories to added to $LOAD_PATH before running the
43
+ # tests. (default is 'lib')
44
+ attr_accessor :libs
45
+
46
+ # True if verbose test output desired. (default is false)
47
+ attr_accessor :verbose
48
+
49
+ # Test options passed to the test suite. An explicit
50
+ # TESTOPTS=opts on the command line will override this. (default
51
+ # is NONE)
52
+ attr_accessor :options
53
+
54
+ # Request that the tests be run with the warning flag set.
55
+ # E.g. warning=true implies "ruby -w" used to run the tests.
56
+ attr_accessor :warning
57
+
58
+ # Glob pattern to match test files. (default is 'test/test*.rb')
59
+ attr_accessor :pattern
60
+
61
+ # Style of test loader to use. Options are:
62
+ #
63
+ # * :rake -- Rake provided test loading script (default).
64
+ # * :testrb -- Ruby provided test loading script.
65
+ # * :direct -- Load tests using command line loader.
66
+ #
67
+ attr_accessor :loader
68
+
69
+ # Array of commandline options to pass to ruby when running test loader.
70
+ attr_accessor :ruby_opts
71
+
72
+ # Explicitly define the list of test files to be included in a
73
+ # test. +list+ is expected to be an array of file names (a
74
+ # FileList is acceptable). If both +pattern+ and +test_files+ are
75
+ # used, then the list of test files is the union of the two.
76
+ def test_files=(list)
77
+ @test_files = list
78
+ end
79
+
80
+ # Create a testing task.
81
+ def initialize(name=:test)
82
+ @name = name
83
+ @libs = ["lib"]
84
+ @pattern = nil
85
+ @options = nil
86
+ @test_files = nil
87
+ @verbose = false
88
+ @warning = false
89
+ @loader = :rake
90
+ @ruby_opts = []
91
+ yield self if block_given?
92
+ @pattern = 'test/test*.rb' if @pattern.nil? && @test_files.nil?
93
+ define
94
+ end
95
+
96
+ # Create the tasks defined by this task lib.
97
+ def define
98
+ lib_path = @libs.join(File::PATH_SEPARATOR)
99
+ desc "Run tests" + (@name==:test ? "" : " for #{@name}")
100
+ task @name do
101
+ run_code = ''
102
+ RakeFileUtils.verbose(@verbose) do
103
+ run_code =
104
+ case @loader
105
+ when :direct
106
+ "-e 'ARGV.each{|f| load f}'"
107
+ when :testrb
108
+ "-S testrb #{fix}"
109
+ when :rake
110
+ rake_loader
111
+ end
112
+ @ruby_opts.unshift( "-I#{lib_path}" )
113
+ @ruby_opts.unshift( "-w" ) if @warning
114
+ ruby @ruby_opts.join(" ") +
115
+ " \"#{run_code}\" " +
116
+ file_list.collect { |fn| "\"#{fn}\"" }.join(' ') +
117
+ " #{option_list}"
118
+ end
119
+ end
120
+ self
121
+ end
122
+
123
+ def option_list # :nodoc:
124
+ ENV['TESTOPTS'] || @options || ""
125
+ end
126
+
127
+ def file_list # :nodoc:
128
+ if ENV['TEST']
129
+ FileList[ ENV['TEST'] ]
130
+ else
131
+ result = []
132
+ result += @test_files.to_a if @test_files
133
+ result += FileList[ @pattern ].to_a if @pattern
134
+ FileList[result]
135
+ end
136
+ end
137
+
138
+ def fix # :nodoc:
139
+ case RUBY_VERSION
140
+ when '1.8.2'
141
+ find_file 'rake/ruby182_test_unit_fix'
142
+ else
143
+ nil
144
+ end || ''
145
+ end
146
+
147
+ def rake_loader # :nodoc:
148
+ find_file('rake/rake_test_loader') or
149
+ fail "unable to find rake test loader"
150
+ end
151
+
152
+ def find_file(fn) # :nodoc:
153
+ $LOAD_PATH.each do |path|
154
+ file_path = File.join(path, "#{fn}.rb")
155
+ return file_path if File.exist? file_path
156
+ end
157
+ nil
158
+ end
159
+
160
+ end
161
+ end
@@ -0,0 +1,54 @@
1
+ module Rake
2
+
3
+ # Win 32 interface methods for Rake. Windows specific functionality
4
+ # will be placed here to collect that knowledge in one spot.
5
+ module Win32
6
+
7
+ # Error indicating a problem in locating the home directory on a
8
+ # Win32 system.
9
+ class Win32HomeError < RuntimeError
10
+ end
11
+
12
+ class << self
13
+ # True if running on a windows system.
14
+ def windows?
15
+ Config::CONFIG['host_os'] =~ /mswin/
16
+ end
17
+
18
+ # Run a command line on windows.
19
+ def rake_system(*cmd)
20
+ if cmd.size == 1
21
+ system("call #{cmd}")
22
+ else
23
+ system(*cmd)
24
+ end
25
+ end
26
+
27
+ # The standard directory containing system wide rake files on
28
+ # Win 32 systems. Try the following environment variables (in
29
+ # order):
30
+ #
31
+ # * APPDATA
32
+ # * HOMEDRIVE + HOMEPATH
33
+ # * USERPROFILE
34
+ #
35
+ # If the above are not defined, the return nil.
36
+ def win32_system_dir #:nodoc:
37
+ win32_shared_path = ENV['APPDATA']
38
+ if win32_shared_path.nil? && ENV['HOMEDRIVE'] && ENV['HOMEPATH']
39
+ win32_shared_path = ENV['HOMEDRIVE'] + ENV['HOMEPATH']
40
+ end
41
+ win32_shared_path ||= ENV['USERPROFILE']
42
+ raise Win32HomeError, "Unable to determine home path environment variable." if
43
+ win32_shared_path.nil? or win32_shared_path.empty?
44
+ normalize(File.join(win32_shared_path, 'Rake'))
45
+ end
46
+
47
+ # Normalize a win32 path so that the slashes are all forward slashes.
48
+ def normalize(path)
49
+ path.gsub(/\\/, '/')
50
+ end
51
+
52
+ end
53
+ end
54
+ end