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'
$ basename aaa/bbb bbb
bbb
$ basename aaa/bbb /bbb
bbb
$ basename aaa/bbb a/bbb
bbb
When path is non-string
When ext matches path's tail and contains a path separator.
FYI,
basenamecommand behaves as follows (I checked ondarwinandlinux):