lucid 0.1.1 → 0.2.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.
- checksums.yaml +7 -0
- data/Gemfile +2 -0
- data/HISTORY.md +8 -0
- data/LICENSE +3 -0
- data/README.md +11 -2
- data/Rakefile +10 -1
- data/lib/autotest/discover.rb +5 -5
- data/lib/autotest/lucid_mixin.rb +34 -35
- data/lib/lucid/ast/table.rb +5 -4
- data/lib/lucid/cli/configuration.rb +0 -6
- data/lib/lucid/cli/options.rb +3 -12
- data/lib/lucid/formatter/condensed.rb +46 -0
- data/lib/lucid/formatter/html.rb +9 -3
- data/lib/lucid/formatter/junit.rb +6 -8
- data/lib/lucid/formatter/standard.rb +1 -7
- data/lib/lucid/generators/project/events-symbiont.rb +1 -1
- data/lib/lucid/platform.rb +1 -1
- data/lib/lucid/runtime.rb +1 -1
- data/lib/lucid/sequence.rb +5 -0
- data/lib/lucid/sequence/sequence_errors.rb +64 -0
- data/lib/lucid/sequence/sequence_group.rb +35 -0
- data/lib/lucid/sequence/sequence_phrase.rb +166 -0
- data/lib/lucid/sequence/sequence_steps.rb +20 -0
- data/lib/lucid/sequence/sequence_support.rb +26 -0
- data/lib/lucid/sequence/sequence_template.rb +354 -0
- data/lib/lucid/spec_file.rb +3 -1
- data/lib/lucid/step_match.rb +1 -1
- data/lib/lucid/wire_support/wire_packet.rb +1 -1
- data/lucid.gemspec +11 -9
- data/spec/lucid/app_spec.rb +42 -0
- data/spec/lucid/configuration_spec.rb +112 -0
- data/spec/lucid/sequences/sequence_conditional_spec.rb +74 -0
- data/spec/lucid/sequences/sequence_group_spec.rb +55 -0
- data/spec/lucid/sequences/sequence_phrase_spec.rb +122 -0
- data/spec/lucid/sequences/sequence_placeholder_spec.rb +56 -0
- data/spec/lucid/sequences/sequence_section_spec.rb +61 -0
- data/spec/lucid/sequences/sequence_support_spec.rb +65 -0
- data/spec/lucid/sequences/sequence_template_spec.rb +298 -0
- data/spec/spec_helper.rb +13 -0
- metadata +86 -54
- data/.rspec +0 -1
    
        checksums.yaml
    ADDED
    
    | @@ -0,0 +1,7 @@ | |
| 1 | 
            +
            ---
         | 
| 2 | 
            +
            SHA1:
         | 
| 3 | 
            +
              metadata.gz: 917611903e891a6a27b4dce03e92437edb07ceaa
         | 
| 4 | 
            +
              data.tar.gz: cdef90026f8bc2071096a02b91cccf652ca30231
         | 
| 5 | 
            +
            SHA512:
         | 
| 6 | 
            +
              metadata.gz: 6a3ec2d6be6b9e3090c9a76ffb8bc42c81424978762aa2145d995dbdb5831f0dafff8df606863006e9520a14a9099994b5aee7982cc996f1de9ef70d3b19c1e0
         | 
| 7 | 
            +
              data.tar.gz: 83cc3a91752a0bc0ce7d8fd81c3092c919fdf14473b1e0f760738cd5bab6ab7d880b801c3a08e8d3cf48a9f00fe05c0e628d4683ef4b0934cfb8f2434f9babce
         | 
    
        data/Gemfile
    CHANGED
    
    
    
        data/HISTORY.md
    CHANGED
    
    | @@ -2,6 +2,14 @@ Change Log and History | |
| 2 2 | 
             
            ======================
         | 
| 3 3 |  | 
| 4 4 |  | 
| 5 | 
            +
            Version 0.2.0 / 2013-09-28
         | 
| 6 | 
            +
            --------------------------
         | 
| 7 | 
            +
             | 
