The method to test allows adding a path to additional files the user adds which contain data.
For example, the user might store a file called data.txt in the /workspace/data directory. And we want to add the path to this directory to an already existing array called DATA_PATH.
Method:
def add_custom_path(path)
DATA_PATH.unshift(path)
end
Where path is a location in a Rails app where the user stores a file.
The gem uses test-unit.
Question:
Is there a way to temparily generate a file in some directory, run an assert_not_empty test, and then have the file disappear?
I don't have experience writing tests for gems so any guidance would be very appreciated.
The .create and .new methods of Ruby's Tempfile take a second argument which is the directory you want the file to be in, and files created by Tempfile are automatically deleted when the temporary file's File object is garbage-collected or Ruby exits. So you can create a temporary file,
tempfile = Tempfile.new('filename', 'directoryname')
write to it, do your test and let Ruby clean it up for you.
Note that the first argument is not the entire unqualified name of the file, but a part to which Tempfile adds disambiguating characters, so you can safely do it more than once in a test suite.
Also, if you need the file to have a particular suffix, you can do e.g.
tempfile = Tempfile.new(['filename', '.rb'], 'directoryname')
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With