spectre-core 1.8.4 → 1.12.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 +4 -4
- data/exe/spectre +516 -494
- data/lib/spectre/assertion.rb +48 -35
- data/lib/spectre/bag.rb +21 -19
- data/lib/spectre/curl.rb +397 -368
- data/lib/spectre/diagnostic.rb +39 -29
- data/lib/spectre/environment.rb +30 -26
- data/lib/spectre/helpers.rb +133 -64
- data/lib/spectre/http/basic_auth.rb +5 -2
- data/lib/spectre/http/keystone.rb +76 -73
- data/lib/spectre/http.rb +106 -85
- data/lib/spectre/logger/console.rb +143 -142
- data/lib/spectre/logger/file.rb +1 -1
- data/lib/spectre/logger.rb +3 -1
- data/lib/spectre/mixin.rb +58 -41
- data/lib/spectre/reporter/console.rb +102 -103
- data/lib/spectre/reporter/junit.rb +100 -98
- data/lib/spectre/resources.rb +49 -46
- data/lib/spectre.rb +440 -434
- metadata +19 -65
- data/lib/spectre/database/postgres.rb +0 -78
- data/lib/spectre/ftp.rb +0 -195
- data/lib/spectre/mysql.rb +0 -97
- data/lib/spectre/ssh.rb +0 -149
    
        data/lib/spectre/assertion.rb
    CHANGED
    
    | @@ -1,3 +1,5 @@ | |
| 1 | 
            +
            require_relative '../spectre'
         | 
| 2 | 
            +
             | 
| 1 3 | 
             
            require 'ostruct'
         | 
| 2 4 | 
             
            require_relative 'logger'
         | 
| 3 5 |  | 
| @@ -6,19 +8,19 @@ module Spectre | |
| 6 8 | 
             
              module Assertion
         | 
| 7 9 | 
             
                class ::Object
         | 
| 8 10 | 
             
                  def should_be(val)
         | 
| 9 | 
            -
             | 
| 11 | 
            +
                    raise AssertionFailure.new("The value '#{self.to_s.trim}' should be '#{val.to_s.trim}'", val, self) unless self.to_s == val.to_s
         | 
| 10 12 | 
             
                  end
         | 
| 11 13 |  | 
| 12 14 | 
             
                  def should_be_empty
         | 
| 13 | 
            -
                    raise AssertionFailure.new("The value '#{self.to_s.trim}' should be empty", nil, self) unless self | 
| 15 | 
            +
                    raise AssertionFailure.new("The value '#{self.to_s.trim}' should be empty", nil, self) unless self.nil?
         | 
| 14 16 | 
             
                  end
         | 
| 15 17 |  | 
| 16 18 | 
             
                  def should_not_be(val)
         | 
| 17 | 
            -
             | 
| 19 | 
            +
                    raise AssertionFailure.new("The value '#{self.to_s.trim}' should not be '#{val.to_s.trim}'", val, self) unless self.to_s != val.to_s
         | 
| 18 20 | 
             
                  end
         | 
| 19 21 |  | 
| 20 22 | 
             
                  def should_not_exist
         | 
| 21 | 
            -
             | 
| 23 | 
            +
                    raise AssertionFailure.new("The value '#{self.to_s.trim}' should not exist, but it does", val, self) unless self.to_s != nil
         | 
| 22 24 | 
             
                  end
         | 
| 23 25 |  | 
| 24 26 | 
             
                  def should_not_be_empty
         | 
| @@ -34,7 +36,6 @@ module Spectre | |
| 34 36 | 
             
                  end
         | 
| 35 37 | 
             
                end
         | 
| 36 38 |  | 
| 37 | 
            -
             | 
| 38 39 | 
             
                class ::NilClass
         | 
| 39 40 | 
             
                  def should_be(val)
         | 
| 40 41 | 
             
                    raise AssertionFailure.new("There is nothing, but the value should be '#{val.to_s.trim}'", val, nil) unless val == nil
         | 
| @@ -55,7 +56,6 @@ module Spectre | |
| 55 56 | 
             
                  end
         | 
| 56 57 | 
             
                end
         | 
| 57 58 |  | 
| 58 | 
            -
             | 
| 59 59 | 
             
                class ::Hash
         | 
| 60 60 | 
             
                  def should_contain(other)
         | 
| 61 61 | 
             
                    raise AssertionFailure.new(other, self) unless self.merge(other) == self
         | 
| @@ -64,8 +64,25 @@ module Spectre | |
| 64 64 | 
             
                  def should_not_contain(other)
         | 
