Sha256: bcb6f90181dde44da46dfc77881757b2d937486d09edf8881ea637b2092eaab4

Contents?: true

Size: 1.02 KB

Versions: 1

Compression:

Stored size: 1.02 KB

Contents

$LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
require 'gisele'
require 'epath'

def capture_io
  stdout, stderr = $stdout, $stderr
  $stdout, $stderr = StringIO.new, StringIO.new
  yield
  [$stdout.string, $stderr.string]
ensure
  $stdout, $stderr = stdout, stderr
end

module SpecHelpers

  def parse(text, rule, consume = true)
    grammar = Gisele::Language::Grammar
    grammar.parse(text, :root => rule, :consume => consume)
  end

  def ast(text, rule, consume = true)
    ast = parse(text, rule, consume).to_ast
    unless sexp_grammar[rule] === ast
      raise "expected #{ast} to match #{rule} (#{text})"
    end
    ast
  end

  def fixtures_dir
    (Path.dir/:fixtures)
  end

  def fixture_files(glob)
    fixtures_dir.glob(glob)
  end

  def sexp_grammar
    Gisele::Language
  end

  def simple_ast
    Gisele::ast(fixtures_dir/:tasks/"simple.gis")
  end

  def complete_ast
    Gisele::ast(fixtures_dir/:tasks/"complete.gis")
  end

end

RSpec.configure do |c|
  c.extend  SpecHelpers
  c.include SpecHelpers
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
gisele-0.5.0 spec/spec_helper.rb