Sha256: b64f5a12e4e7d10be1550a524c7eacf6d03766bf1256158f3be87341428a824f

Contents?: true

Size: 926 Bytes

Versions: 5

Compression:

Stored size: 926 Bytes

Contents

# frozen_string_literal: true

require_relative '../spec_helper'

describe 'Delorean Ruby error handling' do
  after do
    ::Delorean::Ruby.error_handler = ::Delorean::Ruby::DEFAULT_ERROR_HANDLER
  end

  let(:sset) do
    TestContainer.new(
      'AAA' =>
      defn('X:',
           '    a =? 123',
           '    b = a*2',
          )
    )
  end

  let(:engine) do
    Delorean::Engine.new('XXX', sset).tap do |eng|
      eng.parse defn('A:',
                     '    b = ERR("test", 1, 2, 3)'
                    )
    end
  end

  it 'raises error' do
    expect { engine.evaluate('A', 'b') }.to raise_error(
      RuntimeError, 'test, 1, 2, 3'
    )
  end

  it 'allows to override handler' do
    ::Delorean::Ruby.error_handler = lambda do |*_args|
      raise StandardError, 'Overriden Error'
    end

    expect { engine.evaluate('A', 'b') }.to raise_error(
      StandardError, 'Overriden Error'
    )
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
delorean_lang-2.5.0 spec/ruby/error_handling_spec.rb
delorean_lang-2.4.2 spec/ruby/error_handling_spec.rb
delorean_lang-2.4.0 spec/ruby/error_handling_spec.rb
delorean_lang-2.3.0 spec/ruby/error_handling_spec.rb
delorean_lang-2.1.0 spec/ruby/error_handling_spec.rb