| 65 65 | 
             
                    raise AssertionFailure.new(other, self) unless self.merge(other) != self
         | 
| 66 66 | 
             
                  end
         | 
| 67 | 
            +
             | 
| 68 | 
            +
                  def should_be_empty
         | 
| 69 | 
            +
                    raise AssertionFailure.new("The object should be empty", nil, self) unless self.empty?
         | 
| 70 | 
            +
                  end
         | 
| 71 | 
            +
             | 
| 72 | 
            +
                  def should_not_be_empty
         | 
| 73 | 
            +
                    raise AssertionFailure.new("The object should not be empty", nil, self) if self.empty?
         | 
| 74 | 
            +
                  end
         | 
| 67 75 | 
             
                end
         | 
| 68 76 |  | 
| 77 | 
            +
                class ::OpenStruct
         | 
| 78 | 
            +
                  def should_be_empty
         | 
| 79 | 
            +
                    raise AssertionFailure.new("The object should be empty", nil, self) unless self.to_h.empty?
         | 
| 80 | 
            +
                  end
         | 
| 81 | 
            +
             | 
| 82 | 
            +
                  def should_not_be_empty
         | 
| 83 | 
            +
                    raise AssertionFailure.new("The object should not be empty", nil, self) if self.to_h.empty?
         | 
| 84 | 
            +
                  end
         | 
| 85 | 
            +
                end
         | 
| 69 86 |  | 
| 70 87 | 
             
                class ::Array
         | 
| 71 88 | 
             
                  def should_contain(val)
         | 
| @@ -76,7 +93,7 @@ module Spectre | |
| 76 93 | 
             
                      val = OpenStruct.new(val)
         | 
| 77 94 | 
             
                    end
         | 
| 78 95 |  | 
| 79 | 
            -
                    raise AssertionFailure.new("The list [#{list.join(', ').trim}] should contain '#{val.trim}'", val, list) unless list.include? val
         | 
| 96 | 
            +
                    raise AssertionFailure.new("The list [#{list.join(', ').trim}] should contain '#{val.to_s.trim}'", val, list) unless list.include? val
         | 
| 80 97 | 
             
                  end
         | 
| 81 98 |  | 
| 82 99 | 
             
                  def should_not_contain(val)
         | 
| @@ -87,19 +104,18 @@ module Spectre | |
| 87 104 | 
             
                      val = OpenStruct.new(val)
         | 
| 88 105 | 
             
                    end
         | 
| 89 106 |  | 
| 90 | 
            -
                    raise AssertionFailure.new("The list [#{list.join(', ').trim}] should not contain '#{val.trim}'", val, list) if list.include? val
         | 
| 107 | 
            +
                    raise AssertionFailure.new("The list [#{list.join(', ').trim}] should not contain '#{val.to_s.trim}'", val, list) if list.include? val
         | 
| 91 108 | 
             
                  end
         | 
| 92 109 |  | 
| 93 110 | 
             
                  def should_be_empty
         | 
| 94 | 
            -
                    raise AssertionFailure.new('empty list', self) unless self. | 
| 111 | 
            +
                    raise AssertionFailure.new('empty list', self) unless self.empty?
         | 
| 95 112 | 
             
                  end
         | 
| 96 113 |  | 
| 97 114 | 
             
                  def should_not_be_empty
         | 
| 98 | 
            -
                    raise AssertionFailure.new('no empty list', self)  | 
| 115 | 
            +
                    raise AssertionFailure.new('no empty list', self) if self.empty?
         | 
| 99 116 | 
             
                  end
         | 
| 100 117 | 
             
                end
         | 
| 101 118 |  | 
| 102 | 
            -
             | 
| 103 119 | 
             
                class ::String
         | 
| 104 120 | 
             
                  def should_be(val)
         | 
| 105 121 | 
             
                    raise AssertionFailure.new("The text '#{self.trim}' should be '#{val.to_s.trim}'", val, self) unless self == val
         | 
| @@ -110,7 +126,7 @@ module Spectre | |
| 110 126 | 
             
                  end
         | 
| 111 127 |  | 
| 112 128 | 
             
                  def should_not_be(val)
         | 
| 113 | 
            -
             | 
| 129 | 
            +
                    raise AssertionFailure.new("The text '#{self.trim}' should not be '#{val.to_s.trim}'", val, self) unless self != val
         | 
| 114 130 | 
             
                  end
         | 
| 115 131 |  | 
| 116 132 | 
             
                  def should_not_be_empty
         | 
