Based on discussion that happened on the PR that introduced the size-tracking tool, we want to have another threshold for the raw byte difference. This allows us to better control for which changes the size-tracking tool should report a difference. See: https://github.com/angular/angular/pull/30070#discussion_r278332315 PR Close #30257
		
			
				
	
	
		
			129 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			129 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| /**
 | |
|  * @license
 | |
|  * Copyright Google Inc. 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 {compareFileSizeData} from './file_size_compare';
 | |
| 
 | |
| describe('file size compare', () => {
 | |
| 
 | |
|   it('should report if size entry differ by more than the specified max percentage diff', () => {
 | |
|     const diffs = compareFileSizeData(
 | |
|         {
 | |
|           unmapped: 0,
 | |
|           files: {
 | |
|             size: 50,
 | |
|             'a.ts': 50,
 | |
|           }
 | |
|         },
 | |
|         {
 | |
|           unmapped: 0,
 | |
|           files: {
 | |
|             size: 75,
 | |
|             'a.ts': 75,
 | |
|           }
 | |
|         },
 | |
|         {maxPercentageDiff: 0, maxByteDiff: 25});
 | |
| 
 | |
|     expect(diffs.length).toBe(2);
 | |
|     expect(diffs[0].filePath).toBe('/');
 | |
|     expect(diffs[0].message).toMatch(/40.00% from the expected size/);
 | |
|     expect(diffs[1].filePath).toBe('/a.ts');
 | |
|     expect(diffs[1].message).toMatch(/40.00% from the expected size/);
 | |
|   });
 | |
| 
 | |
|   it('should report if size entry differ by more than the specified max byte diff', () => {
 | |
|     const diffs = compareFileSizeData(
 | |
|         {
 | |
|           unmapped: 0,
 | |
|           files: {
 | |
|             size: 1000,
 | |
|             'a.ts': 1000,
 | |
|           }
 | |
|         },
 | |
|         {
 | |
|           unmapped: 0,
 | |
|           files: {
 | |
|             size: 1055,
 | |
|             'a.ts': 1055,
 | |
|           }
 | |
|         },
 | |
|         {maxPercentageDiff: 6, maxByteDiff: 50});
 | |
| 
 | |
|     expect(diffs.length).toBe(2);
 | |
|     expect(diffs[0].filePath).toBe('/');
 | |
|     expect(diffs[0].message).toMatch(/55B from the expected size/);
 | |
|     expect(diffs[1].filePath).toBe('/a.ts');
 | |
|     expect(diffs[1].message).toMatch(/55B from the expected size/);
 | |
|   });
 | |
| 
 | |
|   it('should report if unmapped bytes differ by more than specified threshold', () => {
 | |
|     const diffs = compareFileSizeData(
 | |
|         {unmapped: 1000, files: {size: 0}}, {unmapped: 1055, files: {size: 0}},
 | |
|         {maxPercentageDiff: 6, maxByteDiff: 50});
 | |
| 
 | |
|     expect(diffs.length).toBe(1);
 | |
|     expect(diffs[0].filePath).toBe('<unmapped>');
 | |
|     expect(diffs[0].message).toMatch(/55B from the expected size/);
 | |
|   });
 | |
| 
 | |
|   it('should not report if size percentage difference does not exceed threshold', () => {
 | |
|     const diffs = compareFileSizeData(
 | |
|         {
 | |
|           unmapped: 0,
 | |
|           files: {
 | |
|             size: 50,
 | |
|             'a.ts': 50,
 | |
|           }
 | |
|         },
 | |
|         {
 | |
|           unmapped: 0,
 | |
|           files: {
 | |
|             size: 75,
 | |
|             'a.ts': 75,
 | |
|           }
 | |
|         },
 | |
|         {maxPercentageDiff: 40, maxByteDiff: 25});
 | |
| 
 | |
|     expect(diffs.length).toBe(0);
 | |
|   });
 | |
| 
 | |
| 
 | |
|   it('should report if expected file size data misses a file size entry', () => {
 | |
|     const diffs = compareFileSizeData(
 | |
|         {
 | |
|           unmapped: 0,
 | |
|           files: {
 | |
|             size: 101,
 | |
|             'a.ts': 100,
 | |
|             'b.ts': 1,
 | |
|           }
 | |
|         },
 | |
|         {unmapped: 0, files: {size: 100, 'a.ts': 100}}, {maxByteDiff: 10, maxPercentageDiff: 1});
 | |
| 
 | |
|     expect(diffs.length).toBe(1);
 | |
|     expect(diffs[0].filePath).toBe('/b.ts');
 | |
|     expect(diffs[0].message).toMatch(/Unexpected file.*not part of golden./);
 | |
|   });
 | |
| 
 | |
|   it('should report if actual file size data misses an expected file size entry', () => {
 | |
|     const diffs = compareFileSizeData(
 | |
|         {
 | |
|           unmapped: 0,
 | |
|           files: {
 | |
|             size: 100,
 | |
|             'a.ts': 100,
 | |
|           }
 | |
|         },
 | |
|         {unmapped: 0, files: {size: 101, 'a.ts': 100, 'b.ts': 1}},
 | |
|         {maxByteDiff: 10, maxPercentageDiff: 1});
 | |
| 
 | |
|     expect(diffs.length).toBe(1);
 | |
|     expect(diffs[0].filePath).toBe('/b.ts');
 | |
|     expect(diffs[0].message).toMatch(/Expected file.*not included./);
 | |
|   });
 | |
| });
 |