From wdunlap at tibco.com  Thu Nov  9 02:01:08 2017
From: wdunlap at tibco.com (William Dunlap)
Date: Wed, 8 Nov 2017 17:01:08 -0800
Subject: [Rd] check does not check that package examples remove tempdir()
In-Reply-To: <CAFDcVCQt=+gZf-=j_bv2Zt5aNoyhT8WWOjSrLPu9GF97CqFC8w@mail.gmail.com>
References: <CAF8bMcZfc7uibFXC7Gx=qjXr4J808rKupZjf6AUhTBeV_Vu1ig@mail.gmail.com>
 <CAFDcVCQt=+gZf-=j_bv2Zt5aNoyhT8WWOjSrLPu9GF97CqFC8w@mail.gmail.com>
Message-ID: <CAF8bMcYxiaLxig_gbgybficK7QcRYwu7N5A9ChrzK+Lr1Pw9cQ@mail.gmail.com>

I think recreating tempdir() is ok in an emergency situation, but package
code
should not be removing tempdir() - it may contain important information.

Bill Dunlap
TIBCO Software
wdunlap tibco.com

On Wed, Nov 8, 2017 at 4:55 PM, Henrik Bengtsson <henrik.bengtsson at gmail.com
> wrote:

> Related to this problem - from R-devel NEWS
> (https://cran.r-project.org/doc/manuals/r-devel/NEWS.html):
>
> * tempdir(check = TRUE) recreates the tmpdir() if it is no longer
> valid (e.g. because some other process has cleaned up the ?/tmp?
> directory).
>
> Not sure if there's a plan to make check = TRUE the default though.
>
> /Henrik
>
> On Wed, Nov 8, 2017 at 4:43 PM, William Dunlap via R-devel
> <r-devel at r-project.org> wrote:
> > I was looking at the CRAN package 'bfork-0.1.2', which exposes the Unix
> > fork() and waitpid() calls at the R code level, and noticed that the help
> > file example for bfork::fork removes R's temporary directory, the value
> of
> > tempdir().   I think it happens because the forked process shares the
> value
> > of tempdir() with the parent process and removes it when it exits.
> >
> > This seems like a serious problem - should 'check' make sure that running
> > code in a package's examples, vignettes, etc. leaves tempdir() intact?
> >
> >> dir.exists(tempdir())
> > [1] TRUE
> >> library(bfork)
> >> example(fork)
> >
> > fork>     ## create a function to be run as a separate process
> > fork>     fn <- function() {
> > fork+         Sys.sleep(4)
> > fork+         print("World!")
> > fork+     }
> >
> > fork>     ## fork the process
> > fork>     pid <- fork(fn)
> >
> > fork>     ## do work in the parent process
> > fork>     print("Hello")
> > [1] "Hello"
> >
> > fork>     ## wait for the child process
> > fork>     waitpid(pid)
> > [1] "World!"
> > [1] 7063
> >> dir.exists(tempdir())
> > [1] FALSE
> >
> >
> > Bill Dunlap
> > TIBCO Software
> > wdunlap tibco.com
> >
> >         [[alternative HTML version deleted]]
> >
> > ______________________________________________
> > R-devel at r-project.org mailing list
> > https://stat.ethz.ch/mailman/listinfo/r-devel
>

	[[alternative HTML version deleted]]



[Rd] check does not check that package examples remove tempdir()
William Dunlap