`quickinfo` is used for hover tooltip. `definition` is used for "Go to definition". PR Close #29990
		
			
				
	
	
		
			35 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			35 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import { writeFileSync, readFileSync } from 'fs';
 | 
						|
 | 
						|
const goldens: string[] = process.argv.slice(2);
 | 
						|
 | 
						|
export const goldenMatcher: jasmine.CustomMatcherFactories = {
 | 
						|
  toMatchGolden(util: jasmine.MatchersUtil): jasmine.CustomMatcher {
 | 
						|
    return {
 | 
						|
      compare(actual: {command: string}, golden: string): jasmine.CustomMatcherResult {
 | 
						|
        if (goldens.includes(golden)) {
 | 
						|
          console.error(`Writing golden file ${golden}`);
 | 
						|
          writeFileSync(`./goldens/${golden}`, JSON.stringify(actual, null, 2));
 | 
						|
          return { pass : true };
 | 
						|
        }
 | 
						|
        const content = readFileSync(`./goldens/${golden}`, 'utf-8');
 | 
						|
        const expected = JSON.parse(content.replace("${PWD}", process.env.PWD!));
 | 
						|
        const pass = util.equals(actual, expected);
 | 
						|
        return {
 | 
						|
          pass,
 | 
						|
          message: `Expected ${JSON.stringify(actual, null, 2)} to match golden ` +
 | 
						|
            `${JSON.stringify(expected, null, 2)}.\n` +
 | 
						|
            `To generate new golden file, run "yarn golden ${golden}".`,
 | 
						|
        };
 | 
						|
      }
 | 
						|
    };
 | 
						|
  },
 | 
						|
};
 | 
						|
 | 
						|
declare global {
 | 
						|
  namespace jasmine {
 | 
						|
    interface Matchers<T> {
 | 
						|
      toMatchGolden(golden: string): void
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 |