view tests/ls-l.py @ 43260:ec4dfcc39638

phabricator: remove tests and all recordings The next commit is going to change the format of conduit API requests so none of the VCR recordings will match and all the tests will fail. Differential Revision: https://phab.mercurial-scm.org/D7051
author Ian Moody <moz-ian@perix.co.uk>
date Thu, 10 Oct 2019 18:44:58 +0100
parents 2372284d9457
children c102b704edb5
line wrap: on
line source

#!/usr/bin/env python

# like ls -l, but do not print date, user, or non-common mode bit, to avoid
# using globs in tests.
from __future__ import absolute_import, print_function

import os
import stat
import sys


def modestr(st):
    mode = st.st_mode
    result = ''
    if mode & stat.S_IFDIR:
        result += 'd'
    else:
        result += '-'
    for owner in ['USR', 'GRP', 'OTH']:
        for action in ['R', 'W', 'X']:
            if mode & getattr(stat, 'S_I%s%s' % (action, owner)):
                result += action.lower()
            else:
                result += '-'
    return result


def sizestr(st):
    if st.st_mode & stat.S_IFREG:
        return '%7d' % st.st_size
    else:
        # do not show size for non regular files
        return ' ' * 7


os.chdir((sys.argv[1:] + ['.'])[0])

for name in sorted(os.listdir('.')):
    st = os.stat(name)
    print('%s %s %s' % (modestr(st), sizestr(st), name))