167 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			167 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| // Copyright 2014 Simon Lydell
 | |
| // X11 (“MIT”) Licensed. (See LICENSE.)
 | |
| 
 | |
| var path         = require("path")
 | |
| var test         = require("tape")
 | |
| var asyncify     = require("simple-asyncify")
 | |
| var common       = require("./common")
 | |
| var u            = common.u
 | |
| var read         = common.read
 | |
| var identity     = common.identity
 | |
| 
 | |
| var sourceMapResolve = require("../")
 | |
| 
 | |
| path.sep = "\\"
 | |
| 
 | |
| 
 | |
| function testResolveSourceMap(method, sync) {
 | |
|   return function(t) {
 | |
|     var wrap = (sync ? identity : asyncify)
 | |
| 
 | |
|     var codeUrl = "c:\\a\\b\\c\\foo.js"
 | |
| 
 | |
|     t.plan(3 * 2)
 | |
| 
 | |
|     if (sync) {
 | |
|       method = asyncify(method)
 | |
|     }
 | |
| 
 | |
|     var map = {}
 | |
|     var readMap = wrap(read(JSON.stringify(map)))
 | |
| 
 | |
|     method(u("foo.js.map"), codeUrl, readMap, function(error, result) {
 | |
|       t.error(error)
 | |
|       t.deepEqual(result, {
 | |
|         sourceMappingURL:  "foo.js.map",
 | |
|         url:               "/a/b/c/foo.js.map",
 | |
|         sourcesRelativeTo: "/a/b/c/foo.js.map",
 | |
|         map:               map
 | |
|       })
 | |
|     })
 | |
| 
 | |
|     method(u("/foo.js.map"), codeUrl, readMap, function(error, result) {
 | |
|       t.error(error)
 | |
|       t.deepEqual(result, {
 | |
|         sourceMappingURL:  "/foo.js.map",
 | |
|         url:               "/foo.js.map",
 | |
|         sourcesRelativeTo: "/foo.js.map",
 | |
|         map:               map
 | |
|       })
 | |
|     })
 | |
| 
 | |
|     method(u("../foo.js.map"), codeUrl, readMap, function(error, result) {
 | |
|       t.error(error)
 | |
|       t.deepEqual(result, {
 | |
|         sourceMappingURL:  "../foo.js.map",
 | |
|         url:               "/a/b/foo.js.map",
 | |
|         sourcesRelativeTo: "/a/b/foo.js.map",
 | |
|         map:               map
 | |
|       })
 | |
|     })
 | |
| 
 | |
|   }
 | |
| }
 | |
| 
 | |
| test(".resolveSourceMap",     testResolveSourceMap(sourceMapResolve.resolveSourceMap,    false))
 | |
| 
 | |
| test(".resolveSourceMapSync", testResolveSourceMap(sourceMapResolve.resolveSourceMapSync, true))
 | |
| 
 | |
| 
 | |
| function testResolveSources(method, sync) {
 | |
|   return function(t) {
 | |
|     var wrap = (sync ? identity : asyncify)
 | |
| 
 | |
|     var mapUrl = "c:\\a\\b\\c\\foo.js.map"
 | |
| 
 | |
|     t.plan(1 * 3)
 | |
| 
 | |
|     if (sync) {
 | |
|       method = asyncify(method)
 | |
|     }
 | |
| 
 | |
|     var map = {
 | |
|       sources: ["foo.js", "/foo.js", "../foo.js"]
 | |
|     }
 | |
| 
 | |
|     method(map, mapUrl, wrap(identity), function(error, result) {
 | |
|       t.error(error)
 | |
|       t.deepEqual(result.sourcesResolved, ["/a/b/c/foo.js", "/foo.js", "/a/b/foo.js"])
 | |
|       t.deepEqual(result.sourcesContent,  ["/a/b/c/foo.js", "/foo.js", "/a/b/foo.js"])
 | |
|     })
 | |
| 
 | |
|   }
 | |
| }
 | |
| 
 | |
| test(".resolveSources",     testResolveSources(sourceMapResolve.resolveSources,    false))
 | |
| 
 | |
| test(".resolveSourcesSync", testResolveSources(sourceMapResolve.resolveSourcesSync, true))
 | |
| 
 | |
| 
 | |
| function testResolve(method, sync) {
 | |
|   return function(t) {
 | |
|     var wrap = (sync ? identity : asyncify)
 | |
|     var wrapMap = function(mapFn, fn) {
 | |
|       return wrap(function(url) {
 | |
|         if (/\.map$/.test(url)) {
 | |
|           return mapFn(url)
 | |
|         }
 | |
|         return fn(url)
 | |
|       })
 | |
|     }
 | |
| 
 | |
|     var codeUrl = "c:\\a\\b\\c\\foo.js"
 | |
| 
 | |
|     t.plan(3 * 2)
 | |
| 
 | |
|     if (sync) {
 | |
|       method = asyncify(method)
 | |
|     }
 | |
| 
 | |
|     var map = {
 | |
|       sources: ["foo.js", "/foo.js", "../foo.js"]
 | |
|     }
 | |
|     var readMap = wrapMap(read(JSON.stringify(map)), identity)
 | |
| 
 | |
|     method(u("foo.js.map"), codeUrl, readMap, function(error, result) {
 | |
|       t.error(error)
 | |
|       t.deepEqual(result, {
 | |
|         sourceMappingURL:  "foo.js.map",
 | |
|         url:               "/a/b/c/foo.js.map",
 | |
|         sourcesRelativeTo: "/a/b/c/foo.js.map",
 | |
|         map:               map,
 | |
|         sourcesResolved:   ["/a/b/c/foo.js", "/foo.js", "/a/b/foo.js"],
 | |
|         sourcesContent:    ["/a/b/c/foo.js", "/foo.js", "/a/b/foo.js"]
 | |
|       })
 | |
|     })
 | |
| 
 | |
|     method(u("/foo.js.map"), codeUrl, readMap, function(error, result) {
 | |
|       t.error(error)
 | |
|       t.deepEqual(result, {
 | |
|         sourceMappingURL:  "/foo.js.map",
 | |
|         url:               "/foo.js.map",
 | |
|         sourcesRelativeTo: "/foo.js.map",
 | |
|         map:               map,
 | |
|         sourcesResolved:   ["/foo.js", "/foo.js", "/foo.js"],
 | |
|         sourcesContent:    ["/foo.js", "/foo.js", "/foo.js"]
 | |
|       })
 | |
|     })
 | |
| 
 | |
|     method(u("../foo.js.map"), codeUrl, readMap, function(error, result) {
 | |
|       t.error(error)
 | |
|       t.deepEqual(result, {
 | |
|         sourceMappingURL:  "../foo.js.map",
 | |
|         url:               "/a/b/foo.js.map",
 | |
|         sourcesRelativeTo: "/a/b/foo.js.map",
 | |
|         map:               map,
 | |
|         sourcesResolved:   ["/a/b/foo.js", "/foo.js", "/a/foo.js"],
 | |
|         sourcesContent:    ["/a/b/foo.js", "/foo.js", "/a/foo.js"]
 | |
|       })
 | |
|     })
 | |
| 
 | |
|   }
 | |
| }
 | |
| 
 | |
| test(".resolve",     testResolve(sourceMapResolve.resolve,    false))
 | |
| 
 | |
| test(".resolveSync", testResolve(sourceMapResolve.resolveSync, true))
 |