On Thu, Feb 18, 2010 at 9:12 AM, Lars Dɪᴇᴄᴋᴏᴡ 迪拉斯 <da...@cpan.org> wrote: > I of course ran `perl Makefile.PL ; make ; make testdistro ; make test` on the > source directory before committing and encountered no problems. Tests pass, my > configuration below `$HOME/.config` was not overwritten, and also no > `$HOME/.cpan` directory appeared again once I earlier had deleted it for good. > So, »works on my machine«. > > Are you referring to the tests of the CPAN distro or something else?
Anything *else* on CPAN that does this: (a) uses File::HomeDir->my_data (b) Overrides $ENV{HOME} to a temp directory for testing creation of config files (instead of, say, mocking File::HomeDir->my_data) This presumes that they don't care or don't realize that $ENV{HOME} doesn't affect my_data on Windows. Adam's suggestion is only a so-so answer because users might legitimately have reasons to set HOME and XDG_DATA_HOME differently. The handful of modules I spot check seem to either just use my_home() directly instead of my_data() or if they use my_data(), they mock it or have some other override that avoids File::HomeDir entirely. Here's my revised suggestion: add something to the File::HomeDir module (or distribution) that is the "official" way to mock/override File::HomeDir for testing and then advertise the hell out of it. (And possibly email every author that uses File::HomeDir on CPAN) That could be any of these: (a) Some global variable that takes precedence over HOME, HOMEDIR, XDG_*, whatever (b) A File::HomeDir::Mock module that creates a temporary directory and points every other call to a subdirectory of it. E.g. /tmp/File-HomeDir-tmp498723487/ my_home/ my_data/ my_documents/ ... I think (b) is a safer bet. Ideally, tests would just need to load it early, and then it would ensure that all subsequent use of File::HomeDir in that process is safely segregated from real user data. -- David P.S. Alias++ for the pun