361
362
value = popen.read().strip()
362
363
self.assertEqual(value, "World")
365
# On FreeBSD < 7 and OS X < 10.6, unsetenv() doesn't return a value (issue
367
@unittest.skipIf(sys.platform.startswith(('freebsd', 'darwin')),
368
"due to known OS bug: see issue #13415")
369
def test_unset_error(self):
370
if sys.platform == "win32":
371
# an environment variable is limited to 32,767 characters
373
self.assertRaises(ValueError, os.environ.__delitem__, key)
375
# "=" is not allowed in a variable name
377
self.assertRaises(OSError, os.environ.__delitem__, key)
364
379
class WalkTests(unittest.TestCase):
365
380
"""Tests for os.walk()."""
514
529
class URandomTests (unittest.TestCase):
515
def test_urandom(self):
517
self.assertEqual(len(os.urandom(1)), 1)
518
self.assertEqual(len(os.urandom(10)), 10)
519
self.assertEqual(len(os.urandom(100)), 100)
520
self.assertEqual(len(os.urandom(1000)), 1000)
521
# see http://bugs.python.org/issue3708
522
self.assertRaises(TypeError, os.urandom, 0.9)
523
self.assertRaises(TypeError, os.urandom, 1.1)
524
self.assertRaises(TypeError, os.urandom, 2.0)
525
except NotImplementedError:
531
def test_urandom_length(self):
532
self.assertEqual(len(os.urandom(0)), 0)
533
self.assertEqual(len(os.urandom(1)), 1)
534
self.assertEqual(len(os.urandom(10)), 10)
535
self.assertEqual(len(os.urandom(100)), 100)
536
self.assertEqual(len(os.urandom(1000)), 1000)
538
def test_urandom_value(self):
539
data1 = os.urandom(16)
540
data2 = os.urandom(16)
541
self.assertNotEqual(data1, data2)
543
def get_urandom_subprocess(self, count):
544
# We need to use repr() and eval() to avoid line ending conversions
548
'data = os.urandom(%s)' % count,
549
'sys.stdout.write(repr(data))',
550
'sys.stdout.flush()',
551
'print >> sys.stderr, (len(data), data)'))
552
cmd_line = [sys.executable, '-c', code]
553
p = subprocess.Popen(cmd_line, stdin=subprocess.PIPE,
554
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
555
out, err = p.communicate()
556
self.assertEqual(p.wait(), 0, (p.wait(), err))
558
self.assertEqual(len(out), count, err)
561
def test_urandom_subprocess(self):
562
data1 = self.get_urandom_subprocess(16)
563
data2 = self.get_urandom_subprocess(16)
564
self.assertNotEqual(data1, data2)
528
566
def test_execvpe_with_bad_arglist(self):
529
567
self.assertRaises(ValueError, os.execvpe, 'notepad', [], None)