allure-ruby-commons 2.13.0 → 2.13.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 +4 -4
- data/lib/allure-ruby-commons.rb +1 -1
- data/lib/allure_ruby_commons/allure_lifecycle.rb +36 -17
- data/lib/allure_ruby_commons/result_utils.rb +17 -5
- metadata +8 -18
- data/lib/allure_ruby_commons/util.rb +0 -48
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 5a9115fbeeca5e229495d548047fa91edac5cb364a3a18c629f7d860fff43b3c
         | 
| 4 | 
            +
              data.tar.gz: 302ce724cd87c8c8a392687355c693774e40e0dfeb6d00cc4e67c5202a2dd733
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 7392a3abf6e355d4e1a7e1dfddca5c39c68ffe89549eaf72db2a0e7e4793c4019e7f2dfb5877c82be92775476ac70349218e1c85087ed17aa7374a0d6c461beb
         | 
| 7 | 
            +
              data.tar.gz: 9a263ffc1763bbb4647c5341259bf12f6e8e766feb026fc4f7fae41c51b109609b64b410baaadb0080f9bd07edfccb113ffb47553e5ddbf7632770188ed8190a
         | 
    
        data/lib/allure-ruby-commons.rb
    CHANGED
    
    | @@ -76,7 +76,7 @@ module Allure | |
| 76 76 | 
             
                # Add description to current test case
         | 
| 77 77 | 
             
                # @param [String] description
         | 
| 78 78 | 
             
                # @return [void]
         | 
| 79 | 
            -
                def  | 
| 79 | 
            +
                def add_description(description)
         | 
| 80 80 | 
             
                  lifecycle.update_test_case do |test_case|
         | 
| 81 81 | 
             
                    test_case.description = description
         | 
| 82 82 | 
             
                  end
         | 
| @@ -1,9 +1,12 @@ | |
| 1 1 | 
             
            # frozen_string_literal: true
         | 
| 2 2 |  | 
| 3 | 
            +
            require "fileutils"
         | 
| 4 | 
            +
             | 
| 3 5 | 
             
            module Allure
         | 
| 4 6 | 
             
              # Main class for creating and writing allure results
         | 
| 5 7 | 
             
              class AllureLifecycle
         | 
| 6 8 | 
             
                def initialize
         | 
| 9 | 
            +
                  @test_context = []
         | 
| 7 10 | 
             
                  @step_context = []
         | 
| 8 11 | 
             
                end
         | 
| 9 12 |  | 
| @@ -11,8 +14,10 @@ module Allure | |
| 11 14 | 
             
                # @param [Allure::TestResultContainer] test_result_container
         | 
| 12 15 | 
             
                # @return [Allure::TestResultContainer]
         | 
| 13 16 | 
             
                def start_test_container(test_result_container)
         | 
| 14 | 
            -
                  test_result_container. | 
| 15 | 
            -
             | 
| 17 | 
            +
                  test_result_container.tap do |container|
         | 
| 18 | 
            +
                    container.start = ResultUtils.timestamp
         | 
| 19 | 
            +
                    @test_context.push(container)
         | 
| 20 | 
            +
                  end
         | 
| 16 21 | 
             
                end
         | 
| 17 22 |  | 
| 18 23 | 
             
                # @example Update current test container
         | 
| @@ -23,23 +28,25 @@ module Allure | |
| 23 28 | 
             
                # @yieldreturn [void]
         | 
| 24 29 | 
             
                # @return [void]
         | 
| 25 30 | 
             
                def update_test_container
         | 
| 26 | 
            -
                  unless  | 
| 31 | 
            +
                  unless current_test_result_container
         | 
| 27 32 | 
             
                    return logger.error("Could not update test container, no container is running.")
         | 
| 28 33 | 
             
                  end
         | 
