rcodetools 0.8.4.0 → 0.8.5.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGES +4 -0
- data/Rakefile +1 -1
- data/anything-rcodetools.el +6 -2
- data/bin/rbtest +266 -0
- data/bin/rct-fork +6 -0
- data/bin/rct-fork-client +5 -0
- data/bin/ruby-toggle-file +26 -0
- data/lib/rcodetools/xmpfilter.rb +1 -1
- metadata +8 -4
data/CHANGES
CHANGED
data/Rakefile
CHANGED
@@ -34,7 +34,7 @@ task :default => :test
|
|
34
34
|
|
35
35
|
#{{{ Package tasks
|
36
36
|
PKG_FILES = FileList[
|
37
|
-
"bin/
|
37
|
+
"bin/xmpfilter", "bin/rct-*", "bin/ruby-toggle-file", "bin/rbtest",
|
38
38
|
"lib/**/*.rb",
|
39
39
|
"CHANGES", "rcodetools.*", "icicles-rcodetools.el", "anything-rcodetools.el",
|
40
40
|
"README", "README.*", "THANKS",
|
data/anything-rcodetools.el
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
;;; anything-rcodetools.el --- accurate Ruby method completion with anything
|
2
|
-
;; $Id: anything-rcodetools.el,v 1.
|
2
|
+
;; $Id: anything-rcodetools.el,v 1.13 2009/04/20 16:25:37 rubikitch Exp $
|
3
3
|
|
4
4
|
;;; Copyright (c) 2007 rubikitch
|
5
5
|
|
@@ -33,6 +33,9 @@
|
|
33
33
|
;;; History:
|
34
34
|
|
35
35
|
;; $Log: anything-rcodetools.el,v $
|
36
|
+
;; Revision 1.13 2009/04/20 16:25:37 rubikitch
|
37
|
+
;; Set anything-samewindow to nil
|
38
|
+
;;
|
36
39
|
;; Revision 1.12 2009/04/18 10:12:02 rubikitch
|
37
40
|
;; Adjust to change of `use-anything-show-completion'
|
38
41
|
;;
|
@@ -136,7 +139,8 @@
|
|
136
139
|
|
137
140
|
(defun rct-complete-symbol--anything ()
|
138
141
|
(interactive)
|
139
|
-
(let ((anything-execute-action-at-once-if-one t)
|
142
|
+
(let ((anything-execute-action-at-once-if-one t)
|
143
|
+
anything-samewindow)
|
140
144
|
(anything '(anything-c-source-complete-ruby
|
141
145
|
anything-c-source-complete-ruby-all))))
|
142
146
|
|
data/bin/rbtest
ADDED
@@ -0,0 +1,266 @@
|
|
1
|
+
#! /usr/local/bin/ruby18
|
2
|
+
# Copyright (c) 2006-2007 rubikitch <rubikitch@ruby-lang.org>
|
3
|
+
#
|
4
|
+
# Use and distribution subject to the terms of the Ruby license.
|
5
|
+
|
6
|
+
USAGE = <<'XXX'
|
7
|
+
Usage: rbtest SCRIPT [-S RUBY_INTERPRETER] [Test::Unit OPTIONS]
|
8
|
+
Usage: rbtest [-h] [--help] [--example]
|
9
|
+
|
10
|
+
I am rbtest, embedded Test::Unit executor for one-file scripts.
|
11
|
+
Splitting a small script into many files (executables, libraries and tests) is cumbersome.
|
12
|
+
And it is handy to put unit tests near implementations like D language, which has
|
13
|
+
built-in unittest keyword.
|
14
|
+
|
15
|
+
Embedded Test::Unit is simpler than vanilla Test::Unit.
|
16
|
+
You do not have to define a Test::Unit::TestCase subclass,
|
17
|
+
it is automagically defined and executed by me.
|
18
|
+
Embedded Test::Unit uses =begin/=end comment blocks.
|
19
|
+
|
20
|
+
"=begin TEST_METHOD_NAME" blocks define test methods, eg. "=begin test_foo".
|
21
|
+
"=begin rbtest" blocks define utility methods and setup/teardown methods.
|
22
|
+
|
23
|
+
Of course, you MUST use "if __FILE__ ==$0" idiom to split executable and class/method/function.
|
24
|
+
|
25
|
+
I am also an real-life example of rbtest usage.
|
26
|
+
Issue:
|
27
|
+
rbtest --example
|
28
|
+
to show me.
|
29
|
+
|
30
|
+
|
31
|
+
options:
|
32
|
+
-h, --help Print usage.
|
33
|
+
-S RUBY_INTERPRETER Use Ruby interpreter RUBY_INTERPRETER.
|
34
|
+
--example Print this file.
|
35
|
+
--output Print internally-generated test script (for debug).
|
36
|
+
XXX
|
37
|
+
|
38
|
+
|
39
|
+
def first_test(script_filename)
|
40
|
+
"require 'test/unit';" +
|
41
|
+
"load '#{script_filename}';" +
|
42
|
+
"class TestByRbtest < Test::Unit::TestCase;"
|
43
|
+
end
|
44
|
+
|
45
|
+
=begin rbtest
|
46
|
+
def setup
|
47
|
+
end
|
48
|
+
|
49
|
+
def unindent(s)
|
50
|
+
s.map{|x| x[1..-1]}.join
|
51
|
+
end
|
52
|
+
=end
|
53
|
+
|
54
|
+
=begin test_script_to_test_script
|
55
|
+
# indent is needed to avoid syntax error.
|
56
|
+
script = <<XXX
|
57
|
+
#!/usr/bin/env ruby
|
58
|
+
=begin test0
|
59
|
+
assert_equal(10, f(1))
|
60
|
+
=end
|
61
|
+
def f(x) x*10 end
|
62
|
+
=begin
|
63
|
+
other block is skipped
|
64
|
+
=end
|
65
|
+
=begin test1
|
66
|
+
assert_equal(100, f(10))
|
67
|
+
=end
|
68
|
+
puts f(99) if __FILE__==$0
|
69
|
+
XXX
|
70
|
+
|
71
|
+
test_script = <<'XXX'
|
72
|
+
#!/usr/bin/env ruby
|
73
|
+
require 'test/unit';load 'f.rb';class TestByRbtest < Test::Unit::TestCase;def test0
|
74
|
+
assert_equal(10, f(1))
|
75
|
+
end
|
76
|
+
|
77
|
+
|
78
|
+
|
79
|
+
|
80
|
+
def test1
|
81
|
+
assert_equal(100, f(10))
|
82
|
+
end
|
83
|
+
|
84
|
+
end
|
85
|
+
XXX
|
86
|
+
assert_equal unindent(test_script), script_to_test_script(unindent(script), "f.rb")
|
87
|
+
|
88
|
+
script = <<XXX
|
89
|
+
=begin rbtest
|
90
|
+
def setup() end
|
91
|
+
=end
|
92
|
+
def f(x) x*10 end
|
93
|
+
=begin test1
|
94
|
+
assert_equal(100, f(10))
|
95
|
+
=end
|
96
|
+
puts f(99) if __FILE__==$0
|
97
|
+
XXX
|
98
|
+
|
99
|
+
test_script = <<XXX
|
100
|
+
require 'test/unit';load 'f.rb';class TestByRbtest < Test::Unit::TestCase;
|
101
|
+
def setup() end
|
102
|
+
|
103
|
+
|
104
|
+
def test1
|
105
|
+
assert_equal(100, f(10))
|
106
|
+
end
|
107
|
+
|
108
|
+
end
|
109
|
+
XXX
|
110
|
+
|
111
|
+
assert_equal unindent(test_script), script_to_test_script(unindent(script), "f.rb")
|
112
|
+
=end
|
113
|
+
|
114
|
+
def script_to_test_script(ruby_source, script_filename)
|
115
|
+
_SKIP = "\n"
|
116
|
+
state = :start
|
117
|
+
ruby_source.map do |line|
|
118
|
+
case line
|
119
|
+
when /^#!/
|
120
|
+
line
|
121
|
+
when "=begin rbtest\n"
|
122
|
+
preamble = (state == :start) ? first_test(script_filename) : ""
|
123
|
+
state = :rbtest_block
|
124
|
+
preamble + "\n"
|
125
|
+
when /^=begin (test\S*)$/ # test method block
|
126
|
+
preamble = (state == :start) ? first_test(script_filename) : ""
|
127
|
+
state = :test_method
|
128
|
+
preamble + "def #{$1}\n"
|
129
|
+
when /^=begin/ # other block
|
130
|
+
state = :begin
|
131
|
+
_SKIP
|
132
|
+
when /^=end$/
|
133
|
+
begin
|
134
|
+
if state == :test_method
|
135
|
+
"end\n" # /def test_xxx
|
136
|
+
else
|
137
|
+
_SKIP
|
138
|
+
end
|
139
|
+
ensure
|
140
|
+
state = :script
|
141
|
+
end
|
142
|
+
else
|
143
|
+
if state == :test_method or state == :rbtest_block
|
144
|
+
line
|
145
|
+
else
|
146
|
+
_SKIP
|
147
|
+
end
|
148
|
+
end
|
149
|
+
end.join + "end\n" # /class TestByRbtest
|
150
|
+
end
|
151
|
+
|
152
|
+
=begin test_execute_test_script_command
|
153
|
+
require 'tempfile'
|
154
|
+
temp = Tempfile.new "rbtest"
|
155
|
+
test_script_filename = temp.path
|
156
|
+
|
157
|
+
temp.puts "#!/usr/bin/ruby18"
|
158
|
+
temp.flush
|
159
|
+
assert_equal "/usr/bin/ruby18 #{test_script_filename} -v", execute_test_script_command(test_script_filename, parse_argv!(["a0.rb", "-v"]))
|
160
|
+
|
161
|
+
temp.rewind
|
162
|
+
temp.puts "class XX"
|
163
|
+
temp.flush
|
164
|
+
assert_equal "ruby #{test_script_filename} ", execute_test_script_command(test_script_filename, parse_argv!(["a0.rb"]))
|
165
|
+
assert_equal "ruby18 #{test_script_filename} ", execute_test_script_command(test_script_filename, parse_argv!(["-S", "ruby18", "a0.rb"]))
|
166
|
+
|
167
|
+
=end
|
168
|
+
|
169
|
+
def shebang(filename)
|
170
|
+
open(filename) {|f| line = f.gets.chomp; line[0,2] == "#!" and line[2..-1] }
|
171
|
+
end
|
172
|
+
|
173
|
+
def execute_test_script_command(test_script_filename, args)
|
174
|
+
ruby = args.interpreter || shebang(test_script_filename) || "ruby"
|
175
|
+
"#{ruby} #{test_script_filename} #{args.opts.join ' '}"
|
176
|
+
end
|
177
|
+
|
178
|
+
def execute_test_script(test_script_filename, args)
|
179
|
+
output = `#{execute_test_script_command test_script_filename, args}`
|
180
|
+
print output.gsub(Regexp.union(test_script_filename), args.script_filename)
|
181
|
+
end
|
182
|
+
|
183
|
+
def generate_test_script(script_filename, test_script_filename)
|
184
|
+
open(test_script_filename, "w") do |f|
|
185
|
+
f.write(script_to_test_script(File.read(script_filename), script_filename))
|
186
|
+
f.chmod 0755 # executable
|
187
|
+
end
|
188
|
+
end
|
189
|
+
|
190
|
+
################
|
191
|
+
def do_test(args)
|
192
|
+
begin
|
193
|
+
test_script_filename = "#{args.script_filename}__test__.rb"
|
194
|
+
generate_test_script(args.script_filename, test_script_filename)
|
195
|
+
execute_test_script(test_script_filename, args)
|
196
|
+
ensure
|
197
|
+
File.unlink test_script_filename
|
198
|
+
end
|
199
|
+
end
|
200
|
+
|
201
|
+
def output_test_script(args)
|
202
|
+
print(script_to_test_script(File.read(args.script_filename), args.script_filename))
|
203
|
+
end
|
204
|
+
|
205
|
+
def example(args)
|
206
|
+
print File.read($0)
|
207
|
+
end
|
208
|
+
|
209
|
+
def help(args)
|
210
|
+
print USAGE
|
211
|
+
end
|
212
|
+
|
213
|
+
=begin test_parse_argv_bang
|
214
|
+
args = parse_argv!(["a.rb", "-S", "ruby19"])
|
215
|
+
assert_equal "a.rb", args.script_filename
|
216
|
+
assert_equal "ruby19", args.interpreter
|
217
|
+
assert_equal [], args.opts
|
218
|
+
assert_equal :do_test, args.action
|
219
|
+
|
220
|
+
args = parse_argv!(["-S", "ruby19", "a.rb", "-v"])
|
221
|
+
assert_equal "a.rb", args.script_filename
|
222
|
+
assert_equal "ruby19", args.interpreter
|
223
|
+
assert_equal ["-v"], args.opts
|
224
|
+
assert_equal :do_test, args.action
|
225
|
+
|
226
|
+
args = parse_argv!(["a.rb", "-n", "test_0"])
|
227
|
+
assert_equal "a.rb", args.script_filename
|
228
|
+
assert_equal nil, args.interpreter
|
229
|
+
assert_equal ["-n", "test_0"], args.opts
|
230
|
+
assert_equal :do_test, args.action
|
231
|
+
|
232
|
+
assert_equal :help , parse_argv!([]).action
|
233
|
+
assert_equal :help , parse_argv!(["--help"]).action
|
234
|
+
assert_equal :help , parse_argv!(["-h"]).action
|
235
|
+
|
236
|
+
args = parse_argv!(["--output", "a.rb"])
|
237
|
+
assert_equal "a.rb", args.script_filename
|
238
|
+
assert_equal :output_test_script, args.action
|
239
|
+
|
240
|
+
assert_equal :example, parse_argv!(["--example"]).action
|
241
|
+
|
242
|
+
=end
|
243
|
+
|
244
|
+
Args = Struct.new :script_filename, :interpreter, :opts, :action
|
245
|
+
def parse_argv!(argv)
|
246
|
+
args = Args.new
|
247
|
+
args.action = :do_test
|
248
|
+
argv.delete '--output' and args.action = :output_test_script
|
249
|
+
argv.delete '--example' and args.action = :example and return args
|
250
|
+
(argv.delete '-h' or argv.delete '--help') and args.action = :help
|
251
|
+
i = argv.index "-S"
|
252
|
+
if i and args.interpreter=argv[i+1]
|
253
|
+
argv.delete_at i+1
|
254
|
+
argv.delete_at i
|
255
|
+
end
|
256
|
+
args.script_filename = argv.shift
|
257
|
+
args.opts = argv
|
258
|
+
args.script_filename or args.action = :help
|
259
|
+
args
|
260
|
+
end
|
261
|
+
|
262
|
+
if __FILE__ ==$0
|
263
|
+
args = parse_argv! ARGV
|
264
|
+
__send__(args.action, args)
|
265
|
+
end
|
266
|
+
|
data/bin/rct-fork
ADDED
data/bin/rct-fork-client
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
#! /usr/local/bin/ruby18
|
2
|
+
require 'ruby_toggle_file'
|
3
|
+
require 'optparse'
|
4
|
+
|
5
|
+
USAGE = <<XXX
|
6
|
+
Usage: ruby-toggle-file RUBY_SCRIPT
|
7
|
+
|
8
|
+
I (ruby-toggle-file) accept one Ruby script filename and prints
|
9
|
+
corresponding file. If RUBY_SCRIPT is implementation script
|
10
|
+
(library), then returns test script and vice versa. It is recommended
|
11
|
+
that implementation scripts are located in lib/ directory and test
|
12
|
+
scripts are located in test/ directory. This command supports Ruby on
|
13
|
+
Rails file layout.
|
14
|
+
|
15
|
+
I infer corresponding file if it does not exist.
|
16
|
+
|
17
|
+
If you are curious about behavior, see test/test_ruby_toggle_file.rb.
|
18
|
+
|
19
|
+
I am meant to be used in text editors or IDEs.
|
20
|
+
XXX
|
21
|
+
|
22
|
+
ARGV.options {|o|
|
23
|
+
o.banner = USAGE
|
24
|
+
o.parse!
|
25
|
+
}
|
26
|
+
print RubyToggleFile.new.ruby_toggle_file(ARGV.first)
|
data/lib/rcodetools/xmpfilter.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rcodetools
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.
|
4
|
+
version: 0.8.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- rubikitch and Mauricio Fernandez
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-04-
|
12
|
+
date: 2009-04-24 00:00:00 +09:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -35,10 +35,14 @@ extensions: []
|
|
35
35
|
extra_rdoc_files:
|
36
36
|
- README
|
37
37
|
files:
|
38
|
-
- bin/rct-complete
|
39
|
-
- bin/rct-doc
|
40
38
|
- bin/xmpfilter
|
39
|
+
- bin/rct-fork-client
|
41
40
|
- bin/rct-meth-args
|
41
|
+
- bin/rct-doc
|
42
|
+
- bin/rct-complete
|
43
|
+
- bin/rct-fork
|
44
|
+
- bin/ruby-toggle-file
|
45
|
+
- bin/rbtest
|
42
46
|
- lib/method_analyzer.rb
|
43
47
|
- lib/rcodetools/xmptestunitfilter.rb
|
44
48
|
- lib/rcodetools/completion.rb
|