[PATCH] D44771: [lit] Test /dev/null support on Windows.

Mircea Trofin via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Mar 21 23:11:03 PDT 2018


mtrofin created this revision.
Herald added subscribers: llvm-commits, delcypher.

Repository:
  rL LLVM

https://reviews.llvm.org/D44771

Files:
  utils/lit/lit/TestRunner.py
  utils/lit/tests/Inputs/testrunner-custom-parsers/test.txt
  utils/lit/tests/unit/TestRunner.py


Index: utils/lit/tests/unit/TestRunner.py
===================================================================
--- utils/lit/tests/unit/TestRunner.py
+++ utils/lit/tests/unit/TestRunner.py
@@ -98,9 +98,15 @@
         self.parse_test(parsers)
         cmd_parser = self.get_parser(parsers, 'MY_RUN:')
         value = cmd_parser.getValue()
-        self.assertEqual(len(value), 2)  # there are only two run lines
+        self.assertEqual(len(value), 4)  # there are four run lines
         self.assertEqual(value[0].strip(), 'baz')
         self.assertEqual(value[1].strip(), 'foo  bar')
+        if platform.system() != 'Windows':
+          self.assertEqual(value[2].strip(), 'command -o /dev/null')
+          self.assertEqual(value[3].strip(), 'command -output=/dev/null')
+        else:
+          self.assertFalse('/dev/null' in value[2].strip())
+          self.assertFalse('/dev/null' in value[3].strip())
 
     def test_custom(self):
         parsers = self.make_parsers()
@@ -112,7 +118,7 @@
     def test_bad_keywords(self):
         def custom_parse(line_number, line, output):
             return output
-        
+
         try:
             IntegratedTestKeywordParser("TAG_NO_SUFFIX", ParserKind.TAG),
             self.fail("TAG_NO_SUFFIX failed to raise an exception")
Index: utils/lit/tests/Inputs/testrunner-custom-parsers/test.txt
===================================================================
--- utils/lit/tests/Inputs/testrunner-custom-parsers/test.txt
+++ utils/lit/tests/Inputs/testrunner-custom-parsers/test.txt
@@ -6,6 +6,8 @@
 // MY_LIST: three, four
 // MY_RUN: foo \
 // MY_RUN: bar
+// MY_RUN: command -o /dev/null
+// MY_RUN: command -output=/dev/null
 //
 // MY_CUSTOM: a b c
 //
Index: utils/lit/lit/TestRunner.py
===================================================================
--- utils/lit/lit/TestRunner.py
+++ utils/lit/lit/TestRunner.py
@@ -36,6 +36,7 @@
 
 # Use temporary files to replace /dev/null on Windows.
 kAvoidDevNull = kIsWindows
+kDevNull = "/dev/null"
 
 class ShellEnvironment(object):
 
@@ -626,7 +627,7 @@
            raise InternalShellError(cmd, "Unsupported: glob in "
                                     "redirect expanded to multiple files")
         name = name[0]
-        if kAvoidDevNull and name == '/dev/null':
+        if kAvoidDevNull and name == kDevNull:
             fd = tempfile.TemporaryFile(mode=mode)
         elif kIsWindows and name == '/dev/tty':
             # Simulate /dev/tty on Windows.
@@ -793,11 +794,11 @@
         # Replace uses of /dev/null with temporary files.
         if kAvoidDevNull:
             for i,arg in enumerate(args):
-                if arg == "/dev/null":
+                if kDevNull in arg:
                     f = tempfile.NamedTemporaryFile(delete=False)
                     f.close()
                     named_temp_files.append(f.name)
-                    args[i] = f.name
+                    args[i] = arg.replace(kDevNull, f.name)
 
         # Expand all glob expressions
         args = expand_glob_expressions(args, cmd_shenv.cwd)


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D44771.139417.patch
Type: text/x-patch
Size: 3062 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180322/7da5a11f/attachment.bin>


More information about the llvm-commits mailing list