File: torture_push_pop_dir.c

package info (click to toggle)
libssh 0.10.6-0%2Bdeb12u1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 6,004 kB
  • sloc: ansic: 88,777; cpp: 407; sh: 119; makefile: 41; javascript: 20; python: 9
file content (78 lines) | stat: -rw-r--r-- 1,610 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#include "config.h"

#include "torture.h"
#define LIBSSH_STATIC

const char template[] = "temp_dir_XXXXXX";

static int setup(void **state)
{
    char *temp_dir = NULL;

    temp_dir = torture_make_temp_dir(template);
    assert_non_null(temp_dir);

    *state = (void *)temp_dir;

    return 0;
}

static int teardown(void **state)
{
    char *temp_dir = *((char **)state);

    torture_rmdirs((const char *)temp_dir);

    free(temp_dir);

    return 0;
}

static void torture_back_and_forth(void **state)
{
    char *temp_dir = *((char **)state);
    char *cwd = NULL;
    char *after_change = NULL;
    char *after_changing_back = NULL;
    int rc = 0;

    cwd = torture_get_current_working_dir();
    assert_non_null(cwd);

    printf("Current dir: %s\n", cwd);

    rc = torture_change_dir(temp_dir);
    assert_int_equal(rc, 0);

    after_change = torture_get_current_working_dir();
    assert_non_null(after_change);

    printf("Current dir after change: %s\n", after_change);

    rc = torture_change_dir(cwd);
    assert_int_equal(rc, 0);

    after_changing_back = torture_get_current_working_dir();
    assert_non_null(after_changing_back);

    printf("Back to dir: %s\n", after_changing_back);

    SAFE_FREE(cwd);
    SAFE_FREE(after_change);
    SAFE_FREE(after_changing_back);
}

int torture_run_tests(void)
{
    int rc;
    struct CMUnitTest tests[] = {
        cmocka_unit_test_setup_teardown(torture_back_and_forth,
                                        setup, teardown),
    };

    torture_filter_tests(tests);
    rc = cmocka_run_group_tests(tests, NULL, NULL);

    return rc;
}