Sha256: 8a332cc5756dd5efe1b65bf34ce821b6eb6c63ed233dde94d3e29f1b17d601a6

Contents?: true

Size: 958 Bytes

Versions: 8

Compression:

Stored size: 958 Bytes

Contents

# frozen_string_literal: true

require 'cucumber'
require 'cucumber/core/test/location'

module Cucumber
  class FileSpecs
    FILE_COLON_LINE_PATTERN = /^([\w\W]*?)(?::([\d:]+))?$/ # :nodoc:

    def initialize(file_specs)
      Cucumber.logger.debug("Features:\n")
      @file_specs = file_specs.map { |spec| FileSpec.new(spec) }
      Cucumber.logger.debug("\n")
    end

    def locations
      @file_specs.map(&:locations).flatten
    end

    def files
      @file_specs.map(&:file).uniq
    end

    class FileSpec
      def initialize(spec)
        @file, @lines = *FILE_COLON_LINE_PATTERN.match(spec).captures
        Cucumber.logger.debug("  * #{@file}\n")
        @lines = String(@lines).split(':').map { |line| Integer(line) }
      end

      attr_reader :file

      def locations
        return [Core::Test::Location.new(@file)] if @lines.empty?

        @lines.map { |line| Core::Test::Location.new(@file, line) }
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 2 rubygems

Version Path
cucumber-9.0.1 lib/cucumber/file_specs.rb
cucumber-9.0.0 lib/cucumber/file_specs.rb
rubypitaya-3.12.5 ./lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/cucumber-8.0.0/lib/cucumber/file_specs.rb
rubypitaya-3.12.4 ./lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/cucumber-8.0.0/lib/cucumber/file_specs.rb
rubypitaya-3.12.3 ./lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/cucumber-8.0.0/lib/cucumber/file_specs.rb
rubypitaya-3.12.2 ./lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/cucumber-8.0.0/lib/cucumber/file_specs.rb
cucumber-8.0.0 lib/cucumber/file_specs.rb
cucumber-8.0.0.rc.1 lib/cucumber/file_specs.rb