]> git.openstreetmap.org Git - rails.git/blobdiff - vendor/gems/rspec-1.1.2/spec/spec/runner/formatter/spec_mate_formatter_spec.rb
added RSpec and RSpec on Rails
[rails.git] / vendor / gems / rspec-1.1.2 / spec / spec / runner / formatter / spec_mate_formatter_spec.rb
diff --git a/vendor/gems/rspec-1.1.2/spec/spec/runner/formatter/spec_mate_formatter_spec.rb b/vendor/gems/rspec-1.1.2/spec/spec/runner/formatter/spec_mate_formatter_spec.rb
new file mode 100644 (file)
index 0000000..e782254
--- /dev/null
@@ -0,0 +1,103 @@
+require File.dirname(__FILE__) + '/../../../spec_helper'
+require 'hpricot' # Needed to compare generated with wanted HTML
+require 'spec/runner/formatter/text_mate_formatter'
+
+module Spec
+  module Runner
+    module Formatter
+      describe TextMateFormatter do
+        attr_reader :root, :suffix, :expected_file
+        before do
+          @root = File.expand_path(File.dirname(__FILE__) + '/../../../..')
+          @suffix = jruby? ? '-jruby' : ''
+          @expected_file = File.dirname(__FILE__) + "/text_mate_formatted-#{::VERSION}#{suffix}.html"
+        end
+
+        def jruby?
+          PLATFORM == 'java'
+        end
+
+        def produces_html_identical_to_manually_designed_document(opt)
+          root = File.expand_path(File.dirname(__FILE__) + '/../../../..')
+
+          Dir.chdir(root) do
+            args = [
+              'failing_examples/mocking_example.rb',
+                'failing_examples/diffing_spec.rb',
+                'examples/pure/stubbing_example.rb',
+                'examples/pure/pending_example.rb',
+                '--format',
+                'textmate',
+                opt
+            ]
+            err = StringIO.new
+            out = StringIO.new
+            options = ::Spec::Runner::OptionParser.parse(args, err, out)
+            Spec::Runner::CommandLine.run(options)
+
+            yield(out.string)
+          end          
+        end
+
+        # # Uncomment this spec temporarily in order to overwrite the expected with actual.
+        # # Use with care!!!
+        # describe TextMateFormatter, "functional spec file generator" do
+        #   it "generates a new comparison file" do
+        #     Dir.chdir(root) do
+        #       args = ['failing_examples/mocking_example.rb', 'failing_examples/diffing_spec.rb', 'examples/pure/stubbing_example.rb',  'examples/pure/pending_example.rb', '--format', 'textmate', '--diff']
+        #       err = StringIO.new
+        #       out = StringIO.new
+        #       Spec::Runner::CommandLine.run(
+        #         ::Spec::Runner::OptionParser.parse(args, err, out)
+        #       )
+        #
+        #       seconds = /\d+\.\d+ seconds/
+        #       html = out.string.gsub seconds, 'x seconds'
+        #
+        #       File.open(expected_file, 'w') {|io| io.write(html)}
+        #     end
+        #   end
+        # end
+
+         describe "functional spec using --diff" do
+           it "should produce HTML identical to the one we designed manually with --diff" do
+             produces_html_identical_to_manually_designed_document("--diff") do |html|
+               suffix = jruby? ? '-jruby' : ''
+               expected_file = File.dirname(__FILE__) + "/text_mate_formatted-#{::VERSION}#{suffix}.html"
+               unless File.file?(expected_file)
+                 raise "There is no HTML file with expected content for this platform: #{expected_file}"
+               end
+               expected_html = File.read(expected_file)
+
+               seconds = /\d+\.\d+ seconds/
+               html.gsub! seconds, 'x seconds'
+               expected_html.gsub! seconds, 'x seconds'
+
+               doc = Hpricot(html)
+               backtraces = doc.search("div.backtrace/a")
+               doc.search("div.backtrace").remove
+
+               expected_doc = Hpricot(expected_html)
+               expected_doc.search("div.backtrace").remove
+
+               doc.inner_html.should == expected_doc.inner_html
+
+               backtraces.each do |backtrace_link|
+                 backtrace_link[:href].should include("txmt://open?url=")
+               end
+             end
+           end
+
+         end
+
+         describe "functional spec using --dry-run" do
+           it "should produce HTML identical to the one we designed manually with --dry-run" do
+             produces_html_identical_to_manually_designed_document("--dry-run") do |html, expected_html|
+               html.should =~ /This was a dry-run/m
+             end
+           end
+         end
+      end
+    end
+  end
+end
\ No newline at end of file