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 }