Changeset 2309891 in mainline for uspace/lib/fmgt/test


Ignore:
Timestamp:
2025-12-14T17:15:57Z (3 months ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
master
Children:
79b77ce
Parents:
144fafd
Message:

Copy files (Navigator and command line).

TODO Overwrite query, new I/O error types.

Location:
uspace/lib/fmgt/test
Files:
1 added
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/fmgt/test/walk.c

    r144fafd r2309891  
    3939PCUT_TEST_SUITE(walk);
    4040
    41 static errno_t test_walk_dir_enter(void *, const char *);
    42 static errno_t test_walk_dir_leave(void *, const char *);
    43 static errno_t test_walk_file(void *, const char *);
     41static errno_t test_walk_dir_enter(void *, const char *, const char *);
     42static errno_t test_walk_dir_leave(void *, const char *, const char *);
     43static errno_t test_walk_file(void *, const char *, const char *);
    4444
    4545static fmgt_walk_cb_t test_walk_cb = {
     
    5555        char *dirname;
    5656        char *fname;
     57        char *dest;
     58        char *de_dest;
     59        char *dl_dest;
    5760        errno_t rc;
    5861} test_resp_t;
    5962
    60 /** Walk file system tree. */
    61 PCUT_TEST(walk_success)
     63/** Walk file system tree with no destination and successful result. */
     64PCUT_TEST(walk_nodest_success)
    6265{
    6366        char buf[L_tmpnam];
     
    129132}
    130133
    131 errno_t test_walk_dir_enter(void *arg, const char *fname)
     134/** Walk file system tree with destination and successful result. */
     135PCUT_TEST(walk_dest_success)
     136{
     137        char buf[L_tmpnam];
     138        char *fname;
     139        FILE *f;
     140        char *p;
     141        int rv;
     142        fmgt_flist_t *flist;
     143        fmgt_walk_params_t params;
     144        test_resp_t resp;
     145        errno_t rc;
     146
     147        /* Create name for temporary directory */
     148        p = tmpnam(buf);
     149        PCUT_ASSERT_NOT_NULL(p);
     150
     151        /* Create temporary directory */
     152        rc = vfs_link_path(p, KIND_DIRECTORY, NULL);
     153        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     154
     155        rv = asprintf(&fname, "%s/%s", p, "a");
     156        PCUT_ASSERT_TRUE(rv >= 0);
     157
     158        f = fopen(fname, "wb");
     159        PCUT_ASSERT_NOT_NULL(f);
     160
     161        rv = fprintf(f, "X");
     162        PCUT_ASSERT_TRUE(rv >= 0);
     163
     164        rv = fclose(f);
     165        PCUT_ASSERT_INT_EQUALS(0, rv);
     166
     167        rc = fmgt_flist_create(&flist);
     168        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     169
     170        rc = fmgt_flist_append(flist, p);
     171        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     172
     173        fmgt_walk_params_init(&params);
     174        params.flist = flist;
     175        params.dest = "foo";
     176        params.cb = &test_walk_cb;
     177        params.arg = &resp;
     178
     179        resp.dir_enter = false;
     180        resp.dir_leave = false;
     181        resp.file_proc = false;
     182        resp.rc = EOK;
     183
     184        rc = fmgt_walk(&params);
     185        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     186
     187        PCUT_ASSERT_TRUE(resp.dir_enter);
     188        PCUT_ASSERT_TRUE(resp.dir_leave);
     189        PCUT_ASSERT_TRUE(resp.file_proc);
     190        PCUT_ASSERT_STR_EQUALS(p, resp.dirname);
     191        PCUT_ASSERT_STR_EQUALS(fname, resp.fname);
     192        printf("dest='%s'\n", resp.dest);
     193        printf("de_dest='%s'\n", resp.de_dest);
     194        printf("dl_dest='%s'\n", resp.dl_dest);
     195
     196        free(resp.dirname);
     197        free(resp.fname);
     198        fmgt_flist_destroy(flist);
     199
     200        rv = remove(fname);
     201        PCUT_ASSERT_INT_EQUALS(0, rv);
     202
     203        rv = remove(p);
     204        PCUT_ASSERT_INT_EQUALS(0, rv);
     205
     206        free(fname);
     207}
     208
     209errno_t test_walk_dir_enter(void *arg, const char *fname, const char *dest)
    132210{
    133211        test_resp_t *resp = (test_resp_t *)arg;
    134212        resp->dir_enter = true;
    135213        resp->dirname = str_dup(fname);
     214        resp->de_dest = str_dup(dest);
    136215        return resp->rc;
    137216}
    138217
    139 errno_t test_walk_dir_leave(void *arg, const char *fname)
     218errno_t test_walk_dir_leave(void *arg, const char *fname, const char *dest)
    140219{
    141220        test_resp_t *resp = (test_resp_t *)arg;
    142221        resp->dir_leave = true;
     222        resp->dl_dest = str_dup(dest);
    143223        return resp->rc;
    144224}
    145225
    146 errno_t test_walk_file(void *arg, const char *fname)
     226errno_t test_walk_file(void *arg, const char *fname, const char *dest)
    147227{
    148228        test_resp_t *resp = (test_resp_t *)arg;
    149229        resp->file_proc = true;
    150230        resp->fname = str_dup(fname);
     231        resp->dest = str_dup(dest);
    151232        return resp->rc;
    152233}
Note: See TracChangeset for help on using the changeset viewer.