| @@ -118,8 +134,10 @@ module Spectre | |
| 118 134 | 
             
                  end
         | 
| 119 135 |  | 
| 120 136 | 
             
                  def should_contain(value)
         | 
| 137 | 
            +
                    raise AssertionFailure.new("`value' must not be nil") if value.nil?
         | 
| 138 | 
            +
             | 
| 121 139 | 
             
                    predicate = proc { |x| self.include? x.to_s }
         | 
| 122 | 
            -
                    evaluation = SingleEvaluation.new | 
| 140 | 
            +
                    evaluation = SingleEvaluation.new(value)
         | 
| 123 141 | 
             
                    success = evaluation.call(predicate)
         | 
| 124 142 |  | 
| 125 143 | 
             
                    return if success
         | 
| @@ -143,7 +161,6 @@ module Spectre | |
| 143 161 | 
             
                  alias :& :and
         | 
| 144 162 | 
             
                end
         | 
| 145 163 |  | 
| 146 | 
            -
             | 
| 147 164 | 
             
                class Evaluation
         | 
| 148 165 | 
             
                  def initialize value, other
         | 
| 149 166 | 
             
                    @value = value
         | 
| @@ -162,10 +179,9 @@ module Spectre | |
| 162 179 | 
             
                  alias :& :and
         | 
| 163 180 | 
             
                end
         | 
| 164 181 |  | 
| 165 | 
            -
             | 
| 166 182 | 
             
                class SingleEvaluation < Evaluation
         | 
| 167 183 | 
             
                  def initialize value
         | 
| 168 | 
            -
                    super | 
| 184 | 
            +
                    super(value, nil)
         | 
| 169 185 | 
             
                  end
         | 
| 170 186 |  | 
| 171 187 | 
             
                  def call predicate
         | 
| @@ -177,10 +193,9 @@ module Spectre | |
| 177 193 | 
             
                  end
         | 
| 178 194 | 
             
                end
         | 
| 179 195 |  | 
| 180 | 
            -
             | 
| 181 196 | 
             
                class OrEvaluation < Evaluation
         | 
| 182 197 | 
             
                  def initialize value, other
         | 
| 183 | 
            -
                    super | 
| 198 | 
            +
                    super(value, other)
         | 
| 184 199 | 
             
                  end
         | 
| 185 200 |  | 
| 186 201 | 
             
                  def call predicate
         | 
| @@ -192,10 +207,9 @@ module Spectre | |
| 192 207 | 
             
                  end
         | 
| 193 208 | 
             
                end
         | 
| 194 209 |  | 
| 195 | 
            -
             | 
| 196 210 | 
             
                class AndEvaluation < Evaluation
         | 
| 197 211 | 
             
                  def initialize value, other
         | 
| 198 | 
            -
                    super | 
| 212 | 
            +
                    super(value, other)
         | 
| 199 213 | 
             
                  end
         | 
| 200 214 |  | 
| 201 215 | 
             
                  def call predicate
         | 
| @@ -207,7 +221,6 @@ module Spectre | |
| 207 221 | 
             
                  end
         | 
| 208 222 | 
             
                end
         | 
| 209 223 |  | 
| 210 | 
            -
             | 
| 211 224 | 
             
                class AssertionFailure < ExpectationFailure
         | 
| 212 225 | 
             
                  attr_reader :expected, :actual
         | 
| 213 226 |  | 
| @@ -222,27 +235,16 @@ module Spectre | |
| 222 235 | 
             
                class << self
         | 
| 223 236 | 
             
                  @@success = nil
         | 
| 224 237 |  | 
| 225 | 
            -
                  def eval_assertion predicate, val
         | 
| 226 | 
            -
                    if val.is_a? Proc
         | 
| 227 | 
            -
                      val.call(predicate)
         | 
| 228 | 
            -
                    else
         | 
| 229 | 
            -
                      predicate.call(val)
         | 
| 230 | 
            -
                    end
         | 
| 231 | 
            -
                  end
         | 
| 232 | 
            -
             | 
| 233 238 | 
             
                  def expect desc
         | 
| 234 239 | 
             
                    begin
         | 
| 235 240 | 
             
                      Logger.log_process("expect #{desc}")
         | 
| 236 241 | 
             
                      yield
         | 
| 237 242 | 
             
                      Logger.log_status(desc, Logger::Status::OK)
         | 
| 238 | 
            -
             | 
| 239 243 | 
             
                    rescue Interrupt => e
         | 
