rpy 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,66 @@
1
+ require 'yaml'
2
+ require 'test/unit'
3
+ $:.unshift File.join(File.dirname(__FILE__), "..", "lib")
4
+ require 'rpy'
5
+
6
+ class TestPython < Test::Unit::TestCase
7
+
8
+ def test_python_no_return
9
+ Py.start # starts the python interperter
10
+
11
+ output = "hello world"
12
+
13
+ Py.run( %Q(print "#{output}"), {} )
14
+
15
+ Py.stop # stops the interperter
16
+ end
17
+
18
+ def test_python_yaml_return
19
+ Py.start
20
+
21
+ result = YAML.load( Py.run( %Q(_rpython_result = {'hello':1,'world':2}), :serialize => 'yaml') )
22
+
23
+ assert_equal 1, result['hello']
24
+ assert_equal 2, result['world']
25
+
26
+ Py.stop
27
+ end
28
+
29
+
30
+ def test_benchmark
31
+ Py.start
32
+
33
+ py_result = ""
34
+ iterations = 100
35
+ real_times = []
36
+
37
+ iterations.times do
38
+ timer = Time.now
39
+ py_result = Py.run( %Q(_rpython_result = {'hello':1,'world':2}), :serialize => 'yaml')
40
+ real_times << Time.now - timer
41
+ end
42
+ total = 0
43
+ average = 0.0
44
+ n = 0
45
+ variance = 0.0
46
+ real_times.each do|time|
47
+ n = n + 1
48
+ delta = time - average
49
+ average = average + (delta/n)
50
+ variance = variance + delta * (time - average)
51
+ total += time
52
+ end
53
+
54
+ variance /= n
55
+
56
+ puts "total: #{total} seconds, average: #{average} seconds, variance: #{variance} seconds"
57
+
58
+ result = YAML.load( py_result )
59
+ assert_equal 1, result['hello']
60
+ assert_equal 2, result['world']
61
+
62
+
63
+ Py.stop
64
+ end
65
+
66
+ end
@@ -0,0 +1,113 @@
1
+ # This final came directly from mongrel 1.0.1 source
2
+ # with a few modifications to support some of my network tests
3
+ # Also, i have figured out yet if this should remain so much a clone of the mongrel tree
4
+ # or become a plugin, need to review more closely how that works
5
+
6
+ def make(makedir)
7
+ Dir.chdir(makedir) do
8
+ sh(PLATFORM =~ /win32/ ? 'nmake' : 'make')
9
+ end
10
+ end
11
+
12
+ def extconf(dir)
13
+ Dir.chdir(dir) do ruby "extconf.rb" end
14
+ end
15
+
16
+ def setup_tests
17
+ Rake::TestTask.new do |t|
18
+ t.test_files = FileList["test/*_test.rb"]
19
+ t.verbose = true
20
+ end
21
+ end
22
+
23
+
24
+ def setup_clean otherfiles
25
+ files = ['build/*', '**/*.o', '**/*.so', '**/*.a', 'lib/*-*', '**/*.log'] + otherfiles
26
+ CLEAN.include(files)
27
+ end
28
+
29
+
30
+ def setup_rdoc files
31
+ Rake::RDocTask.new do |rdoc|
32
+ rdoc.rdoc_dir = 'doc/rdoc'
33
+ rdoc.options << '--line-numbers'
34
+ rdoc.rdoc_files.add(files)
35
+ end
36
+ end
37
+
38
+
39
+ def setup_extension(dir, extension)
40
+ ext = "ext/#{dir}"
41
+ ext_so = "#{ext}/#{extension}.#{Config::CONFIG['DLEXT']}"
42
+ ext_files = FileList[
43
+ "#{ext}/*.c",
44
+ "#{ext}/*.h",
45
+ "#{ext}/extconf.rb",
46
+ "#{ext}/Makefile",
47
+ "lib"
48
+ ]
49
+
50
+ task "lib" do
51
+ directory "lib"
52
+ end
53
+
54
+ desc "Builds just the #{extension} extension"
55
+ task extension.to_sym => ["#{ext}/Makefile", ext_so ]
56
+
57
+ file "#{ext}/Makefile" => ["#{ext}/extconf.rb"] do
58
+ extconf "#{ext}"
59
+ end
60
+
61
+ file ext_so => ext_files do
62
+ make "#{ext}"
63
+ cp ext_so, "lib"
64
+ end
65
+ end
66
+
67
+
68
+ def base_gem_spec(pkg_name, pkg_version)
69
+ rm_rf "test/coverage"
70
+ pkg_version = pkg_version
71
+ pkg_name = pkg_name
72
+ pkg_file_name = "#{pkg_name}-#{pkg_version}"
73
+ Gem::Specification.new do |s|
74
+ s.name = pkg_name
75
+ s.version = pkg_version
76
+ s.platform = Gem::Platform::RUBY
77
+ s.has_rdoc = true
78
+ s.extra_rdoc_files = [ "README" ]
79
+
80
+ s.files = %w(COPYING LICENSE README Rakefile) +
81
+ Dir.glob("{bin,doc/rdoc,test}/**/*") +
82
+ Dir.glob("ext/**/*.{h,c,rb,rl}") +
83
+ Dir.glob("{examples,tools,lib}/**/*.rb")
84
+
85
+ s.require_path = "lib"
86
+ s.extensions = FileList["ext/**/extconf.rb"].to_a
87
+ s.bindir = "bin"
88
+ end
89
+ end
90
+
91
+ def setup_gem(pkg_name, pkg_version)
92
+ spec = base_gem_spec(pkg_name, pkg_version)
93
+ yield spec if block_given?
94
+
95
+ Rake::GemPackageTask.new(spec) do |p|
96
+ p.gem_spec = spec
97
+ p.need_tar = true if RUBY_PLATFORM !~ /mswin/
98
+ end
99
+ end
100
+
101
+ # Conditional require rcov/rcovtask if present
102
+ begin
103
+ require 'rcov/rcovtask'
104
+
105
+ Rcov::RcovTask.new do |t|
106
+ t.test_files = FileList['test/unit/*_test.rb'] + FileList["test/integration/*_test.rb"]
107
+ t.rcov_opts << "-x /usr"
108
+ t.output_dir = "test/coverage"
109
+ t.verbose = true
110
+ end
111
+ rescue Object => e
112
+ puts e.message
113
+ end
metadata ADDED
@@ -0,0 +1,85 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rpy
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Todd A. Fisher
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2008-03-14 00:00:00 -04:00
13
+ default_executable:
14
+ dependencies: []
15
+
16
+ description: Make it easy and fun to run Python within Ruby
17
+ email:
18
+ executables: []
19
+
20
+ extensions:
21
+ - ext/rpy/extconf.rb
22
+ extra_rdoc_files:
23
+ - README
24
+ files:
25
+ - COPYING
26
+ - LICENSE
27
+ - README
28
+ - Rakefile
29
+ - doc/rdoc/index.html
30
+ - doc/rdoc/created.rid
31
+ - doc/rdoc/classes
32
+ - doc/rdoc/classes/Py.html
33
+ - doc/rdoc/rdoc-style.css
34
+ - doc/rdoc/fr_file_index.html
35
+ - doc/rdoc/fr_class_index.html
36
+ - doc/rdoc/files
37
+ - doc/rdoc/files/LICENSE.html
38
+ - doc/rdoc/files/COPYING.html
39
+ - doc/rdoc/files/ext
40
+ - doc/rdoc/files/ext/rpy
41
+ - doc/rdoc/files/ext/rpy/pyyaml
42
+ - doc/rdoc/files/ext/rpy/pyyaml/ext
43
+ - doc/rdoc/files/ext/rpy/pyyaml/ext/_yaml_h.html
44
+ - doc/rdoc/files/ext/rpy/rpy_c.html
45
+ - doc/rdoc/files/ext/rpy/rpy_h.html
46
+ - doc/rdoc/files/ext/rpy/rpy_config_h.html
47
+ - doc/rdoc/files/README.html
48
+ - doc/rdoc/fr_method_index.html
49
+ - test/rpy_test.rb
50
+ - ext/rpy/pyyaml/ext/_yaml.h
51
+ - ext/rpy/rpy_config.h
52
+ - ext/rpy/rpy.h
53
+ - ext/rpy/rpy.c
54
+ - ext/rpy/test.rb
55
+ - ext/rpy/extconf.rb
56
+ - tools/rakehelp.rb
57
+ - setup.rb
58
+ has_rdoc: true
59
+ homepage:
60
+ post_install_message:
61
+ rdoc_options: []
62
+
63
+ require_paths:
64
+ - lib
65
+ required_ruby_version: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: 1.8.5
70
+ version:
71
+ required_rubygems_version: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: "0"
76
+ version:
77
+ requirements: []
78
+
79
+ rubyforge_project:
80
+ rubygems_version: 1.0.1
81
+ signing_key:
82
+ specification_version: 2
83
+ summary: Make it easy and fun to run Python within Ruby
84
+ test_files: []
85
+