summaryrefslogtreecommitdiff
path: root/chromium/buildtools/third_party/libc++/trunk/utils/not/not.py
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/buildtools/third_party/libc++/trunk/utils/not/not.py')
-rw-r--r--chromium/buildtools/third_party/libc++/trunk/utils/not/not.py35
1 files changed, 35 insertions, 0 deletions
diff --git a/chromium/buildtools/third_party/libc++/trunk/utils/not/not.py b/chromium/buildtools/third_party/libc++/trunk/utils/not/not.py
new file mode 100644
index 00000000000..96e4ea7eee1
--- /dev/null
+++ b/chromium/buildtools/third_party/libc++/trunk/utils/not/not.py
@@ -0,0 +1,35 @@
+"""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())