r20474: Skip the delete-on-close test on a non-empty directory in raw-unlink for
authorVolker Lendecke <vlendec@samba.org>
Tue, 2 Jan 2007 13:48:42 +0000 (13:48 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 19:35:56 +0000 (14:35 -0500)
Samba3. This is a known deficiency also taken care of in the base-delete
test.

Volker
(This used to be commit 6b91bb93fad84e054c19f8c9bc4145234f171a3c)

source4/torture/raw/unlink.c

index d73b7abacfe525d97de666c9a60e9a029580fc50..c4f08beb7f04ccfeb3552b0641c36feae618484f 100644 (file)
@@ -252,34 +252,41 @@ static BOOL test_delete_on_close(struct smbcli_state *cli, TALLOC_CTX *mem_ctx)
        CHECK_STATUS(status, NT_STATUS_OBJECT_NAME_NOT_FOUND);
 
 
-       printf("Testing with non-empty directory delete_on_close\n");
-       status = create_directory_handle(cli->tree, dname, &fnum);
-       CHECK_STATUS(status, NT_STATUS_OK);
-       
-       fnum2 = create_complex_file(cli, mem_ctx, inside);
+       if (!lp_parm_bool(-1, "torture", "samba3", False)) {
 
-       sfinfo.disposition_info.in.file.fnum = fnum;
-       sfinfo.disposition_info.in.delete_on_close = 1;
-       status = smb_raw_setfileinfo(cli->tree, &sfinfo);
-       CHECK_STATUS(status, NT_STATUS_DIRECTORY_NOT_EMPTY);
+               /*
+                * Known deficiency, also skipped in base-delete.
+                */
 
-       sfinfo.disposition_info.in.file.fnum = fnum2;
-       status = smb_raw_setfileinfo(cli->tree, &sfinfo);
-       CHECK_STATUS(status, NT_STATUS_OK);
+               printf("Testing with non-empty directory delete_on_close\n");
+               status = create_directory_handle(cli->tree, dname, &fnum);
+               CHECK_STATUS(status, NT_STATUS_OK);
 
-       sfinfo.disposition_info.in.file.fnum = fnum;
-       status = smb_raw_setfileinfo(cli->tree, &sfinfo);
-       CHECK_STATUS(status, NT_STATUS_DIRECTORY_NOT_EMPTY);
+               fnum2 = create_complex_file(cli, mem_ctx, inside);
 
-       smbcli_close(cli->tree, fnum2);
+               sfinfo.disposition_info.in.file.fnum = fnum;
+               sfinfo.disposition_info.in.delete_on_close = 1;
+               status = smb_raw_setfileinfo(cli->tree, &sfinfo);
+               CHECK_STATUS(status, NT_STATUS_DIRECTORY_NOT_EMPTY);
 
-       status = smb_raw_setfileinfo(cli->tree, &sfinfo);
-       CHECK_STATUS(status, NT_STATUS_OK);
+               sfinfo.disposition_info.in.file.fnum = fnum2;
+               status = smb_raw_setfileinfo(cli->tree, &sfinfo);
+               CHECK_STATUS(status, NT_STATUS_OK);
 
-       smbcli_close(cli->tree, fnum);
+               sfinfo.disposition_info.in.file.fnum = fnum;
+               status = smb_raw_setfileinfo(cli->tree, &sfinfo);
+               CHECK_STATUS(status, NT_STATUS_DIRECTORY_NOT_EMPTY);
 
-       status = smb_raw_rmdir(cli->tree, &dio);
-       CHECK_STATUS(status, NT_STATUS_OBJECT_NAME_NOT_FOUND);
+               smbcli_close(cli->tree, fnum2);
+
+               status = smb_raw_setfileinfo(cli->tree, &sfinfo);
+               CHECK_STATUS(status, NT_STATUS_OK);
+
+               smbcli_close(cli->tree, fnum);
+
+               status = smb_raw_rmdir(cli->tree, &dio);
+               CHECK_STATUS(status, NT_STATUS_OBJECT_NAME_NOT_FOUND);
+       }
 
        printf("Testing open dir with delete_on_close\n");
        status = create_directory_handle(cli->tree, dname, &fnum);