Turn tst_mknod() into tst_create()
authorNikolaus Rath <Nikolaus@rath.org>
Thu, 6 Apr 2017 05:50:25 +0000 (22:50 -0700)
committerNikolaus Rath <Nikolaus@rath.org>
Fri, 7 Apr 2017 23:40:15 +0000 (16:40 -0700)
Ensure that we are really creating a new file.
Don't attempt to write, we do that in tst_open_write().

test/test_examples.py

index 9bea3e9612551212ac11d174dc7892447fa6ab7e..686d8ba9263ec5e9f0d9ec087ee05da714cd1c93 100755 (executable)
@@ -84,8 +84,8 @@ def test_passthrough(tmpdir, name, debug):
         tst_mkdir(work_dir)
         tst_rmdir(src_dir, work_dir)
         tst_open_write(src_dir, work_dir)
+        tst_create(work_dir)
         tst_symlink(work_dir)
-        tst_mknod(work_dir)
         tst_unlink(src_dir, work_dir)
         if os.getuid() == 0:
             tst_chown(work_dir)
@@ -337,15 +337,22 @@ def tst_symlink(mnt_dir):
     assert linkname in os.listdir(mnt_dir)
     checked_unlink(linkname, mnt_dir)
 
-def tst_mknod(mnt_dir):
-    filename = pjoin(mnt_dir, name_generator())
-    shutil.copyfile(TEST_FILE, filename)
-    fstat = os.lstat(filename)
+def tst_create(mnt_dir):
+    name = name_generator()
+    fullname = pjoin(mnt_dir, name)
+    with pytest.raises(OSError) as exc_info:
+        os.stat(fullname)
+    assert exc_info.value.errno == errno.ENOENT
+    assert name not in os.listdir(mnt_dir)
+
+    fd = os.open(fullname, os.O_CREAT | os.O_RDWR)
+    os.close(fd)
+
+    assert name in os.listdir(mnt_dir)
+    fstat = os.lstat(fullname)
     assert stat.S_ISREG(fstat.st_mode)
     assert fstat.st_nlink == 1
-    assert os.path.basename(filename) in os.listdir(mnt_dir)
-    assert filecmp.cmp(TEST_FILE, filename, False)
-    checked_unlink(filename, mnt_dir)
+    assert fstat.st_size == 0
 
 def tst_chown(mnt_dir):
     filename = pjoin(mnt_dir, name_generator())