| /** |
| * @license |
| * Copyright (C) 2016 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| import '../test/common-test-setup-karma.js'; |
| import {SpecialFilePath} from '../constants/constants.js'; |
| import { |
| addUnmodifiedFiles, |
| computeDisplayPath, |
| isMagicPath, |
| specialFilePathCompare, truncatePath, |
| } from './path-list-util.js'; |
| |
| suite('path-list-utl tests', () => { |
| test('special sort', () => { |
| const testFiles = [ |
| '/a.h', |
| '/MERGE_LIST', |
| '/a.cpp', |
| '/COMMIT_MSG', |
| '/asdasd', |
| '/mrPeanutbutter.py', |
| ]; |
| assert.deepEqual( |
| testFiles.sort(specialFilePathCompare), |
| [ |
| '/COMMIT_MSG', |
| '/MERGE_LIST', |
| '/a.h', |
| '/a.cpp', |
| '/asdasd', |
| '/mrPeanutbutter.py', |
| ]); |
| }); |
| |
| test('special file path sorting', () => { |
| assert.deepEqual( |
| ['.b', '/COMMIT_MSG', '.a', 'file'].sort( |
| specialFilePathCompare), |
| ['/COMMIT_MSG', '.a', '.b', 'file']); |
| |
| assert.deepEqual( |
| ['.b', '/COMMIT_MSG', 'foo/bar/baz.cc', 'foo/bar/baz.h'].sort( |
| specialFilePathCompare), |
| ['/COMMIT_MSG', '.b', 'foo/bar/baz.h', 'foo/bar/baz.cc']); |
| |
| assert.deepEqual( |
| ['.b', '/COMMIT_MSG', 'foo/bar/baz.cc', 'foo/bar/baz.hpp'].sort( |
| specialFilePathCompare), |
| ['/COMMIT_MSG', '.b', 'foo/bar/baz.hpp', 'foo/bar/baz.cc']); |
| |
| assert.deepEqual( |
| ['.b', '/COMMIT_MSG', 'foo/bar/baz.cc', 'foo/bar/baz.hxx'].sort( |
| specialFilePathCompare), |
| ['/COMMIT_MSG', '.b', 'foo/bar/baz.hxx', 'foo/bar/baz.cc']); |
| |
| assert.deepEqual( |
| ['foo/bar.h', 'foo/bar.hxx', 'foo/bar.hpp'].sort( |
| specialFilePathCompare), |
| ['foo/bar.h', 'foo/bar.hpp', 'foo/bar.hxx']); |
| |
| // Regression test for Issue 4448. |
| assert.deepEqual( |
| [ |
| 'minidump/minidump_memory_writer.cc', |
| 'minidump/minidump_memory_writer.h', |
| 'minidump/minidump_thread_writer.cc', |
| 'minidump/minidump_thread_writer.h', |
| ].sort(specialFilePathCompare), |
| [ |
| 'minidump/minidump_memory_writer.h', |
| 'minidump/minidump_memory_writer.cc', |
| 'minidump/minidump_thread_writer.h', |
| 'minidump/minidump_thread_writer.cc', |
| ]); |
| |
| // Regression test for Issue 4545. |
| assert.deepEqual( |
| [ |
| 'task_test.go', |
| 'task.go', |
| ].sort(specialFilePathCompare), |
| [ |
| 'task.go', |
| 'task_test.go', |
| ]); |
| }); |
| |
| test('file display name', () => { |
| assert.equal(computeDisplayPath('/foo/bar/baz'), '/foo/bar/baz'); |
| assert.equal(computeDisplayPath('/foobarbaz'), '/foobarbaz'); |
| assert.equal(computeDisplayPath('/COMMIT_MSG'), 'Commit message'); |
| assert.equal(computeDisplayPath('/MERGE_LIST'), 'Merge list'); |
| }); |
| |
| test('isMagicPath', () => { |
| assert.isFalse(isMagicPath(undefined)); |
| assert.isFalse(isMagicPath('/foo.cc')); |
| assert.isTrue(isMagicPath('/COMMIT_MSG')); |
| assert.isTrue(isMagicPath('/MERGE_LIST')); |
| }); |
| |
| test('patchset level comments are hidden', () => { |
| const commentedPaths = { |
| [SpecialFilePath.PATCHSET_LEVEL_COMMENTS]: true, |
| 'file1.txt': true, |
| }; |
| |
| const files = {'file2.txt': {status: 'M'}}; |
| addUnmodifiedFiles(files, commentedPaths); |
| assert.equal(files['file1.txt'].status, 'U'); |
| assert.equal(files['file2.txt'].status, 'M'); |
| assert.isFalse(files.hasOwnProperty( |
| SpecialFilePath.PATCHSET_LEVEL_COMMENTS)); |
| }); |
| |
| test('truncatePath with long path should add ellipsis', () => { |
| let path = 'level1/level2/level3/level4/file.js'; |
| let shortenedPath = truncatePath(path); |
| // The expected path is truncated with an ellipsis. |
| const expectedPath = '\u2026/file.js'; |
| assert.equal(shortenedPath, expectedPath); |
| |
| path = 'level2/file.js'; |
| shortenedPath = truncatePath(path); |
| assert.equal(shortenedPath, expectedPath); |
| }); |
| |
| test('truncatePath with opt_threshold', () => { |
| let path = 'level1/level2/level3/level4/file.js'; |
| let shortenedPath = truncatePath(path, 2); |
| // The expected path is truncated with an ellipsis. |
| const expectedPath = '\u2026/level4/file.js'; |
| assert.equal(shortenedPath, expectedPath); |
| |
| path = 'level2/file.js'; |
| shortenedPath = truncatePath(path, 2); |
| assert.equal(shortenedPath, path); |
| }); |
| |
| test('truncatePath with short path should not add ellipsis', () => { |
| const path = 'file.js'; |
| const expectedPath = 'file.js'; |
| const shortenedPath = truncatePath(path); |
| assert.equal(shortenedPath, expectedPath); |
| }); |
| }); |
| |