source: rtems/testsuites/sptests/spmkdir/init.c @ a0b1b5ed

4.115
Last change on this file since a0b1b5ed was a0b1b5ed, checked in by Sebastian Huber <sebastian.huber@…>, on 12/15/14 at 13:19:43

Delete CONFIGURE_USE_IMFS_AS_BASE_FILESYSTEM

This define was superfluous, undocumented and used inconsistently.

  • Property mode set to 100644
File size: 2.8 KB
Line 
1/**
2 * @file
3 *
4 * @ingroup tests
5 *
6 * @brief rtems_mkdir() test.
7 */
8
9/*
10 * Copyright (c) 2010
11 * embedded brains GmbH
12 * Obere Lagerstr. 30
13 * D-82178 Puchheim
14 * Germany
15 * <rtems@embedded-brains.de>
16 *
17 * The license and distribution terms for this file may be
18 * found in the file LICENSE in this distribution or at
19 * http://www.rtems.org/license/LICENSE.
20 */
21
22#ifdef HAVE_CONFIG_H
23#include "config.h"
24#endif
25
26#include <sys/stat.h>
27#include <errno.h>
28#include <fcntl.h>
29
30#include <rtems/libio.h>
31
32#include "tmacros.h"
33
34const char rtems_test_name[] = "SPMKDIR";
35
36static void test_mkdir(const char *path, mode_t omode, int expected_rv)
37{
38  struct stat st;
39  int rv = 0;
40  mode_t current_umask = umask(0);
41  mode_t dirmode = S_IFDIR | (omode & ~current_umask);
42
43  umask(current_umask);
44
45  rv = rtems_mkdir(path, omode);
46  rtems_test_assert(rv == expected_rv);
47
48  if (rv == 0) {
49    rv = stat(path, &st);
50    rtems_test_assert(rv == 0 && st.st_mode == dirmode);
51  }
52}
53
54static rtems_task Init(rtems_task_argument argument)
55{
56  mode_t omode = S_IRWXU | S_IRWXG | S_IRWXO;
57  int rv = 0;
58
59  TEST_BEGIN();
60
61  puts( "rtems_mkdir a - OK" );
62  test_mkdir("a", omode, 0);
63  puts( "rtems_mkdir a/b - OK" );
64  test_mkdir("a/b", omode, 0);
65  puts( "rtems_mkdir a/b/c/d/e/f/g/h/i - OK" );
66  test_mkdir("a/b/c/d/e/f/g/h/i", omode, 0);
67  puts( "rtems_mkdir a/b/c - OK" );
68  test_mkdir("a/b/c", omode, 0);
69  puts( "rtems_mkdir a/b/c/1 - OK" );
70  test_mkdir("a/b/c/1", 0, 0);
71  puts( "rtems_mkdir a/b/c/2 - OK" );
72  test_mkdir("a/b/c/2", S_IRWXU, 0);
73  puts( "rtems_mkdir a/b/c/3 - OK" );
74  test_mkdir("a/b/c/3", S_IRWXG, 0);
75  puts( "rtems_mkdir a/b/c/4 - OK" );
76  test_mkdir("a/b/c/4", S_IRWXO, 0);
77  puts( "rtems_mkdir a/b - OK" );
78  test_mkdir("a/b", omode, 0);
79  puts( "rtems_mkdir a - OK" );
80  test_mkdir("a", omode, 0);
81  puts( "rtems_mkdir a/b/x - OK" );
82  test_mkdir("a/b/x", S_IRUSR, 0);
83  puts( "rtems_mkdir a/b/x/y - expect failure" );
84  test_mkdir("a/b/x/y", S_IRUSR, -1);
85  puts( "mknod regular file a/n - OK" ); 
86  rv = mknod("a/n", S_IRWXU | S_IFREG, 0LL);
87  puts( "rtems_mkdir a/n/b - expect failure" );
88  test_mkdir("a/n/b", S_IRUSR, -1);
89
90  puts( "Create node b and open in RDONLY mode - OK" );
91  rv = open ("b", O_CREAT | O_RDONLY, omode);
92  rtems_test_assert(rv >= 0);
93
94  puts( "Closing b - OK" );
95  rv = close(rv);
96  rtems_test_assert(rv == 0);
97
98  puts( "rtems_mkdir b - expect failure" );
99  test_mkdir("b", omode, -1);
100  rtems_test_assert(errno == EEXIST);
101
102  TEST_END();
103
104  exit(0);
105}
106
107#define CONFIGURE_INIT
108
109#define CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER
110#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
111
112#define CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS 4
113
114#define CONFIGURE_MAXIMUM_TASKS 1
115#define CONFIGURE_MAXIMUM_DRIVERS 1
116
117#define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION
118
119#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
120
121#include <rtems/confdefs.h>
Note: See TracBrowser for help on using the repository browser.