allure-rspec 0.1
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/.gitignore +14 -0
- data/Gemfile +5 -0
- data/Gemfile.lock +41 -0
- data/README.md +53 -0
- data/allure-rspec.gemspec +27 -0
- data/lib/allure-rspec.rb +28 -0
- data/lib/allure-rspec/adaptor.rb +9 -0
- data/lib/allure-rspec/builder.rb +150 -0
- data/lib/allure-rspec/dsl.rb +45 -0
- data/lib/allure-rspec/formatter.rb +60 -0
- data/lib/allure-rspec/version.rb +5 -0
- data/spec/extend_steps_spec.rb +21 -0
- data/spec/spec_helper.rb +11 -0
- metadata +127 -0
    
        checksums.yaml
    ADDED
    
    | @@ -0,0 +1,7 @@ | |
| 1 | 
            +
            ---
         | 
| 2 | 
            +
            SHA1:
         | 
| 3 | 
            +
              metadata.gz: d5172f300f2a968898c79b3db59c0fc632c2d74c
         | 
| 4 | 
            +
              data.tar.gz: 6a63f38b078f320a38b8b4c133e032c64f7c94dd
         | 
| 5 | 
            +
            SHA512:
         | 
| 6 | 
            +
              metadata.gz: 030995aae4cb005e6a498222a3050d484ab1aa825f63a0e3ff97768fc4f069161831a503d5e70be70a44c1d898f77b7495518700342816e77402a022ad1f100f
         | 
| 7 | 
            +
              data.tar.gz: a49109b6de8af85d44ebcb3b49bfc101fd53bb584c59498cdebb756ac5fc29875f075e37f0f7d2f812241bbe9dbd547afa91f152dc429782eb8b7206f306b8f9
         | 
    
        data/.gitignore
    ADDED
    
    
    
        data/Gemfile
    ADDED
    
    
    
        data/Gemfile.lock
    ADDED
    
    | @@ -0,0 +1,41 @@ | |
| 1 | 
            +
            PATH
         | 
| 2 | 
            +
              remote: .
         | 
| 3 | 
            +
              specs:
         | 
| 4 | 
            +
                Allure RSpec Adaptor (0.1)
         | 
| 5 | 
            +
                  nokogiri
         | 
| 6 | 
            +
                  rspec-steps (~> 0.1.1)
         | 
| 7 | 
            +
                  uuid
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            GEM
         | 
| 10 | 
            +
              remote: https://rubygems.org/
         | 
| 11 | 
            +
              specs:
         | 
| 12 | 
            +
                diff-lcs (1.2.5)
         | 
| 13 | 
            +
                macaddr (1.6.1)
         | 
| 14 | 
            +
                  systemu (~> 2.5.0)
         | 
| 15 | 
            +
                mini_portile (0.5.2)
         | 
| 16 | 
            +
                nokogiri (1.6.0)
         | 
| 17 | 
            +
                  mini_portile (~> 0.5.0)
         | 
| 18 | 
            +
                rake (10.1.0)
         | 
| 19 | 
            +
                rspec (2.13.0)
         | 
| 20 | 
            +
                  rspec-core (~> 2.13.0)
         | 
| 21 | 
            +
                  rspec-expectations (~> 2.13.0)
         | 
| 22 | 
            +
                  rspec-mocks (~> 2.13.0)
         | 
| 23 | 
            +
                rspec-core (2.13.1)
         | 
| 24 | 
            +
                rspec-expectations (2.13.0)
         | 
| 25 | 
            +
                  diff-lcs (>= 1.1.3, < 2.0)
         | 
| 26 | 
            +
                rspec-mocks (2.13.1)
         | 
| 27 | 
            +
                rspec-steps (0.1.1)
         | 
| 28 | 
            +
                  rspec (>= 2.6, < 2.14.0)
         | 
| 29 | 
            +
                systemu (2.5.2)
         | 
| 30 | 
            +
                uuid (2.3.7)
         | 
| 31 | 
            +
                  macaddr (~> 1.0)
         | 
| 32 | 
            +
             | 
| 33 | 
            +
            PLATFORMS
         | 
| 34 | 
            +
              ruby
         | 
| 35 | 
            +
             | 
