1ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik// Copyright 2015 The Chromium Authors. All rights reserved. 2ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik// Use of this source code is governed by a BSD-style license that can be 3ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik// found in the LICENSE file. 4ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik'use strict'; 5ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik 6ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craikvar assert = { 7ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik equal: function(first, second) { 8ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik if (first !== second) { 9ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik throw new Error('Assertion error: ' + JSON.stringify(first) + 10ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik ' !== ' + JSON.stringify(second)); 11ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik } 12ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik } 13ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik}; 14ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik 15ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craikfunction runTests() { 16ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik 17ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik var test_os_client = { 18ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik currentWorkingDirectory: '/a/b', 19ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik exists: function(fileName) { 20ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik return fileName === '/a/b/file_exists.html'; 21ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik } 22ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik }; 23ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik 24ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik var path_utils = new PathUtils(test_os_client); 25ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik assert.equal(path_utils.join('a', 'b'), 'a/b'); 26ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik assert.equal(path_utils.join('/a', 'b'), '/a/b'); 27ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik assert.equal(path_utils.join('/a/', 'b/'), '/a/b/'); 28ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik assert.equal(path_utils.join('/a', '/b/'), '/b/'); 29ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik assert.equal(path_utils.join('/a', './b/'), '/a/./b/'); 30ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik assert.equal(path_utils.join('/a/', './b/'), '/a/./b/'); 31ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik assert.equal(path_utils.join('../', 'b'), '../b'); 32ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik assert.equal(path_utils.join('../', 'b/'), '../b/'); 33ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik assert.equal(path_utils.join('a', 'b'), 'a/b'); 34ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik 35ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik assert.equal(path_utils.absPath('c'), '/a/b/c'); 36ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik assert.equal(path_utils.absPath('./c'), '/a/b/c'); 37ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik assert.equal(path_utils.absPath('./c/d'), '/a/b/c/d'); 38ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik 39ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik assert.equal(path_utils.relPath('/a/b/c', '/a/b'), 'c'); 40ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik 41ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik assert.equal(path_utils.relPath('/a/b/c/', '/a/b/c/'), '.'); 42ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik assert.equal(path_utils.relPath('/a/b/c', '/a/b/c/'), '.'); 43ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik assert.equal(path_utils.relPath('/a/b/c/', '/a/b/c'), '.'); 44ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik assert.equal(path_utils.relPath('/a/b/c', '/a/b/c'), '.'); 45ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik 46ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik assert.equal(path_utils.relPath('/a/b/c', '/a'), 'b/c'); 47ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik assert.equal(path_utils.relPath('/a/b/c', '/a/'), 'b/c'); 48ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik 49ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik assert.equal(path_utils.relPath('/a/b/c', '/b/c/'), '../../a/b/c'); 50ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik assert.equal(path_utils.relPath('/a/b/c', '/b/c'), '../../a/b/c'); 51ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik assert.equal(path_utils.relPath('/a/b/c/', '/b/c/'), '../../a/b/c'); 52ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik assert.equal(path_utils.relPath('/a/b/c/', '/b/c'), '../../a/b/c'); 53ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik 54ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik 55ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik assert.equal(path_utils.exists('/a/b/file_exists.html'), true); 56ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik assert.equal(path_utils.exists('file_exists.html'), true); 57ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik assert.equal(path_utils.exists('./file_exists.html'), true); 58ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik assert.equal(path_utils.exists('/a/file_does_not_exists.html'), false); 59ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik} 60