Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 4c81d60

Browse files
committed
Tests for the "commands" module, contributed by Nick Mathewson.
This closes SF patch #440291.
1 parent 1586136 commit 4c81d60

1 file changed

Lines changed: 45 additions & 0 deletions

File tree

Lib/test/test_commands.py

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
'''
2+
Tests for commands module
3+
Nick Mathewson
4+
'''
5+
import unittest
6+
import os, tempfile, re
7+
8+
from test_support import TestSkipped, run_unittest
9+
from commands import *
10+
11+
# The module says:
12+
# "NB This only works (and is only relevant) for UNIX."
13+
#
14+
# Actually, getoutput should work on any platform with an os.popen, but
15+
# I'll take the comment as given, and skip this suite.
16+
17+
if os.name != 'posix':
18+
raise TestSkipped('Not posix; skipping test_commands')
19+
20+
21+
class CommandTests(unittest.TestCase):
22+
23+
def test_getoutput(self):
24+
self.assertEquals(getoutput('echo xyzzy'), 'xyzzy')
25+
self.assertEquals(getstatusoutput('echo xyzzy'), (0, 'xyzzy'))
26+
27+
# we use mktemp in the next line to get a filename which we
28+
# _know_ won't exist. This is guaranteed to fail.
29+
status, output = getstatusoutput('cat ' + tempfile.mktemp())
30+
self.assertNotEquals(status, 0)
31+
32+
def test_getstatus(self):
33+
# This pattern should match 'ls -ld /bin/ls' on any posix
34+
# system, however perversely configured.
35+
pat = r'''-..x..x..x # It is executable.
36+
\s+\d+ # It has some number of links.
37+
\s+\w+\s+\w+ # It has a user and group, which may
38+
# be named anything.
39+
[^/]* # Skip the date.
40+
/bin/ls # and end with the name of the file.
41+
'''
42+
43+
self.assert_(re.match(pat, getstatus("/bin/ls"), re.VERBOSE))
44+
45+
run_unittest(CommandTests)

0 commit comments

Comments
 (0)