| 36 | 
            +
            DEPENDENCIES
         | 
| 37 | 
            +
              Allure RSpec Adaptor!
         | 
| 38 | 
            +
              bundler
         | 
| 39 | 
            +
              nokogiri (~> 1.6.0)
         | 
| 40 | 
            +
              rake
         | 
| 41 | 
            +
              rspec-steps (~> 0.1.1)
         | 
    
        data/README.md
    ADDED
    
    | @@ -0,0 +1,53 @@ | |
| 1 | 
            +
            # Allure RSpec Adaptor
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            Adaptor to use the Allure framework along with the RSpec
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            ## Setup
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            Add the dependency to your Gemfile
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            ```ruby
         | 
| 10 | 
            +
             gem 'allure-rspec'
         | 
| 11 | 
            +
            ```
         | 
| 12 | 
            +
             | 
| 13 | 
            +
            And then include it in your spec_helper.rb:
         | 
| 14 | 
            +
             | 
| 15 | 
            +
            ```ruby
         | 
| 16 | 
            +
                RSpec.configure do |c|
         | 
| 17 | 
            +
                  c.include AllureRSpec::Adaptor
         | 
| 18 | 
            +
                end
         | 
| 19 | 
            +
            ```
         | 
| 20 | 
            +
             | 
| 21 | 
            +
            ## Advanced options
         | 
| 22 | 
            +
             | 
| 23 | 
            +
            You can specify the directory where the Allure test results will appear. By default it would be 'allure/data' within
         | 
| 24 | 
            +
            your current directory.
         | 
| 25 | 
            +
             | 
| 26 | 
            +
            ```ruby
         | 
| 27 | 
            +
                AllureRSpec.configure do |c|
         | 
| 28 | 
            +
                  c.output_dir = "/whatever/you/like"
         | 
| 29 | 
            +
                end
         | 
| 30 | 
            +
            ```
         | 
| 31 | 
            +
             | 
| 32 | 
            +
            ## Usage examples
         | 
| 33 | 
            +
             | 
| 34 | 
            +
            ```ruby
         | 
| 35 | 
            +
            describe AllureRSpec do
         | 
| 36 | 
            +
             | 
| 37 | 
            +
              it "should build" do
         | 
| 38 | 
            +
                step "step1" do
         | 
| 39 | 
            +
                  attach_file "screenshot1", take_screenshot_as_file
         | 
| 40 | 
            +
                end
         | 
| 41 | 
            +
             | 
| 42 | 
            +
                step "step2" do
         | 
| 43 | 
            +
                  5.should be < 1
         | 
| 44 | 
            +
                end
         | 
| 45 | 
            +
             | 
| 46 | 
            +
                step "step3" do
         | 
| 47 | 
            +
                  0.should == 0
         | 
| 48 | 
            +
                end
         | 
| 49 | 
            +
             | 
| 50 | 
            +
                attach_file "screenshot2", take_screenshot_as_file
         | 
| 51 | 
            +
              end
         | 
| 52 | 
            +
            end
         | 
| 53 | 
            +
            ```
         | 
| @@ -0,0 +1,27 @@ | |
| 1 | 
            +
            # -*- encoding: utf-8 -*-
         | 
| 2 | 
            +
            $LOAD_PATH.unshift File.expand_path("../lib", __FILE__)
         | 
| 3 | 
            +
            require "allure-rspec/version"
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            Gem::Specification.new do |s|
         | 
| 6 | 
            +
              s.name          = 'allure-rspec'
         | 
| 7 | 
            +
              s.version       = AllureRSpec::Version::STRING
         | 
| 8 | 
            +
              s.platform         = Gem::Platform::RUBY
         | 
| 9 | 
            +
              s.authors       = ['Ilya Sadykov']
         | 
| 10 | 
            +
              s.email         = ['smecsia@yandex-team.ru']
         | 
| 11 | 
            +
              s.description   = %q{Adaptor to use Allure framework along with the RSpec 2}
         | 
| 12 | 
            +
              s.summary       = "allure-rspec-#{AllureRSpec::Version::STRING}"
         | 
| 13 | 
            +
              s.homepage      = 'http://allure.qatools.ru'
         | 
| 14 | 
            +
              s.license       = 'Apache2'
         | 