| 8 | 
            +
            This release introduces a fairly major change, which is that of sequences. The idea is that you can define sequence phrases that are used to stand in for a set of steps. That set of steps is the sequence. This is essentially a macro-like functionality for Lucid. It's uncertain how long this functionality will exist since it potentially harbors some questionable design choices when it comes to an expressive TDL.
         | 
| 9 | 
            +
             | 
| 10 | 
            +
            This release also introduces a new formatter called "condensed." This formatter is used simply to display a much more limited set of information about the scenarios that are being executed. Specifically, all that gets returned are the scenario titles, essentially hiding all of the steps. Pass/fail information is still reported.
         | 
| 11 | 
            +
             | 
| 12 | 
            +
             | 
| 5 13 | 
             
            Version 0.1.1 / 2013-06-04
         | 
| 6 14 | 
             
            --------------------------
         | 
| 7 15 |  | 
    
        data/LICENSE
    CHANGED
    
    | @@ -5,6 +5,9 @@ Copyright (c) 2012, 2013 Jeff Nyman | |
| 5 5 | 
             
            Any Cucumber-derived elements
         | 
| 6 6 | 
             
            Copyright (c) 2008,2009,2010,2011,2012,2013 Aslak Hellesøy and contributors.
         | 
| 7 7 |  | 
| 8 | 
            +
            Sequence functionality derived from Macros4Cuke
         | 
| 9 | 
            +
            Copyright (c) 2013, Dimitri Geshef.
         | 
| 10 | 
            +
             | 
| 8 11 | 
             
            Permission is hereby granted, free of charge, to any person obtaining
         | 
| 9 12 | 
             
            a copy of this software and associated documentation files (the
         | 
| 10 13 | 
             
            "Software"), to deal in the Software without restriction, including
         | 
    
        data/README.md
    CHANGED
    
    | @@ -1,6 +1,11 @@ | |
| 1 1 | 
             
            Lucid
         | 
| 2 2 | 
             
            =====
         | 
