rcodetools 0.7.0.0 → 0.8.0.0
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.
- data/CHANGES +12 -0
- data/README +1 -1
- data/README.emacs +21 -4
- data/README.ja +1 -1
- data/README.xmpfilter +159 -74
- data/Rakefile +3 -37
- data/anything-rcodetools.el +142 -0
- data/bin/rct-complete +1 -1
- data/bin/rct-doc +1 -1
- data/bin/rct-meth-args +33 -2
- data/bin/xmpfilter +5 -1
- data/lib/rcodetools/compat.rb +14 -0
- data/lib/rcodetools/completion.rb +8 -6
- data/lib/rcodetools/fork.rb +15 -8
- data/lib/rcodetools/options.rb +8 -0
- data/lib/rcodetools/xmpfilter.rb +80 -33
- data/lib/rcodetools/xmptestunitfilter.rb +76 -21
- data/lib/ruby_toggle_file.rb +1 -1
- data/rcodetools.el +213 -20
- data/test/test_functional.rb +36 -68
- data/test/test_method_analyzer.rb +28 -20
- data/test/test_ruby_toggle_file.rb +118 -69
- data/test/test_xmpfilter.rb +75 -47
- data/test/test_xmptestunitfilter.rb +12 -11
- metadata +83 -133
- data/test/data/add_markers-input.rb +0 -2
- data/test/data/add_markers-output.rb +0 -2
- data/test/data/bindings-input.rb +0 -26
- data/test/data/bindings-output.rb +0 -31
- data/test/data/completion-input.rb +0 -1
- data/test/data/completion-output.rb +0 -2
- data/test/data/completion_class_info-input.rb +0 -1
- data/test/data/completion_class_info-output.rb +0 -10
- data/test/data/completion_class_info_no_candidates-input.rb +0 -1
- data/test/data/completion_class_info_no_candidates-output.rb +0 -1
- data/test/data/completion_detect_rbtest-input.rb +0 -7
- data/test/data/completion_detect_rbtest-output.rb +0 -2
- data/test/data/completion_detect_rbtest2-input.rb +0 -1
- data/test/data/completion_detect_rbtest2-output.rb +0 -2
- data/test/data/completion_emacs-input.rb +0 -1
- data/test/data/completion_emacs-output.rb +0 -6
- data/test/data/completion_emacs_icicles-input.rb +0 -1
- data/test/data/completion_emacs_icicles-output.rb +0 -6
- data/test/data/completion_in_method-input.rb +0 -3
- data/test/data/completion_in_method-output.rb +0 -1
- data/test/data/completion_in_method-test.rb +0 -6
- data/test/data/completion_rbtest-input.rb +0 -7
- data/test/data/completion_rbtest-output.rb +0 -2
- data/test/data/doc-input.rb +0 -1
- data/test/data/doc-output.rb +0 -1
- data/test/data/doc_detect_rbtest-input.rb +0 -1
- data/test/data/doc_detect_rbtest-output.rb +0 -1
- data/test/data/doc_detect_rbtest2-input.rb +0 -7
- data/test/data/doc_detect_rbtest2-output.rb +0 -1
- data/test/data/doc_rbtest-input.rb +0 -7
- data/test/data/doc_rbtest-output.rb +0 -1
- data/test/data/no_warnings-input.rb +0 -3
- data/test/data/no_warnings-output.rb +0 -4
- data/test/data/refe-input.rb +0 -1
- data/test/data/refe-output.rb +0 -1
- data/test/data/ri-input.rb +0 -1
- data/test/data/ri-output.rb +0 -1
- data/test/data/ri_emacs-input.rb +0 -1
- data/test/data/ri_emacs-output.rb +0 -1
- data/test/data/ri_vim-input.rb +0 -1
- data/test/data/ri_vim-output.rb +0 -1
- data/test/data/rspec-input.rb +0 -48
- data/test/data/rspec-output.rb +0 -52
- data/test/data/rspec_poetry-input.rb +0 -48
- data/test/data/rspec_poetry-output.rb +0 -52
- data/test/data/simple_annotation-input.rb +0 -8
- data/test/data/simple_annotation-output.rb +0 -8
- data/test/data/unit_test-input.rb +0 -50
- data/test/data/unit_test-output.rb +0 -52
- data/test/data/unit_test_detect_rbtest-input.rb +0 -50
- data/test/data/unit_test_detect_rbtest-output.rb +0 -52
- data/test/data/unit_test_detect_rbtest2-input.rb +0 -6
- data/test/data/unit_test_detect_rbtest2-output.rb +0 -6
- data/test/data/unit_test_poetry-input.rb +0 -50
- data/test/data/unit_test_poetry-output.rb +0 -52
- data/test/data/unit_test_rbtest-input.rb +0 -6
- data/test/data/unit_test_rbtest-output.rb +0 -6
- data/test/test_run.rb +0 -45
@@ -2,12 +2,13 @@ require 'rcodetools/xmpfilter'
|
|
2
2
|
|
3
3
|
module Rcodetools
|
4
4
|
|
5
|
+
FLOAT_TOLERANCE = 0.0001
|
5
6
|
class XMPTestUnitFilter < XMPFilter
|
6
7
|
def initialize(opts = {})
|
7
8
|
super
|
8
9
|
@output_stdout = false
|
9
10
|
mod = @parentheses ? :WithParentheses : :Poetry
|
10
|
-
extend self.class.const_get(mod)
|
11
|
+
extend self.class.const_get(mod) unless opts[:_no_extend_module]
|
11
12
|
end
|
12
13
|
|
13
14
|
private
|
@@ -73,7 +74,7 @@ class XMPTestUnitFilter < XMPFilter
|
|
73
74
|
def value_assertions(klass_txt, value_txt, value, expression)
|
74
75
|
case value
|
75
76
|
when Float
|
76
|
-
["assert_in_delta(#{value.inspect}, #{expression},
|
77
|
+
["assert_in_delta(#{value.inspect}, #{expression}, #{FLOAT_TOLERANCE})"]
|
77
78
|
when Numeric, String, Hash, Array, Regexp, TrueClass, FalseClass, Symbol, NilClass
|
78
79
|
["assert_equal(#{value_txt}, #{expression})"]
|
79
80
|
else
|
@@ -99,7 +100,7 @@ class XMPTestUnitFilter < XMPFilter
|
|
99
100
|
def value_assertions(klass_txt, value_txt, value, expression)
|
100
101
|
case value
|
101
102
|
when Float
|
102
|
-
["assert_in_delta #{value.inspect}, #{expression},
|
103
|
+
["assert_in_delta #{value.inspect}, #{expression}, #{FLOAT_TOLERANCE}"]
|
103
104
|
when Numeric, String, Hash, Array, Regexp, TrueClass, FalseClass, Symbol, NilClass
|
104
105
|
["assert_equal #{value_txt}, #{expression}"]
|
105
106
|
else
|
@@ -119,26 +120,36 @@ class XMPTestUnitFilter < XMPFilter
|
|
119
120
|
end
|
120
121
|
|
121
122
|
class XMPRSpecFilter < XMPTestUnitFilter
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
123
|
+
def initialize(x={})
|
124
|
+
super(x.merge(:_no_extend_module => true))
|
125
|
+
load_rspec
|
126
|
+
specver = (Spec::VERSION::STRING rescue "1.0.0")
|
127
|
+
api_module = specver >= "0.8.0" ? NewAPI : OldAPI
|
128
|
+
mod = @parentheses ? :WithParentheses : :Poetry
|
129
|
+
extend api_module.const_get(mod)
|
130
|
+
extend api_module
|
127
131
|
end
|
128
132
|
|
129
|
-
|
130
|
-
|
131
|
-
rescue LoadError
|
132
|
-
require 'rubygems'
|
133
|
+
private
|
134
|
+
def load_rspec
|
133
135
|
begin
|
134
136
|
require 'spec/version'
|
135
|
-
rescue LoadError
|
136
|
-
|
137
|
+
rescue LoadError
|
138
|
+
require 'rubygems'
|
139
|
+
begin
|
140
|
+
require 'spec/version'
|
141
|
+
rescue LoadError # if rspec isn't available, use most recent conventions
|
142
|
+
end
|
137
143
|
end
|
138
144
|
end
|
139
145
|
|
140
|
-
|
146
|
+
alias :execute :execute_script
|
141
147
|
|
148
|
+
def interpreter_command
|
149
|
+
[@interpreter] + @libs.map{|x| "-r#{x}"}
|
150
|
+
end
|
151
|
+
|
152
|
+
module NewAPI
|
142
153
|
def raise_assertion(expression, exceptions, index)
|
143
154
|
["lambda{#{expression}}.should raise_error(#{exceptions[index][0]})"]
|
144
155
|
end
|
@@ -151,7 +162,7 @@ class XMPRSpecFilter < XMPTestUnitFilter
|
|
151
162
|
def value_assertions(klass_txt, value_txt, value, expression)
|
152
163
|
case value
|
153
164
|
when Float
|
154
|
-
["(#{expression}).should be_close(#{value.inspect},
|
165
|
+
["(#{expression}).should be_close(#{value.inspect}, #{FLOAT_TOLERANCE})"]
|
155
166
|
when Numeric, String, Hash, Array, Regexp, TrueClass, FalseClass, Symbol, NilClass
|
156
167
|
["(#{expression}).should == (#{value_txt})"]
|
157
168
|
else
|
@@ -177,7 +188,7 @@ class XMPRSpecFilter < XMPTestUnitFilter
|
|
177
188
|
def value_assertions(klass_txt, value_txt, value, expression)
|
178
189
|
case value
|
179
190
|
when Float
|
180
|
-
["#{expression}.should be_close(#{value.inspect},
|
191
|
+
["#{expression}.should be_close(#{value.inspect}, #{FLOAT_TOLERANCE})"]
|
181
192
|
when Numeric, String, Hash, Array, Regexp, TrueClass, FalseClass, Symbol, NilClass
|
182
193
|
["#{expression}.should == #{value_txt}"]
|
183
194
|
else
|
@@ -194,7 +205,9 @@ class XMPRSpecFilter < XMPTestUnitFilter
|
|
194
205
|
"#{actual}.should == #{expected}"
|
195
206
|
end
|
196
207
|
end
|
197
|
-
|
208
|
+
end
|
209
|
+
|
210
|
+
module OldAPI
|
198
211
|
# old rspec, use deprecated syntax
|
199
212
|
def raise_assertion(expression, exceptions, index)
|
200
213
|
["lambda{#{expression}}.should_raise_error(#{exceptions[index][0]})"]
|
@@ -208,7 +221,7 @@ class XMPRSpecFilter < XMPTestUnitFilter
|
|
208
221
|
def value_assertions(klass_txt, value_txt, value, expression)
|
209
222
|
case value
|
210
223
|
when Float
|
211
|
-
["(#{expression}).should_be_close(#{value.inspect},
|
224
|
+
["(#{expression}).should_be_close(#{value.inspect}, #{FLOAT_TOLERANCE})"]
|
212
225
|
when Numeric, String, Hash, Array, Regexp, TrueClass, FalseClass, Symbol, NilClass
|
213
226
|
["(#{expression}).should_equal(#{value_txt})"]
|
214
227
|
else
|
@@ -234,7 +247,7 @@ class XMPRSpecFilter < XMPTestUnitFilter
|
|
234
247
|
def value_assertions(klass_txt, value_txt, value, expression)
|
235
248
|
case value
|
236
249
|
when Float
|
237
|
-
["#{expression}.should_be_close #{value.inspect},
|
250
|
+
["#{expression}.should_be_close #{value.inspect}, #{FLOAT_TOLERANCE}"]
|
238
251
|
when Numeric, String, Hash, Array, Regexp, TrueClass, FalseClass, Symbol, NilClass
|
239
252
|
["#{expression}.should_equal #{value_txt}"]
|
240
253
|
else
|
@@ -253,6 +266,48 @@ class XMPRSpecFilter < XMPTestUnitFilter
|
|
253
266
|
end
|
254
267
|
end
|
255
268
|
|
256
|
-
end
|
257
269
|
|
258
270
|
end
|
271
|
+
|
272
|
+
class XMPExpectationsFilter < XMPTestUnitFilter
|
273
|
+
def initialize(x={})
|
274
|
+
super(x.merge(:_no_extend_module => true))
|
275
|
+
@warnings = false
|
276
|
+
end
|
277
|
+
|
278
|
+
def expectation(expected, actual)
|
279
|
+
<<EOE
|
280
|
+
expect #{expected} do
|
281
|
+
#{actual}
|
282
|
+
end
|
283
|
+
EOE
|
284
|
+
end
|
285
|
+
alias :equal_assertion :expectation
|
286
|
+
|
287
|
+
def raise_assertion(expression, exceptions, index)
|
288
|
+
[ expectation(exceptions[index][0], expression) ]
|
289
|
+
end
|
290
|
+
|
291
|
+
def nil_assertion(expression)
|
292
|
+
[ expectation("nil", expression) ]
|
293
|
+
end
|
294
|
+
|
295
|
+
def value_assertions(klass_txt, value_txt, value, expression)
|
296
|
+
case value
|
297
|
+
when Float
|
298
|
+
min = "%.4f" % [value - FLOAT_TOLERANCE]
|
299
|
+
max = "%.4f" % [value + FLOAT_TOLERANCE]
|
300
|
+
[ expectation("#{min}..#{max}", expression) ]
|
301
|
+
when Numeric, String, Hash, Array, Regexp, TrueClass, FalseClass, Symbol, NilClass
|
302
|
+
[ expectation(value_txt, expression) ]
|
303
|
+
else
|
304
|
+
object_assertions klass_txt, value_txt, expression
|
305
|
+
end
|
306
|
+
end
|
307
|
+
|
308
|
+
def object_assertions(klass_txt, value_txt, expression)
|
309
|
+
[ expectation(klass_txt, expression),
|
310
|
+
expectation(value_txt.inspect, "#{expression}.inspect") ]
|
311
|
+
end
|
312
|
+
end # /XMPExpectationsFilter
|
313
|
+
end # /Rcodetools
|
data/lib/ruby_toggle_file.rb
CHANGED
data/rcodetools.el
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
;;; rcodetools.el -- annotation / accurate completion / browsing documentation
|
2
2
|
|
3
|
-
;;; Copyright (c) 2006 rubikitch <rubikitch@ruby-lang.org>
|
3
|
+
;;; Copyright (c) 2006-2008 rubikitch <rubikitch@ruby-lang.org>
|
4
4
|
;;;
|
5
5
|
;;; Use and distribution subject to the terms of the Ruby license.
|
6
6
|
|
7
|
-
(defvar xmpfilter-command-name "ruby -S xmpfilter --dev --detect-rbtest"
|
7
|
+
(defvar xmpfilter-command-name "ruby -S xmpfilter --dev --fork --detect-rbtest"
|
8
8
|
"The xmpfilter command name.")
|
9
9
|
(defvar rct-doc-command-name "ruby -S rct-doc --dev --fork --detect-rbtest"
|
10
10
|
"The rct-doc command name.")
|
@@ -12,6 +12,7 @@
|
|
12
12
|
"The rct-complete command name.")
|
13
13
|
(defvar ruby-toggle-file-command-name "ruby -S ruby-toggle-file"
|
14
14
|
"The ruby-toggle-file command name.")
|
15
|
+
(defvar rct-fork-command-name "ruby -S rct-fork")
|
15
16
|
(defvar rct-option-history nil) ;internal
|
16
17
|
(defvar rct-option-local nil) ;internal
|
17
18
|
(make-variable-buffer-local 'rct-option-local)
|
@@ -55,26 +56,47 @@
|
|
55
56
|
(read-from-minibuffer "rcodetools option: " option nil nil 'rct-option-history))
|
56
57
|
option))))
|
57
58
|
|
59
|
+
(defun rct-shell-command (command &optional buffer)
|
60
|
+
"Replacement for `(shell-command-on-region (point-min) (point-max) command buffer t' because of encoding problem."
|
61
|
+
(let ((input-rb (concat (make-temp-name "xmptmp-in") ".rb"))
|
62
|
+
(output-rb (concat (make-temp-name "xmptmp-out") ".rb"))
|
63
|
+
(coding-system-for-read buffer-file-coding-system))
|
64
|
+
(write-region (point-min) (point-max) input-rb nil 'nodisp)
|
65
|
+
(shell-command
|
66
|
+
(rct-debuglog (format "%s %s > %s" command input-rb output-rb))
|
67
|
+
t " *rct-error*")
|
68
|
+
(and buffer (set-buffer buffer))
|
69
|
+
(insert-file-contents output-rb nil nil nil t)
|
70
|
+
(delete-file input-rb)
|
71
|
+
(delete-file output-rb)))
|
72
|
+
|
73
|
+
(defvar xmpfilter-command-function 'xmpfilter-command)
|
58
74
|
(defun xmp (&optional option)
|
59
75
|
"Run xmpfilter for annotation/test/spec on whole buffer.
|
60
76
|
See also `rct-interactive'. "
|
61
77
|
(interactive (rct-interactive))
|
62
78
|
(rct-save-position
|
63
|
-
(lambda ()
|
79
|
+
(lambda ()
|
80
|
+
(rct-shell-command (funcall xmpfilter-command-function option)))))
|
64
81
|
|
65
82
|
(defun xmpfilter-command (&optional option)
|
66
83
|
"The xmpfilter command line, DWIM."
|
67
84
|
(setq option (or option ""))
|
68
|
-
(
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
85
|
+
(flet ((in-block (beg-re)
|
86
|
+
(save-excursion
|
87
|
+
(goto-char (point-min))
|
88
|
+
(when (re-search-forward beg-re nil t)
|
89
|
+
(let ((s (point)) e)
|
90
|
+
(when (re-search-forward "^end\n" nil t)
|
91
|
+
(setq e (point))
|
92
|
+
(goto-char s)
|
93
|
+
(re-search-forward "# => *$" e t)))))))
|
94
|
+
(cond ((in-block "^class.+< Test::Unit::TestCase$")
|
95
|
+
(format "%s --unittest %s" xmpfilter-command-name option))
|
96
|
+
((in-block "^\\(describe\\|context\\).+do$")
|
97
|
+
(format "%s --spec %s" xmpfilter-command-name option))
|
98
|
+
(t
|
99
|
+
(format "%s %s" xmpfilter-command-name option)))))
|
78
100
|
|
79
101
|
;;;; Completion
|
80
102
|
(defvar rct-method-completion-table nil) ;internal
|
@@ -130,13 +152,12 @@ See also `rct-interactive'."
|
|
130
152
|
"Execute rct-complete/rct-doc and evaluate the output."
|
131
153
|
(let ((eval-buffer (get-buffer-create " *rct-eval*")))
|
132
154
|
;; copy to temporary buffer to do completion at non-EOL.
|
133
|
-
(shell-command
|
134
|
-
(
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
eval-buffer nil " *rct-error*")
|
155
|
+
(rct-shell-command
|
156
|
+
(format "%s %s %s --line=%d --column=%d %s"
|
157
|
+
command opt (or rct-option-local "")
|
158
|
+
(rct-current-line) (current-column)
|
159
|
+
(if rct-use-test-script (rct-test-script-option-string) ""))
|
160
|
+
eval-buffer)
|
140
161
|
(message "")
|
141
162
|
(eval (with-current-buffer eval-buffer
|
142
163
|
(goto-char 1)
|
@@ -213,5 +234,177 @@ See also `rct-interactive'. "
|
|
213
234
|
(find-file (shell-command-to-string
|
214
235
|
(format "%s %s" ruby-toggle-file-command-name buffer-file-name))))
|
215
236
|
|
237
|
+
;;;; rct-fork support
|
238
|
+
(defun rct-fork (options)
|
239
|
+
"Run rct-fork.
|
240
|
+
Rct-fork makes xmpfilter and completion MUCH FASTER because it pre-loads heavy libraries.
|
241
|
+
When rct-fork is running, the mode-line indicates it to avoid unnecessary run.
|
242
|
+
To kill rct-fork process, use \\[rct-fork-kill].
|
243
|
+
"
|
244
|
+
(interactive "srct-fork options (-e CODE -I LIBDIR -r LIB): ")
|
245
|
+
(rct-fork-kill)
|
246
|
+
(rct-fork-minor-mode 1)
|
247
|
+
(start-process-shell-command
|
248
|
+
"rct-fork" "*rct-fork*" rct-fork-command-name options))
|
249
|
+
(defun rct-fork-kill ()
|
250
|
+
"Kill rct-fork process invoked by \\[rct-fork]."
|
251
|
+
(interactive)
|
252
|
+
(when rct-fork-minor-mode
|
253
|
+
(rct-fork-minor-mode -1)
|
254
|
+
(interrupt-process "rct-fork")))
|
255
|
+
(define-minor-mode rct-fork-minor-mode
|
256
|
+
"This minor mode is turned on when rct-fork is run.
|
257
|
+
It is nothing but an indicator."
|
258
|
+
:lighter " <rct-fork>" :global t)
|
259
|
+
|
260
|
+
;;;; unit tests
|
261
|
+
(when (and (fboundp 'expectations))
|
262
|
+
(require 'ruby-mode)
|
263
|
+
(require 'el-mock nil t)
|
264
|
+
(expectations
|
265
|
+
(desc "comment-dwim advice")
|
266
|
+
(expect "# =>"
|
267
|
+
(with-temp-buffer
|
268
|
+
(ruby-mode)
|
269
|
+
(setq last-command nil)
|
270
|
+
(call-interactively 'comment-dwim)
|
271
|
+
(setq last-command 'comment-dwim)
|
272
|
+
(call-interactively 'comment-dwim)
|
273
|
+
(buffer-string)))
|
274
|
+
(expect (regexp "^1 +# =>")
|
275
|
+
(with-temp-buffer
|
276
|
+
(ruby-mode)
|
277
|
+
(insert "1")
|
278
|
+
(setq last-command nil)
|
279
|
+
(call-interactively 'comment-dwim)
|
280
|
+
(setq last-command 'comment-dwim)
|
281
|
+
(call-interactively 'comment-dwim)
|
282
|
+
(buffer-string)))
|
283
|
+
|
284
|
+
(desc "rct-current-line")
|
285
|
+
(expect 1
|
286
|
+
(with-temp-buffer
|
287
|
+
(rct-current-line)))
|
288
|
+
(expect 1
|
289
|
+
(with-temp-buffer
|
290
|
+
(insert "1")
|
291
|
+
(rct-current-line)))
|
292
|
+
(expect 2
|
293
|
+
(with-temp-buffer
|
294
|
+
(insert "1\n")
|
295
|
+
(rct-current-line)))
|
296
|
+
(expect 2
|
297
|
+
(with-temp-buffer
|
298
|
+
(insert "1\n2")
|
299
|
+
(rct-current-line)))
|
300
|
+
|
301
|
+
(desc "rct-save-position")
|
302
|
+
(expect (mock (set-window-start * 7) => nil)
|
303
|
+
(stub window-start => 7)
|
304
|
+
(with-temp-buffer
|
305
|
+
(insert "abcdef\nghi")
|
306
|
+
(rct-save-position #'ignore)))
|
307
|
+
(expect 2
|
308
|
+
(with-temp-buffer
|
309
|
+
(stub window-start => 1)
|
310
|
+
(stub set-window-start => nil)
|
311
|
+
(insert "abcdef\nghi")
|
312
|
+
(rct-save-position #'ignore)
|
313
|
+
(rct-current-line)))
|
314
|
+
(expect 3
|
315
|
+
(with-temp-buffer
|
316
|
+
(stub window-start => 1)
|
317
|
+
(stub set-window-start => nil)
|
318
|
+
(insert "abcdef\nghi")
|
319
|
+
(rct-save-position #'ignore)
|
320
|
+
(current-column)))
|
321
|
+
|
322
|
+
(desc "rct-interactive")
|
323
|
+
(expect '("read")
|
324
|
+
(let ((current-prefix-arg t))
|
325
|
+
(stub read-from-minibuffer => "read")
|
326
|
+
(rct-interactive)))
|
327
|
+
(expect '("-S ruby19")
|
328
|
+
(let ((current-prefix-arg nil)
|
329
|
+
(rct-option-local "-S ruby19"))
|
330
|
+
(stub read-from-minibuffer => "read")
|
331
|
+
(rct-interactive)))
|
332
|
+
(expect '("")
|
333
|
+
(let ((current-prefix-arg nil)
|
334
|
+
(rct-option-local))
|
335
|
+
(stub read-from-minibuffer => "read")
|
336
|
+
(rct-interactive)))
|
337
|
+
|
338
|
+
(desc "rct-shell-command")
|
339
|
+
(expect "1+1 # => 2\n"
|
340
|
+
(with-temp-buffer
|
341
|
+
(insert "1+1 # =>\n")
|
342
|
+
(rct-shell-command "xmpfilter")
|
343
|
+
(buffer-string)))
|
344
|
+
|
345
|
+
(desc "xmp")
|
346
|
+
|
347
|
+
(desc "xmpfilter-command")
|
348
|
+
(expect "xmpfilter --rails"
|
349
|
+
(let ((xmpfilter-command-name "xmpfilter"))
|
350
|
+
(with-temp-buffer
|
351
|
+
(insert "class TestFoo < Test::Unit::TestCase\n")
|
352
|
+
(xmpfilter-command "--rails"))))
|
353
|
+
(expect "xmpfilter "
|
354
|
+
(let ((xmpfilter-command-name "xmpfilter"))
|
355
|
+
(with-temp-buffer
|
356
|
+
(insert "context 'foo' do\n")
|
357
|
+
(xmpfilter-command))))
|
358
|
+
(expect "xmpfilter "
|
359
|
+
(let ((xmpfilter-command-name "xmpfilter"))
|
360
|
+
(with-temp-buffer
|
361
|
+
(insert "describe Array do\n")
|
362
|
+
(xmpfilter-command))))
|
363
|
+
(expect "xmpfilter --unittest --rails"
|
364
|
+
(let ((xmpfilter-command-name "xmpfilter"))
|
365
|
+
(with-temp-buffer
|
366
|
+
(insert "class TestFoo < Test::Unit::TestCase\n"
|
367
|
+
" def test_0\n"
|
368
|
+
" 1 + 1 # =>\n"
|
369
|
+
" end\n"
|
370
|
+
"end\n")
|
371
|
+
(xmpfilter-command "--rails"))))
|
372
|
+
(expect "xmpfilter --spec "
|
373
|
+
(let ((xmpfilter-command-name "xmpfilter"))
|
374
|
+
(with-temp-buffer
|
375
|
+
(insert "context 'foo' do\n"
|
376
|
+
" specify \"foo\" do\n"
|
377
|
+
" 1 + 1 # =>\n"
|
378
|
+
" end\n"
|
379
|
+
"end\n")
|
380
|
+
(xmpfilter-command))))
|
381
|
+
(expect "xmpfilter --spec "
|
382
|
+
(let ((xmpfilter-command-name "xmpfilter"))
|
383
|
+
(with-temp-buffer
|
384
|
+
(insert "describe Array do\n"
|
385
|
+
" it \"foo\" do\n"
|
386
|
+
" [1] + [1] # =>\n"
|
387
|
+
" end\n"
|
388
|
+
"end\n")
|
389
|
+
(xmpfilter-command))))
|
390
|
+
(expect "xmpfilter "
|
391
|
+
(let ((xmpfilter-command-name "xmpfilter"))
|
392
|
+
(with-temp-buffer
|
393
|
+
(insert "1 + 2\n")
|
394
|
+
(xmpfilter-command))))
|
395
|
+
|
396
|
+
(desc "rct-fork")
|
397
|
+
(expect t
|
398
|
+
(stub start-process-shell-command => t)
|
399
|
+
(stub interrupt-process => t)
|
400
|
+
(rct-fork "-r activesupport")
|
401
|
+
rct-fork-minor-mode)
|
402
|
+
(expect nil
|
403
|
+
(stub start-process-shell-command => t)
|
404
|
+
(stub interrupt-process => t)
|
405
|
+
(rct-fork "-r activesupport")
|
406
|
+
(rct-fork-kill)
|
407
|
+
rct-fork-minor-mode)
|
408
|
+
))
|
216
409
|
|
217
410
|
(provide 'rcodetools)
|