Testing file system manipulations

C

Chris Vincent

I am currently writing a class which processes a log file, inserts some
data into the database, and then rotates the log file. I am doing
test-driven development and I was curious as to the best practices for
testing classes which manipulate the file system.

Rails tests have a transactional feature for testing database
manipulation such that changes made to the DB are reset after each test.
I was wondering if there was anything like this for the file system. It
would be great if the test could automatically reverse any file system
changes made during a test; I could imagine doing this via proxying
access to the File, FileUtils, and Dir classes. Has anything like this
been done? Or is there a better approach altogether?

For the record, I'm using Shoulda.
 
A

Andrew Timberlake

[Note: parts of this message were removed to make it a legal post.]

I am currently writing a class which processes a log file, inserts some
data into the database, and then rotates the log file. I am doing
test-driven development and I was curious as to the best practices for
testing classes which manipulate the file system.

Rails tests have a transactional feature for testing database
manipulation such that changes made to the DB are reset after each test.
I was wondering if there was anything like this for the file system. It
would be great if the test could automatically reverse any file system
changes made during a test; I could imagine doing this via proxying
access to the File, FileUtils, and Dir classes. Has anything like this
been done? Or is there a better approach altogether?

For the record, I'm using Shoulda.
You should use mock objects in place of file operations.
If you're using mocha, you can do things like

File.expects:)delete).with(file_name)
File.delete(file_name)

--
Andrew Timberlake
http://ramblingsonrails.com
http://www.linkedin.com/in/andrewtimberlake

"I have never let my schooling interfere with my education" - Mark Twain
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,744
Messages
2,569,484
Members
44,904
Latest member
HealthyVisionsCBDPrice

Latest Threads

Top