| 15 | 
            +
             | 
| 16 | 
            +
              s.files         = `git ls-files`.split("\n")
         | 
| 17 | 
            +
              s.test_files    = `git ls-files -- {spec,features}/*`.split("\n")
         | 
| 18 | 
            +
              s.executables   = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
         | 
| 19 | 
            +
              s.require_paths = ['lib']
         | 
| 20 | 
            +
             | 
| 21 | 
            +
              s.add_dependency 'rspec-steps', '~> 0.1.1'
         | 
| 22 | 
            +
              s.add_dependency 'nokogiri'
         | 
| 23 | 
            +
              s.add_dependency 'uuid'
         | 
| 24 | 
            +
             | 
| 25 | 
            +
              s.add_development_dependency 'bundler'
         | 
| 26 | 
            +
              s.add_development_dependency 'rake'
         | 
| 27 | 
            +
            end
         | 
    
        data/lib/allure-rspec.rb
    ADDED
    
    | @@ -0,0 +1,28 @@ | |
| 1 | 
            +
            require 'allure-rspec/version'
         | 
| 2 | 
            +
            require 'allure-rspec/formatter'
         | 
| 3 | 
            +
            require 'allure-rspec/adaptor'
         | 
| 4 | 
            +
            require 'allure-rspec/dsl'
         | 
| 5 | 
            +
            require 'allure-rspec/builder'
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            module AllureRSpec
         | 
| 8 | 
            +
              include AllureRSpec::DSL
         | 
| 9 | 
            +
             | 
| 10 | 
            +
              module Config
         | 
| 11 | 
            +
                class << self
         | 
| 12 | 
            +
                  attr_accessor :output_dir
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                  DEFAULT_OUTPUT_DIR = 'allure/data'
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                  def output_dir
         | 
| 17 | 
            +
                    @output_dir || DEFAULT_OUTPUT_DIR
         | 
| 18 | 
            +
                  end
         | 
| 19 | 
            +
                end
         | 
| 20 | 
            +
              end
         | 
| 21 | 
            +
             | 
| 22 | 
            +
              class << self
         | 
| 23 | 
            +
                def configure(&block)
         | 
| 24 | 
            +
                  yield Config
         | 
| 25 | 
            +
                end
         | 
| 26 | 
            +
              end
         | 
| 27 | 
            +
             | 
| 28 | 
            +
            end
         | 
| @@ -0,0 +1,150 @@ | |
| 1 | 
            +
            require 'rexml/text'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module AllureRSpec
         | 
| 4 | 
            +
             | 
| 5 | 
            +
              class Builder
         | 
| 6 | 
            +
                class << self
         | 
| 7 | 
            +
                  attr_accessor :suites
         | 
| 8 | 
            +
                  MUTEX = Mutex.new
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                  def init_suites
         | 
| 11 | 
            +
                    MUTEX.synchronize {
         | 
| 12 | 
            +
                      self.suites ||= {}
         | 
| 13 | 
            +
                    }
         | 
| 14 | 
            +
                  end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                  def start_suite(title)
         | 
| 17 | 
            +
                    init_suites
         | 
| 18 | 
            +
                    MUTEX.synchronize do
         | 
| 19 | 
            +
                      puts "Starting suite #{title}"
         | 
| 20 | 
            +
                      self.suites[title] = {
         | 
| 21 | 
            +
                          :title => title,
         | 
| 22 | 
            +
                          :start => timestamp,
         | 
| 23 | 
            +
                          :tests => {},
         | 
| 24 | 
            +
                      }
         | 
| 25 | 
            +
                    end
         | 
| 26 | 
            +
                  end
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                  def start_test(suite, test, severity = :normal)
         | 
| 29 | 
            +
                    MUTEX.synchronize do
         | 
| 30 | 
            +
                      puts "Starting test #{suite}.#{test}"
         | 
| 31 | 
            +
                      self.suites[suite][:tests][test] = {
         | 
| 32 | 
            +
                          :title => test,
         | 
| 33 | 
            +
                          :start => timestamp,
         | 
| 34 | 
            +
                          :severity => severity,
         | 
| 35 | 
            +
                          :failure => nil,
         | 
| 36 | 
            +
                          :steps => {},
         | 
| 37 | 
            +
                          :attachments => []
         | 
| 38 | 
            +
                      }
         | 
