I have a chance to do a bit of fresh testing of a feature which essentially just copies a file, portably (Meaning the app is compiled for Macs/linuxes and Windows10) , and merely copies a file from one folder to another, not between O/S. Basically on the same computer. What kinds of unusual files and what kinds of unusual behaviours can I test against?
To constrain the initial discussion I’m adding a few arbitrary exclusions:
- File copy over network is another topic, or between 2 different O/S over network which in reality should be covered in the simple stand-alone domain problem anyway if we cover it properly.
- The app has no commandline, it’s interface is GUI only (there is a internal API at any rate, but I’m not testing the API, I’m testing the functionality)
- In future, the program will automatically unzip zip files for you as a way of copy folders around more easily. But for now lets assume it does not.
So far I have my usual suspects:
- zero length
- destination file has archive bit cleared after the copy (Windows)
- destination file is read-write
- source file has write locks open should prevent the copy process starting.
- program shall lock the file against writes
- destination file would exceed storage quota checks regularly
- destination file disappears while saving to it?
- source file contains file-streams (Windows)
- source file is an executable (OS dependant outcomes??)
- source filename is case sensitive/filesystem case sensitive
- source file gets a (1) suffix if destination exists
- source filename with a “(1)” suffix gets renamed to “(1)(1)” if destination with (1) exists etc…
- destination file would exceed path lengthcheck
- source filename with no “filetype” (OS dependant treatment)
- source filename with multiple filetype “extensions” or suffixes handled
- source file contains virus signature (that may trigger a personal filesystem firewall??)
- source file conflicts when a destination folder of same name exists must append a (1) suffix. (OS dependant??)
- Unicode and UTF-8 (with no BOM mark) files are implied, any gotchas in this area?
- simultaneously transfer multiple files using the GUI
- cancel an individual file transfer
- stop all file transfers
- resume unsupported : Resuming a transfer is out of scope here, but any ideas are welcome.
Pretty sure I can group these or map these much better; but before I try to, which ones have I missed?