| #===----------------------------------------------------------------------===## |
| # |
| # The LLVM Compiler Infrastructure |
| # |
| # This file is dual licensed under the MIT and the University of Illinois Open |
| # Source Licenses. See LICENSE.TXT for details. |
| # |
| #===----------------------------------------------------------------------===## |
| |
| """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 distutils.spawn |
| import subprocess |
| import sys |
| |
| |
| 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 |
| prog = distutils.spawn.find_executable(argv[0]) |
| if prog is None: |
| sys.stderr.write('Failed to find program %s' % 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()) |