Sha256: 379c9f54ec0fe7fba59ee344a728c79a36e398c5603e095b3897860c9ecc2759

Contents?: true

Size: 1.56 KB

Versions: 1

Compression:

Stored size: 1.56 KB

Contents

########################################################################################################################
# Define a test suite. This class has to be inherited in child classes, where the developer defines its test suites.
########################################################################################################################

require_relative 'test'

module Rproof
  class TestSuite < Test
    def initialize(reporter, name, description = nil)
      super(reporter, name, description)
      @tests = []
      @test_results = []
    end

    # Register a Test to be run
    def register(test)
      @tests << test
    end

    def unregister_all
      @tests = []
    end

    def run
      @tests.shuffle.each do |test|
        @test_results << test.execute
      end
    end

    def execute
      @reporter.report_suite_begin(@id, @name, @description)
      begin
        setup
        run
        clean_up
      rescue Exception => e
        @censor.log_exception e
        @test_results << @censor.test_result
      end
      @reporter.report_suite_end(@id, @test_results)
      @test_results
    end

    def get_tests(filename_pattern)
      tests = []
      if nil != self.class.name.downcase.match(filename_pattern.downcase)
        tests << self
      else
        @tests.each do |test|
          if test.is_a? Test_Suite
            tests << test.get_tests(filename_pattern)
          else
            tests << test if nil != test.class.name.downcase.match(filename_pattern.downcase)
          end
        end
      end
      tests
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rproof-0.0.1 lib/rproof/test_suite.rb