From bdaaf667020bf68bdd7e6eb5a5c3190f2cedf15b Mon Sep 17 00:00:00 2001 From: Vladimir Matveev Date: Mon, 22 Aug 2016 13:23:11 -0700 Subject: [PATCH] added type installer test for inferred project --- .../unittests/tsserverProjectSystem.ts | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/src/harness/unittests/tsserverProjectSystem.ts b/src/harness/unittests/tsserverProjectSystem.ts index 69e4e747b16..2a309057dbe 100644 --- a/src/harness/unittests/tsserverProjectSystem.ts +++ b/src/harness/unittests/tsserverProjectSystem.ts @@ -1534,5 +1534,45 @@ namespace ts { checkNumberOfProjects(projectService, { configuredProjects: 1 }); checkProjectActualFiles(p, [ file1.path, jquery.path ]); }); + + it ("inferred project (tsd installed)", () => { + const file1 = { + path: "/a/b/app.js", + content: "" + }; + const packageJson = { + path: "/a/b/package.json", + content: JSON.stringify({ + name: "test", + dependencies: { + jquery: "^3.1.0" + } + }) + }; + + const jquery = { + path: "/a/data/typings/jquery/jquery.d.ts", + content: "declare const $: { x: number }" + }; + const host = createServerHost([file1, packageJson]); + const installer = new TestTypingsInstaller("/a/data/", host); + + const projectService = new server.ProjectService(host, nullLogger, nullCancellationToken, /*useSingleInferredProject*/ true, installer); + projectService.openClientFile(file1.path); + + checkNumberOfProjects(projectService, { inferredProjects: 1 }); + const p = projectService.inferredProjects[0]; + checkProjectActualFiles(p, [ file1.path ]); + + assert(host.fileExists(combinePaths(installer.cachePath, "tsd.json"))); + + installer.runPostInstallActions(t => { + assert.deepEqual(t, ["jquery"]); + host.createFileOrFolder(jquery, /*createParentDirectory*/ true); + return ["jquery/jquery.d.ts"]; + }); + checkNumberOfProjects(projectService, { inferredProjects: 1 }); + checkProjectActualFiles(p, [ file1.path, jquery.path ]); + }); }); } \ No newline at end of file