File: path_scanner_test.rb

package info (click to toggle)
ruby-bootsnap 1.22.0-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 520 kB
  • sloc: ruby: 3,637; ansic: 844; sh: 14; makefile: 9
file content (52 lines) | stat: -rw-r--r-- 1,789 bytes parent folder | download
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
# frozen_string_literal: true

require "test_helper"

module Bootsnap
  module LoadPathCache
    class PathScannerTest < Minitest::Test
      include LoadPathCacheHelper

      DLEXT = RbConfig::CONFIG["DLEXT"]
      OTHER_DLEXT = DLEXT == "bundle" ? "so" : "bundle"

      def test_scans_requirables_and_dirs
        Dir.mktmpdir do |dir|
          FileUtils.mkdir_p("#{dir}/ruby/a")
          FileUtils.mkdir_p("#{dir}/ruby/b/c")
          FileUtils.mkdir_p("#{dir}/support/h/i")
          FileUtils.mkdir_p("#{dir}/ruby/l")
          FileUtils.mkdir_p("#{dir}/support/l/m")
          FileUtils.touch("#{dir}/ruby/d.rb")
          FileUtils.touch("#{dir}/ruby/e.#{DLEXT}")
          FileUtils.touch("#{dir}/ruby/f.#{OTHER_DLEXT}")
          FileUtils.touch("#{dir}/ruby/a/g.rb")
          FileUtils.touch("#{dir}/support/h/j.rb")
          FileUtils.touch("#{dir}/support/h/i/k.rb")
          FileUtils.touch("#{dir}/support/l/m/n.rb")
          FileUtils.ln_s("#{dir}/support/h", "#{dir}/ruby/h")
          FileUtils.ln_s("#{dir}/support/l/m", "#{dir}/ruby/l/m")

          entries = PathScanner.call("#{dir}/ruby")
          assert_equal(["a/g.rb", "d.rb", "e.#{DLEXT}", "h/i/k.rb", "h/j.rb", "l/m/n.rb"], entries.sort)
        end
      end

      def test_scan_broken_symlink
        Dir.mktmpdir do |dir|
          File.symlink("/does/not/exist", "#{dir}/dir_link")
          assert_equal [], PathScanner.call(dir)
          assert_equal [], PathScanner.call("#{dir}/dir_link")
        end
      end

      def test_scan_missing_or_invalid_dir
        Dir.mktmpdir do |dir|
          assert_equal [], PathScanner.call("#{dir}/does/not/exist")
          File.write("#{dir}/file", "")
          assert_equal [], PathScanner.call("#{dir}/file")
        end
      end
    end
  end
end