summaryrefslogtreecommitdiff
path: root/source4/torture/raw/samba3misc.c
diff options
context:
space:
mode:
authorVolker Lendecke <vlendec@samba.org>2007-08-20 05:24:19 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 15:02:17 -0500
commit7e43f973c4e3c76369e690707055f233d15fa37d (patch)
tree4d9e8278d121078883da5cd82156f70fabf4a8de /source4/torture/raw/samba3misc.c
parent7c9312a885c203328833bb6cbd8cf31454592427 (diff)
downloadsamba-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.c67
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;
+}