| 3 3 |  | 
| 4 | 
            +
            [](http://travis-ci.org/jnyman/lucid)
         | 
| 5 | 
            +
            [](https://gemnasium.com/jnyman/lucid)
         | 
| 6 | 
            +
            [](http://badge.fury.io/rb/lucid)
         | 
| 7 | 
            +
            [](https://coveralls.io/r/jnyman/lucid)
         | 
| 8 | 
            +
             | 
| 4 9 | 
             
            Description
         | 
| 5 10 | 
             
            -----------
         | 
| 6 11 |  | 
| @@ -42,8 +47,12 @@ You should also check out some of my [blog posts related to Lucid](http://tester | |
| 42 47 | 
             
            Contributing
         | 
| 43 48 | 
             
            ------------
         | 
| 44 49 |  | 
| 45 | 
            -
             | 
| 50 | 
            +
            [Suggest an Improvement](https://github.com/jnyman/lucid/issues) or [Report a Bug](https://github.com/jnyman/lucid/issues)
         | 
| 51 | 
            +
             | 
| 52 | 
            +
            To work on Lucid:
         | 
| 53 | 
            +
             | 
| 54 | 
            +
            1. Fork the project.
         | 
| 46 55 | 
             
            2. Create your feature branch (`git checkout -b my-new-feature`)
         | 
| 47 56 | 
             
            3. Commit your changes (`git commit -am 'Add some feature'`)
         | 
| 48 57 | 
             
            4. Push to the branch (`git push origin my-new-feature`)
         | 
| 49 | 
            -
            5. Create new  | 
| 58 | 
            +
            5. Create a new [pull request](https://help.github.com/articles/using-pull-requests)
         | 
    
        data/Rakefile
    CHANGED
    
    | @@ -1,2 +1,11 @@ | |
| 1 1 | 
             
            #!/usr/bin/env rake
         | 
| 2 | 
            -
            require  | 
| 2 | 
            +
            require 'bundler/gem_tasks'
         | 
| 3 | 
            +
            require 'rspec/core/rake_task'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            RSpec::Core::RakeTask.new do |c|
         | 
| 6 | 
            +
              options  = ['--color']
         | 
| 7 | 
            +
              options += ['--format', 'documentation']
         | 
| 8 | 
            +
              c.rspec_opts = options
         | 
| 9 | 
            +
            end
         | 
| 10 | 
            +
             | 
| 11 | 
            +
            task :default => :spec
         | 
    
        data/lib/autotest/discover.rb
    CHANGED
    
    | @@ -1,11 +1,11 @@ | |
| 1 1 | 
             
            Autotest.add_discovery do
         | 
| 2 | 
            -
              if File.directory?(' | 
| 3 | 
            -
                if ENV[' | 
| 4 | 
            -
                   | 
| 5 | 
            -
                elsif ENV[' | 
| 2 | 
            +
              if File.directory?('specs')
         | 
| 3 | 
            +
                if ENV['AUTOSPEC'] =~ /true/i
         | 
| 4 | 
            +
                  'lucid'
         | 
| 5 | 
            +
                elsif ENV['AUTOSPEC'] =~ /false/i
         | 
| 6 6 | 
             
                  # noop
         | 
| 7 7 | 
             
                else
         | 
| 8 | 
            -
                  puts  | 
| 8 | 
            +
                  puts '(Not running specs. To run specs in autotest, set AUTOSPEC=true.)'
         | 
| 9 9 | 
             
                end
         | 
| 10 10 | 
             
              end
         | 
| 11 11 | 
             
            end
         | 
    
        data/lib/autotest/lucid_mixin.rb
    CHANGED
    
    | @@ -5,71 +5,71 @@ require 'lucid/cli/profile' | |
| 5 5 |  | 
| 6 6 | 
             
            module Autotest::LucidMixin
         | 
| 7 7 | 
             
              def self.included(receiver)
         | 
| 8 | 
            -
                receiver::ALL_HOOKS << [: | 
| 8 | 
            +
                receiver::ALL_HOOKS << [:run_specs, :ran_specs]
         | 
| 9 9 | 
             
              end
         | 
| 10 10 |  | 
| 11 | 
            -
              attr_accessor : | 
| 11 | 
            +
              attr_accessor :specs_to_run
         | 
| 12 12 |  | 
| 13 13 | 
             
              def initialize
         | 
| 14 14 | 
             
                super
         | 
| 15 | 
            -
                 | 
| 15 | 
            +
                reset_specs
         | 
| 16 16 | 
             
              end
         | 
| 17 17 |  | 
| 18 18 | 
             
              def run
         | 
| 19 19 | 
             
                hook :initialize
         | 
| 20 20 | 
             
                reset
         | 
| 21 | 
            -
                 | 
| 21 | 
            +
                reset_specs
         | 
| 22 22 | 
             
                add_sigint_handler
         | 
| 23 23 |  | 
| 24 24 | 
             
                self.last_mtime = Time.now if $f
         | 
| 25 25 |  | 
| 26 | 
            -
                loop do | 
| 26 | 
            +
                loop do
         | 
| 27 27 | 
             
                  begin
         | 
| 28 28 | 
             
                    get_to_green
         | 
| 29 29 | 
             
                    if self.tainted then
         | 
| 30 30 | 
             
                      rerun_all_tests
         | 
| 31 | 
            -
                       | 
| 31 | 
            +
                      rerun_all_specs if all_good
         | 
| 32 32 | 
             
                    else
         | 
| 33 33 | 
             
                      hook :all_good
         | 
| 34 34 | 
             
                    end
         | 
| 35 35 | 
             
                    wait_for_changes
         | 
| 36 | 
            -
                    # Once tests and  | 
| 37 | 
            -
                    # time a file is changed to see if anything breaks.
         | 
| 38 | 
            -
                     | 
| 36 | 
            +
                    # Once tests and specs are running green, this should reset specs
         | 
| 37 | 
            +
                    # every time a file is changed to see if anything breaks.
         | 
| 38 | 
            +
                    reset_specs
         | 
| 39 39 | 
             
                  rescue Interrupt
         | 
| 40 40 | 
             
                    break if self.wants_to_quit
         | 
| 41 41 | 
             
                    reset
         | 
| 42 | 
            -
                     | 
| 42 | 
            +
                    reset_specs
         | 
| 43 43 | 
             
                  end
         | 
| 44 44 | 
             
                end
         | 
| 45 45 | 
             
                hook :quit
         | 
| 46 46 | 
             
              end
         | 
| 47 47 |  | 
| 48 | 
            -
              def  | 
| 49 | 
            -
                 | 
| 48 | 
            +
              def all_specs_good
         | 
| 49 | 
            +
                specs_to_run == ""
         | 
| 50 50 | 
             
              end
         | 
| 51 51 |  | 
| 52 52 | 
             
              def get_to_green
         | 
| 53 53 | 
             
                begin
         | 
| 54 54 | 
             
                  super
         | 
| 55 | 
            -
                   | 
| 56 | 
            -
                  wait_for_changes unless  | 
| 57 | 
            -
                end until  | 
| 55 | 
            +
                  run_specs
         | 
| 56 | 
            +
                  wait_for_changes unless all_specs_good
         | 
| 57 | 
            +
                end until all_specs_good
         | 
| 58 58 | 
             
              end
         | 
| 59 59 |  | 
| 60 | 
            -
              def  | 
| 61 | 
            -
                 | 
| 62 | 
            -
                 | 
| 60 | 
            +
              def rerun_all_specs
         | 
| 61 | 
            +
                reset_specs
         | 
| 62 | 
            +
                run_specs
         | 
| 63 63 | 
             
              end
         | 
| 64 64 |  | 
| 65 | 
            -
              def  | 
| 66 | 
            -
                self. | 
| 65 | 
            +
              def reset_specs
         | 
| 66 | 
            +
                self.specs_to_run = :all
         | 
| 67 67 | 
             
              end
         | 
| 68 68 |  | 
| 69 | 
            -
              def  | 
| 70 | 
            -
                hook : | 
| 71 | 
            -
                Tempfile.open('autotest-lucid') do | | 
| 72 | 
            -
                  cmd = self.make_lucid_cmd(self. | 
| 69 | 
            +
              def run_specs
         | 
| 70 | 
            +
                hook :run_specs
         | 
| 71 | 
            +
                Tempfile.open('autotest-lucid') do |dirty_specs_file|
         | 
| 72 | 
            +
                  cmd = self.make_lucid_cmd(self.specs_to_run, dirty_specs_file.path)
         | 
| 73 73 | 
             
                  return if cmd.empty?
         | 
| 74 74 | 
             
                  puts cmd unless $q
         | 
| 75 75 | 
             
                  old_sync = $stdout.sync
         | 
| @@ -99,32 +99,31 @@ module Autotest::LucidMixin | |
| 99 99 | 
             
                  ensure
         | 
| 100 100 | 
             
                    $stdout.sync = old_sync
         | 
| 101 101 | 
             
                  end
         | 
| 102 | 
            -
                  self. | 
| 103 | 
            -
                  self.tainted = true unless self. | 
| 102 | 
            +
                  self.specs_to_run = dirty_specs_file.read.strip
         | 
| 103 | 
            +
                  self.tainted = true unless self.specs_to_run == ''
         | 
| 104 104 | 
             
                end
         | 
| 105 | 
            -
                hook : | 
| 105 | 
            +
                hook :ran_specs
         | 
| 106 106 | 
             
              end
         | 
| 107 107 |  | 
| 108 | 
            -
              def make_lucid_cmd( | 
| 109 | 
            -
                return '' if  | 
| 108 | 
            +
              def make_lucid_cmd(specs_to_run, dirty_specs_filename)
         | 
| 109 | 
            +
                return '' if specs_to_run == ''
         | 
| 110 110 |  | 
| 111 111 | 
             
                profile_loader = Lucid::CLI::Profile.new
         | 
| 112 112 |  | 
| 113 | 
            -
                profile ||= "autotest-all" if profile_loader.has_profile?("autotest-all") &&  | 
| 113 | 
            +
                profile ||= "autotest-all" if profile_loader.has_profile?("autotest-all") && specs_to_run == :all
         | 
| 114 114 | 
             
                profile ||= "autotest"     if profile_loader.has_profile?("autotest")
         | 
| 115 115 | 
             
                profile ||= nil
         | 
| 116 116 |  | 
| 117 117 | 
             
                if profile
         | 
| 118 118 | 
             
                  args = ["--profile", profile]
         | 
| 119 119 | 
             
                else
         | 
| 120 | 
            -
                  args = %w{--format} << ( | 
| 120 | 
            +
                  args = %w{--format} << (specs_to_run == :all ? "progress" : "standard")
         | 
| 121 121 | 
             
                end
         | 
| 122 122 | 
             
                # No --color option as some IDEs (Netbeans) don't output them very well ([31m1 failed step[0m)
         | 
| 123 | 
            -
                args += %w{--format rerun --out} <<  | 
| 124 | 
            -
                args << ( | 
| 123 | 
            +
                args += %w{--format rerun --out} << dirty_specs_filename
         | 
| 124 | 
            +
                args << (specs_to_run == :all ? "" : specs_to_run)
         | 
| 125 125 |  | 
| 126 | 
            -
                 | 
| 127 | 
            -
                unless features_to_run == :all
         | 
| 126 | 
            +
                unless specs_to_run == :all
         | 
| 128 127 | 
             
                  args << 'steps' << 'common'
         | 
| 129 128 | 
             
                end
         | 
| 130 129 |  | 
    
        data/lib/lucid/ast/table.rb
    CHANGED
    
    | @@ -242,10 +242,11 @@ module Lucid | |
| 242 242 | 
             
                  end
         | 
| 243 243 |  | 
| 244 244 | 
             
                  # Returns a new Table where the headers are redefined. See #map_headers!
         | 
| 245 | 
            -
                  def map_headers(mappings={})
         | 
| 246 | 
            -
                    table = self.dup
         | 
| 247 | 
            -
                    table.map_headers!(mappings)
         | 
| 248 | 
            -
                    table
         | 
| 245 | 
            +
                  def map_headers(mappings={}, &block)
         | 
| 246 | 
            +
                    #table = self.dup
         | 
| 247 | 
            +
                    #table.map_headers!(mappings)
         | 
| 248 | 
            +
                    #table
         | 
| 249 | 
            +
                    self.class.new raw.dump, @conversion_procs.dup, mappings, block
         | 
| 249 250 | 
             
                  end
         | 
| 250 251 |  | 
| 251 252 | 
             
                  # Change how #hashes converts column values. The +column_name+ argument identifies the column
         | 
| @@ -186,12 +186,6 @@ module Lucid | |
| 186 186 | 
             
                  end
         | 
| 187 187 |  | 
| 188 188 | 
             
                  def formatters(runtime)
         | 
| 189 | 
            -
                    # TODO: Remove the autoformat functionality; use the Gherkin CLI instead.
         | 
| 190 | 
            -
                    if @options[:autoformat]
         | 
| 191 | 
            -
                      require 'lucid/formatter/standard'
         | 
| 192 | 
            -
                      return [Formatter::Standard.new(runtime, nil, @options)]
         | 
| 193 | 
            -
                    end
         | 
| 194 | 
            -
             | 
| 195 189 | 
             
                    @options[:formats].map do |format|
         | 
| 196 190 | 
             
                      # The name will be a name, like 'standard'. The route will be the
         | 
| 197 191 | 
             
                      # location where output is sent to, such as 'STDOUT'.
         | 
    
        data/lib/lucid/cli/options.rb
    CHANGED
    
    | @@ -10,6 +10,7 @@ module Lucid | |
| 10 10 | 
             
                  LUCID_FORMATS = {
         | 
| 11 11 | 
             
                    'html'        => ['Lucid::Formatter::Html',        'Generates an HTML report.'],
         | 
| 12 12 | 
             
                    'standard'    => ['Lucid::Formatter::Standard',    'Prints the spec as-is, using color if available.'],
         | 
| 13 | 
            +
                    'condensed'   => ['Lucid::Formatter::Condensed',   'Output only spec file and scenarios.'],
         | 
| 13 14 | 
             
                    'progress'    => ['Lucid::Formatter::Progress',    'Prints one character per scenario.'],
         | 
| 14 15 | 
             
                    'rerun'       => ['Lucid::Formatter::Rerun',       'Prints failing specs with line numbers.'],
         | 
| 15 16 | 
             
                    'usage'       => ['Lucid::Formatter::Usage',       "Prints where test definitions are used.\n" +
         | 
| @@ -27,7 +28,7 @@ module Lucid | |
| 27 28 | 
             
                  largest = LUCID_FORMATS.keys.map{|s| s.length}.max
         | 
| 28 29 | 
             
                  FORMAT_LIST = (LUCID_FORMATS.keys.sort.map do |key|
         | 
| 29 30 | 
             
                    "  #{key}#{' ' * (largest - key.length)} : #{LUCID_FORMATS[key][1]}"
         | 
| 30 | 
            -
                  end) + ["Use --format rerun --out  | 
| 31 | 
            +
                  end) + ["Use --format rerun --out rerun.txt to write out failing",
         | 
| 31 32 | 
             
                          "specs. You can rerun them with lucid @rerun.txt.",
         | 
| 32 33 | 
             
                          "FORMAT can also be the fully qualified class name of",
         | 
| 33 34 | 
             
                          "your own custom formatter. If the class isn't loaded,",
         | 
| @@ -46,7 +47,7 @@ module Lucid | |
| 46 47 | 
             
                  OPTIONS_WITH_ARGS = ['-r', '--require', '--i18n', '-f', '--format', '-o', '--out',
         | 
| 47 48 | 
             
                                       '-t', '--tags', '-n', '--name', '-e', '--exclude',
         | 
| 48 49 | 
             
                                       PROFILE_SHORT_FLAG, PROFILE_LONG_FLAG,
         | 
| 49 | 
            -
                                       ' | 
| 50 | 
            +
                                       '--lines', '--port',
         | 
| 50 51 | 
             
                                       '-I', '--matcher-type']
         | 
| 51 52 |  | 
| 52 53 | 
             
                  def self.parse(args, out_stream, error_stream, options = {})
         | 
| @@ -210,16 +211,6 @@ module Lucid | |
| 210 211 | 
             
                        Lucid::Term::ANSIColor.coloring = v
         | 
| 211 212 | 
             
                      end
         | 
| 212 213 |  | 
| 213 | 
            -
                      opts.on("-a", "--autoformat DIR",
         | 
| 214 | 
            -
                        "Reformats (pretty prints) spec files and write them to DIRECTORY.",
         | 
| 215 | 
            -
                        "Be careful if you choose to overwrite the originals.",
         | 
| 216 | 
            -
                        "Implies --dry-run --format pretty.") do |directory|
         | 
| 217 | 
            -
                        @options[:autoformat] = directory
         | 
| 218 | 
            -
                        Lucid::Term::ANSIColor.coloring = false
         | 
| 219 | 
            -
                        @options[:dry_run] = true
         | 
| 220 | 
            -
                        @quiet = true
         | 
| 221 | 
            -
                      end
         | 
| 222 | 
            -
             | 
| 223 214 | 
             
                      opts.on("-m", "--no-multiline",
         | 
| 224 215 | 
             
                              "Lucid will not print multiline strings and tables under steps.") do
         | 
| 225 216 | 
             
                        @options[:no_multiline] = true
         | 
| @@ -0,0 +1,46 @@ | |
| 1 | 
            +
            require 'lucid/formatter/standard'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module Lucid
         | 
| 4 | 
            +
              module Formatter
         | 
| 5 | 
            +
                class Condensed < Lucid::Formatter::Standard
         | 
| 6 | 
            +
                  
         | 
| 7 | 
            +
                  def scenario_name(keyword, name, file_colon_line, source_indent)
         | 
| 8 | 
            +
                    super
         | 
| 9 | 
            +
                  end
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                  def feature_name(keyword, name)
         | 
| 12 | 
            +
                    name = name.split(/\n/)[0]
         | 
| 13 | 
            +
                    @io.puts("#{keyword}: #{name}")
         | 
| 14 | 
            +
                    @io.flush
         | 
| 15 | 
            +
                  end
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                  def background_name(*args)
         | 
| 18 | 
            +
                    return
         | 
| 19 | 
            +
                  end
         | 
| 20 | 
            +
             | 
| 21 | 
            +
                  def before_step( step )
         | 
| 22 | 
            +
                    @io.print "\r... #{step.name}"
         | 
| 23 | 
            +
                    @io.flush
         | 
| 24 | 
            +
                  end
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                  def after_step( step )
         | 
| 27 | 
            +
                    @io.print " "*(step.name.length+4)
         | 
| 28 | 
            +
                    @io.flush
         | 
| 29 | 
            +
                  end
         | 
| 30 | 
            +
             | 
| 31 | 
            +
                  def before_step_result( *args )
         | 
| 32 | 
            +
                    @io.printf "\r"
         | 
| 33 | 
            +
                    super
         | 
| 34 | 
            +
                  end
         | 
| 35 | 
            +
             | 
| 36 | 
            +
                  def step_name(*args)
         | 
| 37 | 
            +
                    @hide_this_step=true if args[2] == :passed
         | 
| 38 | 
            +
                    super
         | 
| 39 | 
            +
                  end
         | 
| 40 | 
            +
             | 
| 41 | 
            +
                  def comment_line(comment_line)
         | 
| 42 | 
            +
                    return
         | 
| 43 | 
            +
                  end
         | 
| 44 | 
            +
                end
         | 
| 45 | 
            +
              end
         | 
| 46 | 
            +
            end
         | 
    
        data/lib/lucid/formatter/html.rb
    CHANGED
    
    | @@ -22,6 +22,7 @@ module Lucid | |
| 22 22 | 
             
                    @header_red = nil
         | 
| 23 23 | 
             
                    @delayed_messages = []
         | 
| 24 24 | 
             
                    @img_id = 0
         | 
| 25 | 
            +
                    @inside_outline = false
         | 
| 25 26 | 
             
                  end
         | 
| 26 27 |  | 
| 27 28 | 
             
                  def embed(src, mime_type, label)
         | 
| @@ -171,8 +172,10 @@ module Lucid | |
| 171 172 | 
             
                  end
         | 
| 172 173 |  | 
| 173 174 | 
             
                  def before_outline_table(outline_table)
         | 
| 175 | 
            +
                    @inside_outline = true
         | 
| 174 176 | 
             
                    @outline_row = 0
         | 
| 175 177 | 
             
                    @builder << '<table>'
         | 
| 178 | 
            +
                    @inside_outline = false
         | 
| 176 179 | 
             
                  end
         | 
| 177 180 |  | 
| 178 181 | 
             
                  def after_outline_table(outline_table)
         | 
| @@ -257,6 +260,7 @@ module Lucid | |
| 257 260 | 
             
                  end
         | 
| 258 261 |  | 
| 259 262 | 
             
                  def exception(exception, status)
         | 
| 263 | 
            +
                    return if @hide_this_step
         | 
| 260 264 | 
             
                    build_exception_detail(exception)
         | 
| 261 265 | 
             
                  end
         | 
| 262 266 |  | 
| @@ -325,7 +329,7 @@ module Lucid | |
| 325 329 | 
             
                    attributes = {:id => "#{@row_id}_#{@col_index}", :class => 'step'}
         | 
| 326 330 | 
             
                    attributes[:class] += " #{status}" if status
         | 
| 327 331 | 
             
                    build_cell(@cell_type, value, attributes)
         | 
| 328 | 
            -
                    set_scenario_color(status)
         | 
| 332 | 
            +
                    set_scenario_color(status) if @inside_outline
         | 
| 329 333 | 
             
                    @col_index += 1
         | 
| 330 334 | 
             
                  end
         | 
| 331 335 |  | 
| @@ -405,7 +409,8 @@ module Lucid | |
| 405 409 | 
             
                    @builder.script do
         | 
| 406 410 | 
             
                      @builder.text!("makeRed('lucid-header');") unless @header_red
         | 
| 407 411 | 
             
                      @header_red = true
         | 
| 408 | 
            -
                      @ | 
| 412 | 
            +
                      scenario_or_background = @in_background ? "background" : "scenario"
         | 
| 413 | 
            +
                      @builder.text!("makeRed('#{scenario_or_background}_#{@scenario_number}');") unless @scenario_red
         | 
| 409 414 | 
             
                      @scenario_red = true
         | 
| 410 415 | 
             
                    end
         | 
| 411 416 | 
             
                  end
         | 
| @@ -413,7 +418,8 @@ module Lucid | |
| 413 418 | 
             
                  def set_scenario_color_pending
         | 
| 414 419 | 
             
                    @builder.script do
         | 
| 415 420 | 
             
                      @builder.text!("makeYellow('lucid-header');") unless @header_red
         | 
| 416 | 
            -
                      @ | 
| 421 | 
            +
                      scenario_or_background = @in_background ? "background" : "scenario"
         | 
| 422 | 
            +
                      @builder.text!("makeYellow('#{scenario_or_background}_#{@scenario_number}');") unless @scenario_red
         | 
| 417 423 | 
             
                    end
         | 
| 418 424 | 
             
                  end
         | 
| 419 425 |  | 
| @@ -130,21 +130,19 @@ module Lucid | |
| 130 130 | 
             
                    @time += duration
         | 
| 131 131 | 
             
                    classname = @feature_name
         | 
| 132 132 | 
             
                    name = "#{@scenario}#{suffix}"
         | 
| 133 | 
            -
                    pending = [:pending, :undefined].include?(status)
         | 
| 134 | 
            -
                     | 
| 135 | 
            -
             | 
| 133 | 
            +
                    pending = [:pending, :undefined].include?(status) && ( !@options[:strict])
         | 
| 134 | 
            +
                    
         | 
| 136 135 | 
             
                    @builder.testcase(:classname => classname, :name => name, :time => "%.6f" % duration) do
         | 
| 137 | 
            -
                       | 
| 136 | 
            +
                      if status == :skipped || pending
         | 
| 137 | 
            +
                        @builder.skipped
         | 
| 138 | 
            +
                        @skipped += 1
         | 
| 139 | 
            +
                      elsif status != :passed
         | 
| 138 140 | 
             
                        @builder.failure(:message => "#{status.to_s} #{name}", :type => status.to_s) do
         | 
| 139 141 | 
             
                          @builder.cdata! @output
         | 
| 140 142 | 
             
                          @builder.cdata!(format_exception(exception)) if exception
         | 
| 141 143 | 
             
                        end
         | 
| 142 144 | 
             
                        @failures += 1
         | 
| 143 145 | 
             
                      end
         | 
| 144 | 
            -
                      if passed and (status == :skipped || pending)
         | 
| 145 | 
            -
                        @builder.skipped
         | 
| 146 | 
            -
                        @skipped += 1
         | 
| 147 | 
            -
                      end
         | 
| 148 146 | 
             
                      @builder.tag!('system-out')
         | 
| 149 147 | 
             
                      @builder.tag!('system-err')
         | 
| 150 148 | 
             
                    end
         | 
| @@ -27,18 +27,12 @@ module Lucid | |
| 27 27 | 
             
                  end
         | 
| 28 28 |  | 
| 29 29 | 
             
                  def after_features(features)
         | 
| 30 | 
            -
                    print_summary(features) | 
| 30 | 
            +
                    print_summary(features)
         | 
| 31 31 | 
             
                  end
         | 
| 32 32 |  | 
| 33 33 | 
             
                  def before_feature(feature)
         | 
| 34 34 | 
             
                    @exceptions = []
         | 
| 35 35 | 
             
                    @indent = 0
         | 
| 36 | 
            -
                    if @options[:autoformat]
         | 
| 37 | 
            -
                      file = File.join(@options[:autoformat], feature.file)
         | 
| 38 | 
            -
                      dir = File.dirname(file)
         | 
| 39 | 
            -
                      mkdir_p(dir) unless File.directory?(dir)
         | 
| 40 | 
            -
                      @io = ensure_file(file, "standard")
         | 
| 41 | 
            -
                    end
         | 
| 42 36 | 
             
                  end
         | 
| 43 37 |  | 
| 44 38 | 
             
                  def comment_line(comment_line)
         |