GDB (xrefs)
Loading...
Searching...
No Matches
gdb
unittests
scoped_fd-selftests.c
Go to the documentation of this file.
1
/* Self tests for scoped_fd for GDB, the GNU debugger.
2
3
Copyright (C) 2018-2023 Free Software Foundation, Inc.
4
5
This file is part of GDB.
6
7
This program is free software; you can redistribute it and/or modify
8
it under the terms of the GNU General Public License as published by
9
the Free Software Foundation; either version 3 of the License, or
10
(at your option) any later version.
11
12
This program is distributed in the hope that it will be useful,
13
but WITHOUT ANY WARRANTY; without even the implied warranty of
14
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
GNU General Public License for more details.
16
17
You should have received a copy of the GNU General Public License
18
along with this program. If not, see <http://www.gnu.org/licenses/>. */
19
20
#include "
defs.h
"
21
22
#include "gdbsupport/filestuff.h"
23
#include "gdbsupport/scoped_fd.h"
24
#include "
config.h
"
25
#include "gdbsupport/selftest.h"
26
27
namespace
selftests
{
28
namespace
scoped_fd {
29
30
/* Test that the file descriptor is closed. */
31
static
void
32
test_destroy
()
33
{
34
char
filename[] =
"scoped_fd-selftest-XXXXXX"
;
35
int
fd = gdb_mkostemp_cloexec (filename).release ();
36
SELF_CHECK (fd >= 0);
37
38
unlink (filename);
39
errno = 0;
40
{
41
::scoped_fd sfd (fd);
42
43
SELF_CHECK (sfd.get () == fd);
44
}
45
46
SELF_CHECK (close (fd) == -1 && errno == EBADF);
47
}
48
49
/* Test that the file descriptor can be released. */
50
static
void
51
test_release
()
52
{
53
char
filename[] =
"scoped_fd-selftest-XXXXXX"
;
54
int
fd = gdb_mkostemp_cloexec (filename).release ();
55
SELF_CHECK (fd >= 0);
56
57
unlink (filename);
58
errno = 0;
59
{
60
::scoped_fd sfd (fd);
61
62
SELF_CHECK (sfd.release () == fd);
63
}
64
65
SELF_CHECK (close (fd) == 0 || errno != EBADF);
66
}
67
68
/* Test that the file descriptor can be converted to a FILE *. */
69
static
void
70
test_to_file
()
71
{
72
char
filename[] =
"scoped_fd-selftest-XXXXXX"
;
73
74
::scoped_fd sfd = gdb_mkostemp_cloexec (filename);
75
SELF_CHECK (sfd.get () >= 0);
76
77
unlink (filename);
78
79
gdb_file_up file = sfd.to_file (
"rw"
);
80
SELF_CHECK (file !=
nullptr
);
81
SELF_CHECK (sfd.get () == -1);
82
}
83
84
/* Run selftests. */
85
static
void
86
run_tests
()
87
{
88
test_destroy
();
89
test_release
();
90
test_to_file
();
91
}
92
93
}
/* namespace scoped_fd */
94
}
/* namespace selftests */
95
96
void
_initialize_scoped_fd_selftests
();
97
void
98
_initialize_scoped_fd_selftests
()
99
{
100
selftests::register_test (
"scoped_fd"
,
101
selftests::scoped_fd::run_tests
);
102
}
config.h
defs.h
selftests::scoped_fd::run_tests
static void run_tests()
Definition
scoped_fd-selftests.c:86
selftests::scoped_fd::test_to_file
static void test_to_file()
Definition
scoped_fd-selftests.c:70
selftests::scoped_fd::test_release
static void test_release()
Definition
scoped_fd-selftests.c:51
selftests::scoped_fd::test_destroy
static void test_destroy()
Definition
scoped_fd-selftests.c:32
selftests
Definition
disasm-selftests.c:26
_initialize_scoped_fd_selftests
void _initialize_scoped_fd_selftests()
Definition
scoped_fd-selftests.c:98
Generated by
1.10.0