1"""not.py is a utility for inverting the return code of commands. 2It acts similar to llvm/utils/not. 3ex: python /path/to/not.py ' echo hello 4 echo $? // (prints 1) 5""" 6 7import distutils.spawn 8import subprocess 9import sys 10 11 12def main(): 13 argv = list(sys.argv) 14 del argv[0] 15 if len(argv) > 0 and argv[0] == '--crash': 16 del argv[0] 17 expectCrash = True 18 else: 19 expectCrash = False 20 if len(argv) == 0: 21 return 1 22 prog = distutils.spawn.find_executable(argv[0]) 23 if prog is None: 24 sys.stderr.write('Failed to find program %s' % argv[0]) 25 return 1 26 rc = subprocess.call(argv) 27 if rc < 0: 28 return 0 if expectCrash else 1 29 if expectCrash: 30 return 1 31 return rc == 0 32 33 34if __name__ == '__main__': 35 exit(main()) 36