summaryrefslogtreecommitdiffstats
path: root/testsuites/sptests/spmkdir
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2010-06-08 13:22:58 +0000
committerSebastian Huber <sebastian.huber@embedded-brains.de>2010-06-08 13:22:58 +0000
commitacdd5aa20af983dd2179f995a51f1ca1dad454ab (patch)
treec898b53a97f4adf4a01021698019ff5f8105bf6d /testsuites/sptests/spmkdir
parent2010-06-08 Jennifer Averett <Jennifer.Averett@OARcorp.com (diff)
downloadrtems-acdd5aa20af983dd2179f995a51f1ca1dad454ab.tar.bz2
2010-06-08 Sebastian Huber <Sebastian.Huber@embedded-brains.de>
* spmkdir/.cvsignore, spmkdir/Makefile.am, spmkdir/init.c, spmkdir/spmkdir.doc, spmkdir/spmkdir.scn: New files.
Diffstat (limited to 'testsuites/sptests/spmkdir')
-rw-r--r--testsuites/sptests/spmkdir/.cvsignore2
-rw-r--r--testsuites/sptests/spmkdir/Makefile.am28
-rw-r--r--testsuites/sptests/spmkdir/init.c96
-rw-r--r--testsuites/sptests/spmkdir/spmkdir.doc7
-rw-r--r--testsuites/sptests/spmkdir/spmkdir.scn2
5 files changed, 135 insertions, 0 deletions
diff --git a/testsuites/sptests/spmkdir/.cvsignore b/testsuites/sptests/spmkdir/.cvsignore
new file mode 100644
index 0000000000..282522db03
--- /dev/null
+++ b/testsuites/sptests/spmkdir/.cvsignore
@@ -0,0 +1,2 @@
+Makefile
+Makefile.in
diff --git a/testsuites/sptests/spmkdir/Makefile.am b/testsuites/sptests/spmkdir/Makefile.am
new file mode 100644
index 0000000000..61fbca440f
--- /dev/null
+++ b/testsuites/sptests/spmkdir/Makefile.am
@@ -0,0 +1,28 @@
+##
+## $Id$
+##
+
+MANAGERS = all
+
+rtems_tests_PROGRAMS = spmkdir
+spmkdir_SOURCES = init.c
+
+dist_rtems_tests_DATA = spmkdir.scn
+dist_rtems_tests_DATA += spmkdir.doc
+
+include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
+include $(top_srcdir)/../automake/compile.am
+include $(top_srcdir)/../automake/leaf.am
+
+spmkdir_LDADD = $(MANAGERS_NOT_WANTED:%=$(PROJECT_LIB)/no-%.rel)
+
+AM_CPPFLAGS += -I$(top_srcdir)/../support/include
+
+LINK_OBJS = $(spmkdir_OBJECTS) $(spmkdir_LDADD)
+LINK_LIBS = $(spmkdir_LDLIBS)
+
+spmkdir$(EXEEXT): $(spmkdir_OBJECTS) $(spmkdir_DEPENDENCIES)
+ @rm -f spmkdir$(EXEEXT)
+ $(make-exe)
+
+include $(top_srcdir)/../automake/local.am
diff --git a/testsuites/sptests/spmkdir/init.c b/testsuites/sptests/spmkdir/init.c
new file mode 100644
index 0000000000..4b11a22981
--- /dev/null
+++ b/testsuites/sptests/spmkdir/init.c
@@ -0,0 +1,96 @@
+/**
+ * @file
+ *
+ * @ingroup tests
+ *
+ * @brief rtems_mkdir() test.
+ */
+
+/*
+ * Copyright (c) 2010
+ * embedded brains GmbH
+ * Obere Lagerstr. 30
+ * D-82178 Puchheim
+ * Germany
+ * <rtems@embedded-brains.de>
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.com/license/LICENSE.
+ *
+ * $Id$
+ */
+
+#include <sys/stat.h>
+#include <errno.h>
+#include <fcntl.h>
+
+#include <rtems/libio.h>
+
+#include "tmacros.h"
+
+static void test_mkdir(const char *path, mode_t omode, int expected_rv)
+{
+ struct stat st;
+ int rv = 0;
+ mode_t current_umask = umask(0);
+ mode_t dirmode = S_IFDIR | (omode & ~current_umask);
+
+ umask(current_umask);
+
+ rv = rtems_mkdir(path, omode);
+ rtems_test_assert(rv == expected_rv);
+
+ if (rv == 0) {
+ rv = stat(path, &st);
+ rtems_test_assert(rv == 0 && st.st_mode == dirmode);
+ }
+}
+
+static rtems_task Init(rtems_task_argument argument)
+{
+ mode_t omode = S_IRWXU | S_IRWXG | S_IRWXO;
+ int rv = 0;
+
+ puts("\n\n*** TEST SPMKDIR ***");
+
+ test_mkdir("a", omode, 0);
+ test_mkdir("a/b", omode, 0);
+ test_mkdir("a/b/c/d/e/f/g/h/i", omode, 0);
+ test_mkdir("a/b/c", omode, 0);
+ test_mkdir("a/b/c/1", 0, 0);
+ test_mkdir("a/b/c/2", S_IRWXU, 0);
+ test_mkdir("a/b/c/3", S_IRWXG, 0);
+ test_mkdir("a/b/c/4", S_IRWXO, 0);
+ test_mkdir("a/b", omode, 0);
+ test_mkdir("a", omode, 0);
+
+ rv = open ("b", O_CREAT | O_RDONLY, omode);
+ rtems_test_assert(rv >= 0);
+
+ rv = close(rv);
+ rtems_test_assert(rv == 0);
+
+ test_mkdir("b", omode, -1);
+ rtems_test_assert(errno == EEXIST);
+
+ puts("*** END OF TEST SPMKDIR ***");
+
+ exit(0);
+}
+
+#define CONFIGURE_INIT
+
+#define CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER
+#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
+
+#define CONFIGURE_USE_IMFS_AS_BASE_FILESYSTEM
+
+#define CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS 4
+
+#define CONFIGURE_MAXIMUM_TASKS 1
+#define CONFIGURE_MAXIMUM_DRIVERS 1
+
+#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
+
+#include <rtems/confdefs.h>
diff --git a/testsuites/sptests/spmkdir/spmkdir.doc b/testsuites/sptests/spmkdir/spmkdir.doc
new file mode 100644
index 0000000000..08f752e877
--- /dev/null
+++ b/testsuites/sptests/spmkdir/spmkdir.doc
@@ -0,0 +1,7 @@
+# $Id$
+
+This file describes the directives and concepts tested by this test set.
+
+test set name: spmkdir
+
+directives: rtems_mkdir
diff --git a/testsuites/sptests/spmkdir/spmkdir.scn b/testsuites/sptests/spmkdir/spmkdir.scn
new file mode 100644
index 0000000000..b696a55b22
--- /dev/null
+++ b/testsuites/sptests/spmkdir/spmkdir.scn
@@ -0,0 +1,2 @@
+*** TEST SPMKDIR ***
+*** END OF TEST SPMKDIR ***