fidry/filesystem

Symfony Filesystem 增加了一些实用工具。

资助包维护!
theofidry

1.2.1 2023-12-10 13:29 UTC

This package is auto-updated.

Last update: 2024-09-04 11:45:07 UTC


README

这是对 Symfony filesystem 的小型封装。它提供

  • 一个名为 FileSystem 的新类(扩展了 Symfony 类),具有一些额外的功能。
  • 一个 FS 静态类,当您对使用依赖注入来操作文件系统层不感兴趣时使用。
  • 一个 PHPUnit 的 FileSystemTestCase 类,它允许您轻松编写依赖文件系统的测试。

使用方法

PHPUnit 测试示例

<?php declare(strict_types=1);

namespace App;

use Fidry\FileSystem\FS;
use Fidry\FileSystem\Test\FileSystemTestCase;
use PHPUnit\Framework\Attributes\CoversClass;
use Symfony\Component\Finder\Finder;
use function getenv;
use function is_string;

final class MyAppFileSystemTest extends FileSystemTestCase
{
    public static function getTmpDirNamespace(): string
    {
        // This is to make it thread safe with Infection. If you are not using
        // infection or do not need thread safety, this can return a constant
        // string, e.g. your project/library name.
        $threadId = getenv('TEST_TOKEN');

        if (!is_string($threadId)) {
            $threadId = '';
        }

        return 'MyApp'.$threadId;
    }

    public function test_it_works(): void
    {
        // This file is dumped into a temporary directory. Here
        // something like '/private/var/folders/p3/lkw0cgjj2fq0656q_9rd0mk80000gn/T/MyApp/MyAppFileSystemTest10000'
        // on OSX. 
        FS::dumpFile('file1', '');
        
        $files = Finder::create()
            ->files()
            ->in($this->tmp);

        self::assertSame(['file1'], $this->normalizePaths($files));
    }
}

贡献

GNU Make 是您的朋友。尝试 makemake help!。