Working on the RPCFN: Shift Subtitle I found myself having to work with files input as a stream (or anyway that’s how I wanted to approach the problem; streams are efficient to me). In order to give my code any sort of unit testing justice I needed to mock the file system. The challenge expressly forbids any Ruby gems from being used in the script itself – and maybe by extension the unit tests as well – but I could not see devoting the time necessary to write a mocking framework for the file system.
I found a gem that does precisely what I needed named Construct. Unfortunately there is a bug with Ruby 1.8.6 on Windows in regards to clean up of temp files. The problem is that when attempting to clean up a Errno::EACCES is raised causing the unit test to fail (or you to write a lot of rescue blocks).
A workaround I came up with was to replace the rmtree method in the Pathname class within my unit test to perform no clean up. Not the best approach I am sure, but it let me get on with my work.
# something_test.rb
require "test/unit"
require 'construct'
require 'something'class Pathname
# windows has problems with temp files created by Ruby # http://redmine.ruby-lang.org/issues/show/1494 def rmtree nil end endclass SomethingTest < Test::Unit::TestCase
# test methods... end