(b) sounds like an interesting idea. Adam K
On Fri, Feb 19, 2010 at 2:03 AM, David Golden <xda...@gmail.com> wrote: > 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 >