You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					40 lines
				
				1.2 KiB
			
		
		
			
		
	
	
					40 lines
				
				1.2 KiB
			| 
								 
											4 years ago
										 
									 | 
							
								'use strict';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Object.defineProperty(exports, '__esModule', {
							 | 
						||
| 
								 | 
							
								  value: true
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								exports.default = convertDescriptorToString;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * This source code is licensed under the MIT license found in the
							 | 
						||
| 
								 | 
							
								 * LICENSE file in the root directory of this source tree.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								// See: https://github.com/facebook/jest/pull/5154
							 | 
						||
| 
								 | 
							
								function convertDescriptorToString(descriptor) {
							 | 
						||
| 
								 | 
							
								  if (
							 | 
						||
| 
								 | 
							
								    typeof descriptor === 'string' ||
							 | 
						||
| 
								 | 
							
								    typeof descriptor === 'number' ||
							 | 
						||
| 
								 | 
							
								    descriptor === undefined
							 | 
						||
| 
								 | 
							
								  ) {
							 | 
						||
| 
								 | 
							
								    return descriptor;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (typeof descriptor !== 'function') {
							 | 
						||
| 
								 | 
							
								    throw new Error('describe expects a class, function, number, or string.');
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (descriptor.name !== undefined) {
							 | 
						||
| 
								 | 
							
								    return descriptor.name;
							 | 
						||
| 
								 | 
							
								  } // Fallback for old browsers, pardon Flow
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  const stringified = descriptor.toString();
							 | 
						||
| 
								 | 
							
								  const typeDescriptorMatch = stringified.match(/class|function/);
							 | 
						||
| 
								 | 
							
								  const indexOfNameSpace = // @ts-ignore: typeDescriptorMatch exists
							 | 
						||
| 
								 | 
							
								    typeDescriptorMatch.index + typeDescriptorMatch[0].length;
							 | 
						||
| 
								 | 
							
								  const indexOfNameAfterSpace = stringified.search(/\(|\{/);
							 | 
						||
| 
								 | 
							
								  const name = stringified.substring(indexOfNameSpace, indexOfNameAfterSpace);
							 | 
						||
| 
								 | 
							
								  return name.trim();
							 | 
						||
| 
								 | 
							
								}
							 |