github.com/gogf/gf@v1.16.9/os/gfile/gfile_z_test.go (about)

     1  // Copyright GoFrame Author(https://goframe.org). All Rights Reserved.
     2  //
     3  // This Source Code Form is subject to the terms of the MIT License.
     4  // If a copy of the MIT was not distributed with this file,
     5  // You can obtain one at https://github.com/gogf/gf.
     6  
     7  package gfile_test
     8  
     9  import (
    10  	"os"
    11  	"path/filepath"
    12  	"strings"
    13  	"testing"
    14  
    15  	"github.com/gogf/gf/os/gtime"
    16  	"github.com/gogf/gf/util/gconv"
    17  
    18  	"github.com/gogf/gf/os/gfile"
    19  	"github.com/gogf/gf/test/gtest"
    20  )
    21  
    22  func Test_IsDir(t *testing.T) {
    23  	gtest.C(t, func(t *gtest.T) {
    24  		paths := "/testfile"
    25  		createDir(paths)
    26  		defer delTestFiles(paths)
    27  
    28  		t.Assert(gfile.IsDir(testpath()+paths), true)
    29  		t.Assert(gfile.IsDir("./testfile2"), false)
    30  		t.Assert(gfile.IsDir("./testfile/tt.txt"), false)
    31  		t.Assert(gfile.IsDir(""), false)
    32  	})
    33  }
    34  
    35  func Test_IsEmpty(t *testing.T) {
    36  	gtest.C(t, func(t *gtest.T) {
    37  		path := "/testdir_" + gconv.String(gtime.TimestampNano())
    38  		createDir(path)
    39  		defer delTestFiles(path)
    40  
    41  		t.Assert(gfile.IsEmpty(testpath()+path), true)
    42  		t.Assert(gfile.IsEmpty(testpath()+path+gfile.Separator+"test.txt"), true)
    43  	})
    44  	gtest.C(t, func(t *gtest.T) {
    45  		path := "/testfile_" + gconv.String(gtime.TimestampNano())
    46  		createTestFile(path, "")
    47  		defer delTestFiles(path)
    48  
    49  		t.Assert(gfile.IsEmpty(testpath()+path), true)
    50  	})
    51  	gtest.C(t, func(t *gtest.T) {
    52  		path := "/testfile_" + gconv.String(gtime.TimestampNano())
    53  		createTestFile(path, "1")
    54  		defer delTestFiles(path)
    55  
    56  		t.Assert(gfile.IsEmpty(testpath()+path), false)
    57  	})
    58  }
    59  
    60  func Test_Create(t *testing.T) {
    61  	gtest.C(t, func(t *gtest.T) {
    62  		var (
    63  			err       error
    64  			filepaths []string
    65  			fileobj   *os.File
    66  		)
    67  		filepaths = append(filepaths, "/testfile_cc1.txt")
    68  		filepaths = append(filepaths, "/testfile_cc2.txt")
    69  		for _, v := range filepaths {
    70  			fileobj, err = gfile.Create(testpath() + v)
    71  			defer delTestFiles(v)
    72  			fileobj.Close()
    73  			t.Assert(err, nil)
    74  		}
    75  	})
    76  }
    77  
    78  func Test_Open(t *testing.T) {
    79  	gtest.C(t, func(t *gtest.T) {
    80  		var (
    81  			err     error
    82  			files   []string
    83  			flags   []bool
    84  			fileobj *os.File
    85  		)
    86  
    87  		file1 := "/testfile_nc1.txt"
    88  		createTestFile(file1, "")
    89  		defer delTestFiles(file1)
    90  
    91  		files = append(files, file1)
    92  		flags = append(flags, true)
    93  
    94  		files = append(files, "./testfile/file1/c1.txt")
    95  		flags = append(flags, false)
    96  
    97  		for k, v := range files {
    98  			fileobj, err = gfile.Open(testpath() + v)
    99  			fileobj.Close()
   100  			if flags[k] {
   101  				t.Assert(err, nil)
   102  			} else {
   103  				t.AssertNE(err, nil)
   104  			}
   105  
   106  		}
   107  
   108  	})
   109  }
   110  
   111  func Test_OpenFile(t *testing.T) {
   112  	gtest.C(t, func(t *gtest.T) {
   113  		var (
   114  			err     error
   115  			files   []string
   116  			flags   []bool
   117  			fileobj *os.File
   118  		)
   119  
   120  		files = append(files, "./testfile/file1/nc1.txt")
   121  		flags = append(flags, false)
   122  
   123  		f1 := "/testfile_tt.txt"
   124  		createTestFile(f1, "")
   125  		defer delTestFiles(f1)
   126  
   127  		files = append(files, f1)
   128  		flags = append(flags, true)
   129  
   130  		for k, v := range files {
   131  			fileobj, err = gfile.OpenFile(testpath()+v, os.O_RDWR, 0666)
   132  			fileobj.Close()
   133  			if flags[k] {
   134  				t.Assert(err, nil)
   135  			} else {
   136  				t.AssertNE(err, nil)
   137  			}
   138  
   139  		}
   140  
   141  	})
   142  }
   143  
   144  func Test_OpenWithFlag(t *testing.T) {
   145  	gtest.C(t, func(t *gtest.T) {
   146  		var (
   147  			err     error
   148  			files   []string
   149  			flags   []bool
   150  			fileobj *os.File
   151  		)
   152  
   153  		file1 := "/testfile_t1.txt"
   154  		createTestFile(file1, "")
   155  		defer delTestFiles(file1)
   156  		files = append(files, file1)
   157  		flags = append(flags, true)
   158  
   159  		files = append(files, "/testfiless/dirfiles/t1_no.txt")
   160  		flags = append(flags, false)
   161  
   162  		for k, v := range files {
   163  			fileobj, err = gfile.OpenWithFlag(testpath()+v, os.O_RDWR)
   164  			fileobj.Close()
   165  			if flags[k] {
   166  				t.Assert(err, nil)
   167  			} else {
   168  				t.AssertNE(err, nil)
   169  			}
   170  
   171  		}
   172  
   173  	})
   174  }
   175  
   176  func Test_OpenWithFlagPerm(t *testing.T) {
   177  	gtest.C(t, func(t *gtest.T) {
   178  		var (
   179  			err     error
   180  			files   []string
   181  			flags   []bool
   182  			fileobj *os.File
   183  		)
   184  		file1 := "/testfile_nc1.txt"
   185  		createTestFile(file1, "")
   186  		defer delTestFiles(file1)
   187  		files = append(files, file1)
   188  		flags = append(flags, true)
   189  
   190  		files = append(files, "/testfileyy/tt.txt")
   191  		flags = append(flags, false)
   192  
   193  		for k, v := range files {
   194  			fileobj, err = gfile.OpenWithFlagPerm(testpath()+v, os.O_RDWR, 666)
   195  			fileobj.Close()
   196  			if flags[k] {
   197  				t.Assert(err, nil)
   198  			} else {
   199  				t.AssertNE(err, nil)
   200  			}
   201  
   202  		}
   203  
   204  	})
   205  }
   206  
   207  func Test_Exists(t *testing.T) {
   208  
   209  	gtest.C(t, func(t *gtest.T) {
   210  		var (
   211  			flag  bool
   212  			files []string
   213  			flags []bool
   214  		)
   215  
   216  		file1 := "/testfile_GetContents.txt"
   217  		createTestFile(file1, "")
   218  		defer delTestFiles(file1)
   219  
   220  		files = append(files, file1)
   221  		flags = append(flags, true)
   222  
   223  		files = append(files, "./testfile/havefile1/tt_no.txt")
   224  		flags = append(flags, false)
   225  
   226  		for k, v := range files {
   227  			flag = gfile.Exists(testpath() + v)
   228  			if flags[k] {
   229  				t.Assert(flag, true)
   230  			} else {
   231  				t.Assert(flag, false)
   232  			}
   233  
   234  		}
   235  
   236  	})
   237  }
   238  
   239  func Test_Pwd(t *testing.T) {
   240  	gtest.C(t, func(t *gtest.T) {
   241  		paths, err := os.Getwd()
   242  		t.Assert(err, nil)
   243  		t.Assert(gfile.Pwd(), paths)
   244  
   245  	})
   246  }
   247  
   248  func Test_IsFile(t *testing.T) {
   249  	gtest.C(t, func(t *gtest.T) {
   250  		var (
   251  			flag  bool
   252  			files []string
   253  			flags []bool
   254  		)
   255  
   256  		file1 := "/testfile_tt.txt"
   257  		createTestFile(file1, "")
   258  		defer delTestFiles(file1)
   259  		files = append(files, file1)
   260  		flags = append(flags, true)
   261  
   262  		dir1 := "/testfiless"
   263  		createDir(dir1)
   264  		defer delTestFiles(dir1)
   265  		files = append(files, dir1)
   266  		flags = append(flags, false)
   267  
   268  		files = append(files, "./testfiledd/tt1.txt")
   269  		flags = append(flags, false)
   270  
   271  		for k, v := range files {
   272  			flag = gfile.IsFile(testpath() + v)
   273  			if flags[k] {
   274  				t.Assert(flag, true)
   275  			} else {
   276  				t.Assert(flag, false)
   277  			}
   278  
   279  		}
   280  
   281  	})
   282  }
   283  
   284  func Test_Info(t *testing.T) {
   285  	gtest.C(t, func(t *gtest.T) {
   286  		var (
   287  			err    error
   288  			paths  string = "/testfile_t1.txt"
   289  			files  os.FileInfo
   290  			files2 os.FileInfo
   291  		)
   292  
   293  		createTestFile(paths, "")
   294  		defer delTestFiles(paths)
   295  		files, err = gfile.Info(testpath() + paths)
   296  		t.Assert(err, nil)
   297  
   298  		files2, err = os.Stat(testpath() + paths)
   299  		t.Assert(err, nil)
   300  
   301  		t.Assert(files, files2)
   302  
   303  	})
   304  }
   305  
   306  func Test_Move(t *testing.T) {
   307  	gtest.C(t, func(t *gtest.T) {
   308  		var (
   309  			paths     string = "/ovetest"
   310  			filepaths string = "/testfile_ttn1.txt"
   311  			topath    string = "/testfile_ttn2.txt"
   312  		)
   313  		createDir("/ovetest")
   314  		createTestFile(paths+filepaths, "a")
   315  
   316  		defer delTestFiles(paths)
   317  
   318  		yfile := testpath() + paths + filepaths
   319  		tofile := testpath() + paths + topath
   320  
   321  		t.Assert(gfile.Move(yfile, tofile), nil)
   322  
   323  		// 检查移动后的文件是否真实存在
   324  		_, err := os.Stat(tofile)
   325  		t.Assert(os.IsNotExist(err), false)
   326  
   327  	})
   328  }
   329  
   330  func Test_Rename(t *testing.T) {
   331  	gtest.C(t, func(t *gtest.T) {
   332  		var (
   333  			paths  string = "/testfiles"
   334  			ypath  string = "/testfilettm1.txt"
   335  			topath string = "/testfilettm2.txt"
   336  		)
   337  		createDir(paths)
   338  		createTestFile(paths+ypath, "a")
   339  		defer delTestFiles(paths)
   340  
   341  		ypath = testpath() + paths + ypath
   342  		topath = testpath() + paths + topath
   343  
   344  		t.Assert(gfile.Rename(ypath, topath), nil)
   345  		t.Assert(gfile.IsFile(topath), true)
   346  
   347  		t.AssertNE(gfile.Rename("", ""), nil)
   348  
   349  	})
   350  
   351  }
   352  
   353  func Test_DirNames(t *testing.T) {
   354  	gtest.C(t, func(t *gtest.T) {
   355  		var (
   356  			paths    string = "/testdirs"
   357  			err      error
   358  			readlist []string
   359  		)
   360  		havelist := []string{
   361  			"t1.txt",
   362  			"t2.txt",
   363  		}
   364  
   365  		// 创建测试文件
   366  		createDir(paths)
   367  		for _, v := range havelist {
   368  			createTestFile(paths+"/"+v, "")
   369  		}
   370  		defer delTestFiles(paths)
   371  
   372  		readlist, err = gfile.DirNames(testpath() + paths)
   373  
   374  		t.Assert(err, nil)
   375  		t.AssertIN(readlist, havelist)
   376  
   377  		_, err = gfile.DirNames("")
   378  		t.AssertNE(err, nil)
   379  
   380  	})
   381  }
   382  
   383  func Test_Glob(t *testing.T) {
   384  	gtest.C(t, func(t *gtest.T) {
   385  		var (
   386  			paths      string = "/testfiles/*.txt"
   387  			dirpath    string = "/testfiles"
   388  			err        error
   389  			resultlist []string
   390  		)
   391  
   392  		havelist1 := []string{
   393  			"t1.txt",
   394  			"t2.txt",
   395  		}
   396  
   397  		havelist2 := []string{
   398  			testpath() + "/testfiles/t1.txt",
   399  			testpath() + "/testfiles/t2.txt",
   400  		}
   401  
   402  		//===============================构建测试文件
   403  		createDir(dirpath)
   404  		for _, v := range havelist1 {
   405  			createTestFile(dirpath+"/"+v, "")
   406  		}
   407  		defer delTestFiles(dirpath)
   408  
   409  		resultlist, err = gfile.Glob(testpath()+paths, true)
   410  		t.Assert(err, nil)
   411  		t.Assert(resultlist, havelist1)
   412  
   413  		resultlist, err = gfile.Glob(testpath()+paths, false)
   414  
   415  		t.Assert(err, nil)
   416  		t.Assert(formatpaths(resultlist), formatpaths(havelist2))
   417  
   418  		_, err = gfile.Glob("", true)
   419  		t.Assert(err, nil)
   420  
   421  	})
   422  }
   423  
   424  func Test_Remove(t *testing.T) {
   425  	gtest.C(t, func(t *gtest.T) {
   426  		var (
   427  			paths string = "/testfile_t1.txt"
   428  		)
   429  		createTestFile(paths, "")
   430  		t.Assert(gfile.Remove(testpath()+paths), nil)
   431  
   432  		t.Assert(gfile.Remove(""), nil)
   433  
   434  		defer delTestFiles(paths)
   435  
   436  	})
   437  }
   438  
   439  func Test_IsReadable(t *testing.T) {
   440  	gtest.C(t, func(t *gtest.T) {
   441  		var (
   442  			paths1 string = "/testfile_GetContents.txt"
   443  			paths2 string = "./testfile_GetContents_no.txt"
   444  		)
   445  
   446  		createTestFile(paths1, "")
   447  		defer delTestFiles(paths1)
   448  
   449  		t.Assert(gfile.IsReadable(testpath()+paths1), true)
   450  		t.Assert(gfile.IsReadable(paths2), false)
   451  
   452  	})
   453  }
   454  
   455  func Test_IsWritable(t *testing.T) {
   456  	gtest.C(t, func(t *gtest.T) {
   457  		var (
   458  			paths1 string = "/testfile_GetContents.txt"
   459  			paths2 string = "./testfile_GetContents_no.txt"
   460  		)
   461  
   462  		createTestFile(paths1, "")
   463  		defer delTestFiles(paths1)
   464  		t.Assert(gfile.IsWritable(testpath()+paths1), true)
   465  		t.Assert(gfile.IsWritable(paths2), false)
   466  
   467  	})
   468  }
   469  
   470  func Test_Chmod(t *testing.T) {
   471  	gtest.C(t, func(t *gtest.T) {
   472  		var (
   473  			paths1 string = "/testfile_GetContents.txt"
   474  			paths2 string = "./testfile_GetContents_no.txt"
   475  		)
   476  		createTestFile(paths1, "")
   477  		defer delTestFiles(paths1)
   478  
   479  		t.Assert(gfile.Chmod(testpath()+paths1, 0777), nil)
   480  		t.AssertNE(gfile.Chmod(paths2, 0777), nil)
   481  
   482  	})
   483  }
   484  
   485  // 获取绝对目录地址
   486  func Test_RealPath(t *testing.T) {
   487  	gtest.C(t, func(t *gtest.T) {
   488  		var (
   489  			paths1    string = "/testfile_files"
   490  			readlPath string
   491  
   492  			tempstr string
   493  		)
   494  
   495  		createDir(paths1)
   496  		defer delTestFiles(paths1)
   497  
   498  		readlPath = gfile.RealPath("./")
   499  
   500  		tempstr, _ = filepath.Abs("./")
   501  
   502  		t.Assert(readlPath, tempstr)
   503  
   504  		t.Assert(gfile.RealPath("./nodirs"), "")
   505  
   506  	})
   507  }
   508  
   509  // 获取当前执行文件的目录
   510  func Test_SelfPath(t *testing.T) {
   511  	gtest.C(t, func(t *gtest.T) {
   512  		var (
   513  			paths1    string
   514  			readlPath string
   515  			tempstr   string
   516  		)
   517  		readlPath = gfile.SelfPath()
   518  		readlPath = filepath.ToSlash(readlPath)
   519  
   520  		tempstr, _ = filepath.Abs(os.Args[0])
   521  		paths1 = filepath.ToSlash(tempstr)
   522  		paths1 = strings.Replace(paths1, "./", "/", 1)
   523  
   524  		t.Assert(readlPath, paths1)
   525  
   526  	})
   527  }
   528  
   529  func Test_SelfDir(t *testing.T) {
   530  	gtest.C(t, func(t *gtest.T) {
   531  		var (
   532  			paths1    string
   533  			readlPath string
   534  			tempstr   string
   535  		)
   536  		readlPath = gfile.SelfDir()
   537  
   538  		tempstr, _ = filepath.Abs(os.Args[0])
   539  		paths1 = filepath.Dir(tempstr)
   540  
   541  		t.Assert(readlPath, paths1)
   542  
   543  	})
   544  }
   545  
   546  func Test_Basename(t *testing.T) {
   547  	gtest.C(t, func(t *gtest.T) {
   548  		var (
   549  			paths1    string = "/testfilerr_GetContents.txt"
   550  			readlPath string
   551  		)
   552  
   553  		createTestFile(paths1, "")
   554  		defer delTestFiles(paths1)
   555  
   556  		readlPath = gfile.Basename(testpath() + paths1)
   557  		t.Assert(readlPath, "testfilerr_GetContents.txt")
   558  
   559  	})
   560  }
   561  
   562  func Test_Dir(t *testing.T) {
   563  	gtest.C(t, func(t *gtest.T) {
   564  		var (
   565  			paths1    string = "/testfiless"
   566  			readlPath string
   567  		)
   568  		createDir(paths1)
   569  		defer delTestFiles(paths1)
   570  
   571  		readlPath = gfile.Dir(testpath() + paths1)
   572  
   573  		t.Assert(readlPath, testpath())
   574  
   575  	})
   576  }
   577  
   578  func Test_Ext(t *testing.T) {
   579  	gtest.C(t, func(t *gtest.T) {
   580  		var (
   581  			paths1   string = "/testfile_GetContents.txt"
   582  			dirpath1        = "/testdirs"
   583  		)
   584  		createTestFile(paths1, "")
   585  		defer delTestFiles(paths1)
   586  
   587  		createDir(dirpath1)
   588  		defer delTestFiles(dirpath1)
   589  
   590  		t.Assert(gfile.Ext(testpath()+paths1), ".txt")
   591  		t.Assert(gfile.Ext(testpath()+dirpath1), "")
   592  	})
   593  
   594  	gtest.C(t, func(t *gtest.T) {
   595  		t.Assert(gfile.Ext("/var/www/test.js"), ".js")
   596  		t.Assert(gfile.Ext("/var/www/test.min.js"), ".js")
   597  		t.Assert(gfile.Ext("/var/www/test.js?1"), ".js")
   598  		t.Assert(gfile.Ext("/var/www/test.min.js?v1"), ".js")
   599  	})
   600  }
   601  
   602  func Test_ExtName(t *testing.T) {
   603  	gtest.C(t, func(t *gtest.T) {
   604  		t.Assert(gfile.ExtName("/var/www/test.js"), "js")
   605  		t.Assert(gfile.ExtName("/var/www/test.min.js"), "js")
   606  		t.Assert(gfile.ExtName("/var/www/test.js?v=1"), "js")
   607  		t.Assert(gfile.ExtName("/var/www/test.min.js?v=1"), "js")
   608  	})
   609  }
   610  
   611  func Test_TempDir(t *testing.T) {
   612  	gtest.C(t, func(t *gtest.T) {
   613  		if gfile.Separator != "/" || !gfile.Exists("/tmp") {
   614  			t.Assert(gfile.TempDir(), os.TempDir())
   615  		} else {
   616  			t.Assert(gfile.TempDir(), "/tmp")
   617  		}
   618  	})
   619  }
   620  
   621  func Test_Mkdir(t *testing.T) {
   622  	gtest.C(t, func(t *gtest.T) {
   623  		var (
   624  			tpath string = "/testfile/createdir"
   625  			err   error
   626  		)
   627  
   628  		defer delTestFiles("/testfile")
   629  
   630  		err = gfile.Mkdir(testpath() + tpath)
   631  		t.Assert(err, nil)
   632  
   633  		err = gfile.Mkdir("")
   634  		t.AssertNE(err, nil)
   635  
   636  		err = gfile.Mkdir(testpath() + tpath + "2/t1")
   637  		t.Assert(err, nil)
   638  
   639  	})
   640  }
   641  
   642  func Test_Stat(t *testing.T) {
   643  	gtest.C(t, func(t *gtest.T) {
   644  		var (
   645  			tpath1   = "/testfile_t1.txt"
   646  			tpath2   = "./testfile_t1_no.txt"
   647  			err      error
   648  			fileiofo os.FileInfo
   649  		)
   650  
   651  		createTestFile(tpath1, "a")
   652  		defer delTestFiles(tpath1)
   653  
   654  		fileiofo, err = gfile.Stat(testpath() + tpath1)
   655  		t.Assert(err, nil)
   656  
   657  		t.Assert(fileiofo.Size(), 1)
   658  
   659  		_, err = gfile.Stat(tpath2)
   660  		t.AssertNE(err, nil)
   661  
   662  	})
   663  }
   664  
   665  func Test_MainPkgPath(t *testing.T) {
   666  	gtest.C(t, func(t *gtest.T) {
   667  		reads := gfile.MainPkgPath()
   668  		t.Assert(reads, "")
   669  	})
   670  }