On Friday, 18 May 2018 at 15:30:05 UTC, Uknown wrote:
On Friday, 18 May 2018 at 15:16:52 UTC, Russel Winder wrote:
Hi,

What's the current official position on how to create temporary files for use during a unittest. I found

https://github.com/dlang/phobos/pull/5788

but it seems to be languishing in the "we have discussed all the issues that no-one will ever have a problem with" phase.

What to do between now and when there is an LDC release that has the result of
the merge?

You could use libc's tmpfile with std.stdio.File until a D alternative pops up.

http://en.cppreference.com/w/c/io/tmpfile

I've had no idea C++'s got this in the standard library lol a while ago I ended up doing this (on Windows):

/// Creates a uniquely named, zero-byte temporary file on disk and returns the full path of that file.
/// Returns: the full path of the temp file.
string tempFilename()
{
        import  core.sys.windows.windows : GetTempFileNameW, MAX_PATH;
        import std.file : tempDir;
        import core.stdc.wchar_ : wcslen;
        import std.windows.syserror : wenforce;
        import std.conv : text, wtext;
        wchar[] path = new wchar[MAX_PATH+1];
        string dir = tempDir;
        wenforce(GetTempFileNameW(dir.wtext.ptr, // temp path
                                                          ("tmp"w).ptr, // dir 
prefix
                                                          0, // id generated 
internally
                                                          path.ptr // path 
buffer
                        ),
                        "GetTempFileName()");
        return path[0 .. wcslen(path.ptr)].text;
}

It's windows-only and call GetTempFileNameW actually so just a function wrapper to work with D. There's a way to MAX_PATH but I didn't care to implement at time...

Reply via email to