libamxp  1.4.0
Patterns C Implementation
test_dir.c File Reference
#include <sys/time.h>
#include <sys/resource.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <stdarg.h>
#include <stddef.h>
#include <setjmp.h>
#include <inttypes.h>
#include <limits.h>
#include <unistd.h>
#include <fcntl.h>
#include <cmocka.h>
#include <amxc/amxc_macros.h>
#include <amxc/amxc.h>
#include <amxp/variant_siginfo.h>
#include <amxp/amxp_dir.h>
#include "test_dir.h"

Go to the source code of this file.

Functions

static int test_add_to_list (const char *name, void *priv)
 
int test_dir_teardown (UNUSED void **state)
 
void test_dir_make (UNUSED void **state)
 
void test_dir_scan (UNUSED void **state)
 
void test_dir_is_empty (UNUSED void **state)
 
void test_dir_is_a_directory (UNUSED void **state)
 

Function Documentation

◆ test_add_to_list()

static int test_add_to_list ( const char *  name,
void *  priv 
)
static

Definition at line 76 of file test_dir.c.

76  {
77  amxc_string_t* f = NULL;
78  amxc_llist_t* l = (amxc_llist_t*) priv;
79 
80  amxc_string_new(&f, 0);
81  amxc_string_setf(f, "%s", name);
82  amxc_llist_append(l, &f->it);
83 
84  return 0;
85 }

◆ test_dir_is_a_directory()

void test_dir_is_a_directory ( UNUSED void **  state)

Definition at line 165 of file test_dir.c.

165  {
166  assert_true(amxp_dir_is_directory("."));
167  assert_false(amxp_dir_is_directory(""));
168  assert_false(amxp_dir_is_directory(NULL));
169 
170  assert_true(amxp_dir_is_directory("./subdir"));
171  assert_true(amxp_dir_is_directory("./subdir/nextlevel"));
172 
173  assert_false(amxp_dir_is_directory("./test_dir.c"));
174 }
bool amxp_dir_is_directory(const char *path)
Checks if a path is a directory.
Definition: amxp_dir.c:257

◆ test_dir_is_empty()

void test_dir_is_empty ( UNUSED void **  state)

Definition at line 154 of file test_dir.c.

154  {
155  assert_false(amxp_dir_is_empty("."));
156  assert_true(amxp_dir_is_empty(""));
157  assert_true(amxp_dir_is_empty(NULL));
158 
159  assert_false(amxp_dir_is_empty("./subdir"));
160  assert_true(amxp_dir_is_empty("./subdir/nextlevel"));
161 
162  assert_true(amxp_dir_is_empty("./test_dir.c"));
163 }
bool amxp_dir_is_empty(const char *path)
Checks if a directory is empty.
Definition: amxp_dir.c:243

◆ test_dir_make()

void test_dir_make ( UNUSED void **  state)

Definition at line 98 of file test_dir.c.

98  {
99  assert_int_equal(amxp_dir_make("./subdir/nextlevel", 0777), 0);
100  assert_int_equal(amxp_dir_make("./subdir/otherdir", 0777), 0);
101  assert_int_equal(amxp_dir_make("./subdir/otherdir/next", 0777), 0);
102  assert_int_equal(amxp_dir_make("./subdir/nextlevel", 0777), 0);
103  assert_int_equal(amxp_dir_make("/tmp/subdir/nextlevel", 0777), 0);
104 
105  assert_int_not_equal(amxp_dir_make("", 0777), 0);
106  assert_int_not_equal(amxp_dir_make(NULL, 0777), 0);
107 }
int amxp_dir_make(const char *path, const mode_t mode)
Creates sub-directories.
Definition: amxp_dir.c:212

◆ test_dir_scan()

void test_dir_scan ( UNUSED void **  state)

Definition at line 109 of file test_dir.c.

109  {
110  amxc_llist_t files;
111  amxc_llist_init(&files);
112 
113  assert_int_equal(amxp_dir_scan(".", "d_type == DT_REG", true, test_add_to_list, &files), 0);
114  assert_int_equal(amxc_llist_size(&files), 5);
115  amxc_llist_clean(&files, amxc_string_list_it_free);
116 
117  assert_int_equal(amxp_dir_scan(".", "d_type == DT_DIR", true, test_add_to_list, &files), 0);
118  assert_int_equal(amxc_llist_size(&files), 4);
119  amxc_llist_clean(&files, amxc_string_list_it_free);
120 
121  assert_int_equal(amxp_dir_scan(".", "d_type == DT_DIR", false, test_add_to_list, &files), 0);
122  assert_int_equal(amxc_llist_size(&files), 1);
123  amxc_llist_clean(&files, amxc_string_list_it_free);
124 
125  assert_int_equal(amxp_dir_scan(".", "d_type == DT_LNK", true, test_add_to_list, &files), 0);
126  assert_int_equal(amxc_llist_size(&files), 0);
127  amxc_llist_clean(&files, amxc_string_list_it_free);
128 
129  assert_int_equal(amxp_dir_scan(".", "d_type in [DT_BLK, DT_CHR, DT_FIFO, DT_SOCK, DT_UNKNOWN]", true, test_add_to_list, &files), 0);
130  assert_int_equal(amxc_llist_size(&files), 0);
131  amxc_llist_clean(&files, amxc_string_list_it_free);
132 
133  assert_int_equal(amxp_dir_scan(".", "d_type == DT_INVALID", true, test_add_to_list, &files), 0);
134  assert_int_equal(amxc_llist_size(&files), 0);
135  amxc_llist_clean(&files, amxc_string_list_it_free);
136 
137  assert_int_equal(amxp_dir_scan(".", "d_name matches '.*\\.c'", true, test_add_to_list, &files), 0);
138  assert_int_equal(amxc_llist_size(&files), 2);
139  amxc_llist_clean(&files, amxc_string_list_it_free);
140 
141  assert_int_not_equal(amxp_dir_scan("/notexisting", NULL, true, test_add_to_list, &files), 0);
142  assert_true(amxc_llist_is_empty(&files));
143 
144  assert_int_not_equal(amxp_dir_scan(NULL, NULL, true, test_add_to_list, &files), 0);
145  assert_true(amxc_llist_is_empty(&files));
146 
147  assert_int_not_equal(amxp_dir_scan("", NULL, true, test_add_to_list, &files), 0);
148  assert_true(amxc_llist_is_empty(&files));
149 
150  assert_int_not_equal(amxp_dir_scan("./test_dir.c", NULL, true, test_add_to_list, &files), 0);
151  assert_true(amxc_llist_is_empty(&files));
152 }
int amxp_dir_scan(const char *path, const char *filter, bool recursive, amxp_dir_match_fn_t fn, void *priv)
Scans a directory and calls a callback function for each matching entry found.
Definition: amxp_dir.c:216
static int test_add_to_list(const char *name, void *priv)
Definition: test_dir.c:76

◆ test_dir_teardown()

int test_dir_teardown ( UNUSED void **  state)

Definition at line 87 of file test_dir.c.

87  {
88  rmdir("./subdir/nextlevel");
89  rmdir("./subdir/otherdir/next");
90  rmdir("./subdir/otherdir");
91  rmdir("./subdir/nextlevel");
92  rmdir("/tmp/subdir/nextlevel");
93  rmdir("./subdir");
94 
95  return 0;
96 }