Class: MockFS::FileAdapter

Inherits:
Object
  • Object
show all
Extended by:
Adapter
Defined in:
lib/mockfs.rb

Overview

:nodoc:

Defined Under Namespace

Classes: Mode

Class Method Summary collapse

Methods included from Adapter

method_missing, node, respond_to?

Class Method Details

.chmod(perms, *filenames) ⇒ Object



247
248
249
# File 'lib/mockfs.rb', line 247

def self.chmod( perms, *filenames )
	node( filenames.first ).permissions = perms
end

.directory?(file_name) ⇒ Boolean

Returns:

  • (Boolean)


251
252
253
254
255
256
257
# File 'lib/mockfs.rb', line 251

def self.directory?( file_name )
	begin
		node( file_name ).is_a? MockFileSystem::MockDir
	rescue Errno::ENOENT
		false
	end
end

.dirname(file_name) ⇒ Object



259
260
261
# File 'lib/mockfs.rb', line 259

def self.dirname( file_name )
	File.dirname file_name
end

.exist?(filename) ⇒ Boolean Also known as: exists?

Returns:

  • (Boolean)


264
265
266
267
268
269
270
271
# File 'lib/mockfs.rb', line 264

def exist?( filename )
	begin
		node( filename )
		true
	rescue Errno::ENOENT
		false
	end
end

.file?(file_name) ⇒ Boolean

Returns:

  • (Boolean)


276
277
278
279
280
281
282
# File 'lib/mockfs.rb', line 276

def self.file?( file_name )
	begin
		node( file_name ).is_a? MockFileSystem::MockFile
	rescue Errno::ENOENT
		false
	end
end

.mock_file(fd, mode) ⇒ Object

:nodoc:



284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
# File 'lib/mockfs.rb', line 284

def self.mock_file( fd, mode ) #:nodoc:
	if mode.read_only?
		mock_file = node( fd )
		raise Errno::EACCES if mock_file and !mock_file.readable?
	else
		path = Path.new( fd ).absolute
		dir = node( path.parent )
		if mode.append?
			mock_file = node( fd )
		else
			mock_file = MockFileSystem::MockFile.new( dir, path.node, '' )
		end
	end
	mock_file
end

.open(fd, mode_string = File::RDONLY, &action) ⇒ Object



300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
# File 'lib/mockfs.rb', line 300

def self.open( fd, mode_string = File::RDONLY, &action )
	mode = Mode.new mode_string
	mock_file = mock_file( fd, mode )
	mock_file.pos = mock_file.size if mode.append?
	if action
		result = action.call( mock_file )
		mock_file.rewind
		if !mode.read_only? and !mode.append?
			mock_file.parent[Path.new( fd ).absolute.node] = mock_file
		end
		result
	else
		mock_file
	end
end

.read(name) ⇒ Object

Raises:

  • (Errno::EISDIR)


316
317
318
319
320
321
322
# File 'lib/mockfs.rb', line 316

def self.read( name )
	mfile = node name
	raise Errno::EISDIR if mfile.is_a? MockFileSystem::MockDir
	contents = mfile.read
	mfile.rewind
	contents
end