| 39 | 
            +
                    end
         | 
| 40 | 
            +
                  end
         | 
| 41 | 
            +
             | 
| 42 | 
            +
                  def stop_test(suite, test, result = {})
         | 
| 43 | 
            +
                    self.suites[suite][:tests][test][:steps].each do |step_title, step|
         | 
| 44 | 
            +
                      if step[:stop].nil? || step[:stop] == 0
         | 
| 45 | 
            +
                        stop_step(suite, test, step_title, result[:status])
         | 
| 46 | 
            +
                      end
         | 
| 47 | 
            +
                    end
         | 
| 48 | 
            +
                    MUTEX.synchronize do
         | 
| 49 | 
            +
                      puts "Stopping test #{suite}.#{test}"
         | 
| 50 | 
            +
                      self.suites[suite][:tests][test][:stop] = timestamp(result[:started_at])
         | 
| 51 | 
            +
                      self.suites[suite][:tests][test][:start] = timestamp(result[:finished_at])
         | 
| 52 | 
            +
                      self.suites[suite][:tests][test][:status] = result[:status]
         | 
| 53 | 
            +
                      if (result[:status].to_sym != :passed)
         | 
| 54 | 
            +
                        self.suites[suite][:tests][test][:failure] = {
         | 
| 55 | 
            +
                            :stacktrace => escape((result[:caller] || []).map { |s| s.to_s }.join("\r\n")),
         | 
| 56 | 
            +
                            :message => escape(result[:exception].to_s),
         | 
| 57 | 
            +
                        }
         | 
| 58 | 
            +
                      end
         | 
| 59 | 
            +
             | 
| 60 | 
            +
                    end
         | 
| 61 | 
            +
                  end
         | 
| 62 | 
            +
             | 
| 63 | 
            +
                  def escape(text)
         | 
| 64 | 
            +
                    REXML::Text.new(text, false, nil, false)
         | 
| 65 | 
            +
                  end
         | 
| 66 | 
            +
             | 
| 67 | 
            +
                  def start_step(suite, test, step, severity = :normal)
         | 
| 68 | 
            +
                    MUTEX.synchronize do
         | 
| 69 | 
            +
                      puts "Starting step #{suite}.#{test}.#{step}"
         | 
| 70 | 
            +
                      self.suites[suite][:tests][test][:steps][step] = {
         | 
| 71 | 
            +
                          :title => step,
         | 
| 72 | 
            +
                          :start => timestamp,
         | 
| 73 | 
            +
                          :severity => severity || :normal,
         | 
| 74 | 
            +
                          :attachments => []
         | 
| 75 | 
            +
                      }
         | 
| 76 | 
            +
                    end
         | 
| 77 | 
            +
                  end
         | 
| 78 | 
            +
             | 
| 79 | 
            +
                  def add_attachment(suite, test, attachment, step = nil)
         | 
| 80 | 
            +
                    attach = {
         | 
| 81 | 
            +
                        :title => attachment[:title],
         | 
| 82 | 
            +
                        :source => attachment[:source],
         | 
| 83 | 
            +
                        :type => attachment[:type],
         | 
| 84 | 
            +
                    }
         | 
| 85 | 
            +
                    if step.nil?
         | 
| 86 | 
            +
                      self.suites[suite][:tests][test][:attachments] << attach
         | 
| 87 | 
            +
                    else
         | 
| 88 | 
            +
                      self.suites[suite][:tests][test][:steps][step][:attachments] << attach
         | 
| 89 | 
            +
                    end
         | 
| 90 | 
            +
                  end
         | 
| 91 | 
            +
             | 
| 92 | 
            +
                  def stop_step(suite, test, step, status = :passed)
         | 
| 93 | 
            +
                    MUTEX.synchronize do
         | 
| 94 | 
            +
                      puts "Stopping step #{suite}.#{test}.#{step}"
         | 
| 95 | 
            +
                      self.suites[suite][:tests][test][:steps][step][:stop] = timestamp
         | 
| 96 | 
            +
                      self.suites[suite][:tests][test][:steps][step][:status] = status
         | 
