123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- #===----------------------------------------------------------------------===##
- #
- # Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
- # See https://llvm.org/LICENSE.txt for license information.
- # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
- #
- #===----------------------------------------------------------------------===##
- """not.py is a utility for inverting the return code of commands.
- It acts similar to llvm/utils/not.
- ex: python /path/to/not.py ' echo hello
- echo $? // (prints 1)
- """
- import subprocess
- import sys
- def which_cannot_find_program(prog):
- # Allow for import errors on distutils.spawn
- try:
- import distutils.spawn
- prog = distutils.spawn.find_executable(prog[0])
- if prog is None:
- sys.stderr.write('Failed to find program %s' % prog[0])
- return True
- return False
- except:
- return False
- def main():
- argv = list(sys.argv)
- del argv[0]
- if len(argv) > 0 and argv[0] == '--crash':
- del argv[0]
- expectCrash = True
- else:
- expectCrash = False
- if len(argv) == 0:
- return 1
- if which_cannot_find_program(argv[0]):
- return 1
- rc = subprocess.call(argv)
- if rc < 0:
- return 0 if expectCrash else 1
- if expectCrash:
- return 1
- return rc == 0
- if __name__ == '__main__':
- exit(main())
|