{
  "directory resolve": {
    "directroy with package.json": {
      "input": "./fixtures/module/",
      "path": "/fixtures/module/main.js"
    },

    "resolve without file ext": {
      "input": "./fixtures/module/main",
      "path": "/fixtures/module/main.js"
    },

    "resolve with file ext": {
      "input": "./fixtures/module/main.js",
      "path": "/fixtures/module/main.js"
    },

    "resolve with wrong file ext": {
      "input": "./fixtures/module/main.json",
      "path": null
    },

    "resolve with double file ext": {
      "input": "./fixtures/double.json",
      "path": "/fixtures/double.json.js"
    },

    "directroy with index folder": {
      "input": "./fixtures/",
      "path": null
    },

    "directroy with index.js file": {
      "input": "./fixtures/index/",
      "path": "/fixtures/index/index.js"
    },

    "directroy with index.json file": {
      "input": "./fixtures/json_index/",
      "path": "/fixtures/json_index/index.json"
    },

    "path starting with slash": {
      "input": "/fixtures/index",
      "path": "/fixtures/index/index.js"
    }
  },

  "simple module resolve": {

    "absolute path in package.join module": {
      "input": "absolute_main",
      "path": null
    },

    "relative path in package.join module": {
      "input": "relative_main",
      "path": "/node_modules/relative_main/main.js"
    },

    "default index file": {
      "input": "default_index",
      "path": "/node_modules/default_index/index.js"
    },

    "default index.js when package.json has no main property": {
      "input": "default_index_package",
      "path": "/node_modules/default_index_package/index.js"
    },

    "default index file package.json point to directroy": {
      "input": "index_directory_package",
      "path": "/node_modules/index_directory_package/index/index.js"
    },

    "default index directroy": {
      "input": "index_directroy",
      "path": null
    },

    "missing index.js file": {
      "input": "missing_index",
      "path": null
    },

    "missing index.js file with package.json": {
      "input": "missing_index_package",
      "path": null
    },

    "missing main.js file with package.json": {
      "input": "missing_index_package",
      "path": null
    },

    "file ext order": {
      "input": "ext_order",
      "path": "/node_modules/ext_order/index.js"
    },

    "input type order": {
      "input": "type_order",
      "path": "/node_modules/type_order/main.js"
    },

    "resolve no directroy module": {
      "input": "file_only.js",
      "path": "/node_modules/file_only.js"
    },

    "resolve no directroy module without ext": {
      "input": "file_only",
      "path": "/node_modules/file_only.js"
    },

    "package.json pointing to dir with package.json": {
      "input": "double_package",
      "path": null
    },

    "package.json pointing a sibling directroy": {
      "input": "parent_package",
      "path": "/node_modules/default_index/index.js"
    }
  },

  "module subpath resolve": {
    "simple module request, main before index": {
      "input": "subfile",
      "path": "/node_modules/subfile/main.js"
    },

    "resolve missing subfile": {
      "input": "subfile/missing.js",
      "path": null
    },

    "resolve index file": {
      "input": "subfile/index.js",
      "path": "/node_modules/subfile/index.js"
    },

    "resolve main file": {
      "input": "subfile/main.js",
      "path": "/node_modules/subfile/main.js"
    },

    "resolve main without ext": {
      "input": "subfile/main",
      "path": "/node_modules/subfile/main.js"
    },

    "resolve other file": {
      "input": "subfile/file.js",
      "path": "/node_modules/subfile/file.js"
    },

    "resolve subfile in directory": {
      "input": "subfile/lib/subfile.js",
      "path": "/node_modules/subfile/lib/subfile.js"
    },

    "resolve subfile in directory": {
      "input": "subfile/lib/subfile.js",
      "path": "/node_modules/subfile/lib/subfile.js"
    },

    "resolve subfile in directory without ext": {
      "input": "subfile/lib/subfile",
      "path": "/node_modules/subfile/lib/subfile.js"
    },

    "resolve index.js in subdir": {
      "input": "subfile/lib/subdir",
      "path": "/node_modules/subfile/lib/subdir/index.js"
    },

    "resolve subdir with package.json file": {
      "input": "subfile/lib",
      "path": "/node_modules/subfile/lib/subdir/index.js"
    }
  },

  "module directory walking": {
    "module at another level than from is found": {
      "from": "level",
      "input": "another_level",
      "path": "/node_modules/another_level/index.js"
    },

    "module will fallback to another level, if endpoint not wasn't found": {
      "from": "level",
      "input": "fallback",
      "path": "/node_modules/fallback/index.js"
    },

    "module subdir is resolved in a main faulty package": {
      "from": "level",
      "input": "fallback/file.js",
      "path": "/level/node_modules/fallback/file.js"
    },

    "module fallback with a faulty package.json": {
      "from": "level",
      "input": "faulty",
      "path": null,
      "error": {
        "message": "Unexpected token s"
      }
    }
  }
}