1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
|
# frozen_string_literal: true
require "test_helper"
require "bootsnap/cli"
module Bootsnap
class CLITest < Minitest::Test
include TmpdirHelper
def setup
super
@cache_dir = File.expand_path("tmp/cache/bootsnap/compile-cache")
end
def test_precompile_single_file
skip_unless_iseq
path = Help.set_file("a.rb", "a = a = 3", 100)
CompileCache::ISeq.expects(:precompile).with(File.expand_path(path))
assert_equal 0, CLI.new(["precompile", "-j", "0", path]).run
end
def test_precompile_rake_files
skip_unless_iseq
path = Help.set_file("a.rake", "a = a = 3", 100)
CompileCache::ISeq.expects(:precompile).with(File.expand_path(path))
assert_equal 0, CLI.new(["precompile", "-j", "0", path]).run
end
def test_precompile_rakefile
skip_unless_iseq
path = Help.set_file("Rakefile", "a = a = 3", 100)
CompileCache::ISeq.expects(:precompile).with(File.expand_path(path))
assert_equal 0, CLI.new(["precompile", "-j", "0", path]).run
end
def test_no_iseq
skip_unless_iseq
path = Help.set_file("a.rb", "a = a = 3", 100)
CompileCache::ISeq.expects(:precompile).never
assert_equal 0, CLI.new(["precompile", "-j", "0", "--no-iseq", path]).run
end
def test_precompile_directory
skip_unless_iseq
path_a = Help.set_file("foo/a.rb", "a = a = 3", 100)
path_b = Help.set_file("foo/b.rb", "b = b = 3", 100)
CompileCache::ISeq.expects(:precompile).with(File.expand_path(path_a))
CompileCache::ISeq.expects(:precompile).with(File.expand_path(path_b))
assert_equal 0, CLI.new(["precompile", "-j", "0", "foo"]).run
end
def test_precompile_exclude
skip_unless_iseq
path_a = Help.set_file("foo/a.rb", "a = a = 3", 100)
Help.set_file("foo/b.rb", "b = b = 3", 100)
CompileCache::ISeq.expects(:precompile).with(File.expand_path(path_a))
assert_equal 0, CLI.new(["precompile", "-j", "0", "--exclude", "b.rb", "foo"]).run
end
def test_precompile_gemfile
assert_equal 0, CLI.new(["precompile", "--gemfile"]).run
end
def test_precompile_yaml
path = Help.set_file("a.yaml", "foo: bar", 100)
CompileCache::YAML.expects(:precompile).with(File.expand_path(path))
assert_equal 0, CLI.new(["precompile", "-j", "0", path]).run
end
def test_no_yaml
path = Help.set_file("a.yaml", "foo: bar", 100)
CompileCache::YAML.expects(:precompile).never
assert_equal 0, CLI.new(["precompile", "-j", "0", "--no-yaml", path]).run
end
if Process.respond_to?(:fork)
def test_version_flag
read, write = IO.pipe
# optparse --version immediately call exit so we test in a subprocess
pid = fork do
$stdout.reopen(write)
read.close
exit(CLI.new(["--version"]).run)
end
write.close
_, status = Process.waitpid2(pid)
assert_predicate status, :success?
assert_includes read.read, Bootsnap::VERSION
end
end
private
def skip_unless_iseq
skip("Unsupported platform") unless defined?(CompileCache::ISeq) && CompileCache::ISeq.supported?
end
end
end
|