spec/helper.rb in ver-2010.02 vs spec/helper.rb in ver-2010.08
- old
+ new
@@ -9,26 +9,27 @@
def initialize(&block)
@contexts = []
instance_eval(&block)
end
- def run
+ def run(options = {})
if context = @contexts.shift
Tk::After.idle do
context.run
- run
+ run(options)
end
else
- Tk::After.idle{ bacon_summary }
+ bacon_summary
end
end
def describe(*args, &block)
@contexts << Bacon::Context.new(args.join(' '), &block)
end
def bacon_summary
+ Tk.update # finish all pending events first
Bacon.handle_summary
if $!
Kernel.raise $!
elsif Bacon::Counter[:errors] + Bacon::Counter[:failed] > 0
@@ -36,10 +37,11 @@
else
Kernel.exit 0
end
ensure
$stdout.flush
+ $stderr.flush
Tk.exit
end
end
@@ -53,13 +55,127 @@
# it 'should open one buffer by default' do
# VER.buffers.size.should == 1
# end
# end
# end
- def self.spec(&block)
- specs = Spec.new(&block)
+ def self.spec(options = {}, &block)
+ options = {
+ fork: false,
+ hidden: true,
+ load_rc: false,
+ welcome: false
+ }.merge(options)
- VER.run fork: false do
- specs.run
- end
+ VER.run(options){ Spec.new(&block).run(options) }
+ end
+
+ # this is called when no buffers are left, make sure we finish all pending
+ # events and output the summary first.
+ def self.exit
+ Tk.update
+ end
+end
+
+BUFFER_VALUE = <<'VALUE'.chomp.freeze
+Inventore voluptatibus dolorem assumenda.
+Voluptates officiis quidem nemo est.
+Qui similique quia voluptatem.
+Sit pariatur vel aperiam et ab.
+Quam dolorem dignissimos perferendis.
+Nostrum cumque quaerat nobis ut repudiandae vitae autem perferendis.
+Quasi beatae sunt est et quo.
+Et eum qui perferendis excepturi molestias reiciendis.
+Sed voluptatum quis eaque vitae sed a et.
+Velit earum eius cupiditate saepe blanditiis aspernatur dolorem voluptas.
+In quam quo repellat.
+Iusto repudiandae delectus omnis ut autem.
+Fugiat tempore officiis ab.
+ Aut culpa accusantium consequatur laboriosam pariatur.
+ Cum autem explicabo dignissimos nemo.
+ Omnis vero rerum et in fugiat et eos.
+Ipsum commodi beatae maxime deserunt aut.
+Maxime earum harum officiis libero laborum.
+Aut et porro nam voluptas praesentium quaerat.
+Enim blanditiis delectus voluptate aliquid placeat.
+Repudiandae quae corrupti quaerat quisquam omnis ratione.
+Tempore dicta rem maxime nam aperiam consequatur nobis.
+Aut nam omnis ullam.
+Quia at quas minima quis.
+Numquam dolore similique et autem porro alias asperiores.
+Culpa neque qui unde voluptas.
+Sed id minus ut consequatur nihil aut itaque dolore.
+Alias maiores officiis quasi facilis dolor inventore.
+Omnis provident itaque neque.
+Rerum vel tenetur qui dicta sit omnis modi aut.
+Rerum laudantium et ipsa id natus dolores qui.
+Nulla est nihil eius et.
+Sint quibusdam est molestiae.
+Praesentium non quo omnis aliquam eaque est.
+Culpa sunt voluptatem ut dolores porro eius molestias esse.
+Nesciunt quo dignissimos debitis illo est omnis maiores.
+Sint cupiditate quo id perspiciatis voluptas qui quo.
+Suscipit ut incidunt atque animi minus optio esse harum.
+Molestiae sint iusto quasi.
+Quo delectus ipsa quia iste ullam corporis.
+Perferendis ut dolores error voluptatem.
+VALUE
+
+shared :with_buffer do
+ before do
+ create_buffer
+ buffer.insert = '1.0'
+ buffer.major_mode = VER::MajorMode[:Fundamental]
+ @insert = buffer.at_insert
+ Tk.update
+ end
+
+ def create_buffer
+ return if $ver_spec_buffer
+ $ver_spec_buffer = VER.layout.create_buffer
+ VER.layout.add_buffer(buffer)
+ buffer.value = BUFFER_VALUE
+ end
+
+ def buffer
+ $ver_spec_buffer
+ end
+
+ def insert
+ @insert
+ end
+
+ def reset
+ buffer.value = BUFFER_VALUE
+ end
+
+ def type(*keys)
+ Tk.update
+ buffer.type(keys.join)
+ Tk.update
+ end
+
+ def minibuf
+ buffer.minibuf
+ end
+
+ def range(*args)
+ buffer.range(*args)
+ end
+
+ def clipboard
+ VER::Clipboard.dwim
+ end
+
+ def clipboard_set(string)
+ VER::Clipboard.dwim = string
+ end
+end
+
+shared :destructive_mode do
+ behaves_like :with_buffer
+
+ before do
+ buffer.value = BUFFER_VALUE
+ buffer.insert = '1.0'
+ VER::Clipboard.clear
end
end