| 97 | 
            +
                    end
         | 
| 98 | 
            +
                  end
         | 
| 99 | 
            +
             | 
| 100 | 
            +
                  def stop_suite(title)
         | 
| 101 | 
            +
                    init_suites
         | 
| 102 | 
            +
                    MUTEX.synchronize do
         | 
| 103 | 
            +
                      puts "Stopping suite #{title}"
         | 
| 104 | 
            +
                      self.suites[title][:stop] = timestamp
         | 
| 105 | 
            +
                    end
         | 
| 106 | 
            +
                  end
         | 
| 107 | 
            +
             | 
| 108 | 
            +
                  def timestamp(time = nil)
         | 
| 109 | 
            +
                    ((time || Time.now).to_f * 1000).to_i
         | 
| 110 | 
            +
                  end
         | 
| 111 | 
            +
             | 
| 112 | 
            +
                  def each_suite_build(&block)
         | 
| 113 | 
            +
                    suites_xml = []
         | 
| 114 | 
            +
                    self.suites.each do |suite_title, suite|
         | 
| 115 | 
            +
                      builder = Nokogiri::XML::Builder.new do
         | 
| 116 | 
            +
                        send "test-suite", :start => suite[:start] || 0, :stop => suite[:stop] || 0 do
         | 
| 117 | 
            +
                          title suite_title
         | 
| 118 | 
            +
                          suite[:tests].each do |test_title, test|
         | 
| 119 | 
            +
                            send "test-cases", :start => test[:start] || 0, :stop => test[:stop] || 0, :status => test[:status], :severity => test[:severity] do
         | 
| 120 | 
            +
                              title test_title
         | 
| 121 | 
            +
                              unless test[:failure].nil?
         | 
| 122 | 
            +
                                failure do
         | 
| 123 | 
            +
                                  message test[:failure][:message]
         | 
| 124 | 
            +
                                  send "stack-trace", test[:failure][:stacktrace]
         | 
| 125 | 
            +
                                end
         | 
| 126 | 
            +
                              end
         | 
| 127 | 
            +
                              test[:steps].each do |step_title, step_obj|
         | 
| 128 | 
            +
                                steps(:start => step_obj[:start] || 0, :stop => step_obj[:stop] || 0, :status => step_obj[:status]) do
         | 
| 129 | 
            +
                                  title step_title
         | 
| 130 | 
            +
                                  step_obj[:attachments].each do |attach|
         | 
| 131 | 
            +
                                    attachment :source => attach[:source], :title => attach[:title], :type => attach[:type]
         | 
| 132 | 
            +
                                  end
         | 
| 133 | 
            +
                                end
         | 
| 134 | 
            +
                              end
         | 
| 135 | 
            +
                              test[:attachments].each do |attach|
         | 
| 136 | 
            +
                                attachment :source => attach[:source], :title => attach[:title], :type => attach[:type]
         | 
| 137 | 
            +
                              end
         | 
| 138 | 
            +
                            end
         | 
| 139 | 
            +
                          end
         | 
| 140 | 
            +
                        end
         | 
| 141 | 
            +
                      end
         | 
| 142 | 
            +
                      xml = builder.to_xml
         | 
| 143 | 
            +
                      yield suite, xml
         | 
| 144 | 
            +
                      suites_xml << xml
         | 
| 145 | 
            +
                    end
         | 
| 146 | 
            +
                    suites_xml
         | 
| 147 | 
            +
                  end
         | 
| 148 | 
            +
                end
         | 
| 149 | 
            +
              end
         | 
| 150 | 
            +
            end
         | 
| @@ -0,0 +1,45 @@ | |
| 1 | 
            +
            module AllureRSpec
         | 
| 2 | 
            +
              module DSL
         | 
| 3 | 
            +
             | 
| 4 | 
            +
                ALLOWED_ATTACH_EXTS = %w[txt html xml png jpg json]
         | 
| 5 | 
            +
             | 
| 6 | 
            +
                def __mutex
         | 
| 7 | 
            +
                  @@__mutex ||= Mutex.new
         | 
| 8 | 
            +
                end
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                def __current_step
         | 
| 11 | 
            +
                  if defined? @@__current_step
         | 
