File: dir.rb

package info (click to toggle)
mruby 3.4.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 5,584 kB
  • sloc: ansic: 51,933; ruby: 29,510; yacc: 7,077; cpp: 517; makefile: 51; sh: 42
file content (138 lines) | stat: -rw-r--r-- 2,541 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
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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
assert('Dir') do
  assert_equal(Class, Dir.class)
end

assert('DirTest.setup') do
  assert_nothing_raised{DirTest.setup}
end

assert('Dir.chdir') do
  assert_equal 0, Dir.chdir(DirTest.sandbox)
end

assert('Dir.entries') do
  a = Dir.entries(DirTest.sandbox)
  assert_true a.include?("a")
  assert_true a.include?("b")
end

assert('Dir.exist?') do
  assert_true Dir.exist?(DirTest.sandbox)
  assert_false Dir.exist?(DirTest.sandbox + "/nosuchdir")
end

assert('Dir.foreach') do
  a = []
  Dir.foreach(DirTest.sandbox) { |s| a << s }
  assert_true a.include?("a")
  assert_true a.include?("b")
end

assert('Dir.getwd') do
  s = Dir.getwd
  assert_true s.kind_of? String
end

assert('Dir.mkdir') do
  m1 = DirTest.sandbox + "/mkdir1"
  m2 = DirTest.sandbox + "/mkdir2"
  assert_equal 0, Dir.mkdir(m1)
  assert_equal 0, Dir.mkdir(m2, 0765)
end

assert('Dir.delete') do
  s = DirTest.sandbox + "/delete"
  Dir.mkdir(s)
  assert_true Dir.exist?(s)

  Dir.delete(s)
  assert_false Dir.exist?(s)
end

assert('Dir.open') do
  a = []
  Dir.open(DirTest.sandbox) { |d|
    d.each_child { |s| a << s }
  }
  assert_true a.include?("a")
  assert_true a.include?("b")
end

assert('Dir#initialize and Dir#close') do
  d = Dir.new(".")
  assert_true d.instance_of?(Dir)
  assert_nil d.close
end

assert('Dir#close') do
  d = Dir.new(".")
  assert_nothing_raised{d.close}
end

assert('Dir#each_child') do
  a = []
  d = Dir.open(DirTest.sandbox)
  d.each_child { |s| a << s }
  d.close
  assert_true a.include?("a")
  assert_true a.include?("b")
end

assert('Dir#read') do
  a = []
  d = Dir.open(DirTest.sandbox)
  while s = d.read
    a << s
  end
  d.close
  assert_true a.include?("a")
  assert_true a.include?("b")
end

assert('Dir#rewind') do
  d = Dir.open(DirTest.sandbox)
  while d.read; end

  assert_equal d, d.rewind

  a = []
  while s = d.read
    a << s
  end
  d.close
  assert_true a.include? "a"
  assert_true a.include? "b"
end

# Note: behaviors of seekdir(3) and telldir(3) are so platform-dependent
# that we cannot write portable tests here.

assert('Dir#tell') do
  n = nil
  begin
    Dir.open(DirTest.sandbox) { |d|
      n = d.tell
    }
    assert_true n.is_a? Integer
  rescue NotImplementedError => e
    skip e.message
  end
end

assert('Dir#seek') do
  d1 = Dir.open(DirTest.sandbox)
  d1.read
  begin
    n = d1.tell
    d1.read
    d2 = d1.seek(n)
    assert_equal d1, d2
  rescue NotImplementedError => e
    skip e.message
  end
end

assert('DirTest.teardown') do
  GC.start
  assert_nothing_raised{DirTest.teardown}
end