it("does not scan same path twice in the same scanning process", function () {
            var fileSystemScanner,
                fileSystemStrategy = new SynchronousFileSystemStrategy(),
                scanningProcess,
                scanningStrategy = new FileScanningStrategy(/.*/);

            fileSystemScanner = new FileSystemScanner(scanningStrategy, fileSystemStrategy);
            scanningProcess = fileSystemScanner.scanPath(__filename);

            assert.ok(scanningProcess.isStopped());
            assert.deepEqual([__filename], scanningProcess.visitedFiles);
            assert.deepEqual([__filename], scanningProcess.visitedPaths);

            scanningProcess = fileSystemScanner.scanPath(__filename, scanningProcess);

            assert.ok(scanningProcess.isStopped());
            assert.deepEqual([__filename], scanningProcess.visitedFiles);
            assert.deepEqual([__filename], scanningProcess.visitedPaths);
        });
        it("reports error on non-existent path", function () {
            var fileSystemScanner,
                fileSystemStrategy = new SynchronousFileSystemStrategy(),
                scanningStrategy = new FileScanningStrategy(/.*/);

            fileSystemScanner = new FileSystemScanner(scanningStrategy, fileSystemStrategy);
            fileSystemScanner.addListener(FileSystemScanner.EVENT_ERROR_CAUGHT, function (evt) {
                assert.ok(evt.err);
            });

            fileSystemScanner.scanPath(__filename + __filename);
        });
        it("listens for all files to be found", function (done) {
            var fileSystemScanner,
                fileSystemStrategy = new AsynchronousFileSystemStrategy(),
                scanningProcess,
                scanningStrategy = new FileScanningStrategy(/.*/);

            fileSystemScanner = new FileSystemScanner(scanningStrategy, fileSystemStrategy);
            scanningProcess = fileSystemScanner.scanPath(global.MODULE_ROOT_TESTS + p.sep + "fixtures");
            scanningProcess.addListenerDone(function (evt) {
                assert.strictEqual(evt.foundFiles.length, 8);
                done();
            });
        });
Ejemplo n.º 4
0
        it("does not scan given path twice", function () {
            var fileSystemStrategy = new SynchronousFileSystemStrategy(),
                fileSystemScanner,
                scanningProcess,
                scanningStrategy = new FileScanningStrategy(/.*/);

            fileSystemScanner = new RememberingFileSystemScanner(scanningStrategy, fileSystemStrategy);

            assert.ok(!fileSystemScanner.isDirectoryScanned(__filename));
            assert.ok(!fileSystemScanner.isFileScanned(__filename));
            assert.ok(!fileSystemScanner.isPathScanned(__filename));
            scanningProcess = fileSystemScanner.scanPath(__filename);

            assert.ok(!fileSystemScanner.isDirectoryScanned(__filename));
            assert.ok(fileSystemScanner.isFileScanned(__filename));
            assert.ok(fileSystemScanner.isPathScanned(__filename));
            assert.deepEqual(scanningProcess.foundFiles, [__filename]);
            assert.deepEqual(scanningProcess.foundDirectories, []);

            scanningProcess = fileSystemScanner.scanPath(__filename);
            assert.deepEqual(scanningProcess.foundFiles, [__filename]);
            assert.deepEqual(scanningProcess.foundDirectories, []);
        });
        it("listens for file to be found", function (done) {
            var basename = "search_tgt_2.txt",
                fileSystemScanner,
                fileSystemStrategy = new AsynchronousFileSystemStrategy(),
                scanningStrategy = new FileScanningStrategy(basename);

            fileSystemScanner = new FileSystemScanner(scanningStrategy, fileSystemStrategy);
            fileSystemScanner.addListener(FileSystemScanner.EVENT_FOUND_FILE, function (evt) {
                assert.notEqual(evt.file, basename);
                assert.equal(p.basename(evt.file), basename);
                done();
            });

            fileSystemScanner.scanPath(global.MODULE_ROOT_TESTS + "/fixtures");
        });
        it("identifies path as a file and scans it", function () {
            var fileSystemScanner,
                fileSystemStrategy = new SynchronousFileSystemStrategy(),
                scanningProcess,
                scanningStrategy = new FileScanningStrategy(/.*/);

            fileSystemScanner = new FileSystemScanner(scanningStrategy, fileSystemStrategy);
            scanningProcess = fileSystemScanner.scanPath(__filename);

            assert.ok(scanningProcess.isStopped());

            assert.deepEqual([__filename], scanningProcess.foundFiles);
            assert.deepEqual([], scanningProcess.foundDirectories);
            assert.deepEqual([__filename], scanningProcess.foundPaths);
        });
        it("looks for specific directory", function () {
            var fileSystemScanner,
                fileSystemStrategy = new SynchronousFileSystemStrategy(),
                scanningProcess,
                scanningStrategy = new DirectoryScanningStrategy(/search_t(ar)?ge?t/);

            fileSystemScanner = new FileSystemScanner(scanningStrategy, fileSystemStrategy);
            scanningProcess = fileSystemScanner.scanPath(global.MODULE_ROOT_TESTS + p.sep + "fixtures");

            assert.ok(scanningProcess.isStopped());

            assert.deepEqual([], scanningProcess.foundFiles);
            assert.deepEqual(scanningProcess.foundPaths, scanningProcess.foundDirectories);

            assert.equal(3, scanningProcess.foundDirectories.length);
        });
        it("identifies one path as an exactly one directory", function () {
            var fileSystemScanner,
                fileSystemStrategy = new SynchronousFileSystemStrategy(),
                scanningProcess,
                scanningStrategy = new DirectoryScanningStrategy(/.*/);

            fileSystemScanner = new FileSystemScanner(scanningStrategy, fileSystemStrategy);
            scanningProcess = fileSystemScanner.scanPath(__dirname, {
                limit: 1
            });

            assert.ok(scanningProcess.isStopped());

            assert.deepEqual([], scanningProcess.foundFiles);
            assert.deepEqual([__dirname], scanningProcess.foundDirectories);
            assert.deepEqual([__dirname], scanningProcess.foundPaths);
        });