mirror of
https://github.com/MariaDB/server.git
synced 2025-01-18 04:53:01 +01:00
Add "chmod" command to mysqltest
This commit is contained in:
parent
b23cb23349
commit
a743e17d8c
3 changed files with 90 additions and 1 deletions
|
@ -32,7 +32,7 @@
|
|||
Holyfoot
|
||||
*/
|
||||
|
||||
#define MTEST_VERSION "3.0"
|
||||
#define MTEST_VERSION "3.1"
|
||||
|
||||
#include <my_global.h>
|
||||
#include <mysql_embed.h>
|
||||
|
@ -271,6 +271,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_UNKNOWN, /* Unknown command. */
|
||||
Q_COMMENT, /* Comments, ignored. */
|
||||
|
@ -353,6 +354,7 @@ const char *command_names[]=
|
|||
"die",
|
||||
/* Don't execute any more commands, compare result */
|
||||
"exit",
|
||||
"chmod",
|
||||
0
|
||||
};
|
||||
|
||||
|
@ -1808,6 +1810,46 @@ void do_copy_file(struct st_command *command)
|
|||
}
|
||||
|
||||
|
||||
/*
|
||||
SYNOPSIS
|
||||
do_chmod_file
|
||||
command command handle
|
||||
|
||||
DESCRIPTION
|
||||
chmod <octal> <file>
|
||||
Change file permission of <file>
|
||||
|
||||
*/
|
||||
|
||||
void do_chmod_file(struct st_command *command)
|
||||
{
|
||||
ulong mode= 0;
|
||||
static DYNAMIC_STRING ds_mode;
|
||||
static DYNAMIC_STRING ds_file;
|
||||
const struct command_arg chmod_file_args[] = {
|
||||
"mode", ARG_STRING, TRUE, &ds_mode, "Mode of file",
|
||||
"file", ARG_STRING, TRUE, &ds_file, "Filename of file to modify"
|
||||
};
|
||||
DBUG_ENTER("do_chmod_file");
|
||||
|
||||
check_command_args(command, command->first_argument,
|
||||
chmod_file_args,
|
||||
sizeof(chmod_file_args)/sizeof(struct command_arg),
|
||||
' ');
|
||||
|
||||
/* Parse what mode to set */
|
||||
if (ds_mode.length != 4 ||
|
||||
str2int(ds_mode.str, 8, 0, INT_MAX, &mode) == NullS)
|
||||
die("You must write a 4 digit octal number for mode");
|
||||
|
||||
DBUG_PRINT("info", ("chmod %o %s", (uint)mode, ds_file.str));
|
||||
handle_command_error(command, chmod(ds_file.str, mode));
|
||||
dynstr_free(&ds_mode);
|
||||
dynstr_free(&ds_file);
|
||||
DBUG_VOID_RETURN;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
SYNOPSIS
|
||||
do_file_exists
|
||||
|
@ -5693,6 +5735,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_COPY_FILE: do_copy_file(command); break;
|
||||
case Q_CHMOD_FILE: do_chmod_file(command); break;
|
||||
case Q_PERL: do_perl(command); break;
|
||||
case Q_DELIMITER:
|
||||
do_delimiter(command);
|
||||
|
|
|
@ -512,6 +512,12 @@ mysqltest: At line 1: End of line junk detected: "write_file filename ";
|
|||
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'
|
||||
mysqltest: At line 1: Missing required argument 'mode' to command 'chmod'
|
||||
mysqltest: At line 1: You must write a 4 digit octal number for mode
|
||||
mysqltest: At line 1: You must write a 4 digit octal number for mode
|
||||
mysqltest: At line 1: Missing required argument 'file' to command 'chmod'
|
||||
mysqltest: At line 1: You must write a 4 digit octal number for mode
|
||||
mysqltest: At line 1: You must write a 4 digit octal number for mode
|
||||
hello
|
||||
hello
|
||||
hello
|
||||
|
|
|
@ -1521,6 +1521,46 @@ remove_file $MYSQLTEST_VARDIR/tmp/file2.tmp;
|
|||
--error 1
|
||||
--exec echo "copy_file from_file;" | $MYSQL_TEST 2>&1
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# test for chmod
|
||||
# ----------------------------------------------------------------------------
|
||||
--write_file $MYSQLTEST_VARDIR/tmp/file1.tmp
|
||||
file1
|
||||
EOF
|
||||
|
||||
chmod 0000 $MYSQLTEST_VARDIR/tmp/file1.tmp;
|
||||
# The below write fails, but --error is not implemented
|
||||
# for write_file
|
||||
#--write_file $MYSQLTEST_VARDIR/tmp/file1.tmp
|
||||
#test should fail
|
||||
#EOF
|
||||
|
||||
chmod 0777 $MYSQLTEST_VARDIR/tmp/file1.tmp;
|
||||
--write_file $MYSQLTEST_VARDIR/tmp/file1.tmp
|
||||
test2
|
||||
EOF
|
||||
|
||||
remove_file $MYSQLTEST_VARDIR/tmp/file1.tmp;
|
||||
|
||||
--error 1
|
||||
--exec echo "chmod ;" | $MYSQL_TEST 2>&1
|
||||
|
||||
--error 1
|
||||
--exec echo "chmod 0 from_file;" | $MYSQL_TEST 2>&1
|
||||
|
||||
--error 1
|
||||
--exec echo "chmod 08 from_file;" | $MYSQL_TEST 2>&1
|
||||
|
||||
--error 1
|
||||
--exec echo "chmod from_file;" | $MYSQL_TEST 2>&1
|
||||
|
||||
--error 1
|
||||
--exec echo "chmod ABZD from_file;" | $MYSQL_TEST 2>&1
|
||||
|
||||
--error 1
|
||||
--exec echo "chmod 06789 from_file;" | $MYSQL_TEST 2>&1
|
||||
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# test for perl
|
||||
# ----------------------------------------------------------------------------
|
||||
|
|
Loading…
Reference in a new issue