| 240 244 | 
             
                      raise e
         | 
| 241 | 
            -
             | 
| 242 245 | 
             
                    rescue AssertionFailure => e
         | 
| 243 246 | 
             
                      Logger.log_status(desc, Logger::Status::FAILED)
         | 
| 244 247 | 
             
                      raise AssertionFailure.new(e.message, e.expected, e.actual, desc), cause: nil
         | 
| 245 | 
            -
             | 
| 246 248 | 
             
                    rescue Exception => e
         | 
| 247 249 | 
             
                      Logger.log_status(desc, Logger::Status::ERROR)
         | 
| 248 250 | 
             
                      raise AssertionFailure.new("An unexpected error occured during expectation: #{e.message}", nil, nil, desc), cause: e
         | 
| @@ -250,15 +252,21 @@ module Spectre | |
| 250 252 | 
             
                  end
         | 
| 251 253 |  | 
| 252 254 | 
             
                  def observe desc = nil
         | 
| 255 | 
            +
                    prefix = "observing"
         | 
| 256 | 
            +
                    prefix += " '#{desc}'" if desc
         | 
| 257 | 
            +
             | 
| 253 258 | 
             
                    begin
         | 
| 254 | 
            -
                      Logger.log_info( | 
| 259 | 
            +
                      Logger.log_info(prefix) if desc
         | 
| 255 260 | 
             
                      yield
         | 
| 256 261 | 
             
                      @@success = true
         | 
| 257 | 
            -
             | 
| 262 | 
            +
                      @@logger.info("#{prefix} finished with success")
         | 
| 258 263 | 
             
                    rescue Interrupt => e
         | 
| 259 264 | 
             
                      raise e
         | 
| 260 | 
            -
             | 
| 261 265 | 
             
                    rescue Exception => e
         | 
| 266 | 
            +
                      error_message = "#{prefix} finished with failure: #{e.message}"
         | 
| 267 | 
            +
                      error_message += "\n" + e.backtrace.join("\n") if @@debug
         | 
| 268 | 
            +
             | 
| 269 | 
            +
                      @@logger.info(error_message)
         | 
| 262 270 | 
             
                      @@success = false
         | 
| 263 271 | 
             
                    end
         | 
| 264 272 | 
             
                  end
         | 
| @@ -272,6 +280,11 @@ module Spectre | |
| 272 280 | 
             
                  end
         | 
| 273 281 | 
             
                end
         | 
| 274 282 |  | 
| 283 | 
            +
                Spectre.register do |config|
         | 
| 284 | 
            +
                  @@logger = ::Logger.new(config['log_file'], progname: 'spectre/assertion')
         | 
| 285 | 
            +
                  @@debug = config['debug']
         | 
| 286 | 
            +
                end
         | 
| 287 | 
            +
             | 
| 275 288 | 
             
                Spectre.delegate :expect, :observe, :success?, :fail_with, to: self
         | 
| 276 289 | 
             
              end
         | 
| 277 290 | 
             
            end
         | 
    
        data/lib/spectre/bag.rb
    CHANGED
    
    | @@ -1,19 +1,21 @@ | |
| 1 | 
            -
             | 
| 2 | 
            -
             | 
| 3 | 
            -
             | 
| 4 | 
            -
             | 
| 5 | 
            -
             | 
| 6 | 
            -
             | 
| 7 | 
            -
             | 
| 8 | 
            -
                   | 
| 9 | 
            -
             | 
| 10 | 
            -
                   | 
| 11 | 
            -
             | 
| 12 | 
            -
             | 
| 13 | 
            -
                 | 
| 14 | 
            -
             | 
| 15 | 
            -
                 | 
| 16 | 
            -
             | 
| 17 | 
            -
                 | 
| 18 | 
            -
             | 
| 19 | 
            -
             | 
| 1 | 
            +
            require_relative '../spectre'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require 'ostruct'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            module Spectre
         | 
| 6 | 
            +
              module Bag
         | 
| 7 | 
            +
                class << self
         | 
| 8 | 
            +
                  @@bag
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                  def bag
         | 
| 11 | 
            +
                    @@bag
         | 
| 12 | 
            +
                  end
         | 
| 13 | 
            +
                end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                Spectre.register do |config|
         | 
| 16 | 
            +
                  @@bag = OpenStruct.new
         | 
| 17 | 
            +
                end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                Spectre.delegate :bag, to: self
         | 
| 20 | 
            +
              end
         | 
| 21 | 
            +
            end
         |