Class: FakeFS::File::Stat

Inherits:
Object
  • Object
show all
Includes:
Comparable
Defined in:
lib/fakefs/file.rb

Overview

FakeFS Stat class

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(file, lstat = false) ⇒ Stat


322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
# File 'lib/fakefs/file.rb', line 322

def initialize(file, lstat = false)
  fail(Errno::ENOENT, file) unless File.exist?(file)

  @file      = file
  @fake_file = FileSystem.find(@file)
  @__lstat   = lstat
  @ctime     = @fake_file.ctime
  @mtime     = @fake_file.mtime
  @atime     = @fake_file.atime
  @mode      = @fake_file.mode
  @uid       = @fake_file.uid
  @gid       = @fake_file.gid
  @birthtime =
    if @fake_file.respond_to?(:birthtime)
      @fake_file.birthtime
    else
      @fake_file.ctime
    end
end

Instance Attribute Details

#atimeObject (readonly)

Returns the value of attribute atime


319
320
321
# File 'lib/fakefs/file.rb', line 319

def atime
  @atime
end

#birthtimeObject (readonly)

Returns the value of attribute birthtime


320
321
322
# File 'lib/fakefs/file.rb', line 320

def birthtime
  @birthtime
end

#ctimeObject (readonly)

Returns the value of attribute ctime


319
320
321
# File 'lib/fakefs/file.rb', line 319

def ctime
  @ctime
end

#gidObject (readonly)

Returns the value of attribute gid


319
320
321
# File 'lib/fakefs/file.rb', line 319

def gid
  @gid
end

#modeObject (readonly)

Returns the value of attribute mode


319
320
321
# File 'lib/fakefs/file.rb', line 319

def mode
  @mode
end

#mtimeObject (readonly)

Returns the value of attribute mtime


319
320
321
# File 'lib/fakefs/file.rb', line 319

def mtime
  @mtime
end

#uidObject (readonly)

Returns the value of attribute uid


319
320
321
# File 'lib/fakefs/file.rb', line 319

def uid
  @uid
end

Instance Method Details

#<=>(other) ⇒ Object


402
403
404
# File 'lib/fakefs/file.rb', line 402

def <=>(other)
  @mtime <=> other.mtime
end

#directory?Boolean


346
347
348
# File 'lib/fakefs/file.rb', line 346

def directory?
  File.directory?(@file)
end

#file?Boolean


350
351
352
# File 'lib/fakefs/file.rb', line 350

def file?
  File.file?(@file)
end

#ftypeObject


354
355
356
357
358
# File 'lib/fakefs/file.rb', line 354

def ftype
  return 'link' if symlink?
  return 'directory' if directory?
  'file'
end

384
385
386
# File 'lib/fakefs/file.rb', line 384

def nlink
  @fake_file.links.size
end

#readable?Boolean

assumes, like above, that all files are readable and writable.


361
362
363
# File 'lib/fakefs/file.rb', line 361

def readable?
  true
end

#sizeObject


388
389
390
391
392
393
394
# File 'lib/fakefs/file.rb', line 388

def size
  if @__lstat && symlink?
    @fake_file.target.size
  else
    File.size(@file)
  end
end

#sticky?Boolean

Assume nothing is sticky.


370
371
372
# File 'lib/fakefs/file.rb', line 370

def sticky?
  false
end

#symlink?Boolean


342
343
344
# File 'lib/fakefs/file.rb', line 342

def symlink?
  File.symlink?(@file)
end

#world_readable?Boolean


380
381
382
# File 'lib/fakefs/file.rb', line 380

def world_readable?
  0777
end

#world_writable?Boolean

World_writable and readable are platform dependent usually comparing with S_IROTH defined on compilation (MRI)


376
377
378
# File 'lib/fakefs/file.rb', line 376

def world_writable?
  0777
end

#writable?Boolean


365
366
367
# File 'lib/fakefs/file.rb', line 365

def writable?
  true
end

#zero?Boolean


396
397
398
# File 'lib/fakefs/file.rb', line 396

def zero?
  size == 0
end