Sha256: f3597eacfa1e1a28bb1601b148c3dad950dbde3cb17e06431bcee0fd20db6a4c

Contents?: true

Size: 1.14 KB

Versions: 15

Compression:

Stored size: 1.14 KB

Contents

require_relative '../spec_helper'
require 'kramdown'

RSpec.describe 'Documentation' do
  root = File.expand_path('../..', __dir__)
  files = Dir.glob(File.join(root, '*.md')) + Dir.glob(File.join(root, 'docs', '*.md'))

  files.each do |file|
    describe "from #{file}" do
      text = File.read(file)
      doc = Kramdown::Document.new(text, input: 'GFM')
      blocks = doc.root.children

      blocks.each do |block|
        # Only consider code blocks with language 'ruby'.
        next unless [:codeblock, :codespan].include?(block.type)
        next unless block.attr['class'] == 'language-ruby'

        it "has a valid sample at #{block.options[:location] + 1}" do
          code = block.value.strip

          # Replace lines of the form `<expression> # => <result>` with
          # assertions.
          #
          # For example,
          #
          #   2 + 2 # => 4
          #
          # will be replaced by
          #
          #   assert_equal(4, 2 + 2)
          #
          spec_code = code.gsub(/(^.+) # ?=> (.+$)/, 'assert_equal(\2, \1)')

          eval spec_code # rubocop:disable Security/Eval
        end
      end
    end
  end
end

Version data entries

15 entries across 13 versions & 2 rubygems

Version Path
reek-6.0.1 spec/quality/documentation_spec.rb
reek-6.0.0 spec/quality/documentation_spec.rb
reek-5.6.0 spec/quality/documentation_spec.rb
reek-5.5.0 spec/quality/documentation_spec.rb
reek-5.4.1 spec/quality/documentation_spec.rb
reek-5.4.0 spec/quality/documentation_spec.rb
reek-5.3.2 spec/quality/documentation_spec.rb
reek-5.3.1 spec/quality/documentation_spec.rb
reek-5.3.0 spec/quality/documentation_spec.rb
config_gems_initialization_aim-0.1.4 vendor/bundle/ruby/2.5.0/gems/reek-5.2.0/spec/quality/documentation_spec.rb
config_gems_initialization_aim-0.1.4 vendor/bundle/ruby/2.5.0/gems/config_gems_initialization_aim-0.1.1/vendor/bundle/ruby/2.5.0/gems/reek-5.2.0/spec/quality/documentation_spec.rb
config_gems_initialization_aim-0.1.3 vendor/bundle/ruby/2.5.0/gems/config_gems_initialization_aim-0.1.1/vendor/bundle/ruby/2.5.0/gems/reek-5.2.0/spec/quality/documentation_spec.rb
config_gems_initialization_aim-0.1.3 vendor/bundle/ruby/2.5.0/gems/reek-5.2.0/spec/quality/documentation_spec.rb
reek-5.2.0 spec/quality/documentation_spec.rb
reek-5.1.0 spec/quality/documentation_spec.rb