blob: 4f0d5be4aaa01f0daf03de48c1f6ac8b9d3f5455 [file] [log] [blame]
Neal Norwitze241ce82003-02-17 18:17:05 +00001"Test posix functions"
2
Tim Peters003eb302003-02-17 21:48:48 +00003from test.test_support import TestSkipped, TestFailed, TESTFN, run_suite
Neal Norwitze241ce82003-02-17 18:17:05 +00004
5try:
6 import posix
7except ImportError:
8 raise TestSkipped, "posix is not available"
9
10import time
11import os
12import sys
13import unittest
14import warnings
15warnings.filterwarnings('ignore', '.* potential security risk .*',
16 RuntimeWarning)
17
18class PosixTester(unittest.TestCase):
19
20 def setUp(self):
21 # create empty file
22 fp = open(TESTFN, 'w+')
23 fp.close()
24
25 def tearDown(self):
26 os.unlink(TESTFN)
27
28 def testNoArgFunctions(self):
29 # test posix functions which take no arguments and have
30 # no side-effects which we need to cleanup (e.g., fork, wait, abort)
31 NO_ARG_FUNCTIONS = [ "ctermid", "getcwd", "getcwdu", "uname",
32 "times", "getlogin", "getloadavg", "tmpnam",
33 "getegid", "geteuid", "getgid", "getgroups",
34 "getpid", "getpgrp", "getppid", "getuid",
35 ]
36 for name in NO_ARG_FUNCTIONS:
37 posix_func = getattr(posix, name, None)
38 if posix_func is not None:
39 posix_func()
Neal Norwitz2ff51a82003-02-17 22:40:31 +000040 self.assertRaises(TypeError, posix_func, 1)
Neal Norwitze241ce82003-02-17 18:17:05 +000041
42 def test_statvfs(self):
43 if hasattr(posix, 'statvfs'):
Neal Norwitz2ff51a82003-02-17 22:40:31 +000044 self.assert_(posix.statvfs(os.curdir))
Neal Norwitze241ce82003-02-17 18:17:05 +000045
46 def test_fstatvfs(self):
47 if hasattr(posix, 'fstatvfs'):
48 fp = open(TESTFN)
49 try:
Neal Norwitz2ff51a82003-02-17 22:40:31 +000050 self.assert_(posix.fstatvfs(fp.fileno()))
Neal Norwitze241ce82003-02-17 18:17:05 +000051 finally:
52 fp.close()
53
54 def test_ftruncate(self):
55 if hasattr(posix, 'ftruncate'):
56 fp = open(TESTFN, 'w+')
57 try:
58 # we need to have some data to truncate
59 fp.write('test')
60 fp.flush()
61 posix.ftruncate(fp.fileno(), 0)
62 finally:
63 fp.close()
64
65 def test_dup(self):
66 if hasattr(posix, 'dup'):
67 fp = open(TESTFN)
68 try:
69 fd = posix.dup(fp.fileno())
Neal Norwitz2ff51a82003-02-17 22:40:31 +000070 self.assert_(isinstance(fd, int))
Neal Norwitze241ce82003-02-17 18:17:05 +000071 os.close(fd)
72 finally:
73 fp.close()
74
75 def test_dup2(self):
76 if hasattr(posix, 'dup2'):
77 fp1 = open(TESTFN)
78 fp2 = open(TESTFN)
79 try:
80 posix.dup2(fp1.fileno(), fp2.fileno())
81 finally:
82 fp1.close()
83 fp2.close()
84
85 def fdopen_helper(self, *args):
86 fd = os.open(TESTFN, os.O_RDONLY)
87 fp2 = posix.fdopen(fd, *args)
88 fp2.close()
89
90 def test_fdopen(self):
91 if hasattr(posix, 'fdopen'):
92 self.fdopen_helper()
93 self.fdopen_helper('r')
94 self.fdopen_helper('r', 100)
95
96 def test_fstat(self):
97 if hasattr(posix, 'fstat'):
98 fp = open(TESTFN)
99 try:
Neal Norwitz2ff51a82003-02-17 22:40:31 +0000100 self.assert_(posix.fstat(fp.fileno()))
Neal Norwitze241ce82003-02-17 18:17:05 +0000101 finally:
102 fp.close()
103
104 def test_stat(self):
105 if hasattr(posix, 'stat'):
Neal Norwitz2ff51a82003-02-17 22:40:31 +0000106 self.assert_(posix.stat(TESTFN))
Neal Norwitze241ce82003-02-17 18:17:05 +0000107
108 def test_chdir(self):
109 if hasattr(posix, 'chdir'):
110 posix.chdir(os.curdir)
Neal Norwitz2ff51a82003-02-17 22:40:31 +0000111 self.assertRaises(OSError, posix.chdir, TESTFN)
Neal Norwitze241ce82003-02-17 18:17:05 +0000112
113 def test_lsdir(self):
114 if hasattr(posix, 'lsdir'):
Neal Norwitz2ff51a82003-02-17 22:40:31 +0000115 self.assert_(TESTFN in posix.lsdir(os.curdir))
Neal Norwitze241ce82003-02-17 18:17:05 +0000116
117 def test_access(self):
118 if hasattr(posix, 'access'):
Neal Norwitz2ff51a82003-02-17 22:40:31 +0000119 self.assert_(posix.access(TESTFN, os.R_OK))
Neal Norwitze241ce82003-02-17 18:17:05 +0000120
121 def test_umask(self):
122 if hasattr(posix, 'umask'):
123 old_mask = posix.umask(0)
Neal Norwitz2ff51a82003-02-17 22:40:31 +0000124 self.assert_(isinstance(old_mask, int))
Neal Norwitze241ce82003-02-17 18:17:05 +0000125 posix.umask(old_mask)
126
127 def test_strerror(self):
128 if hasattr(posix, 'strerror'):
Neal Norwitz2ff51a82003-02-17 22:40:31 +0000129 self.assert_(posix.strerror(0))
Neal Norwitze241ce82003-02-17 18:17:05 +0000130
131 def test_pipe(self):
132 if hasattr(posix, 'pipe'):
133 reader, writer = posix.pipe()
134 os.close(reader)
135 os.close(writer)
136
137 def test_tempnam(self):
138 if hasattr(posix, 'tempnam'):
Neal Norwitz2ff51a82003-02-17 22:40:31 +0000139 self.assert_(posix.tempnam())
140 self.assert_(posix.tempnam(os.curdir))
141 self.assert_(posix.tempnam(os.curdir, 'blah'))
Neal Norwitze241ce82003-02-17 18:17:05 +0000142
143 def test_tmpfile(self):
144 if hasattr(posix, 'tmpfile'):
145 fp = posix.tmpfile()
146 fp.close()
147
148 def test_utime(self):
149 if hasattr(posix, 'utime'):
150 now = time.time()
151 posix.utime(TESTFN, None)
152 posix.utime(TESTFN, (now, now))
153
154def test_main():
155 suite = unittest.TestSuite()
156 suite.addTest(unittest.makeSuite(PosixTester))
157 run_suite(suite)
158
159if __name__ == '__main__':
160 test_main()