From dd9b3ac3ccd9e0458e4afbef4e342285af7312b7 Mon Sep 17 00:00:00 2001 From: Fei Chen Date: Thu, 12 Mar 2020 11:51:01 +0800 Subject: [PATCH 1/2] export lu content id when throw errors in luMerge.js --- packages/lu/src/parser/lu/luMerger.js | 1 + packages/lu/src/parser/lubuild/builder.ts | 1 - packages/luis/test/commands/luis/build.test.ts | 5 +++-- packages/luis/test/fixtures/testcases/invalid_import_file.lu | 5 +++++ 4 files changed, 9 insertions(+), 3 deletions(-) create mode 100644 packages/luis/test/fixtures/testcases/invalid_import_file.lu diff --git a/packages/lu/src/parser/lu/luMerger.js b/packages/lu/src/parser/lu/luMerger.js index c4bbfe548..6ac822061 100644 --- a/packages/lu/src/parser/lu/luMerger.js +++ b/packages/lu/src/parser/lu/luMerger.js @@ -517,6 +517,7 @@ const parseLuFile = async function(luOb, log, luis_culture) { try { parsedContent = await parseFileContents.parseFile(luOb.content, log, luis_culture); } catch (err) { + err.text = `Invalid file ${luOb.id}: ${err.text}` throw(err); } if (!parsedContent) { diff --git a/packages/lu/src/parser/lubuild/builder.ts b/packages/lu/src/parser/lubuild/builder.ts index a59993756..2eb1cb3cc 100644 --- a/packages/lu/src/parser/lubuild/builder.ts +++ b/packages/lu/src/parser/lubuild/builder.ts @@ -47,7 +47,6 @@ export class Builder { result = await LuisBuilderVerbose.build(luFiles, true, culture) fileContent = result.parseToLuContent() } catch (err) { - err.text = `Invalid LU file ${file}: ${err.text}` throw(new exception(retCode.errorCode.INVALID_INPUT_FILE, err.text)) } diff --git a/packages/luis/test/commands/luis/build.test.ts b/packages/luis/test/commands/luis/build.test.ts index 16c5eca55..3f7bf1222 100644 --- a/packages/luis/test/commands/luis/build.test.ts +++ b/packages/luis/test/commands/luis/build.test.ts @@ -56,9 +56,10 @@ describe('luis:build cli parameters test', () => { test .stdout() .stderr() - .command(['luis:build', '--authoringKey', uuidv1(), '--in', `${path.join(__dirname, './../../fixtures/testcases/bad3.lu')}`, '--botName', 'Contoso']) + .command(['luis:build', '--authoringKey', uuidv1(), '--in', `${path.join(__dirname, './../../fixtures/testcases/invalid_import_file.lu')}`, '--botName', 'Contoso']) .it('displays an error if error occurs in parsing lu content', ctx => { - expect(ctx.stderr).to.contain('Invalid LU file') + expect(ctx.stderr).to.contain('Invalid file') + expect(ctx.stderr).to.contain('bad3.lu') expect(ctx.stderr).to.contain('[ERROR] line 4:0 - line 4:16: Invalid intent body line, did you miss \'-\' at line begin') }) }) diff --git a/packages/luis/test/fixtures/testcases/invalid_import_file.lu b/packages/luis/test/fixtures/testcases/invalid_import_file.lu new file mode 100644 index 000000000..87d0819f4 --- /dev/null +++ b/packages/luis/test/fixtures/testcases/invalid_import_file.lu @@ -0,0 +1,5 @@ +# greeting +- hi +- hello + +[import lu file with error](bad3.lu) \ No newline at end of file From 7398245921214baf46bf7e068ec1d02216210f33 Mon Sep 17 00:00:00 2001 From: Fei Chen Date: Thu, 12 Mar 2020 11:59:17 +0800 Subject: [PATCH 2/2] optimize --- packages/lu/src/parser/lu/luMerger.js | 2 +- packages/lu/src/parser/lubuild/builder.ts | 5 +++++ packages/luis/test/commands/luis/build.test.ts | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/packages/lu/src/parser/lu/luMerger.js b/packages/lu/src/parser/lu/luMerger.js index 6ac822061..1cf3b76cf 100644 --- a/packages/lu/src/parser/lu/luMerger.js +++ b/packages/lu/src/parser/lu/luMerger.js @@ -517,7 +517,7 @@ const parseLuFile = async function(luOb, log, luis_culture) { try { parsedContent = await parseFileContents.parseFile(luOb.content, log, luis_culture); } catch (err) { - err.text = `Invalid file ${luOb.id}: ${err.text}` + err.source = luOb.id; throw(err); } if (!parsedContent) { diff --git a/packages/lu/src/parser/lubuild/builder.ts b/packages/lu/src/parser/lubuild/builder.ts index 2eb1cb3cc..69a998012 100644 --- a/packages/lu/src/parser/lubuild/builder.ts +++ b/packages/lu/src/parser/lubuild/builder.ts @@ -47,6 +47,11 @@ export class Builder { result = await LuisBuilderVerbose.build(luFiles, true, culture) fileContent = result.parseToLuContent() } catch (err) { + if (err.source) { + err.text = `Invalid LU file ${err.source}: ${err.text}` + } else { + err.text = `Invalid LU file ${file}: ${err.text}` + } throw(new exception(retCode.errorCode.INVALID_INPUT_FILE, err.text)) } diff --git a/packages/luis/test/commands/luis/build.test.ts b/packages/luis/test/commands/luis/build.test.ts index 3f7bf1222..808e59559 100644 --- a/packages/luis/test/commands/luis/build.test.ts +++ b/packages/luis/test/commands/luis/build.test.ts @@ -58,7 +58,7 @@ describe('luis:build cli parameters test', () => { .stderr() .command(['luis:build', '--authoringKey', uuidv1(), '--in', `${path.join(__dirname, './../../fixtures/testcases/invalid_import_file.lu')}`, '--botName', 'Contoso']) .it('displays an error if error occurs in parsing lu content', ctx => { - expect(ctx.stderr).to.contain('Invalid file') + expect(ctx.stderr).to.contain('Invalid LU file') expect(ctx.stderr).to.contain('bad3.lu') expect(ctx.stderr).to.contain('[ERROR] line 4:0 - line 4:16: Invalid intent body line, did you miss \'-\' at line begin') })