18480: Improves test by confirming that symlinked dirs aren't affected.
authorLucas Di Pentima <lucas.dipentima@curii.com>
Fri, 26 Nov 2021 15:56:32 +0000 (12:56 -0300)
committerLucas Di Pentima <lucas.dipentima@curii.com>
Fri, 26 Nov 2021 15:56:32 +0000 (12:56 -0300)
Also, terminate the producer process before doing any assertion to avoid
test's lockups.

Arvados-DCO-1.1-Signed-off-by: Lucas Di Pentima <lucas.dipentima@curii.com>

sdk/python/tests/test_arv_put.py

index 3a24e80861c953dc9b79663850b01cfd9325208d..0e531dee314529534aa4b5ae14815756105f0e66 100644 (file)
@@ -293,22 +293,25 @@ class ArvPutUploadJobTest(run_test_server.TestCaseWithServers,
         shutil.rmtree(self.small_files_dir)
         shutil.rmtree(self.tempdir_with_symlink)
 
-    def test_non_regular_files_are_ignored(self):
+    def test_non_regular_files_are_ignored_except_symlinks_to_dirs(self):
         def pfunc(x):
             with open(x, 'w') as f:
                 f.write('test')
         fifo_filename = 'fifo-file'
-        fifo_path = os.path.join(self.tempdir, fifo_filename)
+        fifo_path = os.path.join(self.tempdir_with_symlink, fifo_filename)
+        self.assertTrue(os.path.islink(os.path.join(self.tempdir_with_symlink, 'linkeddir')))
         os.mkfifo(fifo_path)
         producer = multiprocessing.Process(target=pfunc, args=(fifo_path,))
         producer.start()
-        cwriter = arv_put.ArvPutUploadJob([self.tempdir])
+        cwriter = arv_put.ArvPutUploadJob([self.tempdir_with_symlink])
         cwriter.start(save_collection=False)
-        self.assertNotIn(fifo_filename, cwriter.manifest_text())
         if producer.exitcode is None:
-            # If the producer is still running, kill it.
+            # If the producer is still running, kill it. This should always be
+            # before any assertion that may fail.
             producer.terminate()
             producer.join(1)
+        self.assertIn('linkeddir', cwriter.manifest_text())
+        self.assertNotIn(fifo_filename, cwriter.manifest_text())
 
     def test_symlinks_are_followed_by_default(self):
         self.assertTrue(os.path.islink(os.path.join(self.tempdir_with_symlink, 'linkeddir')))