[Rd] Base R examples that write to current working directory

Martin Maechler
Tue, 03 Apr 2018 09:37:04 -0000

>>>>> Henrik Bengtsson <henrik.bengtsson at gmail.com>
>>>>>     on Fri, 30 Mar 2018 10:14:04 -0700 writes:

    > So, the proposal would then be to write to tempdir(),
    > correct?  If so, I see three alternatives:

    > 1. explicitly use file.path(tempdir(), filename), or
    > tempfile() everywhere.

I think it should clearly be  '1.',
as both '2.' and '3.' would need new functionality in R.

Ideally we'd get the patch within a day or two, so we can safely
apply it also to  R 3.5.0 alpha  (before it turns beta!).

I think the 'eval.path' argument to example() is a nice idea,
but also changing its default to  tempdir() is definitely out of
the question for R 3.5.0.

Martin


    > 2. wrap example code in a withTempDir({ ... }) call.

    > 3. Add an 'eval.path' (*) argument to example() and make
    > it default to eval.path = tempdir(). This would probably
    > be backward compatible and keep the code example clean.
    > The downside is when a user runs an example and can't
    > locate produced files. (*) or 'wd', 'workdir', ...

    > /Henrik

    > On Fri, Mar 30, 2018 at 9:25 AM, Uwe Ligges
    > <ligges at statistik.tu-dortmund.de> wrote:
    >>
    >>
    >> On 30.03.2018 00:08, Duncan Murdoch wrote:
    >>>
    >>> On 29/03/2018 5:23 PM, Hadley Wickham wrote:
    >>>>
    >>>> Hi all,
    >>>>
    >>>> Given the recent CRAN push to prevent examples writing
    >>>> to the working directory, is there any interest in
    >>>> fixing base R examples that write to the working
    >>>> directory? A few candidates are the graphics devices,
    >>>> file.create(), writeBin(), writeChar(), write(), and
    >>>> saveRDS(). I'm sure there are many more.
    >>>>
    >>>> One way to catch these naughty examples would be to
    >>>> search for unlink() in examples: e.g.,
    >>>>
    >>>>
https://github.com/wch/r-source/search?utf8=?&q=unlink+extension%3ARd&type=.
    >>>> Of course, simply cleaning up after yourself is not
    >>>> sufficient because if those files existed before the
    >>>> examples were run, the examples will destroy them.
    >>>>
    >>>
    >>> Why not put together a patch that fixes these?  This
    >>> doesn't seem to be something that needs discussion,
    >>> fixing the bad examples would be a good idea.
    >>
    >>
    >> Seconded. CRAN would not accept these base packages,
    >> hence we should urgently give better examples.
    >>
    >> Best, Uwe
    >>
    >>
    >>
    >>> Duncan Murdoch
    >>>
    >>> ______________________________________________
    >>> R-devel at r-project.org mailing list
    >>> https://stat.ethz.ch/mailman/listinfo/r-devel
    >>
    >>
    >> ______________________________________________
    >> R-devel at r-project.org mailing list
    >> https://stat.ethz.ch/mailman/listinfo/r-devel