require_relative "test_helper" require "lox" require "open3" require "mocktail" class TestLox < Lox::Test def test_error_on_more_than_one_arg lox_path = File.expand_path("../bin/lox", __dir__) o, s = Open3.capture2(lox_path, "foo", "bar") assert_equal 64, s.exitstatus assert_equal "Usage: #{lox_path} [script]\n", o end end class TestRunner < Lox::Test include Mocktail::DSL def teardown Mocktail.reset end # This test sucks, but we'll live with it just not # exploding our runner for now. def test_prints scanner = Mocktail.of(Lox::Scanner) parser = Mocktail.of(Lox::Parser) runner = Lox::Runner.new(scanner, parser) stubs { scanner.scan("src") }.with { %w[ some tokens ] } stubs { parser.parse(%w[ some tokens ]) }.with { Lox::Expr::Literal.new("foo") } runner.run("src") end end