mirror of
				https://github.com/actions/setup-node.git
				synced 2025-11-04 19:38:22 +08:00 
			
		
		
		
	Fix TypeScript error line/column (#125)
* Fix TypeScript error line/column * Adopt official pattern from VS Code * Minor cleanup * Add tests for tsc problem matcher Co-authored-by: Lukas Spieß <lumaxis@github.com>
This commit is contained in:
		
							
								
								
									
										11
									
								
								.github/tsc.json
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										11
									
								
								.github/tsc.json
									
									
									
									
										vendored
									
									
								
							@@ -4,12 +4,13 @@
 | 
			
		||||
            "owner": "tsc",
 | 
			
		||||
            "pattern": [
 | 
			
		||||
                {
 | 
			
		||||
                    "regexp": "^(?:\\s+\\d+\\>)?([^\\s].*)\\((\\d+|\\d+,\\d+|\\d+,\\d+,\\d+,\\d+)\\)\\s*:\\s+(error|warning|info)\\s+(\\w{1,2}\\d+)\\s*:\\s*(.*)$",
 | 
			
		||||
                    "regexp": "^([^\\s].*)[\\(:](\\d+)[,:](\\d+)(?:\\):\\s+|\\s+-\\s+)(error|warning|info)\\s+TS(\\d+)\\s*:\\s*(.*)$",
 | 
			
		||||
                    "file": 1,
 | 
			
		||||
                    "location": 2,
 | 
			
		||||
                    "severity": 3,
 | 
			
		||||
                    "code": 4,
 | 
			
		||||
                    "message": 5
 | 
			
		||||
                    "line": 2,
 | 
			
		||||
                    "column": 3,
 | 
			
		||||
                    "severity": 4,
 | 
			
		||||
                    "code": 5,
 | 
			
		||||
                    "message": 6
 | 
			
		||||
                }
 | 
			
		||||
            ]
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
@@ -8,15 +8,10 @@ import path from 'path';
 | 
			
		||||
import * as main from '../src/main';
 | 
			
		||||
import * as im from '../src/installer';
 | 
			
		||||
import * as auth from '../src/authutil';
 | 
			
		||||
import {context} from '@actions/github';
 | 
			
		||||
 | 
			
		||||
let nodeTestManifest = require('./data/versions-manifest.json');
 | 
			
		||||
let nodeTestDist = require('./data/node-dist-index.json');
 | 
			
		||||
 | 
			
		||||
// let matchers = require('../matchers.json');
 | 
			
		||||
// let matcherPattern = matchers.problemMatcher[0].pattern[0];
 | 
			
		||||
// let matcherRegExp = new RegExp(matcherPattern.regexp);
 | 
			
		||||
 | 
			
		||||
describe('setup-node', () => {
 | 
			
		||||
  let inputs = {} as any;
 | 
			
		||||
  let os = {} as any;
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										43
									
								
								__tests__/problem-matcher.test.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								__tests__/problem-matcher.test.ts
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,43 @@
 | 
			
		||||
describe('problem matcher tests', () => {
 | 
			
		||||
  it('tsc: matches TypeScript "pretty" error message', () => {
 | 
			
		||||
    const [
 | 
			
		||||
      {
 | 
			
		||||
        pattern: [{regexp}]
 | 
			
		||||
      }
 | 
			
		||||
    ] = require('../.github/tsc.json').problemMatcher;
 | 
			
		||||
    const exampleErrorMessage =
 | 
			
		||||
      "lib/index.js:23:42 - error TS2345: Argument of type 'A' is not assignable to parameter of type 'B'.";
 | 
			
		||||
 | 
			
		||||
    const match = exampleErrorMessage.match(new RegExp(regexp));
 | 
			
		||||
    expect(match).not.toBeNull();
 | 
			
		||||
    expect(match![1]).toEqual('lib/index.js');
 | 
			
		||||
    expect(match![2]).toEqual('23');
 | 
			
		||||
    expect(match![3]).toEqual('42');
 | 
			
		||||
    expect(match![4]).toEqual('error');
 | 
			
		||||
    expect(match![5]).toEqual('2345');
 | 
			
		||||
    expect(match![6]).toEqual(
 | 
			
		||||
      "Argument of type 'A' is not assignable to parameter of type 'B'."
 | 
			
		||||
    );
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  it('tsc: matches TypeScript error message from log file', () => {
 | 
			
		||||
    const [
 | 
			
		||||
      {
 | 
			
		||||
        pattern: [{regexp}]
 | 
			
		||||
      }
 | 
			
		||||
    ] = require('../.github/tsc.json').problemMatcher;
 | 
			
		||||
    const exampleErrorMessage =
 | 
			
		||||
      "lib/index.js(23,42): error TS2345: Argument of type 'A' is not assignable to parameter of type 'B'.";
 | 
			
		||||
 | 
			
		||||
    const match = exampleErrorMessage.match(new RegExp(regexp));
 | 
			
		||||
    expect(match).not.toBeNull();
 | 
			
		||||
    expect(match![1]).toEqual('lib/index.js');
 | 
			
		||||
    expect(match![2]).toEqual('23');
 | 
			
		||||
    expect(match![3]).toEqual('42');
 | 
			
		||||
    expect(match![4]).toEqual('error');
 | 
			
		||||
    expect(match![5]).toEqual('2345');
 | 
			
		||||
    expect(match![6]).toEqual(
 | 
			
		||||
      "Argument of type 'A' is not assignable to parameter of type 'B'."
 | 
			
		||||
    );
 | 
			
		||||
  });
 | 
			
		||||
});
 | 
			
		||||
		Reference in New Issue
	
	Block a user