Skip to content

Inconsistant URLs #8

@Hypercubed

Description

@Hypercubed

#6 solved the issue of relative or absolute POSIX paths being inadvertently converted to contain Windows path separators by path.resolve. However, inconsistency issues still remain in the current version.

I ran several relative and absolute paths through datapackage-indentifier on both OSX and Windows. The parsing code is:

const identifier = require('datapackage-identifier');
const id = input => identifier.parse(input).dataPackageJsonUrl;

The inputs and expected results are:

input POSIX Expected Win32 Expected
datasets/gdp/ file:///Users/test/datasets/gdp/datapackage.json file:///C:/Users/test/datasets/gdp/datapackage.json
datasets\gdp\ file:///Users/test/datasets/gdp/datapackage.json file:///C:/Users/test/datasets/gdp/datapackage.json
/datasets/gdp/ file:///datasets/gdp/datapackage.json file:///datasets/gdp/datapackage.json
C:\datasets\gdp\ file:///C:/datasets/gdp/datapackage.json file:///C:/datasets/gdp/datapackage.json
/C:/datasets/gdp/ file:///C:/datasets/gdp/datapackage.json file:///C:/datasets/gdp/datapackage.json

Note that I expect relative paths (rows 1 and 2) will vary between systems. I expect consistent results, regardless of system, for absolute paths (rows 3, 4, 5). Also, I always expect a valid browser-compatible file:/// URL (with forward slashes).

OSX result using datapackage-identifier v0.4.2:

input POSIX Expected v0.4.2 OSX
datasets/gdp/ file:///Users/test/datasets/gdp/datapackage.json file:///Users/test/datasets/gdp/datapackage.json
datasets\gdp\ file:///Users/test/datasets/gdp/datapackage.json /datapackage.json *
/datasets/gdp/ file:///datasets/gdp/datapackage.json file:///datasets/gdp/datapackage.json
C:\datasets\gdp\ file:///C:/datasets/gdp/datapackage.json /datapackage.json *
/C:/datasets/gdp/ file:///C:/datasets/gdp/datapackage.json file:///C:/datasets/gdp/datapackage.json

Relative and absolute paths with Windows path separator (rows 2 & 4) fail on OSX.

Windows results using datapackage-identifier v0.4.2 and v0.4.1:

input Expected Windows v0.4.2 Windows v0.4.1 Windows
datasets/gdp/ file:///C:/Users/test/datasets/gdp/datapackage.json file://C:\Users\test\datasets\gdp\datapackage.json * file://C:\Users\test\datasets\gdp\datapackage.json *
datasets\gdp\ file:///C:/Users/test/datasets/gdp/datapackage.json /datapackage.json * /datapackage.json *
/datasets/gdp/ file:///datasets/gdp/datapackage.json file:///datasets/gdp/datapackage.json file://C:\datasets\gdp/datapackage.json *
C:\datasets\gdp\ file:///C:/datasets/gdp/datapackage.json /datapackage.json * /datapackage.json *
/C:/datasets/gdp/ file:///C:/datasets/gdp/datapackage.json file:///C:/datasets/gdp/datapackage.json file://C:\C:\datasets\gdp/datapackage.json *

The POSIX style relative paths (row 1) return an invalid URL. As seen on OSX, relative and absolute paths with Windows path separators (rows 2 & 4) also fail on windows. The v0.4.2 release fixes the issue with absolute paths with POSIX path separators (rows 3 and 5).

Possible solution

sindresorhus/file-url uses path.resolve then converts all paths to use POSIX path separators using String.prototype.replace.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions