mirror of https://github.com/webpack/webpack.git
				
				
				
			
		
			
				
	
	
		
			93 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			93 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
| "use strict";
 | |
| 
 | |
| const identifierUtil = require("../lib/util/identifier");
 | |
| 
 | |
| describe("util/identifier", () => {
 | |
| 	describe("makePathsRelative", () => {
 | |
| 		describe("given a context and a pathConstruct", () => {
 | |
| 			it("computes the correct relative results for the path construct", () => {
 | |
| 				[
 | |
| 					[
 | |
| 						"/some/dir/",
 | |
| 						"/some/dir/to/somewhere|some/other/dir!../more/dir",
 | |
| 						"./to/somewhere|some/other/dir!../more/dir"
 | |
| 					],
 | |
| 					[
 | |
| 						"/dir/",
 | |
| 						"/dir/to/somewhere|some/other/dir!../more/dir",
 | |
| 						"./to/somewhere|some/other/dir!../more/dir"
 | |
| 					],
 | |
| 					[
 | |
| 						"/",
 | |
| 						"/dir/to/somewhere|some/other/dir!../more/dir",
 | |
| 						"./dir/to/somewhere|some/other/dir!../more/dir"
 | |
| 					],
 | |
| 					[
 | |
| 						"c:\\some\\dir\\",
 | |
| 						"c:\\some\\dir\\to\\somewhere|some/other/dir!../more/dir",
 | |
| 						"./to/somewhere|some/other/dir!../more/dir"
 | |
| 					],
 | |
| 					[
 | |
| 						"c:\\some\\dir\\",
 | |
| 						"C:\\some\\dir\\to\\somewhere|some/other/dir!../more/dir",
 | |
| 						"./to/somewhere|some/other/dir!../more/dir"
 | |
| 					],
 | |
| 					[
 | |
| 						"C:\\some\\dir",
 | |
| 						"C:\\some\\dir\\to\\somewhere|some/other/dir!../more/dir",
 | |
| 						"./to/somewhere|some/other/dir!../more/dir"
 | |
| 					],
 | |
| 					[
 | |
| 						"C:\\\\some\\dir",
 | |
| 						"c:\\some\\\\dir\\to\\\\somewhere|some/other/dir!../more/dir",
 | |
| 						"./to/somewhere|some/other/dir!../more/dir"
 | |
| 					],
 | |
| 					["/dir", "/dir/to/somewhere??ref-123", "./to/somewhere??ref-123"]
 | |
| 				].forEach(([context, pathConstruct, expected]) => {
 | |
| 					expect(identifierUtil.makePathsRelative(context, pathConstruct)).toBe(
 | |
| 						expected
 | |
| 					);
 | |
| 				});
 | |
| 			});
 | |
| 		});
 | |
| 	});
 | |
| 
 | |
| 	describe("getUndoPath", () => {
 | |
| 		const cases = [
 | |
| 			["file.js", ""],
 | |
| 			["file.js", "./", true],
 | |
| 			["dir/file.js", "../"],
 | |
| 			["dir/file.js", "../", true],
 | |
| 			["./file.js", ""],
 | |
| 			[".dir/file.js", "../"],
 | |
| 			["./dir/file.js", "../"],
 | |
| 			["./dir/././file.js", "../"],
 | |
| 			["./dir/../file.js", ""],
 | |
| 			["./dir/../file.js", "./", true],
 | |
| 			["../file.js", "d/"],
 | |
| 			["../file.js", "./d/", true],
 | |
| 			["../dir/file.js", "../d/"],
 | |
| 			[".././../dir/file.js", "../c/d/"],
 | |
| 			["./.././../dir/file.js", "../c/d/"],
 | |
| 			["../dir/../file.js", "d/"],
 | |
| 			["../dir/../file.js", "./d/", true]
 | |
| 		];
 | |
| 		for (const [filename, expected, enforceRelative] of cases) {
 | |
| 			it(`should handle ${filename} correctly${
 | |
| 				enforceRelative ? " (enforced relative path)" : ""
 | |
| 			}`, () => {
 | |
| 				for (const outputPath of [
 | |
| 					"/a/b/c/d",
 | |
| 					"C:\\a\\b\\c\\d",
 | |
| 					"/a/b/c/d/",
 | |
| 					"C:\\a\\b\\c\\d\\"
 | |
| 				]) {
 | |
| 					expect(
 | |
| 						identifierUtil.getUndoPath(filename, outputPath, enforceRelative)
 | |
| 					).toBe(expected);
 | |
| 				}
 | |
| 			});
 | |
| 		}
 | |
| 	});
 | |
| });
 |