Update the license headers throughout the repository to reference Google LLC rather than Google Inc, for the required license headers. PR Close #37205
		
			
				
	
	
		
			84 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			84 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| /**
 | |
|  * @license
 | |
|  * Copyright Google LLC All Rights Reserved.
 | |
|  *
 | |
|  * Use of this source code is governed by an MIT-style license that can be
 | |
|  * found in the LICENSE file at https://angular.io/license
 | |
|  */
 | |
| import {computeTaskDependencies, sortTasksByPriority} from '../../src/execution/tasks/utils';
 | |
| import {createTasksAndGraph} from './helpers';
 | |
| 
 | |
| describe('execution utils', () => {
 | |
|   describe('computeTaskDependencies()', () => {
 | |
|     it('should throw, if there are multiple tasks that generate typings for a single entry-point',
 | |
|        () => {
 | |
|          const {tasks, graph} = createTasksAndGraph(2, 2, {
 | |
|            0: [],   // Entry-point #0 does not depend on anything.
 | |
|            1: [0],  // Entry-point #1 depends on #0.
 | |
|          });
 | |
|          tasks[1].processDts = true;  // Tweak task #1 to also generate typings.
 | |
| 
 | |
|          expect(() => computeTaskDependencies(tasks, graph))
 | |
|              .toThrowError(
 | |
|                  'Invariant violated: Multiple tasks are assigned generating typings for ' +
 | |
|                  '\'/path/to/entry/point/0\':\n' +
 | |
|                  '  - {entryPoint: entry-point-0, formatProperty: prop-0, processDts: true}\n' +
 | |
|                  '  - {entryPoint: entry-point-0, formatProperty: prop-1, processDts: true}');
 | |
|        });
 | |
| 
 | |
|     it('should add non-typings tasks to the dependents of typings tasks', () => {
 | |
|       const {tasks, graph} = createTasksAndGraph(2, 2, {
 | |
|         0: [],   // entry-point-0 does not depend on anything.
 | |
|         1: [0],  // entry-point-1 depends on entry-point-0.
 | |
|       });
 | |
| 
 | |
|       const dependents = computeTaskDependencies(tasks, graph);
 | |
|       // entry-point-0
 | |
|       expect(dependents.get(tasks[0])).toEqual(new Set([
 | |
|         tasks[1],  // non-typings task for entry-point-0
 | |
|         tasks[2],  // typings task for entry-point-1, which depends upon entry-point-0
 | |
|         tasks[3],  // non-typings task for entry-point-1, which depends upon entry-point-0
 | |
|       ]));
 | |
|       expect(dependents.get(tasks[1])).toBeUndefined();
 | |
| 
 | |
|       // entry-point-1
 | |
|       expect(dependents.get(tasks[2])).toEqual(new Set([
 | |
|         tasks[3],  // non-typings task for entry-point-1
 | |
|       ]));
 | |
|       expect(dependents.get(tasks[3])).toBeUndefined();
 | |
|     });
 | |
|   });
 | |
| 
 | |
|   describe('sortTasksByPriority', () => {
 | |
|     it('should return the tasks in their original order if there are no dependencies', () => {
 | |
|       const {tasks} = createTasksAndGraph(3, 1);
 | |
|       const sortedTasks = sortTasksByPriority(tasks, new Map());
 | |
|       expect(sortedTasks).toEqual(tasks);
 | |
|     });
 | |
| 
 | |
|     it('should return the tasks ordered by how many tasks depend upon them', () => {
 | |
|       // Before sort:
 | |
|       // 0 blocks [3]
 | |
|       // 1 blocks [2, 3]
 | |
|       // 2 blocks []
 | |
|       // 3 blocks [4]
 | |
|       // 4 blocks []
 | |
|       const {tasks, graph} = createTasksAndGraph(5, 1, {0: [], 1: [], 2: [1], 3: [0, 1], 4: [3]});
 | |
|       const sortedTasks = sortTasksByPriority(tasks, computeTaskDependencies(tasks, graph));
 | |
|       // After sort:
 | |
|       // 1 blocks [2, 3]
 | |
|       // 0 blocks [3]
 | |
|       // 3 blocks [4]
 | |
|       // 2 blocks []
 | |
|       // 4 blocks []
 | |
|       expect(sortedTasks).toEqual([
 | |
|         tasks[1],
 | |
|         tasks[0],
 | |
|         tasks[3],
 | |
|         tasks[2],
 | |
|         tasks[4],
 | |
|       ]);
 | |
|     });
 | |
|   });
 | |
| });
 |