tests/ls-l.py
changeset 40495 3a333a582d7b
child 43076 2372284d9457
equal deleted inserted replaced
40494:9aeb9e2d28a7 40495:3a333a582d7b
       
     1 #!/usr/bin/env python
       
     2 
       
     3 # like ls -l, but do not print date, user, or non-common mode bit, to avoid
       
     4 # using globs in tests.
       
     5 from __future__ import absolute_import, print_function
       
     6 
       
     7 import os
       
     8 import stat
       
     9 import sys
       
    10 
       
    11 def modestr(st):
       
    12     mode = st.st_mode
       
    13     result = ''
       
    14     if mode & stat.S_IFDIR:
       
    15         result += 'd'
       
    16     else:
       
    17         result += '-'
       
    18     for owner in ['USR', 'GRP', 'OTH']:
       
    19         for action in ['R', 'W', 'X']:
       
    20             if mode & getattr(stat, 'S_I%s%s' % (action, owner)):
       
    21                 result += action.lower()
       
    22             else:
       
    23                 result += '-'
       
    24     return result
       
    25 
       
    26 def sizestr(st):
       
    27     if st.st_mode & stat.S_IFREG:
       
    28         return '%7d' % st.st_size
       
    29     else:
       
    30         # do not show size for non regular files
       
    31         return ' ' * 7
       
    32 
       
    33 os.chdir((sys.argv[1:] + ['.'])[0])
       
    34 
       
    35 for name in sorted(os.listdir('.')):
       
    36     st = os.stat(name)
       
    37     print('%s %s %s' % (modestr(st), sizestr(st), name))