[rtems commit] fsclose01: Add tmpfile() test case

Sebastian Huber sebh at rtems.org
Mon Feb 5 08:32:24 UTC 2018


Module:    rtems
Branch:    master
Commit:    4ac5ffbb8314d307964f21a774e923a62a3c36e0
Changeset: http://git.rtems.org/rtems/commit/?id=4ac5ffbb8314d307964f21a774e923a62a3c36e0

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Mon Feb  5 09:31:32 2018 +0100

fsclose01: Add tmpfile() test case

Close #1971.

---

 testsuites/fstests/fsclose01/fsclose01.doc |  2 ++
 testsuites/fstests/fsclose01/init.c        | 29 ++++++++++++++++++++++++++---
 2 files changed, 28 insertions(+), 3 deletions(-)

diff --git a/testsuites/fstests/fsclose01/fsclose01.doc b/testsuites/fstests/fsclose01/fsclose01.doc
index 29277a4..89a734a 100644
--- a/testsuites/fstests/fsclose01/fsclose01.doc
+++ b/testsuites/fstests/fsclose01/fsclose01.doc
@@ -17,6 +17,7 @@ directives:
   - lseek()
   - read()
   - readv()
+  - tmpfile()
   - write()
   - writev()
 
@@ -24,3 +25,4 @@ concepts:
 
   - Ensure the close() return -1 with errno set to EBUSY in case the file
     descriptor is still in use.
+  - Ensure that close() cleans up resources allocated by tmpfile().
diff --git a/testsuites/fstests/fsclose01/init.c b/testsuites/fstests/fsclose01/init.c
index 3b65b3b..786749d 100644
--- a/testsuites/fstests/fsclose01/init.c
+++ b/testsuites/fstests/fsclose01/init.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2017 embedded brains GmbH.  All rights reserved.
+ * Copyright (c) 2012, 2018 embedded brains GmbH.  All rights reserved.
  *
  *  embedded brains GmbH
  *  Dornierstr. 4
@@ -426,7 +426,7 @@ static void test_fd_free_fifo(const char *path)
   rtems_test_assert(a != b);
 }
 
-static void test(test_context *ctx)
+static void test_close(test_context *ctx)
 {
   const char *path = "generic";
   int rv;
@@ -507,10 +507,33 @@ static void test(test_context *ctx)
   rtems_test_assert(ctx->writev_count == 1);
 }
 
+static void test_tmpfile(test_context *ctx)
+{
+  rtems_resource_snapshot before;
+  FILE *f;
+  int rv;
+
+  rv = mkdir("/tmp", S_IRWXU | S_IRWXG | S_IRWXO);
+  rtems_test_assert(rv == 0);
+
+  f = tmpfile();
+  rtems_test_assert(f != NULL);
+  rv = fclose(f);
+  rtems_test_assert(rv == 0);
+
+  rtems_resource_snapshot_take(&before);
+  f = tmpfile();
+  rtems_test_assert(f != NULL);
+  rv = fclose(f);
+  rtems_test_assert(rv == 0);
+  rtems_test_assert(rtems_resource_snapshot_check(&before));
+}
+
 static void Init(rtems_task_argument arg)
 {
   TEST_BEGIN();
-  test(&test_instance);
+  test_close(&test_instance);
+  test_tmpfile(&test_instance);
   TEST_END();
   rtems_test_exit(0);
 }



More information about the vc mailing list