diff options
author | Volker Lendecke <vlendec@samba.org> | 2007-08-20 05:24:19 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 15:02:17 -0500 |
commit | 7e43f973c4e3c76369e690707055f233d15fa37d (patch) | |
tree | 4d9e8278d121078883da5cd82156f70fabf4a8de /source4/torture/raw/samba3misc.c | |
parent | 7c9312a885c203328833bb6cbd8cf31454592427 (diff) | |
download | samba-7e43f973c4e3c76369e690707055f233d15fa37d.tar.gz samba-7e43f973c4e3c76369e690707055f233d15fa37d.tar.bz2 samba-7e43f973c4e3c76369e690707055f233d15fa37d.zip |
r24569: Add two tests
A subtest for rename to check if case-changing renames work
A test that exposes the case insensitivity unix_convert bug
(This used to be commit 786706322a920fd54585bec72d860ed112398f12)
Diffstat (limited to 'source4/torture/raw/samba3misc.c')
-rw-r--r-- | source4/torture/raw/samba3misc.c | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/source4/torture/raw/samba3misc.c b/source4/torture/raw/samba3misc.c index e36be6436a..c019c4e2ee 100644 --- a/source4/torture/raw/samba3misc.c +++ b/source4/torture/raw/samba3misc.c @@ -598,3 +598,70 @@ BOOL torture_samba3_badpath(struct torture_context *torture) return ret; } + +static void count_fn(struct clilist_file_info *info, const char *name, + void *private_data) +{ + int *counter = (int *)private_data; + *counter += 1; +} + +BOOL torture_samba3_caseinsensitive(struct torture_context *torture) +{ + struct smbcli_state *cli; + TALLOC_CTX *mem_ctx; + NTSTATUS status; + const char *dirname = "insensitive"; + const char *ucase_dirname = "InSeNsItIvE"; + const char *fname = "foo"; + char *fpath; + int fnum; + int counter = 0; + BOOL ret = True; + + if (!(mem_ctx = talloc_init("torture_samba3_caseinsensitive"))) { + d_printf("talloc_init failed\n"); + return False; + } + + if (!torture_open_connection(&cli, 0)) { + goto done; + } + + smbcli_deltree(cli->tree, dirname); + + status = smbcli_mkdir(cli->tree, dirname); + if (!NT_STATUS_IS_OK(status)) { + d_printf("smbcli_mkdir failed: %s\n", nt_errstr(status)); + goto done; + } + + if (!(fpath = talloc_asprintf(mem_ctx, "%s\\%s", dirname, fname))) { + goto done; + } + fnum = smbcli_open(cli->tree, fpath, O_RDWR | O_CREAT, DENY_NONE); + if (fnum == -1) { + d_printf("Could not create file %s: %s\n", fpath, + smbcli_errstr(cli->tree)); + goto done; + } + smbcli_close(cli->tree, fnum); + + smbcli_list(cli->tree, talloc_asprintf( + mem_ctx, "%s\\*", ucase_dirname), + FILE_ATTRIBUTE_DIRECTORY|FILE_ATTRIBUTE_HIDDEN + |FILE_ATTRIBUTE_SYSTEM, + count_fn, (void *)&counter); + + if (counter == 3) { + ret = True; + } + else { + d_fprintf(stderr, "expected 3 entries, got %d\n", counter); + ret = False; + } + + done: + talloc_free(mem_ctx); + return ret; +} |