test_yaffs_rename_dir.o test_yaffs_rename_dir_ENOENT.o test_yaffs_rename_dir_ENOENT2.o test_yaffs_rename_dir_to_file.o \
test_yaffs_rename_file_to_dir.o test_yaffs_rename_EEXISTS.o test_yaffs_rename_ELOOP_dir.o test_yaffs_rename_EROFS.o \
test_yaffs_rename_ENAMETOOLONG.o test_yaffs_rename_ENAMETOOLONG2.o test_yaffs_rename_NULL.o test_yaffs_rename_NULL2.o \
- test_yaffs_lstat.o test_yaffs_lstat_ENOENT.o test_yaffs_lstat_ENOTDIR.o test_yaffs_lstat_ENAMETOOLONG.o \
+ test_yaffs_lstat.o test_yaffs_lstat_ENOENT.o test_yaffs_lstat_ENOTDIR.o test_yaffs_lstat_ENAMETOOLONG.o test_yaffs_rename_to_null_file.o \
+ test_yaffs_rename_file_over_file.o test_yaffs_rename_dir_over_dir.o test_yaffs_rename_full_dir_over_dir.o test_yaffs_rename_ENOTEMPTY.o \
test_yaffs_lstat_NULL.o \
test_yaffs_flush.o test_yaffs_flush_EBADF.o test_yaffs_flush_EROFS.o \
test_yaffs_dup.o test_yaffs_dup_EBADF.o
int EROFS_setup(void)
{
int output= -1;
+
output=yaffs_remount(YAFFS_MOUNT_POINT,1,1);
if (output<0){
print_message("failed to remount yaffs\n",2);
void print_message(char *message,char print_level)
{
if (print_level <= PRINT_LEVEL){
- printf(message);
+ printf("%s",message);
}
}
-
+/*same as forcing the rmdir of a directory*/
+int delete_dir(char *dir_name)
+{
+ char message[200];
+ yaffs_DIR *d;
+ struct yaffs_dirent *de;
+ struct yaffs_stat s;
+ char str[100];
+ d = yaffs_opendir(dir_name);
+ //printf("%s\n",dir_name);
+ if(!d)
+ {
+ sprintf(message,"\nfailed to open dir %s \n was trying to delete this",dir_name);
+ print_message(message,1);
+
+
+ get_error();
+ return -1;
+ }
+
+ while((de = yaffs_readdir(d)) != NULL) {
+ //stats the file
+ sprintf(str,"%s/%s",dir_name,de->d_name);
+ yaffs_lstat(str,&s);
+
+ if ((s.st_mode & S_IFMT) == S_IFDIR){
+ //it is a directory. call the function recursivly.
+ delete_dir(str);
+ yaffs_rmdir(str);
+ }else{
+ yaffs_unlink(str);
+ }
+ }
+ yaffs_rmdir(dir_name);
+ yaffs_closedir(d);
+ return 1;
+}
+
+void get_error(void)
+{
+ int error_code=0;
+ char message[30];
+ message[0]='\0';
+
+ error_code=yaffs_get_error();
+ sprintf(message,"yaffs_error code %d\n",error_code);
+ print_message(message,1);
+ sprintf(message,"error is : %s\n",yaffs_error_to_str(error_code));
+ print_message(message,1);
+}
#define YAFFS_MOUNT_POINT "/yaffs2/"
-#define FILE_NAME "foo"
+#define FILE_NAME "test_dir/foo"
#define FILE_SIZE 10
#define FILE_MODE (S_IREAD | S_IWRITE)
#define FILE_SIZE_TRUNCATED 100
#define FILE_TEXT "file foo " /* keep space at end of string */
#define FILE_TEXT_NBYTES 10
+#define TEST_DIR "/yaffs2/test_dir"
+#define DIR_PATH "/yaffs2/test_dir/new_directory"
+#define DIR_PATH2 "/yaffs2/test_dir/new_directory2"
+#define DIR_PATH2_FILE "/yaffs2/test_dir/new_directory2/foo"
+#define SYMLINK_PATH "/yaffs2/test_dir/sym_foo"
-#define DIR_PATH "/yaffs2/new_directory"
+#define HARD_LINK_PATH "/yaffs2/test_dir/hard_link"
-#define SYMLINK_PATH "/yaffs2/sym_foo"
+#define NODE_PATH "/yaffs2/test_dir/node"
-#define HARD_LINK_PATH "/yaffs2/hard_link"
+#define RENAME_PATH "/yaffs2/test_dir/foo2"
-#define NODE_PATH "/yaffs2/node"
+#define RENAME_DIR_PATH "/yaffs2/test_dir/dir2"
-#define RENAME_PATH "/yaffs2/foo2"
+#define ELOOP_PATH "/yaffs2/test_dir/ELOOP"
+#define ELOOP2_PATH "/yaffs2/test_dir/ELOOP2"
-#define RENAME_DIR_PATH "/yaffs2/dir2"
-
-#define ELOOP_PATH "/yaffs2/ELOOP"
-#define ELOOP2_PATH "/yaffs2/ELOOP2"
-
-#define RMDIR_PATH "/yaffs2/RM_DIR"
+#define RMDIR_PATH "/yaffs2/test_dir/RM_DIR"
/* warning do not define anything as FILE because there seems to be a conflict with stdio.h */
-#define FILE_PATH "/yaffs2/foo"
+#define FILE_PATH "/yaffs2/test_dir/foo"
+#define FILE_PATH2 "/yaffs2/test_dir/foo2"
void join_paths(char *path1,char *path2,char *new_path );
void print_message(char *message,char print_level);
int set_up_ELOOP(void);
int EROFS_setup(void);
int EROFS_clean(void);
+int delete_dir(char *dir_name);
+void get_error(void);
#endif
}
/*this is where the loop should break to*/
quit_quick_tests(0);
+
}
void run_random_test_loop(void)
{
int id=0;
- int x=0;
- int run_list[total_number_of_tests];
+ unsigned int x=0;
+ //int run_list[total_number_of_tests];
for (x=0;x<total_number_of_tests;x++){
id = (rand() % (total_number_of_tests-1));
run_test(id);
void run_test(int x)
{
int output=0;
+ int y= 0;
char message[200];
message[0]='\0';
+ yaffs_mkdir(TEST_DIR,S_IWRITE | S_IREAD);
yaffs_set_error(0); /*reset the last error to 0 */
//printf("foo exists %d\n",test_yaffs_open());
sprintf(message,"\nrunning test: %s \n",test_list[x].name_of_test);
num_of_tests_pass++;
} else {
/*test is assumed to have failed*/
- //printf("test failed\n");
+ printf("test failed\n");
sprintf(message,"test: %s failed\n",test_list[x].name_of_test);
print_message(message,1);
num_of_tests_failed ++;
sprintf(message,"\ttest clean: %s passed\n",test_list[x].name_of_test);
print_message(message,3);
}
+ /* close all open handles */
+ for (y=0; y<100;y++){
+ yaffs_close(y);
+ }
+ delete_dir(TEST_DIR);
}
void quit_quick_tests(int exit_code)
{
- char message[30];
- message[0]='\0';
+ /*char message[30];
+ message[0]='\0';
+ */
if (num_of_tests_pass==total_number_of_tests && num_of_tests_failed==0){
printf("\t OK --all tests passed\n");
}
exit(exit_code);
}
-void get_error(void)
-{
- int error_code=0;
- char message[30];
- message[0]='\0';
-
- error_code=yaffs_get_error();
- sprintf(message,"yaffs_error code %d\n",error_code);
- print_message(message,1);
- sprintf(message,"error is : %s\n",yaffs_error_to_str(error_code));
- print_message(message,1);
-}
void init_quick_tests(int argc, char *argv[])
{
int trace=0;
int new_option;
- int x=0;
+ //int x=0;
do{
new_option=getopt_long(argc,argv,short_options,long_options,NULL);
if (new_option=='h'){
#include "test_yaffs_read.h"
#include "test_yaffs_read_EBADF.h"
-#include "test_yaffs_read_EINVAL.h"
+//#include "test_yaffs_read_EINVAL.h"
#include "test_yaffs_lseek.h"
#include "test_yaffs_lseek_EBADF.h"
#include "test_yaffs_rename_ENAMETOOLONG2.h"
#include "test_yaffs_rename_NULL.h"
#include "test_yaffs_rename_NULL2.h"
+#include "test_yaffs_rename_file_over_file.h"
+#include "test_yaffs_rename_dir_over_dir.h"
+#include "test_yaffs_rename_to_null_file.h"
+#include "test_yaffs_rename_full_dir_over_dir.h"
+#include "test_yaffs_rename_ENOTEMPTY.h"
#include "test_yaffs_lstat.h"
#include "test_yaffs_lstat_ENOENT.h"
{test_yaffs_read,test_yaffs_read_clean,"test_yaffs_read"},
{test_yaffs_read_EBADF,test_yaffs_read_EBADF_clean,"test_yaffs_read_EBADF"},
- {test_yaffs_read_EINVAL,test_yaffs_read_EINVAL_clean,"test_yaffs_read_EINVAL"},
+// {test_yaffs_read_EINVAL,test_yaffs_read_EINVAL_clean,"test_yaffs_read_EINVAL"},
{test_yaffs_stat,test_yaffs_stat_clean,"test_yaffs_stat"},
{test_yaffs_stat_ENOENT,test_yaffs_stat_ENOENT_clean,"test_yaffs_stat_ENOENT"},
{test_yaffs_rename_ENAMETOOLONG2,test_yaffs_rename_ENAMETOOLONG2_clean,"test_yaffs_rename_ENAMETOOLONG2"},
{test_yaffs_rename_NULL,test_yaffs_rename_NULL_clean,"test_yaffs_rename_NULL"},
{test_yaffs_rename_NULL2,test_yaffs_rename_NULL2_clean,"test_yaffs_rename_NULL2"},
+ {test_yaffs_rename_to_null_file,test_yaffs_rename_to_null_file_clean,"test_yaffs_rename_to_null_file"},
+ {test_yaffs_rename_file_over_file,test_yaffs_rename_file_over_file_clean,"test_yaffs_rename_file_over_file"},
+ {test_yaffs_rename_dir_over_dir,test_yaffs_rename_dir_over_dir_clean,"test_yaffs_rename_dir_over_dir"},
+ {test_yaffs_rename_full_dir_over_dir,test_yaffs_rename_full_dir_over_dir_clean,"test_yaffs_rename_full_dir_over_dir"},
+ {test_yaffs_rename_ENOTEMPTY,test_yaffs_rename_ENOTEMPTY_clean,"test_yaffs_rename_ENOTEMPTY"},
{test_yaffs_lstat,test_yaffs_lstat_clean,"test_yaffs_lstat"},
{test_yaffs_lstat_ENOENT,test_yaffs_lstat_ENOENT_clean,"test_yaffs_lstat_ENOENT"},
int test_yaffs_access(void)
{
- return yaffs_access(FILE_PATH,0);
+
+ if (-1==yaffs_close(yaffs_open(FILE_PATH,O_CREAT | O_RDWR, FILE_MODE))){
+ print_message("failed to create file\n",1);
+ return -1;
+ }
+ return yaffs_access(FILE_PATH,0);
}
int test_yaffs_access_clean(void)
{
int output=0;
int error=0;
+ if (yaffs_close(yaffs_open(FILE_PATH,O_CREAT | O_RDWR, FILE_MODE))==-1){
+ print_message("failed to create file before remounting\n",1);
+ return -1;
+ }
output=yaffs_chmod(FILE_PATH,S_IREAD);
if (output<0){
print_message("failed to chmod file\n",2);
{
int output=0;
int error_code=0;
-
- output=yaffs_access("/yaffs2/foo/file",0);
+ if (yaffs_close(yaffs_open(FILE_PATH,O_CREAT | O_RDWR, FILE_MODE))==-1){
+ print_message("failed to create file\n",1);
+ return -1;
+ }
+ output=yaffs_access("/yaffs2/test_dir/foo/file",0);
if (output==-1){
error_code=yaffs_get_error();
if (abs(error_code)==ENOTDIR){
{
int output=0;
int error=0;
+ if (yaffs_close(yaffs_open(FILE_PATH,O_CREAT | O_RDWR, FILE_MODE))==-1){
+ print_message("failed to create file before remounting\n",1);
+ return -1;
+ }
if (EROFS_setup() < 0 ){
return -1;
}
int test_yaffs_chmod(void)
{
- int output=yaffs_chmod(FILE_PATH,S_IREAD|S_IWRITE);
+ int output=0;
+ if (yaffs_close(yaffs_open(FILE_PATH,O_CREAT | O_RDWR, FILE_MODE))==-1){
+ print_message("failed to create file\n",1);
+ return -1;
+ }
+
+ output=yaffs_chmod(FILE_PATH,S_IREAD|S_IWRITE);
if (output>=0){
/* there were no errors */
int test_yaffs_chmod_ENOTDIR(void)
{
int error=0;
- int output=yaffs_chmod("/yaffs2/foo/file",S_IREAD|S_IWRITE);
+ if (yaffs_close(yaffs_open(FILE_PATH,O_CREAT | O_RDWR, FILE_MODE))==-1){
+ print_message("failed to create file\n",1);
+ return -1;
+ }
+ int output=yaffs_chmod("/yaffs2/test_dir/foo/file",S_IREAD|S_IWRITE);
if (output<0){
error=yaffs_get_error();
{
int error=0;
int output;
-
+ if (yaffs_close(yaffs_open(FILE_PATH,O_CREAT | O_RDWR, FILE_MODE))==-1){
+ print_message("failed to create file\n",1);
+ return -1;
+ }
EROFS_setup();
output = yaffs_chmod(FILE_PATH,S_IREAD|S_IWRITE);
{
int error = 0;
int output = 0;
+ if (yaffs_close(yaffs_open(FILE_PATH,O_CREAT | O_RDWR, FILE_MODE))==-1){
+ print_message("failed to create file\n",1);
+ return -1;
+ }
if (EROFS_setup() < 0 ){
return -1;
}
{
int output = 0;
int error_code = 0;
+ if (yaffs_close(yaffs_open(FILE_PATH,O_CREAT | O_RDWR, FILE_MODE))==-1){
+ print_message("failed to create file\n",1);
+ return -1;
+ }
EROFS_setup();
handle = yaffs_open(FILE_PATH,O_CREAT ,S_IREAD );
if (handle<0){
{
int output=0;
int error =0;
+ if (yaffs_close(yaffs_open(FILE_PATH,O_CREAT | O_RDWR, FILE_MODE))==-1){
+ print_message("failed to create file\n",1);
+ return -1;
+ }
EROFS_setup();
handle = yaffs_open(FILE_PATH,O_CREAT ,S_IREAD );
if (handle<0){
{
int output = 0;
int error_code = 0;
-
+ if (yaffs_close(yaffs_open(FILE_PATH,O_CREAT | O_RDWR, FILE_MODE))==-1){
+ print_message("failed to create file\n",1);
+ return -1;
+ }
EROFS_setup();
handle = yaffs_open(FILE_PATH,O_CREAT ,S_IREAD );
if (handle<0){
output = yaffs_fsync(handle);
if (output==-1){
error_code=yaffs_get_error();
+
if (abs(error_code)==EROFS){
return 1;
} else {
int test_yaffs_link(void)
{
int output=0;
+ if (yaffs_close(yaffs_open(FILE_PATH,O_CREAT | O_RDWR, FILE_MODE))==-1){
+ print_message("failed to create file\n",1);
+ return -1;
+ }
output = yaffs_link(FILE_PATH,HARD_LINK_PATH);
return output;
}
{
int output=0;
int error =0;
-
+ if (yaffs_close(yaffs_open(FILE_PATH,O_CREAT | O_RDWR, FILE_MODE))==-1){
+ print_message("failed to create file\n",1);
+ return -1;
+ }
output = yaffs_link(FILE_PATH,HARD_LINK_PATH);
if (output<0){
print_message("failed to create the first hard link\n",2);
{
int output=0;
int error =0;
- output = yaffs_link("/yaffs2/foo/file",HARD_LINK_PATH);
+ if (yaffs_close(yaffs_open(FILE_PATH,O_CREAT | O_RDWR, FILE_MODE))==-1){
+ print_message("failed to create file\n",1);
+ return -1;
+ }
+ output = yaffs_link("/yaffs2/test_dir/foo/file",HARD_LINK_PATH);
if (output<0){
error=yaffs_get_error();
if (abs(error)==ENOTDIR){
{
int output=0;
int error =0;
- output = yaffs_link(FILE_PATH,"yaffs2/foo/hard_link");
+ if (yaffs_close(yaffs_open(FILE_PATH,O_CREAT | O_RDWR, FILE_MODE))==-1){
+ print_message("failed to create file\n",1);
+ return -1;
+ }
+ output = yaffs_link(FILE_PATH,"yaffs2/test_dir/foo/hard_link");
if (output<0){
error=yaffs_get_error();
if (abs(error)==ENOTDIR){
{
int output=0;
int error =0;
-
+ if (yaffs_close(yaffs_open(FILE_PATH,O_CREAT | O_RDWR, FILE_MODE))==-1){
+ print_message("failed to create file\n",1);
+ return -1;
+ }
EROFS_setup();
output = yaffs_link(FILE_PATH,HARD_LINK_PATH);
}
}
- output =yaffs_lstat("yaffs2/foo/dir",&stat);
+ output =yaffs_lstat("yaffs2/test_dir/foo/dir",&stat);
if (output<0){
error_code=yaffs_get_error();
if (abs(error_code)==ENOTDIR){
{
int error_code = 0;
- if (0==yaffs_access(DIR_PATH,0)){
- /* if the file exists then the file does not need to be created the first time*/
-
- } else {
-
- output = yaffs_mkdir(DIR_PATH,O_CREAT | O_RDWR);
- if (output <0) {
- print_message("failed to create the directory the first time\n",2);
- return -1;
- }
+ output = yaffs_mkdir(DIR_PATH,O_CREAT | O_RDWR);
+ if (output <0) {
+ print_message("failed to create the directory the first time\n",2);
+ return -1;
}
-
- output = yaffs_mkdir("/yaffs2/new_directory/",O_CREAT | O_RDWR);
+ output = yaffs_mkdir("/yaffs2/test_dir/new_directory/",O_CREAT | O_RDWR);
if (output < 0){
error_code = yaffs_get_error();
if (abs(error_code) == EEXIST){
{
int error_code = 0;
-
- output = yaffs_mkdir("/yaffs2/foo/new_directory/",O_CREAT | O_RDWR);
+ if (yaffs_close(yaffs_open(FILE_PATH,O_CREAT | O_RDWR, FILE_MODE))==-1){
+ print_message("failed to create file\n",1);
+ return -1;
+ }
+ output = yaffs_mkdir("/yaffs2/test_dir/foo/new_directory/",O_CREAT | O_RDWR);
if (output < 0){
error_code = yaffs_get_error();
if (abs(error_code) == ENOTDIR){
{
int output = 0;
output = yaffs_mount(YAFFS_MOUNT_POINT);
+ yaffs_mkdir(TEST_DIR,S_IWRITE | S_IREAD);
+
return output;
}
int error_code=0;
int output =-1;
if (yaffs_access(FILE_PATH,0)!=0){
- output=yaffs_close(test_yaffs_open());
+
+ handle = yaffs_open(FILE_PATH, O_CREAT | O_RDWR, FILE_MODE);
+
+ output=yaffs_close(handle);
if (output<0){
print_message("failed to open file\n",2);
return -1;
int test_yaffs_open_EEXIST(void)
{
int error_code = 0;
+ handle = yaffs_open(FILE_PATH, O_CREAT | O_EXCL | O_TRUNC| O_RDWR ,FILE_MODE );
handle = yaffs_open(FILE_PATH, O_CREAT | O_EXCL | O_TRUNC| O_RDWR ,FILE_MODE );
if (handle == -1){
int test_yaffs_open_EINVAL(void)
{
int error_code = 0;
+ handle = yaffs_open(FILE_PATH, O_CREAT | O_RDWR, FILE_MODE);
handle=yaffs_open(FILE_PATH, 255,FILE_MODE);
if (handle == -1){
int test_yaffs_open_ENOTDIR(void)
{
int error_code=0;
+ handle = yaffs_open(FILE_PATH,O_CREAT | O_RDWR, FILE_MODE);
- handle=yaffs_open("/yaffs2/foo/file", O_TRUNC| O_RDWR,FILE_MODE );
+ handle=yaffs_open("/yaffs2/test_dir/foo/file", O_TRUNC| O_RDWR,FILE_MODE );
if (handle <0){
error_code=yaffs_get_error();
if (abs(error_code)==ENOTDIR){
* published by the Free Software Foundation.
*/
+/*this is no longer relevent because it is not possiable to read -1 bytes*/
+
#include "test_yaffs_read_EINVAL.h"
static int handle = -1;
int test_yaffs_read_EINVAL(void)
{
int error_code = 0;
- handle=yaffs_open(FILE_PATH,O_CREAT | O_RDWR, FILE_MODE);
char text[2000000];
int output=0;
-
+ /*if (yaffs_close(yaffs_open(FILE_PATH,O_CREAT | O_RDWR, FILE_MODE))==-1){
+ print_message("failed to create file before remounting\n",1);
+ return -1;
+ }*/
+ handle=yaffs_open(FILE_PATH,O_CREAT | O_RDWR, FILE_MODE);
+
if (handle<0){
print_message("could not open file\n",2);
return -1;
{
int output=0;
int error_code =0;
-
+ if (yaffs_close(yaffs_open(FILE_PATH,O_CREAT | O_RDWR, FILE_MODE))==-1){
+ print_message("failed to create file\n",1);
+ return -1;
+ }
if (0 != yaffs_access(DIR_PATH,0)) {
output = yaffs_mkdir(DIR_PATH,S_IWRITE | S_IREAD);
if (output < 0) {
}
}
}
- output= yaffs_open("/yaffs2/dir2/file",O_CREAT | O_RDWR, FILE_MODE);
+ output= yaffs_open("/yaffs2/test_dir/dir2/file",O_CREAT | O_RDWR, FILE_MODE);
if (output<0){
print_message("failed to open file in the second directory\n",2);
return -1;
{
int output=0;
int error_code =0;
-
+ if (yaffs_close(yaffs_open(FILE_PATH,O_CREAT | O_RDWR, FILE_MODE))==-1){
+ print_message("failed to create file\n",1);
+ return -1;
+ }
if (0 != yaffs_access(DIR_PATH,0)) {
output = yaffs_mkdir(DIR_PATH,S_IWRITE | S_IREAD);
if (output < 0) {
return -1;
}
}
- output = yaffs_rename(DIR_PATH , "/yaffs2/new_directory/dir/");
+ output = yaffs_rename(DIR_PATH , "/yaffs2/test_dir/new_directory/dir/");
if (output<0){
error_code=yaffs_get_error();
if (abs(error_code)==EINVAL){
{
int output=0;
int error_code =0;
-
+ if (yaffs_close(yaffs_open(FILE_PATH,O_CREAT | O_RDWR, FILE_MODE))==-1){
+ print_message("failed to create file\n",1);
+ return -1;
+ }
if (0 != yaffs_access(DIR_PATH,0)) {
output = yaffs_mkdir(DIR_PATH,S_IWRITE | S_IREAD);
if (output < 0) {
return -1;
}
}
- output = yaffs_rename("yaffs2/foo/file" , RENAME_PATH);
+ output = yaffs_rename("yaffs2/test_dir/foo/file" , RENAME_PATH);
if (output<0){
error_code=yaffs_get_error();
if (abs(error_code)==ENOTDIR){
--- /dev/null
+/*
+ * YAFFS: Yet another Flash File System . A NAND-flash specific file system.
+ *
+ * Copyright (C) 2002-2011 Aleph One Ltd.
+ * for Toby Churchill Ltd and Brightstar Engineering
+ *
+ * Created by Timothy Manning <timothy@yaffs.net>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1 as
+ * published by the Free Software Foundation.
+ *
+ * Note: Only YAFFS headers are LGPL, YAFFS C code is covered by GPL.
+ */
+
+
+#include "test_yaffs_rename_ENOTEMPTY.h"
+
+int test_yaffs_rename_ENOTEMPTY(void)
+{
+
+ int output=0;
+ int error_code =0;
+
+ if (yaffs_mkdir(DIR_PATH,O_CREAT | O_RDWR)==-1){
+ print_message("failed to create dir\n",1);
+ return -1;
+ }
+ if (yaffs_mkdir(DIR_PATH2,O_CREAT | O_RDWR)==-1){
+ print_message("failed to create dir2\n",1);
+ return -1;
+ }
+ if (yaffs_close(yaffs_open(DIR_PATH2_FILE,O_CREAT | O_RDWR, FILE_MODE))==-1){
+ print_message("failed to create file\n",1);
+ return -1;
+ }
+ output = yaffs_rename( DIR_PATH,DIR_PATH2 );
+ if (output<0){
+ error_code=yaffs_get_error();
+ if (abs(error_code)==ENOTEMPTY){
+ return 1;
+ } else {
+ print_message("different error than expected\n",2);
+ return -1;
+ }
+ print_message("could not rename a directory over a nonempty directory (which is a bad thing)\n",2);
+ return -1;
+ }
+
+ return 1;
+
+}
+
+
+int test_yaffs_rename_ENOTEMPTY_clean(void)
+{
+ return 1;
+}
+
--- /dev/null
+/*
+ * YAFFS: Yet another Flash File System . A NAND-flash specific file system.
+ *
+ * Copyright (C) 2002-2011 Aleph One Ltd.
+ * for Toby Churchill Ltd and Brightstar Engineering
+ *
+ * Created by Timothy Manning <timothy@yaffs.net>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1 as
+ * published by the Free Software Foundation.
+ *
+ * Note: Only YAFFS headers are LGPL, YAFFS C code is covered by GPL.
+ */
+
+#ifndef __TEST_YAFFS_RENAME_ENOTEMPTY_H__
+#define __TEST_YAFFS_RENAME_ENOTEMPTY_H__
+
+#include "lib.h"
+#include "yaffsfs.h"
+
+int test_yaffs_rename_ENOTEMPTY(void);
+int test_yaffs_rename_ENOTEMPTY_clean(void);
+
+#endif
{
int output=0;
int error_code =0;
+ if (yaffs_close(yaffs_open(FILE_PATH,O_CREAT | O_RDWR, FILE_MODE))==-1){
+ print_message("failed to create file\n",1);
+ return -1;
+ }
EROFS_setup();
output = yaffs_rename(FILE_PATH , RENAME_PATH);
if (output<0){
#include "test_yaffs_rename_dir.h"
-
+/*creates a new directory and renames it*/
int test_yaffs_rename_dir(void)
{
int output=0;
#include "test_yaffs_rename_dir_ENOENT.h"
-
+/*tries to rename a nonexisting directory */
int test_yaffs_rename_dir_ENOENT(void)
{
int output=0;
int error_code =0;
if (0 != yaffs_access(DIR_PATH,0)) {
- output = mkdir(DIR_PATH,S_IREAD | S_IWRITE);
+ output = yaffs_mkdir(DIR_PATH,S_IREAD | S_IWRITE);
if (output < 0) {
print_message("failed to create dir\n",2);
return -1;
}
}
- output = yaffs_rename( DIR_PATH , "/yaffs2/nonexisting-dir/dir");
+ output = yaffs_rename( DIR_PATH , "/yaffs2/test_dir/nonexisting-dir/dir");
if (output<0){
error_code=yaffs_get_error();
if (abs(error_code)==ENOENT){
return -1;
}
} else{
- print_message("removed /yaffs2/ directory (which is a bad thing)\n",2);
+ print_message("removed /yaffs2/test_dir/ directory (which is a bad thing)\n",2);
return -1;
}
#include "test_yaffs_rename_dir.h"
-
+/*tests renaming a non empty file */
int test_yaffs_rename_dir(void)
{
int output=0;
--- /dev/null
+/*
+ * YAFFS: Yet another Flash File System . A NAND-flash specific file system.
+ *
+ * Copyright (C) 2002-2011 Aleph One Ltd.
+ * for Toby Churchill Ltd and Brightstar Engineering
+ *
+ * Created by Timothy Manning <timothy@yaffs.net>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1 as
+ * published by the Free Software Foundation.
+ *
+ * Note: Only YAFFS headers are LGPL, YAFFS C code is covered by GPL.
+ */
+
+
+#include "test_yaffs_rename_dir_over_dir.h"
+
+int test_yaffs_rename_dir_over_dir(void)
+{
+
+ int output=0;
+ int error_code =0;
+
+ if (yaffs_mkdir(DIR_PATH,O_CREAT | O_RDWR)==-1){
+ print_message("failed to create dir\n",1);
+ return -1;
+ }
+ if (yaffs_mkdir(DIR_PATH2,O_CREAT | O_RDWR)==-1){
+ print_message("failed to create dir2\n",1);
+ return -1;
+ }
+ output = yaffs_rename(DIR_PATH ,DIR_PATH2 );
+ if (output<0){
+ print_message("could not rename a directory over a empty directory (which is a bad thing)\n",2);
+ return -1;
+ }
+
+ return 1;
+
+}
+
+
+int test_yaffs_rename_dir_over_dir_clean(void)
+{
+ return 1;
+}
+
--- /dev/null
+/*
+ * YAFFS: Yet another Flash File System . A NAND-flash specific file system.
+ *
+ * Copyright (C) 2002-2011 Aleph One Ltd.
+ * for Toby Churchill Ltd and Brightstar Engineering
+ *
+ * Created by Timothy Manning <timothy@yaffs.net>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1 as
+ * published by the Free Software Foundation.
+ *
+ * Note: Only YAFFS headers are LGPL, YAFFS C code is covered by GPL.
+ */
+
+#ifndef __TEST_YAFFS_RENAME_DIR_OVER_DIR_H__
+#define __TEST_YAFFS_RENAME_DIR_OVER_DIR_H__
+
+#include "lib.h"
+#include "yaffsfs.h"
+
+int test_yaffs_rename_dir_over_dir(void);
+int test_yaffs_rename_dir_over_dir_clean(void);
+
+#endif
#include "test_yaffs_rename_dir_to_file.h"
-
+/*tries to rename a directory over an existing file */
int test_yaffs_rename_dir_to_file(void)
{
int output=0;
-
+ int error_code=0;
if (0 != yaffs_access(DIR_PATH,0)) {
output= yaffs_mkdir(DIR_PATH,(S_IREAD | S_IWRITE));
if (output<0) {
- print_message("failed to remove directory\n",2);
+ print_message("failed to create directory\n",2);
return -1;
}
}
- if (0 != yaffs_access(RENAME_PATH,0)) {
- output= yaffs_mkdir(RENAME_PATH,(S_IREAD | S_IWRITE));
- if (output<0) {
- print_message("failed to remove file\n",2);
+ if (yaffs_close(yaffs_open(FILE_PATH,O_CREAT | O_RDWR, FILE_MODE))==-1){
+ print_message("failed to create file\n",1);
+ return -1;
+ }
+ output = yaffs_rename( DIR_PATH , FILE_PATH);
+ if (output==-1){
+ error_code=yaffs_get_error();
+ if (abs(error_code)==ENOTDIR){
+ return 1;
+ } else {
+ print_message("different error than expected\n",2);
return -1;
}
- }
- output = yaffs_rename( DIR_PATH , RENAME_PATH);
- if (output<0){
- print_message("failed to rename a file over an empty directory\n",2);
+ } else {
+ print_message("renamed a directory over file.(which is a bad thing)\n",2);
return -1;
- } else{
- return 1;
- }
+ }
}
--- /dev/null
+/*
+ * YAFFS: Yet another Flash File System . A NAND-flash specific file system.
+ *
+ * Copyright (C) 2002-2011 Aleph One Ltd.
+ * for Toby Churchill Ltd and Brightstar Engineering
+ *
+ * Created by Timothy Manning <timothy@yaffs.net>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1 as
+ * published by the Free Software Foundation.
+ *
+ * Note: Only YAFFS headers are LGPL, YAFFS C code is covered by GPL.
+ */
+
+
+#include "test_yaffs_rename_file_over_file.h"
+
+int test_yaffs_rename_file_over_file(void)
+{
+
+ int output=0;
+ int error_code =0;
+
+ if (yaffs_close(yaffs_open(FILE_PATH,O_CREAT | O_RDWR, FILE_MODE))==-1){
+ print_message("failed to create file\n",1);
+ return -1;
+ }
+ if (yaffs_close(yaffs_open(FILE_PATH2,O_CREAT | O_RDWR, FILE_MODE))==-1){
+ print_message("failed to create file\n",1);
+ return -1;
+ }
+ output = yaffs_rename(FILE_PATH ,FILE_PATH2 );
+ if (output<0){
+ print_message("could not rename a file over a file (which is a bad thing)\n",2);
+ return -1;
+ }
+
+ return 1;
+
+}
+
+
+int test_yaffs_rename_file_over_file_clean(void)
+{
+ return 1;
+}
+
--- /dev/null
+/*
+ * YAFFS: Yet another Flash File System . A NAND-flash specific file system.
+ *
+ * Copyright (C) 2002-2011 Aleph One Ltd.
+ * for Toby Churchill Ltd and Brightstar Engineering
+ *
+ * Created by Timothy Manning <timothy@yaffs.net>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1 as
+ * published by the Free Software Foundation.
+ *
+ * Note: Only YAFFS headers are LGPL, YAFFS C code is covered by GPL.
+ */
+
+#ifndef __test_yaffs_RENAME_FILE_OVER_FILE_H__
+#define __test_yaffs_RENAME_FILE_OVER_FILE_H__
+
+#include "lib.h"
+#include "yaffsfs.h"
+
+int test_yaffs_rename_file_over_file(void);
+int test_yaffs_rename_file_over_file_clean(void);
+
+#endif
int test_yaffs_rename_file_to_dir(void)
{
+
int output=0;
+ int error_code=0;
+ if (yaffs_close(yaffs_open(FILE_PATH,O_CREAT | O_RDWR, FILE_MODE))==-1){
+ print_message("failed to create file\n",1);
+ return -1;
+ }
- if (0 != yaffs_access(FILE_PATH,0)) {
- output = test_yaffs_open();
+ if (0 != yaffs_access(RENAME_DIR_PATH,0)) {
+ output = yaffs_mkdir(RENAME_DIR_PATH,S_IWRITE | S_IREAD);
if (output < 0) {
- print_message("failed to create file\n",2);
+ print_message("failed to create directory\n",2);
return -1;
- } else {
- output = yaffs_close(output);
- if (output < 0) {
- print_message("failed to close file\n",2);
- return -1;
- }
}
}
- output = yaffs_rename( "/yaffs2/foo" , RENAME_DIR_PATH);
- if (output<0){
- print_message("failed to rename a file over an empty directory\n",2);
+ output=yaffs_rename(FILE_PATH,RENAME_DIR_PATH);
+ if (output==-1){
+ error_code=yaffs_get_error();
+ if (abs(error_code)==EISDIR){
+ return 1;
+ } else {
+ print_message("different error than expected\n",2);
+ return -1;
+ }
+ } else {
+ print_message("renamed a file over a directory (which is a bad thing)\n",2);
return -1;
- } else{
- return 1;
- }
+ }
+ return 1;
}
int test_yaffs_rename_file_to_dir_clean(void)
{
- int output = 0;
- test_yaffs_open();
- if (0 == yaffs_access(RENAME_DIR_PATH,0)) {
- output = yaffs_unlink(RENAME_DIR_PATH);
- if (output < 0) {
- print_message("failed to unlink the file\n",2);
- return -1;
- }
- output = test_yaffs_open();
- if (output < 0) {
- print_message("failed to open a new\n",2);
- return -1;
- }
- }
+
return 1;
}
--- /dev/null
+/*
+ * YAFFS: Yet another Flash File System . A NAND-flash specific file system.
+ *
+ * Copyright (C) 2002-2011 Aleph One Ltd.
+ * for Toby Churchill Ltd and Brightstar Engineering
+ *
+ * Created by Timothy Manning <timothy@yaffs.net>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1 as
+ * published by the Free Software Foundation.
+ *
+ * Note: Only YAFFS headers are LGPL, YAFFS C code is covered by GPL.
+ */
+
+
+#include "test_yaffs_rename_full_dir_over_dir.h"
+
+int test_yaffs_rename_full_dir_over_dir(void)
+{
+
+ int output=0;
+ int error_code =0;
+
+ if (yaffs_mkdir(DIR_PATH,O_CREAT | O_RDWR)==-1){
+ print_message("failed to create dir\n",1);
+ return -1;
+ }
+ if (yaffs_mkdir(DIR_PATH2,O_CREAT | O_RDWR)==-1){
+ print_message("failed to create dir2\n",1);
+ return -1;
+ }
+ if (yaffs_close(yaffs_open(DIR_PATH2_FILE,O_CREAT | O_RDWR, FILE_MODE))==-1){
+ print_message("failed to create file\n",1);
+ return -1;
+ }
+ output = yaffs_rename( DIR_PATH2,DIR_PATH );
+ if (output<0){
+ print_message("could not rename a directory over a empty directory (which is a bad thing)\n",2);
+ return -1;
+ }
+
+ return 1;
+
+}
+
+
+int test_yaffs_rename_full_dir_over_dir_clean(void)
+{
+ return 1;
+}
+
--- /dev/null
+/*
+ * YAFFS: Yet another Flash File System . A NAND-flash specific file system.
+ *
+ * Copyright (C) 2002-2011 Aleph One Ltd.
+ * for Toby Churchill Ltd and Brightstar Engineering
+ *
+ * Created by Timothy Manning <timothy@yaffs.net>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1 as
+ * published by the Free Software Foundation.
+ *
+ * Note: Only YAFFS headers are LGPL, YAFFS C code is covered by GPL.
+ */
+
+#ifndef __TEST_YAFFS_RENAME_FULL_DIR_OVER_DIR_H__
+#define __TEST_YAFFS_RENAME_FULL_DIR_OVER_DIR_H__
+
+#include "lib.h"
+#include "yaffsfs.h"
+
+int test_yaffs_rename_full_dir_over_dir(void);
+int test_yaffs_rename_full_dir_over_dir_clean(void);
+
+#endif
--- /dev/null
+/*
+ * YAFFS: Yet another Flash File System . A NAND-flash specific file system.
+ *
+ * Copyright (C) 2002-2011 Aleph One Ltd.
+ * for Toby Churchill Ltd and Brightstar Engineering
+ *
+ * Created by Timothy Manning <timothy@yaffs.net>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1 as
+ * published by the Free Software Foundation.
+ *
+ * Note: Only YAFFS headers are LGPL, YAFFS C code is covered by GPL.
+ */
+
+
+#include "test_yaffs_rename_to_null_file.h"
+
+int test_yaffs_rename_to_null_file(void)
+{
+ int output=0;
+ int error_code =0;
+
+ if (0 != yaffs_access(DIR_PATH,0)) {
+ output = yaffs_mkdir(DIR_PATH,S_IWRITE | S_IREAD);
+ if (output < 0) {
+ print_message("failed to create directory\n",2);
+ return -1;
+ }
+ }
+ output = yaffs_rename(FILE_PATH , NULL);
+ if (output<0){
+ error_code=yaffs_get_error();
+ if (abs(error_code)==EFAULT){
+ return 1;
+ } else {
+ print_message("returned error does not match the the expected error\n",2);
+ return -1;
+ }
+ } else{
+ print_message("renamed to null path (which is a bad thing)\n",2);
+ return -1;
+ }
+}
+
+
+int test_yaffs_rename_to_null_file_clean(void)
+{
+ return 1;
+}
--- /dev/null
+#ifndef __test_yaffs_rename_NULL3_h__
+#define __test_yaffs_rename_NULL3_h__
+
+#include "lib.h"
+#include "yaffsfs.h"
+
+int test_yaffs_rename_to_null_file(void);
+int test_yaffs_rename_to_null_file_clean(void);
+
+#endif
+
{
int output=0;
int error_code =0;
-
+ if (yaffs_close(yaffs_open(FILE_PATH,O_CREAT | O_RDWR, FILE_MODE))==-1){
+ print_message("failed to create file\n",1);
+ return -1;
+ }
if (0 != yaffs_access(DIR_PATH,0)) {
output = yaffs_mkdir(DIR_PATH,S_IWRITE | S_IREAD);
if (output < 0) {
return -1;
}
}
- output = yaffs_rmdir("/yaffs2/foo/dir/");
+ output = yaffs_rmdir("/yaffs2/test_dir/foo/dir/");
if (output<0){
error_code=yaffs_get_error();
if (abs(error_code)==ENOTDIR){
{
int output=0;
int error_code =0;
-
+ if (yaffs_close(yaffs_open(FILE_PATH,O_CREAT | O_RDWR, FILE_MODE))==-1){
+ print_message("failed to create file\n",1);
+ return -1;
+ }
if (0 != yaffs_access(DIR_PATH,0)) {
output = yaffs_mkdir(DIR_PATH,S_IWRITE | S_IREAD);
if (output < 0) {
return -1;
}
}
- if (0 != yaffs_access("/yaffs2/new_directory/dir",0)) {
- output = yaffs_mkdir("/yaffs2/new_directory/dir",S_IWRITE | S_IREAD);
+ if (0 != yaffs_access("/yaffs2/test_dir/new_directory/dir",0)) {
+ output = yaffs_mkdir("/yaffs2/test_dir/new_directory/dir",S_IWRITE | S_IREAD);
if (output < 0) {
print_message("failed to create directory\n",2);
return -1;
{
int output = -1;
int output2 = -1;
- if (0 == yaffs_access("/yaffs2/new_directory/dir",0)) {
- output = yaffs_rmdir("/yaffs2/new_directory/dir");
+ if (0 == yaffs_access("/yaffs2/test_dir/new_directory/dir",0)) {
+ output = yaffs_rmdir("/yaffs2/test_dir/new_directory/dir");
if (output < 0) {
print_message("failed to remove the directory\n",2);
output=1;
int size=0;
message[0]='\0';
struct yaffs_stat stat;
-
+ if (yaffs_close(yaffs_open(FILE_PATH,O_CREAT | O_RDWR, FILE_MODE))==-1){
+ print_message("failed to create file \n",1);
+ return -1;
+ }
return yaffs_stat(FILE_PATH, &stat);
}
int output=0;
char text[100];
text[0] ='\0';
- output=yaffs_stat("/yaffs2/foo/file", &stat);;
+ if (yaffs_close(yaffs_open(FILE_PATH,O_CREAT | O_RDWR, FILE_MODE))==-1){
+ print_message("failed to create file\n",1);
+ return -1;
+ }
+ output=yaffs_stat("/yaffs2/test_dir/foo/file", &stat);;
if (output<0){
error_code=yaffs_get_error();
if (abs(error_code)==ENOTDIR){
int test_yaffs_symlink_ENOTDIR(void)
{
int error_code = 0;
- output = yaffs_symlink(FILE_PATH,"yaffs2/foo/sym_link");
+ if (yaffs_close(yaffs_open(FILE_PATH,O_CREAT | O_RDWR, FILE_MODE))==-1){
+ print_message("failed to create file\n",1);
+ return -1;
+ }
+ output = yaffs_symlink(FILE_PATH,"yaffs2/test_dir/foo/sym_link");
if (output<0){
error_code=yaffs_get_error();
if (abs(error_code)==ENOTDIR){
{
int error=0;
int output=0;
-
- output= yaffs_truncate("/yaffs2/foo",-1 );
+ if (yaffs_close(yaffs_open(FILE_PATH,O_CREAT | O_RDWR, FILE_MODE))==-1){
+ print_message("failed to create file \n",1);
+ return -1;
+ }
+ output= yaffs_truncate(FILE_PATH,-1 );
if (output<0){
error=yaffs_get_error();
if (abs(error)==EINVAL){
{
int error=0;
int output=0;
+ if (yaffs_close(yaffs_open(FILE_PATH,O_CREAT | O_RDWR, FILE_MODE))==-1){
+ print_message("failed to create file \n",1);
+ return -1;
+ }
-
- output= yaffs_truncate("/yaffs2/foo/file",FILE_SIZE_TRUNCATED );
+ output= yaffs_truncate("/yaffs2/test_dir/foo/file",FILE_SIZE_TRUNCATED );
if (output<0){
error=yaffs_get_error();
if (abs(error)==ENOTDIR){
{
int error=0;
int output=0;
-
+ if (yaffs_close(yaffs_open(FILE_PATH,O_CREAT | O_RDWR, FILE_MODE))==-1){
+ print_message("failed to create file \n",1);
+ return -1;
+ }
EROFS_setup();
output= yaffs_truncate(FILE_PATH,FILE_SIZE_TRUNCATED );
int test_yaffs_unlink(void)
{
+ if (yaffs_close(yaffs_open(FILE_PATH,O_CREAT | O_RDWR, FILE_MODE))==-1){
+ print_message("failed to create file before remounting\n",1);
+ return -1;
+ }
int output=yaffs_unlink(FILE_PATH);
if (output>=0){
return (-test_yaffs_access()); /*return negative access. we do not want the file to be there*/
{
int output=0;
int error_code=0;
-
- output=yaffs_unlink("/yaffs2/foo/file");
+ if (yaffs_close(yaffs_open(FILE_PATH,O_CREAT | O_RDWR, FILE_MODE))==-1){
+ print_message("failed to create file before remounting\n",1);
+ return -1;
+ }
+ output=yaffs_unlink("/yaffs2/test_dir/foo/file");
if (output==-1){
error_code=yaffs_get_error();
if (abs(error_code)==ENOTDIR){
{
int error_code=0;
-
+ if (yaffs_close(yaffs_open(FILE_PATH,O_CREAT | O_RDWR, FILE_MODE))==-1){
+ print_message("failed to create file before remounting\n",1);
+ return -1;
+ }
EROFS_setup();
output=yaffs_unlink(FILE_PATH);