Am 03.01.2017 um 09:59 schrieb Elizabeth Mattijsen:
On 3 Jan 2017, at 06:58, Joachim Durchholz <j...@durchholz.org> wrote:
Yes, chdir is nasty because it's a global setting and you never know which of
the functions you're calling might be changing the setting.
indir solves all these things. (Provided it changes the current directory back
even in the face of exceptions.)
Please note that there is no real chdir() at the OS level, because that is a
bad idea in a threaded environment. And for that reason, the JVM doesn’t allow
for it, afaik, and thus it wouldn’t work on the JVM backend anyway.
That would be the JDK, not the JVM (which does not implement these things).
But right, there is no good way to change the current working directory
in Java, which is the Right Thing to Do(TM) in my book actually.
The “current directory” is represented by the $*CWD dynamic variable. Changing
the “current directory” in a scope, is nothing else than syntactic sugar around
creating a local lexical $*CWD. By virtue of the destruction of lexical
variables when they go out of scope, this will also work if the scope is exited
by an exception.
Ah, I didn't know what.
That's much better than what Python has :-)
4) The topic of this ticket: its default set of tests for the directory will
change (just test if it's a directory?)
Some platform might even be okay with a nondirectory for chdir. This wouldn't
be particularly useful, but we can't assume that all platforms do only useful
things.
That said, I think the indir tests should just test that chdir is being called
at the right times with the right arguments (can Perl6 tests do mocking? that
would be needed)
So any error case testing can be done for chdir.
Since changing the current directory is nothing else than changing $*CWD,
mocking should not be a problem.
+1
Not every change will be possible, because we can't break existing spectests,
Oh, is Perl6 that stable now?
I thought it should still be possible to fix mistakes.
I hear they’re still fixing mistakes in Perl 5. Which, in my impression, is
considered stable by many :-)
:-D