| 29 34 |  | 
| 30 | 
            -
                  yield( | 
| 35 | 
            +
                  yield(current_test_result_container)
         | 
| 31 36 | 
             
                end
         | 
| 32 37 |  | 
| 33 38 | 
             
                # Stop current test container and write result
         | 
| 34 39 | 
             
                # @return [void]
         | 
| 35 40 | 
             
                def stop_test_container
         | 
| 36 | 
            -
                  unless  | 
| 41 | 
            +
                  unless current_test_result_container
         | 
| 37 42 | 
             
                    return logger.error("Could not stop test container, no container is running.")
         | 
| 38 43 | 
             
                  end
         | 
| 39 44 |  | 
| 40 | 
            -
                   | 
| 41 | 
            -
             | 
| 42 | 
            -
             | 
| 45 | 
            +
                  current_test_result_container.tap do |container|
         | 
| 46 | 
            +
                    container.stop = ResultUtils.timestamp
         | 
| 47 | 
            +
                    file_writer.write_test_result_container(container)
         | 
| 48 | 
            +
                    clear_last_test_container
         | 
| 49 | 
            +
                  end
         | 
| 43 50 | 
             
                end
         | 
| 44 51 |  | 
| 45 52 | 
             
                # Start test case and add to current test container
         | 
| @@ -47,14 +54,14 @@ module Allure | |
| 47 54 | 
             
                # @return [Allure::TestResult]
         | 
| 48 55 | 
             
                def start_test_case(test_result)
         | 
| 49 56 | 
             
                  clear_step_context
         | 
| 50 | 
            -
                  unless  | 
| 57 | 
            +
                  unless current_test_result_container
         | 
| 51 58 | 
             
                    return logger.error("Could not start test case, test container is not started")
         | 
| 52 59 | 
             
                  end
         | 
| 53 60 |  | 
| 54 61 | 
             
                  test_result.start = ResultUtils.timestamp
         | 
| 55 62 | 
             
                  test_result.stage = Stage::RUNNING
         | 
| 56 63 | 
             
                  test_result.labels.push(ResultUtils.thread_label, ResultUtils.host_label, ResultUtils.language_label)
         | 
| 57 | 
            -
                   | 
| 64 | 
            +
                  current_test_result_container.children.push(test_result.uuid)
         | 
| 58 65 | 
             
                  @current_test_case = test_result
         | 
| 59 66 | 
             
                end
         | 
| 60 67 |  | 
| @@ -123,7 +130,7 @@ module Allure | |
| 123 130 | 
             
                # @return [Allure::FixtureResult]
         | 
| 124 131 | 
             
                def start_prepare_fixture(fixture_result)
         | 
| 125 132 | 
             
                  start_fixture(fixture_result) || return
         | 
| 126 | 
            -
                   | 
| 133 | 
            +
                  current_test_result_container.befores.push(fixture_result)
         | 
| 127 134 | 
             
                  @current_fixture = fixture_result
         | 
| 128 135 | 
             
                end
         | 
| 129 136 |  | 
| @@ -132,7 +139,7 @@ module Allure | |
| 132 139 | 
             
                # @return [Allure::FixtureResult]
         | 
| 133 140 | 
             
                def start_tear_down_fixture(fixture_result)
         | 
| 134 141 | 
             
                  start_fixture(fixture_result) || return
         | 
| 135 | 
            -
                   | 
| 142 | 
            +
                  current_test_result_container.afters.push(fixture_result)
         | 
| 136 143 | 
             
                  @current_fixture = fixture_result
         | 
| 137 144 | 
             
                end
         | 
| 138 145 |  | 
| @@ -141,7 +148,7 @@ module Allure | |
| 141 148 | 
             
                # @return [Allure::FixtureResult]
         | 
| 142 149 | 
             
                def start_fixture(fixture_result)
         | 
| 143 150 | 
             
                  clear_step_context
         | 
| 144 | 
            -
                  unless  | 
| 151 | 
            +
                  unless current_test_result_container
         | 
| 145 152 | 
             
                    logger.error("Could not start fixture, test container is not started")
         | 
| 146 153 | 
             
                    return false
         | 
| 147 154 | 
             
                  end
         | 
| @@ -218,6 +225,14 @@ module Allure | |
| 218 225 | 
             
                  step_result
         | 
| 219 226 | 
             
                end
         | 
| 220 227 |  | 
| 228 | 
            +
                # Clean results directory
         | 
| 229 | 
            +
                # @return [void]
         | 
| 230 | 
            +
                def clean_results_dir
         | 
| 231 | 
            +
                  Allure.configuration.tap do |c|
         | 
| 232 | 
            +
                    FileUtils.rm_f(Dir.glob("#{c.results_directory}/*")) if c.clean_results_directory
         | 
| 233 | 
            +
                  end
         | 
| 234 | 
            +
                end
         | 
| 235 | 
            +
             | 
| 221 236 | 
             
                private
         | 
| 222 237 |  | 
| 223 238 | 
             
                def logger
         | 
| @@ -232,12 +247,12 @@ module Allure | |
| 232 247 | 
             
                  current_test_step || @current_fixture || @current_test_case
         | 
| 233 248 | 
             
                end
         | 
| 234 249 |  | 
| 235 | 
            -
                def  | 
| 236 | 
            -
                  @ | 
| 250 | 
            +
                def current_test_result_container
         | 
| 251 | 
            +
                  @test_context.last
         | 
| 237 252 | 
             
                end
         | 
| 238 253 |  | 
| 239 | 
            -
                def  | 
| 240 | 
            -
                  @ | 
| 254 | 
            +
                def clear_last_test_container
         | 
| 255 | 
            +
                  @test_context.pop
         | 
| 241 256 | 
             
                end
         | 
| 242 257 |  | 
| 243 258 | 
             
                def current_test_step
         | 
| @@ -252,6 +267,10 @@ module Allure | |
| 252 267 | 
             
                  @step_context.clear
         | 
| 253 268 | 
             
                end
         | 
| 254 269 |  | 
| 270 | 
            +
                def clear_current_test_case
         | 
| 271 | 
            +
                  @current_test_case = nil
         | 
| 272 | 
            +
                end
         | 
| 273 | 
            +
             | 
| 255 274 | 
             
                def clear_current_fixture
         | 
| 256 275 | 
             
                  @current_fixture = nil
         | 
| 257 276 | 
             
                end
         | 
| @@ -75,6 +75,20 @@ module Allure | |
| 75 75 | 
             
                    Label.new(SUITE_LABEL_NAME, value)
         | 
| 76 76 | 
             
                  end
         | 
| 77 77 |  | 
| 78 | 
            +
                  # Parent suite label
         | 
| 79 | 
            +
                  # @param [String] value
         | 
| 80 | 
            +
                  # @return [Allure::Label]
         | 
| 81 | 
            +
                  def parent_suite_label(value)
         | 
| 82 | 
            +
                    Label.new(PARENT_SUITE_LABEL_NAME, value)
         | 
| 83 | 
            +
                  end
         | 
| 84 | 
            +
             | 
| 85 | 
            +
                  # Parent suite label
         | 
| 86 | 
            +
                  # @param [String] value
         | 
| 87 | 
            +
                  # @return [Allure::Label]
         | 
| 88 | 
            +
                  def sub_suite_label(value)
         | 
| 89 | 
            +
                    Label.new(SUB_SUITE_LABEL_NAME, value)
         | 
| 90 | 
            +
                  end
         | 
| 91 | 
            +
             | 
| 78 92 | 
             
                  # Story label
         | 
| 79 93 | 
             
                  # @param [String] value
         | 
| 80 94 | 
             
                  # @return [Allure::Label]
         | 
| @@ -119,16 +133,16 @@ module Allure | |
| 119 133 |  | 
| 120 134 | 
             
                  # Get status based on exception type
         | 
| 121 135 | 
             
                  # @param [Exception] exception
         | 
| 122 | 
            -
                  # @return [ | 
| 136 | 
            +
                  # @return [Symbol]
         | 
| 123 137 | 
             
                  def status(exception)
         | 
| 124 138 | 
             
                    expectation_error?(exception) ? Status::FAILED : Status::BROKEN
         | 
| 125 139 | 
             
                  end
         | 
| 126 140 |  | 
| 127 141 | 
             
                  # Get exception status detail
         | 
| 128 142 | 
             
                  # @param [Exception] exception
         | 
| 129 | 
            -
                  # @return [ | 
| 143 | 
            +
                  # @return [Allure::StatusDetails]
         | 
| 130 144 | 
             
                  def status_details(exception)
         | 
| 131 | 
            -
                    StatusDetails.new(message: exception | 
| 145 | 
            +
                    StatusDetails.new(message: exception&.message, trace: exception&.backtrace&.join("\n"))
         | 
| 132 146 | 
             
                  end
         | 
| 133 147 |  | 
| 134 148 | 
             
                  private
         | 
| @@ -144,8 +158,6 @@ module Allure | |
| 144 158 | 
             
                  def expectation_error?(exception)
         | 
| 145 159 | 
             
                    exception.instance_of?(RSpec::Expectations::ExpectationNotMetError) ||
         | 
| 146 160 | 
             
                      exception.instance_of?(RSpec::Expectations::MultipleExpectationsNotMetError)
         | 
| 147 | 
            -
                  rescue NameError
         | 
| 148 | 
            -
                    false
         | 
| 149 161 | 
             
                  end
         | 
| 150 162 | 
             
                end
         | 
| 151 163 | 
             
              end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: allure-ruby-commons
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 2.13. | 
| 4 | 
            +
              version: 2.13.1
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Andrejs Cunskis
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2019-09 | 
| 11 | 
            +
            date: 2019-10-09 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: uuid
         | 
| @@ -58,20 +58,6 @@ dependencies: | |
| 58 58 | 
             
                - - "<"
         | 
| 59 59 | 
             
                  - !ruby/object:Gem::Version
         | 
| 60 60 | 
             
                    version: '3'
         | 
| 61 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 62 | 
            -
              name: rubyzip
         | 
| 63 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 64 | 
            -
                requirements:
         | 
| 65 | 
            -
                - - "~>"
         | 
| 66 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 67 | 
            -
                    version: '1.2'
         | 
| 68 | 
            -
              type: :runtime
         | 
| 69 | 
            -
              prerelease: false
         | 
| 70 | 
            -
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 71 | 
            -
                requirements:
         | 
| 72 | 
            -
                - - "~>"
         | 
| 73 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 74 | 
            -
                    version: '1.2'
         | 
| 75 61 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 76 62 | 
             
              name: mime-types
         | 
| 77 63 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -113,11 +99,15 @@ files: | |
| 113 99 | 
             
            - lib/allure_ruby_commons/model/test_result.rb
         | 
| 114 100 | 
             
            - lib/allure_ruby_commons/model/test_result_container.rb
         | 
| 115 101 | 
             
            - lib/allure_ruby_commons/result_utils.rb
         | 
| 116 | 
            -
            - lib/allure_ruby_commons/util.rb
         | 
| 117 102 | 
             
            homepage: https://github.com/allure-framework/allure-ruby
         | 
| 118 103 | 
             
            licenses:
         | 
| 119 104 | 
             
            - Apache-2.0
         | 
| 120 | 
            -
            metadata: | 
| 105 | 
            +
            metadata:
         | 
| 106 | 
            +
              bug_tracker_uri: https://github.com/allure-framework/allure-ruby/issues
         | 
| 107 | 
            +
              changelog_uri: https://github.com/allure-framework/allure-ruby/releases
         | 
| 108 | 
            +
              documentation_uri: https://github.com/allure-framework/allure-ruby/blob/master/allure-ruby-commons/README.md
         | 
| 109 | 
            +
              source_code_uri: https://github.com/allure-framework/allure-ruby/tree/master/allure-ruby-commons
         | 
| 110 | 
            +
              wiki_uri: https://github.com/allure-framework/allure-ruby/wiki
         | 
| 121 111 | 
             
            post_install_message: 
         | 
| 122 112 | 
             
            rdoc_options: []
         | 
| 123 113 | 
             
            require_paths:
         | 
| @@ -1,48 +0,0 @@ | |
| 1 | 
            -
            # frozen_string_literal: true
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            require "open-uri"
         | 
| 4 | 
            -
            require "zip"
         | 
| 5 | 
            -
            require "pathname"
         | 
| 6 | 
            -
             | 
| 7 | 
            -
            module Allure
         | 
| 8 | 
            -
              # Utility for downloading allure commandline binary
         | 
| 9 | 
            -
              class Util
         | 
| 10 | 
            -
                # @return [String] CLI version
         | 
| 11 | 
            -
                ALLURE_CLI_VERSION = "2.12.1"
         | 
| 12 | 
            -
                # @return [String] CLI bin download url
         | 
| 13 | 
            -
                ALLURE_BIN_URL = "http://repo.maven.apache.org/maven2/io/qameta/allure/allure-commandline/"\
         | 
| 14 | 
            -
                                  "#{ALLURE_CLI_VERSION}/allure-commandline-#{ALLURE_CLI_VERSION}.zip"
         | 
| 15 | 
            -
             | 
| 16 | 
            -
                class << self
         | 
| 17 | 
            -
                  # Download allure bin if appropriate version is not in path
         | 
| 18 | 
            -
                  # @return [String] allure executable
         | 
| 19 | 
            -
                  def allure_cli
         | 
| 20 | 
            -
                    return "allure" if ALLURE_CLI_VERSION == `allure --version`.chomp
         | 
| 21 | 
            -
             | 
| 22 | 
            -
                    cli_dir = File.join(".allure", "allure-#{ALLURE_CLI_VERSION}")
         | 
| 23 | 
            -
                    zip = File.join(".allure", "allure.zip")
         | 
| 24 | 
            -
                    bin = File.join(cli_dir, "bin", "allure")
         | 
| 25 | 
            -
             | 
| 26 | 
            -
                    FileUtils.mkpath(".allure")
         | 
| 27 | 
            -
                    download_allure(zip) unless File.exist?(zip) || File.exist?(bin)
         | 
| 28 | 
            -
                    extract_allure(zip, ".allure") unless File.exist?(bin)
         | 
| 29 | 
            -
             | 
| 30 | 
            -
                    bin
         | 
| 31 | 
            -
                  end
         | 
| 32 | 
            -
             | 
| 33 | 
            -
                  private
         | 
| 34 | 
            -
             | 
| 35 | 
            -
                  def download_allure(destination)
         | 
| 36 | 
            -
                    File.open(destination, "w") { |file| file.write(open(ALLURE_BIN_URL).read) } # rubocop:disable Security/Open
         | 
| 37 | 
            -
                  end
         | 
| 38 | 
            -
             | 
| 39 | 
            -
                  def extract_allure(zip, destination)
         | 
| 40 | 
            -
                    Zip::File.foreach(zip) do |entry|
         | 
| 41 | 
            -
                      entry.restore_permissions = true
         | 
| 42 | 
            -
                      entry.extract(File.join(destination, entry.name))
         | 
| 43 | 
            -
                    end
         | 
| 44 | 
            -
                    FileUtils.rm(zip)
         | 
| 45 | 
            -
                  end
         | 
| 46 | 
            -
                end
         | 
| 47 | 
            -
              end
         | 
| 48 | 
            -
            end
         |