| 12 | 
            +
                    @@__current_step
         | 
| 13 | 
            +
                  else
         | 
| 14 | 
            +
                    nil
         | 
| 15 | 
            +
                  end
         | 
| 16 | 
            +
                end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                def __with_step(step, &block)
         | 
| 19 | 
            +
                  __mutex.synchronize do
         | 
| 20 | 
            +
                    @@__current_step = step
         | 
| 21 | 
            +
                    yield
         | 
| 22 | 
            +
                    @@__current_step = nil
         | 
| 23 | 
            +
                  end
         | 
| 24 | 
            +
                end
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                def step(step, &block)
         | 
| 27 | 
            +
                  suite = self.example.metadata[:example_group][:description_args].first
         | 
| 28 | 
            +
                  test = self.example.metadata[:description]
         | 
| 29 | 
            +
                  AllureRSpec::Builder.start_step(suite, test, step)
         | 
| 30 | 
            +
                  __with_step step, &block
         | 
| 31 | 
            +
                  AllureRSpec::Builder.stop_step(suite, test, step)
         | 
| 32 | 
            +
                end
         | 
| 33 | 
            +
             | 
| 34 | 
            +
                def attach_file(title, file)
         | 
| 35 | 
            +
                  step = __current_step
         | 
| 36 | 
            +
                  suite = self.example.metadata[:example_group][:description_args].first
         | 
| 37 | 
            +
                  test = self.example.metadata[:description]
         | 
| 38 | 
            +
                  type = :other
         | 
| 39 | 
            +
                  file_extname = File.extname(file.path.downcase)
         | 
| 40 | 
            +
                  type = file_extname if ALLOWED_ATTACH_EXTS.include?(file_extname)
         | 
| 41 | 
            +
                  AllureRSpec::Builder.add_attachment(suite, test, {:type => type, :title => title, :source => file.path}, step)
         | 
| 42 | 
            +
                end
         | 
| 43 | 
            +
              end
         | 
| 44 | 
            +
            end
         | 
| 45 | 
            +
             | 
| @@ -0,0 +1,60 @@ | |
| 1 | 
            +
            require 'pathname'
         | 
| 2 | 
            +
            require 'uuid'
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            module AllureRSpec
         | 
| 5 | 
            +
             | 
| 6 | 
            +
              class Formatter < RSpec::Core::Formatters::BaseFormatter
         | 
| 7 | 
            +
             | 
| 8 | 
            +
                def example_failed(example)
         | 
| 9 | 
            +
                  AllureRSpec::Builder.stop_test(
         | 
| 10 | 
            +
                      example.metadata[:example_group][:description_args].first,
         | 
| 11 | 
            +
                      example.metadata[:description],
         | 
| 12 | 
            +
                      example.metadata[:execution_result].merge(:caller => example.metadata[:caller])
         | 
| 13 | 
            +
                  )
         | 
| 14 | 
            +
                  super
         | 
| 15 | 
            +
                end
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                def example_group_finished(group)
         | 
| 18 | 
            +
                  AllureRSpec::Builder.stop_suite(group.metadata[:example_group][:description_args].first)
         | 
| 19 | 
            +
                  super
         | 
| 20 | 
            +
                end
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                def example_group_started(group)
         | 
| 23 | 
            +
                  AllureRSpec::Builder.start_suite(group.metadata[:example_group][:description_args].first)
         | 
| 24 | 
            +
                  super
         | 
| 25 | 
            +
                end
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                def example_passed(example)
         | 
| 28 | 
            +
                  AllureRSpec::Builder.stop_test(
         | 
| 29 | 
            +
                      example.metadata[:example_group][:description_args].first,
         | 
| 30 | 
            +
                      example.metadata[:description],
         | 
| 31 | 
            +
                      example.metadata[:execution_result].merge(:caller => example.metadata[:caller])
         | 
| 32 | 
            +
                  )
         | 
| 33 | 
            +
                  super
         | 
| 34 | 
            +
                end
         | 
| 35 | 
            +
             | 
| 36 | 
            +
                def example_pending(example)
         | 
| 37 | 
            +
                  super
         | 
| 38 | 
            +
                end
         | 
| 39 | 
            +
             | 
