diff mbox

acpi unit-test: Create temporary disk file under /tmp

Message ID 1387523131-15647-1-git-send-email-famz@redhat.com
State New
Headers show

Commit Message

Fam Zheng Dec. 20, 2013, 7:05 a.m. UTC
As other tests, the image file is created in /tmp other than current
dir. Thus there will not be an unignored file under tests for intree
build.

Signed-off-by: Fam Zheng <famz@redhat.com>
---
 tests/acpi-test.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Paolo Bonzini Dec. 20, 2013, 7:36 a.m. UTC | #1
Il 20/12/2013 08:05, Fam Zheng ha scritto:
> As other tests, the image file is created in /tmp other than current
> dir. Thus there will not be an unignored file under tests for intree
> build.
> 
> Signed-off-by: Fam Zheng <famz@redhat.com>
> ---
>  tests/acpi-test.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/tests/acpi-test.c b/tests/acpi-test.c
> index ca83b1d6..e4f31b7 100644
> --- a/tests/acpi-test.c
> +++ b/tests/acpi-test.c
> @@ -116,7 +116,7 @@ static uint8_t boot_sector[0x200] = {
>      [0x1FF] = 0xAA,
>  };
>  
> -static const char *disk = "tests/acpi-test-disk.raw";
> +static const char *disk = "/tmp/qtest-acpi-test-disk.raw";
>  
>  static void free_test_data(test_data *data)
>  {
> 

The real bug is probably that the file is not unlinked.

Using /tmp is a good idea, but if you do that you probably need to take
TMPDIR into account.

Paolo
Michael Tokarev Dec. 20, 2013, 8:36 a.m. UTC | #2
20.12.2013 11:05, Fam Zheng wrote:
> As other tests, the image file is created in /tmp other than current
> dir. Thus there will not be an unignored file under tests for intree
> build.
> 
> Signed-off-by: Fam Zheng <famz@redhat.com>
> ---
>  tests/acpi-test.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/tests/acpi-test.c b/tests/acpi-test.c
> index ca83b1d6..e4f31b7 100644
> --- a/tests/acpi-test.c
> +++ b/tests/acpi-test.c
> @@ -116,7 +116,7 @@ static uint8_t boot_sector[0x200] = {
>      [0x1FF] = 0xAA,
>  };
>  
> -static const char *disk = "tests/acpi-test-disk.raw";
> +static const char *disk = "/tmp/qtest-acpi-test-disk.raw";

Please, PLEASE do NOT do this.

If you want a temp dir, create one in qemu source directory
(there's no urge to be able to specify one at build/run time,
a symlink created by user will do), -- so that all this junk
will be in a single dir easy to remove.

But never, ever, use /tmp like this, not here not elsewhere
else.  When you use /tmp, first, there's $TEMPDIR, and second,
much more important, there are apis like mkstemp(3) or
tmpfile(3), or tempnam(3), -- THIS is the only proper way to
use common temporary directories.

Never, ever, create fixed (or even predictable, with getpid()
for example) files in public temporary dirs.  Never.

For this issue, I think a better solution is to actually remove
this file on make clean.  Now you're just moving an unignored
file elsewhere, which isn't good by its own.

Thanks,

/mjt
Fam Zheng Dec. 20, 2013, 9:29 a.m. UTC | #3
On 12/20/13 16:36, Michael Tokarev wrote:
> 20.12.2013 11:05, Fam Zheng wrote:
>> As other tests, the image file is created in /tmp other than current
>> dir. Thus there will not be an unignored file under tests for intree
>> build.
>>
>> Signed-off-by: Fam Zheng <famz@redhat.com>
>> ---
>>   tests/acpi-test.c | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/tests/acpi-test.c b/tests/acpi-test.c
>> index ca83b1d6..e4f31b7 100644
>> --- a/tests/acpi-test.c
>> +++ b/tests/acpi-test.c
>> @@ -116,7 +116,7 @@ static uint8_t boot_sector[0x200] = {
>>       [0x1FF] = 0xAA,
>>   };
>>
>> -static const char *disk = "tests/acpi-test-disk.raw";
>> +static const char *disk = "/tmp/qtest-acpi-test-disk.raw";
>
> Please, PLEASE do NOT do this.
>
> If you want a temp dir, create one in qemu source directory
> (there's no urge to be able to specify one at build/run time,
> a symlink created by user will do), -- so that all this junk
> will be in a single dir easy to remove.
>
> But never, ever, use /tmp like this, not here not elsewhere
> else.  When you use /tmp, first, there's $TEMPDIR, and second,
> much more important, there are apis like mkstemp(3) or
> tmpfile(3), or tempnam(3), -- THIS is the only proper way to
> use common temporary directories.
>
> Never, ever, create fixed (or even predictable, with getpid()
> for example) files in public temporary dirs.  Never.
>
> For this issue, I think a better solution is to actually remove
> this file on make clean.  Now you're just moving an unignored
> file elsewhere, which isn't good by its own.
>

OK, will take your suggestion. Thanks for explanation.

Fam
Marcel Apfelbaum Dec. 20, 2013, 6:27 p.m. UTC | #4
On Fri, 2013-12-20 at 12:36 +0400, Michael Tokarev wrote:
> 20.12.2013 11:05, Fam Zheng wrote:
> > As other tests, the image file is created in /tmp other than current
> > dir. Thus there will not be an unignored file under tests for intree
> > build.
> > 
> > Signed-off-by: Fam Zheng <famz@redhat.com>
> > ---
> >  tests/acpi-test.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/tests/acpi-test.c b/tests/acpi-test.c
> > index ca83b1d6..e4f31b7 100644
> > --- a/tests/acpi-test.c
> > +++ b/tests/acpi-test.c
> > @@ -116,7 +116,7 @@ static uint8_t boot_sector[0x200] = {
> >      [0x1FF] = 0xAA,
> >  };
> >  
> > -static const char *disk = "tests/acpi-test-disk.raw";
> > +static const char *disk = "/tmp/qtest-acpi-test-disk.raw";
> 
> Please, PLEASE do NOT do this.
> 
> If you want a temp dir, create one in qemu source directory
> (there's no urge to be able to specify one at build/run time,
> a symlink created by user will do), -- so that all this junk
> will be in a single dir easy to remove.
> 
> But never, ever, use /tmp like this, not here not elsewhere
> else.  When you use /tmp, first, there's $TEMPDIR, and second,
> much more important, there are apis like mkstemp(3) or
> tmpfile(3), or tempnam(3), -- THIS is the only proper way to
> use common temporary directories.
> 
> Never, ever, create fixed (or even predictable, with getpid()
> for example) files in public temporary dirs.  Never.
> 
> For this issue, I think a better solution is to actually remove
> this file on make clean.  Now you're just moving an unignored
> file elsewhere, which isn't good by its own.

I would use (and let glib do the work): 
    fd = g_file_open_tmp("prefix-XXXXXX", file_name, &error);
    g_assert_no_error(error);
    ...
and of course in the end:
    unlink(file_name);

I hope I helped,
Marcel


> 
> Thanks,
> 
> /mjt
diff mbox

Patch

diff --git a/tests/acpi-test.c b/tests/acpi-test.c
index ca83b1d6..e4f31b7 100644
--- a/tests/acpi-test.c
+++ b/tests/acpi-test.c
@@ -116,7 +116,7 @@  static uint8_t boot_sector[0x200] = {
     [0x1FF] = 0xAA,
 };
 
-static const char *disk = "tests/acpi-test-disk.raw";
+static const char *disk = "/tmp/qtest-acpi-test-disk.raw";
 
 static void free_test_data(test_data *data)
 {