Skip to content

Why path.basename behaves differently by platform? #6587

@sttk

Description

@sttk
  • Version: 0.10, 0.11, 4, 5, 6
  • Platform: darwin, linux, win32
  • Subsystem: path

  1. When path is non-string

    [darwin] path.basename(null);  // => TypeError
    [linux]  path.basename(null);  // => 'null'
    [win32]  path.basename(null);  // => 'null'
    
    [darwin] path.basename(123);  // => TypeError
    [linux]  path.basename(123);  // => '123'
    [win32]  path.basename(123);  // => '123'
  2. When ext matches path's tail and contains a path separator.

    [darwin] path.basename('aaa/bbb', '/bbb');   // => ''
    [linux]  path.basename('aaa/bbb', '/bbb');   // => ''
    [win32]  path.basename('aaa/bbb', '/bbb');   // => 'bbb'
    [win32]  path.basename('aaa\\bbb', '\\bbb'); // => 'bbb'
    
    [darwin] path.basename('aaa/bbb', 'a/bbb');   // => ''
    [linux]  path.basename('aaa/bbb', 'a/bbb');   // => ''
    [win32]  path.basename('aaa/bbb', 'a/bbb');   // => 'bbb'
    [win32]  path.basename('aaa\\bbb', 'a\\bbb'); // => 'bbb'

    FYI, basename command behaves as follows (I checked on darwin and linux):

    $ basename aaa/bbb bbb
    bbb
    $ basename aaa/bbb /bbb
    bbb
    $ basename aaa/bbb a/bbb
    bbb
    

Metadata

Metadata

Assignees

No one assigned

    Labels

    pathIssues and PRs related to the path subsystem.

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions