Gary Oberbrunner avatar Gary Oberbrunner committed 55de5bb

Apply patch from issue #2710. Test harness fixes only, no user impact (no doc/changelog). Predecessor to fixing #2708.

Comments (0)

Files changed (2)

QMTest/TestCommon.py

         if any of the files does not exist.
         """
         files = [is_List(x) and os.path.join(*x) or x for x in files]
-        missing = [x for x in files if not os.path.exists(x)]
+        missing = [x for x in files if not os.path.exists(x) and not os.path.islink(x) ]
         if missing:
             print "Missing files: `%s'" % "', `".join(missing)
             self.fail_test(missing)
         Exits FAILED if any of the files exists.
         """
         files = [is_List(x) and os.path.join(*x) or x for x in files]
-        existing = list(filter(os.path.exists, files))
+        existing = [x for x in files if os.path.exists(x) or os.path.islink(x)]
         if existing:
             print "Unexpected files exist: `%s'" % "', `".join(existing)
             self.fail_test(existing)

QMTest/TestCommonTests.py

         stderr = run_env.stderr()
         assert stderr == "PASSED\n", stderr
 
+    def test_broken_link(self) :
+        """Test must_exist():  exists but it is a broken link"""
+        run_env = self.run_env
+
+        script = lstrip("""\
+        from TestCommon import TestCommon
+        tc = TestCommon(workdir='')
+        tc.symlink('badtarget', "brokenlink")
+        tc.must_exist('brokenlink')
+        tc.pass_test()
+        """)
+        run_env.run(program=sys.executable, stdin=script)
+        stdout = run_env.stdout()
+        assert stdout == "", stdout
+        stderr = run_env.stderr()
+        assert stderr == "PASSED\n", stderr
+
 
 
 class must_match_TestCase(TestCommonTestCase):
         stderr = run_env.stderr()
         assert stderr == "PASSED\n", stderr
 
+    def test_existing_broken_link(self):
+        """Test must_not_exist():  exists but it is a broken link"""
+        run_env = self.run_env
+
+        script = lstrip("""\
+        from TestCommon import TestCommon
+        tc = TestCommon(workdir='')
+        tc.symlink('badtarget', 'brokenlink')
+        tc.must_not_exist('brokenlink')
+        tc.pass_test()
+        """)
+        run_env.run(program=sys.executable, stdin=script)
+        stdout = run_env.stdout()
+        assert stdout == "Unexpected files exist: `brokenlink'\n", stdout
+        stderr = run_env.stderr()
+        assert stderr.find("FAILED") != -1, stderr
 
 
 class run_TestCase(TestCommonTestCase):
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.