| 40 | 
            +
                def example_started(example)
         | 
| 41 | 
            +
                  suite = example.metadata[:example_group][:description_args].first
         | 
| 42 | 
            +
                  test = example.metadata[:description]
         | 
| 43 | 
            +
                  AllureRSpec::Builder.start_test(suite, test)
         | 
| 44 | 
            +
                  super
         | 
| 45 | 
            +
                end
         | 
| 46 | 
            +
             | 
| 47 | 
            +
                def stop
         | 
| 48 | 
            +
                  AllureRSpec::Builder.each_suite_build do |suite, xml|
         | 
| 49 | 
            +
                    dir = Pathname.new(AllureRSpec::Config.output_dir)
         | 
| 50 | 
            +
                    FileUtils.rm_rf(dir)
         | 
| 51 | 
            +
                    FileUtils.mkdir_p(dir)
         | 
| 52 | 
            +
                    File.open(dir.join("#{UUID.new.generate}.xml"), 'w+') do |file|
         | 
| 53 | 
            +
                      file.write(xml)
         | 
| 54 | 
            +
                    end
         | 
| 55 | 
            +
                  end
         | 
| 56 | 
            +
                  super
         | 
| 57 | 
            +
                end
         | 
| 58 | 
            +
             | 
| 59 | 
            +
              end
         | 
| 60 | 
            +
            end
         | 
| @@ -0,0 +1,21 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
            require 'tempfile'
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            describe AllureRSpec do
         | 
| 5 | 
            +
              it "should build" do
         | 
| 6 | 
            +
                attach_file "test-file1", Tempfile.new("test")
         | 
| 7 | 
            +
                step "step1" do
         | 
| 8 | 
            +
                  attach_file "test-file2", Tempfile.new("test")
         | 
| 9 | 
            +
                end
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                step "step2" do
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                  5.should be < 1
         | 
| 14 | 
            +
                end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                step "step3" do
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                  0.should == 0
         | 
| 19 | 
            +
                end
         | 
| 20 | 
            +
              end
         | 
| 21 | 
            +
            end
         | 
    
        data/spec/spec_helper.rb
    ADDED
    
    
    
        metadata
    ADDED
    
    | @@ -0,0 +1,127 @@ | |
| 1 | 
            +
            --- !ruby/object:Gem::Specification
         | 
| 2 | 
            +
            name: allure-rspec
         | 
| 3 | 
            +
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            +
              version: '0.1'
         | 
| 5 | 
            +
            platform: ruby
         | 
| 6 | 
            +
            authors:
         | 
| 7 | 
            +
            - Ilya Sadykov
         | 
| 8 | 
            +
            autorequire: 
         | 
| 9 | 
            +
            bindir: bin
         | 
| 10 | 
            +
            cert_chain: []
         | 
| 11 | 
            +
            date: 2013-12-10 00:00:00.000000000 Z
         | 
| 12 | 
            +
            dependencies:
         | 
| 13 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 14 | 
            +
              name: rspec-steps
         | 
| 15 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 16 | 
            +
                requirements:
         | 
| 17 | 
            +
                - - ~>
         | 
| 18 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 19 | 
            +
                    version: 0.1.1
         | 
| 20 | 
            +
              type: :runtime
         | 
| 21 | 
            +
              prerelease: false
         | 
| 22 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 23 | 
            +
                requirements:
         | 
| 24 | 
            +
                - - ~>
         | 
| 25 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 26 | 
            +
                    version: 0.1.1
         | 
| 27 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 28 | 
            +
              name: nokogiri
         | 
| 29 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 30 | 
            +
                requirements:
         | 
| 31 | 
            +
                - - '>='
         | 
| 32 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 33 | 
            +
                    version: '0'
         | 
| 34 | 
            +
              type: :runtime
         | 
| 35 | 
            +
              prerelease: false
         | 
| 36 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 37 | 
            +
                requirements:
         | 
| 38 | 
            +
                - - '>='
         | 
| 39 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 40 | 
            +
                    version: '0'
         | 
| 41 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 42 | 
            +
              name: uuid
         | 
| 43 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 44 | 
            +
                requirements:
         | 
| 45 | 
            +
                - - '>='
         | 
| 46 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 47 | 
            +
                    version: '0'
         | 
