summaryrefslogtreecommitdiff
path: root/deps/uv/test/test-homedir.c
blob: cbc47566c55e42d55578a3562584663832d9a36b (plain)
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
#include "uv.h"
#include "task.h"
#include <string.h>

#define PATHMAX 1024
#define SMALLPATH 1

TEST_IMPL(homedir) {
  char homedir[PATHMAX];
  size_t len;
  char last;
  int r;

  /* Test the normal case */
  len = sizeof homedir;
  homedir[0] = '\0';
  ASSERT(strlen(homedir) == 0);
  r = uv_os_homedir(homedir, &len);
  ASSERT(r == 0);
  ASSERT(strlen(homedir) == len);
  ASSERT(len > 0);
  ASSERT(homedir[len] == '\0');

  if (len > 1) {
    last = homedir[len - 1];
#ifdef _WIN32
    ASSERT(last != '\\');
#else
    ASSERT(last != '/');
#endif
  }

  /* Test the case where the buffer is too small */
  len = SMALLPATH;
  r = uv_os_homedir(homedir, &len);
  ASSERT(r == UV_ENOBUFS);
  ASSERT(len > SMALLPATH);

  /* Test invalid inputs */
  r = uv_os_homedir(NULL, &len);
  ASSERT(r == UV_EINVAL);
  r = uv_os_homedir(homedir, NULL);
  ASSERT(r == UV_EINVAL);
  len = 0;
  r = uv_os_homedir(homedir, &len);
  ASSERT(r == UV_EINVAL);

  return 0;
}