File: test.js

package info (click to toggle)
node-normalize-path 3.0.0%2B~3.0.0-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, sid, trixie
  • size: 220 kB
  • sloc: javascript: 217; makefile: 2
file content (87 lines) | stat: -rw-r--r-- 3,049 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
'use strict';

/*!
 * normalize-path <https://github.com/jonschlinkert/normalize-path>
 *
 * Copyright (c) 2014-2017, Jon Schlinkert.
 * Licensed under the MIT License
 */

require('mocha');
var path = require('path');
var argv = require('minimist')(process.argv.slice(2));
var assert = require('assert');
var normalize = require('./');

if (argv.bench) {
  var b = path.join(__dirname, 'benchmark/code', argv.bench);
  console.log(b);
  normalize = require(b);
}

describe('normalize-path', function() {
  describe('single slash', function() {
    it('should always return a single forward slash', function() {
      assert.equal(normalize('/'), '/');
      assert.equal(normalize('/', true), '/');

      assert.equal(normalize('\\'), '/');
      assert.equal(normalize('\\', true), '/');
    });
  });

  describe('strip trailing slashes', function() {
    var units = [
      ['../../foo/bar', '../../foo/bar'],
      ['..\\..\\foo/bar', '../../foo/bar'],
      ['..\\\\..\\\\foo/bar', '../../foo/bar'],
      ['//foo/bar\\baz', '/foo/bar/baz'],
      ['//foo\\bar\\baz', '/foo/bar/baz'],
      ['/user/docs/Letter.txt', '/user/docs/Letter.txt'],
      ['\\?\\C:\\user\\docs\\Letter.txt', '/?/C:/user/docs/Letter.txt'],
      ['\\?\\UNC\\Server01\\user\\docs\\Letter.txt', '/?/UNC/Server01/user/docs/Letter.txt'],
      ['\\\\.\\CdRomX', '//./CdRomX'],
      ['\\\\.\\PhysicalDiskX', '//./PhysicalDiskX'],
      ['\\\\?\\C:\\user\\docs\\Letter.txt', '//?/C:/user/docs/Letter.txt'],
      ['\\\\?\\UNC\\Server01\\user\\docs\\Letter.txt', '//?/UNC/Server01/user/docs/Letter.txt'],
      ['\\Server01\\user\\docs\\Letter.txt', '/Server01/user/docs/Letter.txt'],
      ['C:\\user\\docs\\Letter.txt', 'C:/user/docs/Letter.txt'],
      ['C:\\user\\docs\\somefile.ext:alternate_stream_name', 'C:/user/docs/somefile.ext:alternate_stream_name'],
      ['C:Letter.txt', 'C:Letter.txt'],
      ['E://foo//bar//baz', 'E:/foo/bar/baz'],
      ['E://foo//bar//baz//', 'E:/foo/bar/baz'],
      ['E://foo//bar//baz//////', 'E:/foo/bar/baz'],
      ['E://foo/bar\\baz', 'E:/foo/bar/baz'],
      ['E://foo\\bar\\baz', 'E:/foo/bar/baz'],
      ['E:/foo/bar/baz/', 'E:/foo/bar/baz'],
      ['E:/foo/bar/baz///', 'E:/foo/bar/baz'],
      ['E:\\\\foo/bar\\baz', 'E:/foo/bar/baz'],
      ['foo\\bar\\baz', 'foo/bar/baz'],
      ['foo\\bar\\baz\\', 'foo/bar/baz'],
      ['foo\\bar\\baz\\\\\\', 'foo/bar/baz'],
    ];

    units.forEach(function(unit) {
      it('should normalize ' + unit[0], function() {
        assert.equal(normalize(unit[0]), unit[1]);
      });
    });
  });

  describe('keep trailing slashes', function() {
    var units = [
      ['\\', '/'],
      ['foo\\bar\\baz\\', 'foo/bar/baz/'],
      ['foo\\\\bar\\\\baz\\\\', 'foo/bar/baz/'],
      ['foo//bar//baz//', 'foo/bar/baz/'],
      ['foo/bar/baz/', 'foo/bar/baz/'],
      ['./foo/bar/baz/', './foo/bar/baz/']
    ];

    units.forEach(function(unit) {
      it('should normalize ' + unit[0], function() {
        assert.equal(normalize(unit[0], false), unit[1]);
      });
    });
  });
});