| 48 | 
            +
              type: :runtime
         | 
| 49 | 
            +
              prerelease: false
         | 
| 50 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 51 | 
            +
                requirements:
         | 
| 52 | 
            +
                - - '>='
         | 
| 53 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 54 | 
            +
                    version: '0'
         | 
| 55 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 56 | 
            +
              name: bundler
         | 
| 57 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 58 | 
            +
                requirements:
         | 
| 59 | 
            +
                - - '>='
         | 
| 60 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 61 | 
            +
                    version: '0'
         | 
| 62 | 
            +
              type: :development
         | 
| 63 | 
            +
              prerelease: false
         | 
| 64 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 65 | 
            +
                requirements:
         | 
| 66 | 
            +
                - - '>='
         | 
| 67 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 68 | 
            +
                    version: '0'
         | 
| 69 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 70 | 
            +
              name: rake
         | 
| 71 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 72 | 
            +
                requirements:
         | 
| 73 | 
            +
                - - '>='
         | 
| 74 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 75 | 
            +
                    version: '0'
         | 
| 76 | 
            +
              type: :development
         | 
| 77 | 
            +
              prerelease: false
         | 
| 78 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 79 | 
            +
                requirements:
         | 
| 80 | 
            +
                - - '>='
         | 
| 81 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 82 | 
            +
                    version: '0'
         | 
| 83 | 
            +
            description: Adaptor to use Allure framework along with the RSpec 2
         | 
| 84 | 
            +
            email:
         | 
| 85 | 
            +
            - smecsia@yandex-team.ru
         | 
| 86 | 
            +
            executables: []
         | 
| 87 | 
            +
            extensions: []
         | 
| 88 | 
            +
            extra_rdoc_files: []
         | 
| 89 | 
            +
            files:
         | 
| 90 | 
            +
            - .gitignore
         | 
| 91 | 
            +
            - Gemfile
         | 
| 92 | 
            +
            - Gemfile.lock
         | 
| 93 | 
            +
            - README.md
         | 
| 94 | 
            +
            - allure-rspec.gemspec
         | 
| 95 | 
            +
            - lib/allure-rspec.rb
         | 
| 96 | 
            +
            - lib/allure-rspec/adaptor.rb
         | 
| 97 | 
            +
            - lib/allure-rspec/builder.rb
         | 
| 98 | 
            +
            - lib/allure-rspec/dsl.rb
         | 
| 99 | 
            +
            - lib/allure-rspec/formatter.rb
         | 
| 100 | 
            +
            - lib/allure-rspec/version.rb
         | 
| 101 | 
            +
            - spec/extend_steps_spec.rb
         | 
| 102 | 
            +
            - spec/spec_helper.rb
         | 
| 103 | 
            +
            homepage: http://allure.qatools.ru
         | 
| 104 | 
            +
            licenses:
         | 
| 105 | 
            +
            - Apache2
         | 
| 106 | 
            +
            metadata: {}
         | 
| 107 | 
            +
            post_install_message: 
         | 
| 108 | 
            +
            rdoc_options: []
         | 
| 109 | 
            +
            require_paths:
         | 
| 110 | 
            +
            - lib
         | 
| 111 | 
            +
            required_ruby_version: !ruby/object:Gem::Requirement
         | 
| 112 | 
            +
              requirements:
         | 
| 113 | 
            +
              - - '>='
         | 
| 114 | 
            +
                - !ruby/object:Gem::Version
         | 
| 115 | 
            +
                  version: '0'
         | 
| 116 | 
            +
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 117 | 
            +
              requirements:
         | 
| 118 | 
            +
              - - '>='
         | 
| 119 | 
            +
                - !ruby/object:Gem::Version
         | 
| 120 | 
            +
                  version: '0'
         | 
| 121 | 
            +
            requirements: []
         | 
| 122 | 
            +
            rubyforge_project: 
         | 
| 123 | 
            +
            rubygems_version: 2.0.3
         | 
| 124 | 
            +
            signing_key: 
         | 
| 125 | 
            +
            specification_version: 4
         | 
| 126 | 
            +
            summary: allure-rspec-0.1
         | 
| 127 | 
            +
            test_files: []
         |