summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--client/mysqltest.c48
-rw-r--r--mysql-test/r/mysqltest.result4
-rw-r--r--mysql-test/t/mysqltest.test14
3 files changed, 65 insertions, 1 deletions
diff --git a/client/mysqltest.c b/client/mysqltest.c
index 357e56eb9f9..9e036bd9433 100644
--- a/client/mysqltest.c
+++ b/client/mysqltest.c
@@ -273,7 +273,7 @@ enum enum_commands {
Q_DISABLE_PARSING, Q_ENABLE_PARSING,
Q_REPLACE_REGEX, Q_REMOVE_FILE, Q_FILE_EXIST,
Q_WRITE_FILE, Q_COPY_FILE, Q_PERL, Q_DIE, Q_EXIT,
- Q_CHMOD_FILE, Q_APPEND_FILE,
+ Q_CHMOD_FILE, Q_APPEND_FILE, Q_CAT_FILE,
Q_UNKNOWN, /* Unknown command. */
Q_COMMENT, /* Comments, ignored. */
@@ -359,6 +359,7 @@ const char *command_names[]=
"exit",
"chmod",
"append_file",
+ "cat_file",
0
};
@@ -2182,6 +2183,50 @@ void do_append_file(struct st_command *command)
/*
SYNOPSIS
+ do_cat_file
+ command called command
+
+ DESCRIPTION
+ cat_file <file_name>;
+
+ Print the given file to result log
+
+*/
+
+void do_cat_file(struct st_command *command)
+{
+ int fd;
+ uint len;
+ byte buff[512];
+ static DYNAMIC_STRING ds_filename;
+ const struct command_arg cat_file_args[] = {
+ "filename", ARG_STRING, TRUE, &ds_filename, "File to read from"
+ };
+ DBUG_ENTER("do_cat_file");
+
+ check_command_args(command,
+ command->first_argument,
+ cat_file_args,
+ sizeof(cat_file_args)/sizeof(struct command_arg),
+ ' ');
+
+ DBUG_PRINT("info", ("Reading from, file: %s", ds_filename.str));
+
+ if ((fd= my_open(ds_filename.str, O_RDONLY, MYF(0))) < 0)
+ die("Failed to open file %s", ds_filename.str);
+ while((len= my_read(fd, &buff,
+ sizeof(buff), MYF(0))) > 0)
+ {
+ dynstr_append_mem(&ds_res, buff, len);
+ }
+ my_close(fd, MYF(0));
+ dynstr_free(&ds_filename);
+ DBUG_VOID_RETURN;
+}
+
+
+/*
+ SYNOPSIS
do_perl
command command handle
@@ -5957,6 +6002,7 @@ int main(int argc, char **argv)
case Q_FILE_EXIST: do_file_exist(command); break;
case Q_WRITE_FILE: do_write_file(command); break;
case Q_APPEND_FILE: do_append_file(command); break;
+ case Q_CAT_FILE: do_cat_file(command); break;
case Q_COPY_FILE: do_copy_file(command); break;
case Q_CHMOD_FILE: do_chmod_file(command); break;
case Q_PERL: do_perl(command); break;
diff --git a/mysql-test/r/mysqltest.result b/mysql-test/r/mysqltest.result
index 3ecafcab8a4..e60ed391c0a 100644
--- a/mysql-test/r/mysqltest.result
+++ b/mysql-test/r/mysqltest.result
@@ -516,6 +516,10 @@ drop table t1;
mysqltest: At line 1: Missing required argument 'filename' to command 'remove_file'
mysqltest: At line 1: Missing required argument 'filename' to command 'write_file'
mysqltest: At line 1: End of file encountered before 'EOF' delimiter was found
+Some data
+for cat_file command
+of mysqltest
+mysqltest: At line 1: Failed to open file non_existing_file
mysqltest: At line 1: Missing required argument 'filename' to command 'file_exists'
mysqltest: At line 1: Missing required argument 'from_file' to command 'copy_file'
mysqltest: At line 1: Missing required argument 'to_file' to command 'copy_file'
diff --git a/mysql-test/t/mysqltest.test b/mysql-test/t/mysqltest.test
index 2a5fc82b3e7..a50d8b773ec 100644
--- a/mysql-test/t/mysqltest.test
+++ b/mysql-test/t/mysqltest.test
@@ -1550,6 +1550,20 @@ Appended text on nonexisting file
EOF
# ----------------------------------------------------------------------------
+# test for cat_file
+# ----------------------------------------------------------------------------
+
+--write_file $MYSQLTEST_VARDIR/tmp/test_file1.tmp
+Some data
+for cat_file command
+of mysqltest
+EOF
+cat_file $MYSQLTEST_VARDIR/tmp/test_file1.tmp;
+
+--error 1
+--exec echo "cat_file non_existing_file;" | $MYSQL_TEST 2>&1
+
+# ----------------------------------------------------------------------------
# test for file_exist
# ----------------------------------------------------------------------------
--error 1