mirror of
https://github.com/microsoft/TypeScript.git
synced 2025-11-18 17:21:48 +00:00
More PR comments
This commit is contained in:
@@ -60,7 +60,7 @@ namespace vfs {
|
||||
private _dirStack: string[] | undefined;
|
||||
|
||||
constructor(ignoreCase: boolean, options: FileSystemOptions = {}) {
|
||||
const { time = ts.VirtualFS.timeIncrements, files, meta } = options;
|
||||
const { time = ts.TestFSWithWatch.timeIncrements, files, meta } = options;
|
||||
this.ignoreCase = ignoreCase;
|
||||
this.stringComparer = this.ignoreCase ? vpath.compareCaseInsensitive : vpath.compareCaseSensitive;
|
||||
this._time = time;
|
||||
@@ -173,7 +173,7 @@ namespace vfs {
|
||||
this._time = value;
|
||||
}
|
||||
else if (!this.isReadonly) {
|
||||
this._time += ts.VirtualFS.timeIncrements;
|
||||
this._time += ts.TestFSWithWatch.timeIncrements;
|
||||
}
|
||||
return this._time;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
namespace ts.VirtualFS {
|
||||
export const libFile: File = {
|
||||
namespace ts.TestFSWithWatch {
|
||||
export const libFile: VirtualFS.File = {
|
||||
path: "/a/lib/lib.d.ts",
|
||||
content: `/// <reference no-default-lib="true"/>
|
||||
interface Boolean {}
|
||||
@@ -27,23 +27,21 @@ interface Array<T> { length: number; [n: number]: T; }`
|
||||
environmentVariables?: ESMap<string, string>;
|
||||
runWithoutRecursiveWatches?: boolean;
|
||||
runWithFallbackPolling?: boolean;
|
||||
// TODO: Not sure withSafeList is still needed
|
||||
withSafeList?: boolean;
|
||||
inodeWatching?: boolean;
|
||||
}
|
||||
|
||||
export function createVirtualServerHost(params: VirtualServerHostCreationParameters): VirtualServerHost {
|
||||
const host = new VirtualServerHost(params);
|
||||
export function createVirtualServerHost(params: VirtualFS.VirtualServerHostCreationParameters): VirtualFS.VirtualServerHost {
|
||||
const host = new VirtualFS.VirtualServerHost(params);
|
||||
// Just like sys, patch the host to use writeFile
|
||||
patchWriteFileEnsuringDirectory(host);
|
||||
return host;
|
||||
}
|
||||
|
||||
export function createWatchedSystem(fileOrFolderList: FileOrFolderOrSymLinkMap | readonly FileOrFolderOrSymLink[], params?: TestServerHostCreationParameters): TestServerHost {
|
||||
export function createWatchedSystem(fileOrFolderList: VirtualFS.FileOrFolderOrSymLinkMap | readonly VirtualFS.FileOrFolderOrSymLink[], params?: TestServerHostCreationParameters): TestServerHost {
|
||||
return new TestServerHost(fileOrFolderList, params);
|
||||
}
|
||||
|
||||
export function createServerHost(fileOrFolderList: FileOrFolderOrSymLinkMap | readonly FileOrFolderOrSymLink[], params?: TestServerHostCreationParameters): TestServerHost {
|
||||
export function createServerHost(fileOrFolderList: VirtualFS.FileOrFolderOrSymLinkMap | readonly VirtualFS.FileOrFolderOrSymLink[], params?: TestServerHostCreationParameters): TestServerHost {
|
||||
const host = new TestServerHost(fileOrFolderList, params);
|
||||
// Just like sys, patch the host to use writeFile
|
||||
patchWriteFileEnsuringDirectory(host);
|
||||
@@ -116,7 +114,7 @@ interface Array<T> { length: number; [n: number]: T; }`
|
||||
|
||||
serialize(baseline: string[]) {
|
||||
for (const id in this.map) {
|
||||
baseline.push(`${id} at time ${this.map[id].time} in ${this.map[id].ms} ms: ${this.map[id].args[1]}`)
|
||||
baseline.push(`${id} at time ${this.map[id].time} in ${this.map[id].ms} ms: ${this.map[id].args[1]}`);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -213,7 +211,7 @@ interface Array<T> { length: number; [n: number]: T; }`
|
||||
|
||||
export const timeIncrements = 1000;
|
||||
|
||||
export class TestServerHost extends VirtualServerHost implements server.ServerHost {
|
||||
export class TestServerHost extends VirtualFS.VirtualServerHost implements server.ServerHost {
|
||||
private readonly output: string[] = [];
|
||||
private time = timeIncrements;
|
||||
private timeoutCallbacks = new Callbacks(this);
|
||||
@@ -226,7 +224,7 @@ interface Array<T> { length: number; [n: number]: T; }`
|
||||
private readonly inodes?: ESMap<Path, number>;
|
||||
|
||||
constructor(
|
||||
fileOrFolderOrSymLinkList: FileOrFolderOrSymLinkMap | readonly FileOrFolderOrSymLink[],
|
||||
fileOrFolderOrSymLinkList: VirtualFS.FileOrFolderOrSymLinkMap | readonly VirtualFS.FileOrFolderOrSymLink[],
|
||||
options: TestServerHostCreationParameters = {}) {
|
||||
super({
|
||||
...options,
|
||||
@@ -273,7 +271,7 @@ interface Array<T> { length: number; [n: number]: T; }`
|
||||
this.time = time;
|
||||
}
|
||||
|
||||
private reloadFS(fileOrFolderOrSymLinkList: FileOrFolderOrSymLinkMap | readonly FileOrFolderOrSymLink[]) {
|
||||
private reloadFS(fileOrFolderOrSymLinkList: VirtualFS.FileOrFolderOrSymLinkMap | readonly VirtualFS.FileOrFolderOrSymLink[]) {
|
||||
Debug.assert(this.fs.size === 0);
|
||||
if (isArray(fileOrFolderOrSymLinkList)) {
|
||||
fileOrFolderOrSymLinkList.forEach(f => this.ensureFileOrFolder(!this.windowsStyleRoot ?
|
||||
@@ -300,7 +298,7 @@ interface Array<T> { length: number; [n: number]: T; }`
|
||||
renameFile(fileName: string, newFileName: string) {
|
||||
const fullPath = getNormalizedAbsolutePath(fileName, this.currentDirectory);
|
||||
const path = this.toPath(fullPath);
|
||||
const file = this.fs.get(path) as FsFile;
|
||||
const file = this.fs.get(path) as VirtualFS.FsFile;
|
||||
Debug.assert(!!file);
|
||||
|
||||
// Only remove the file
|
||||
@@ -313,14 +311,14 @@ interface Array<T> { length: number; [n: number]: T; }`
|
||||
const basePath = getDirectoryPath(path);
|
||||
Debug.assert(basePath !== path);
|
||||
Debug.assert(basePath === getDirectoryPath(newPath));
|
||||
const baseFolder = this.fs.get(basePath) as FsFolder;
|
||||
const baseFolder = this.fs.get(basePath) as VirtualFS.FsFolder;
|
||||
this.addFileOrFolderInFolder(baseFolder, newFile);
|
||||
}
|
||||
|
||||
renameFolder(folderName: string, newFolderName: string) {
|
||||
const fullPath = getNormalizedAbsolutePath(folderName, this.currentDirectory);
|
||||
const path = this.toPath(fullPath);
|
||||
const folder = this.fs.get(path) as FsFolder;
|
||||
const folder = this.fs.get(path) as VirtualFS.FsFolder;
|
||||
Debug.assert(!!folder);
|
||||
|
||||
// Only remove the folder
|
||||
@@ -333,14 +331,14 @@ interface Array<T> { length: number; [n: number]: T; }`
|
||||
const basePath = getDirectoryPath(path);
|
||||
Debug.assert(basePath !== path);
|
||||
Debug.assert(basePath === getDirectoryPath(newPath));
|
||||
const baseFolder = this.fs.get(basePath) as FsFolder;
|
||||
const baseFolder = this.fs.get(basePath) as VirtualFS.FsFolder;
|
||||
this.addFileOrFolderInFolder(baseFolder, newFolder);
|
||||
|
||||
// Invoke watches for files in the folder as deleted (from old path)
|
||||
this.renameFolderEntries(folder, newFolder);
|
||||
}
|
||||
|
||||
private renameFolderEntries(oldFolder: FsFolder, newFolder: FsFolder) {
|
||||
private renameFolderEntries(oldFolder: VirtualFS.FsFolder, newFolder: VirtualFS.FsFolder) {
|
||||
for (const entry of oldFolder.entries) {
|
||||
this.fs.delete(entry.path);
|
||||
this.invokeFileAndFsWatches(entry.fullPath, FileWatcherEventKind.Deleted);
|
||||
@@ -353,7 +351,7 @@ interface Array<T> { length: number; [n: number]: T; }`
|
||||
this.fs.set(entry.path, entry);
|
||||
this.setInode(entry.path);
|
||||
this.invokeFileAndFsWatches(entry.fullPath, FileWatcherEventKind.Created);
|
||||
if (isFsFolder(entry)) {
|
||||
if (VirtualFS.isFsFolder(entry)) {
|
||||
this.renameFolderEntries(entry, entry);
|
||||
}
|
||||
}
|
||||
@@ -361,12 +359,12 @@ interface Array<T> { length: number; [n: number]: T; }`
|
||||
|
||||
deleteFolder(folderPath: string, recursive?: boolean) {
|
||||
const path = this.toFullPath(folderPath);
|
||||
const currentEntry = this.fs.get(path) as FsFolder;
|
||||
Debug.assert(isFsFolder(currentEntry));
|
||||
const currentEntry = this.fs.get(path) as VirtualFS.FsFolder;
|
||||
Debug.assert(VirtualFS.isFsFolder(currentEntry));
|
||||
if (recursive && currentEntry.entries.length) {
|
||||
const subEntries = currentEntry.entries.slice();
|
||||
subEntries.forEach(fsEntry => {
|
||||
if (isFsFolder(fsEntry)) {
|
||||
if (VirtualFS.isFsFolder(fsEntry)) {
|
||||
this.deleteFolder(fsEntry.fullPath, recursive);
|
||||
}
|
||||
else {
|
||||
@@ -386,7 +384,7 @@ interface Array<T> { length: number; [n: number]: T; }`
|
||||
const path = this.toFullPath(fileOrDirectory);
|
||||
// Error if the path does not exist
|
||||
if (this.inodeWatching && !this.inodes?.has(path)) throw new Error();
|
||||
const result = createWatcher(
|
||||
const result = VirtualFS.createWatcher(
|
||||
recursive ? this.fsWatchesRecursive : this.fsWatches,
|
||||
path,
|
||||
{
|
||||
@@ -421,7 +419,7 @@ interface Array<T> { length: number; [n: number]: T; }`
|
||||
}
|
||||
|
||||
serializeTimeout(baseline: string[]) {
|
||||
this.timeoutCallbacks.serialize(baseline)
|
||||
this.timeoutCallbacks.serialize(baseline);
|
||||
}
|
||||
|
||||
clearScreen(): void {
|
||||
@@ -465,11 +463,11 @@ interface Array<T> { length: number; [n: number]: T; }`
|
||||
this.immediateCallbacks.unregister(timeoutId);
|
||||
}
|
||||
|
||||
prependFile(path: string, content: string, options?: Partial<WatchInvokeOptions>): void {
|
||||
prependFile(path: string, content: string, options?: Partial<VirtualFS.WatchInvokeOptions>): void {
|
||||
this.modifyFile(path, content + this.readFile(path), options);
|
||||
}
|
||||
|
||||
appendFile(path: string, content: string, options?: Partial<WatchInvokeOptions>): void {
|
||||
appendFile(path: string, content: string, options?: Partial<VirtualFS.WatchInvokeOptions>): void {
|
||||
this.modifyFile(path, this.readFile(path) + content, options);
|
||||
}
|
||||
|
||||
@@ -512,12 +510,12 @@ interface Array<T> { length: number; [n: number]: T; }`
|
||||
}
|
||||
}
|
||||
|
||||
export function snap(fshost: VirtualServerHost): ESMap<Path, FSEntry> {
|
||||
const result = new Map<Path, FSEntry>();
|
||||
export function snap(fshost: VirtualFS.VirtualServerHost): ESMap<Path, VirtualFS.FSEntry> {
|
||||
const result = new Map<Path, VirtualFS.FSEntry>();
|
||||
fshost.fs.forEach((value, key) => {
|
||||
const cloneValue = clone(value);
|
||||
if (isFsFolder(cloneValue)) {
|
||||
cloneValue.entries = cloneValue.entries.map(clone) as SortedArray<FSEntry>;
|
||||
if (VirtualFS.isFsFolder(cloneValue)) {
|
||||
cloneValue.entries = cloneValue.entries.map(clone) as SortedArray<VirtualFS.FSEntry>;
|
||||
}
|
||||
result.set(key, cloneValue);
|
||||
});
|
||||
@@ -525,7 +523,7 @@ interface Array<T> { length: number; [n: number]: T; }`
|
||||
return result;
|
||||
}
|
||||
|
||||
export function diff(fshost: VirtualServerHost, baseline: string[], base: ESMap<Path, FSEntry> = new Map()) {
|
||||
export function diff(fshost: VirtualFS.VirtualServerHost, baseline: string[], base: ESMap<Path, VirtualFS.FSEntry> = new Map()) {
|
||||
fshost.fs.forEach((newFsEntry, path) => {
|
||||
diffFsEntry(baseline, base.get(path), newFsEntry, fshost.getInode(path), fshost.writtenFiles);
|
||||
});
|
||||
@@ -538,19 +536,19 @@ interface Array<T> { length: number; [n: number]: T; }`
|
||||
baseline.push("");
|
||||
}
|
||||
|
||||
function diffFsFile(baseline: string[], fsEntry: FsFile, newInode: number | undefined) {
|
||||
function diffFsFile(baseline: string[], fsEntry: VirtualFS.FsFile, newInode: number | undefined) {
|
||||
baseline.push(`//// [${fsEntry.fullPath}]${inodeString(newInode)}\r\n${fsEntry.content}`, "");
|
||||
}
|
||||
function diffFsSymLink(baseline: string[], fsEntry: FsSymLink, newInode: number | undefined) {
|
||||
function diffFsSymLink(baseline: string[], fsEntry: VirtualFS.FsSymLink, newInode: number | undefined) {
|
||||
baseline.push(`//// [${fsEntry.fullPath}] symlink(${fsEntry.symLink})${inodeString(newInode)}`);
|
||||
}
|
||||
function inodeString(inode: number | undefined) {
|
||||
return inode !== undefined ? ` Inode:: ${inode}` : "";
|
||||
}
|
||||
function diffFsEntry(baseline: string[], oldFsEntry: FSEntry | undefined, newFsEntry: FSEntry | undefined, newInode: number | undefined, writtenFiles: ESMap<string, any> | undefined): void {
|
||||
function diffFsEntry(baseline: string[], oldFsEntry: VirtualFS.FSEntry | undefined, newFsEntry: VirtualFS.FSEntry | undefined, newInode: number | undefined, writtenFiles: ESMap<string, any> | undefined): void {
|
||||
const file = newFsEntry && newFsEntry.fullPath;
|
||||
if (isFsFile(oldFsEntry)) {
|
||||
if (isFsFile(newFsEntry)) {
|
||||
if (VirtualFS.isFsFile(oldFsEntry)) {
|
||||
if (VirtualFS.isFsFile(newFsEntry)) {
|
||||
if (oldFsEntry.content !== newFsEntry.content) {
|
||||
diffFsFile(baseline, newFsEntry, newInode);
|
||||
}
|
||||
@@ -568,13 +566,13 @@ interface Array<T> { length: number; [n: number]: T; }`
|
||||
}
|
||||
else {
|
||||
baseline.push(`//// [${oldFsEntry.fullPath}] deleted`);
|
||||
if (isFsSymLink(newFsEntry)) {
|
||||
if (VirtualFS.isFsSymLink(newFsEntry)) {
|
||||
diffFsSymLink(baseline, newFsEntry, newInode);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (isFsSymLink(oldFsEntry)) {
|
||||
if (isFsSymLink(newFsEntry)) {
|
||||
else if (VirtualFS.isFsSymLink(oldFsEntry)) {
|
||||
if (VirtualFS.isFsSymLink(newFsEntry)) {
|
||||
if (oldFsEntry.symLink !== newFsEntry.symLink) {
|
||||
diffFsSymLink(baseline, newFsEntry, newInode);
|
||||
}
|
||||
@@ -592,15 +590,15 @@ interface Array<T> { length: number; [n: number]: T; }`
|
||||
}
|
||||
else {
|
||||
baseline.push(`//// [${oldFsEntry.fullPath}] deleted symlink`);
|
||||
if (isFsFile(newFsEntry)) {
|
||||
if (VirtualFS.isFsFile(newFsEntry)) {
|
||||
diffFsFile(baseline, newFsEntry, newInode);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (isFsFile(newFsEntry)) {
|
||||
else if (VirtualFS.isFsFile(newFsEntry)) {
|
||||
diffFsFile(baseline, newFsEntry, newInode);
|
||||
}
|
||||
else if (isFsSymLink(newFsEntry)) {
|
||||
else if (VirtualFS.isFsSymLink(newFsEntry)) {
|
||||
diffFsSymLink(baseline, newFsEntry, newInode);
|
||||
}
|
||||
}
|
||||
@@ -631,7 +629,7 @@ interface Array<T> { length: number; [n: number]: T; }`
|
||||
return `${tsbuildProjectsLocation}/${project}/${file}`;
|
||||
}
|
||||
|
||||
export function getTsBuildProjectFile(project: string, file: string): File {
|
||||
export function getTsBuildProjectFile(project: string, file: string): VirtualFS.File {
|
||||
return {
|
||||
path: getTsBuildProjectFilePath(project, file),
|
||||
content: Harness.IO.readFile(`${Harness.IO.getWorkspaceRoot()}/tests/projects/${project}/${file}`)!
|
||||
|
||||
@@ -3756,21 +3756,26 @@ namespace ts.server {
|
||||
updateFileSystem(updatedFiles: protocol.FileSystemRequestArgs[] | undefined, deletedFiles?: string[]) {
|
||||
if (!this.fshost) {
|
||||
this.logger.msg("fshost not defined, skipping updateFileSystem", Msg.Err);
|
||||
return;
|
||||
}
|
||||
if (updatedFiles) {
|
||||
if (!this.fshost.ensureFileOrFolder) {
|
||||
this.logger.msg(`fshost missing ensureFileOrFolder, skipping update of ${JSON.stringify(updatedFiles.map(({ file }) => file))}`, Msg.Err);
|
||||
if (this.fshost.ensureFileOrFolder) {
|
||||
for (const { file, fileContent } of updatedFiles) {
|
||||
this.fshost.ensureFileOrFolder({ path: file, content: fileContent });
|
||||
}
|
||||
}
|
||||
for (const { file, fileContent } of updatedFiles) {
|
||||
this.fshost.ensureFileOrFolder({ path: file, content: fileContent });
|
||||
else {
|
||||
this.logger.msg(`fshost missing ensureFileOrFolder, skipping update of ${JSON.stringify(updatedFiles.map(({ file }) => file))}`, Msg.Err);
|
||||
}
|
||||
}
|
||||
if (deletedFiles) {
|
||||
if (!this.fshost.deleteFile) {
|
||||
this.logger.msg(`fshost missing deleteFile, skipping delete of ${JSON.stringify(deletedFiles)}`, Msg.Err);
|
||||
if (this.fshost.deleteFile) {
|
||||
for (const file of deletedFiles) {
|
||||
this.fshost.deleteFile(file, /*deleteEmptyParentFolders*/ true);
|
||||
}
|
||||
}
|
||||
for (const file of deletedFiles) {
|
||||
this.fshost.deleteFile(file, /*deleteEmptyParentFolders*/ true);
|
||||
else {
|
||||
this.logger.msg(`fshost missing deleteFile, skipping delete of ${JSON.stringify(deletedFiles)}`, Msg.Err);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -322,7 +322,7 @@ namespace ts.server {
|
||||
else if (host.trace) {
|
||||
this.trace = s => host.trace!(s);
|
||||
}
|
||||
this.realpath = maybeBind(this.projectService.host, this.projectService.host.realpath);
|
||||
this.realpath = maybeBind(host, host.realpath);
|
||||
|
||||
// Use the current directory as resolution root only if the project created using current directory string
|
||||
this.resolutionCache = createResolutionCache(
|
||||
|
||||
@@ -809,7 +809,7 @@ namespace ts.server {
|
||||
};
|
||||
this.errorCheck = new MultistepOperation(multistepOperationHost);
|
||||
const settings: ProjectServiceOptions = {
|
||||
host: this.host,
|
||||
host: opts.host,
|
||||
fshost: opts.fshost,
|
||||
logger: this.logger,
|
||||
cancellationToken: this.cancellationToken,
|
||||
|
||||
@@ -19,10 +19,10 @@
|
||||
{ "path": "../executeCommandLine", "prepend": true },
|
||||
{ "path": "../services", "prepend": true },
|
||||
{ "path": "../jsTyping", "prepend": true },
|
||||
{ "path": "../vfs", "prepend": true },
|
||||
{ "path": "../server", "prepend": true },
|
||||
{ "path": "../webServer", "prepend": true },
|
||||
{ "path": "../typingsInstallerCore", "prepend": true },
|
||||
{ "path": "../vfs", "prepend": true },
|
||||
{ "path": "../deprecatedCompat", "prepend": true },
|
||||
{ "path": "../harness", "prepend": true },
|
||||
{ "path": "../loggedIO", "prepend": true }
|
||||
|
||||
@@ -74,7 +74,7 @@ namespace ts {
|
||||
}
|
||||
}
|
||||
|
||||
const vfsys = new vfs.FileSystem(false, { files: { "/lib.d.ts": VirtualFS.libFile.content } });
|
||||
const vfsys = new vfs.FileSystem(false, { files: { "/lib.d.ts": TestFSWithWatch.libFile.content } });
|
||||
files.forEach((v, k) => {
|
||||
vfsys.mkdirpSync(getDirectoryPath(k));
|
||||
vfsys.writeFileSync(k, v);
|
||||
|
||||
@@ -922,8 +922,8 @@ namespace ts {
|
||||
});
|
||||
|
||||
type File = VirtualFS.File;
|
||||
import createTestSystem = VirtualFS.createWatchedSystem;
|
||||
import libFile = VirtualFS.libFile;
|
||||
import createTestSystem = TestFSWithWatch.createWatchedSystem;
|
||||
import libFile = TestFSWithWatch.libFile;
|
||||
|
||||
describe("unittests:: Reuse program structure:: isProgramUptoDate", () => {
|
||||
function getWhetherProgramIsUptoDate(
|
||||
|
||||
@@ -78,7 +78,7 @@ namespace ts {
|
||||
};
|
||||
}
|
||||
|
||||
export const libContent = `${VirtualFS.libFile.content}
|
||||
export const libContent = `${TestFSWithWatch.libFile.content}
|
||||
interface ReadonlyArray<T> {}
|
||||
declare const console: { log(msg: any): void; };`;
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ namespace ts {
|
||||
|
||||
function getTsBuildProjectFile(project: string, file: string): tscWatch.File {
|
||||
return {
|
||||
path: VirtualFS.getTsBuildProjectFilePath(project, file),
|
||||
path: TestFSWithWatch.getTsBuildProjectFilePath(project, file),
|
||||
content: projFs.readFileSync(`/src/${project}/${file}`, "utf8")!
|
||||
};
|
||||
}
|
||||
@@ -250,8 +250,8 @@ namespace ts {
|
||||
const testsConfig = getTsBuildProjectFile("tests", "tsconfig.json");
|
||||
const testsIndex = getTsBuildProjectFile("tests", "index.ts");
|
||||
const baseline: string[] = [];
|
||||
let oldSnap: ReturnType<typeof VirtualFS.snap> | undefined;
|
||||
const system = VirtualFS.changeToHostTrackingWrittenFiles(
|
||||
let oldSnap: ReturnType<typeof TestFSWithWatch.snap> | undefined;
|
||||
const system = TestFSWithWatch.changeToHostTrackingWrittenFiles(
|
||||
fakes.patchHostForBuildInfoReadWrite(
|
||||
tscWatch.createWatchedSystem([
|
||||
coreConfig, coreIndex, coreDecl, coreAnotherModule,
|
||||
@@ -281,9 +281,9 @@ namespace ts {
|
||||
|
||||
function baselineState() {
|
||||
system.serializeOutput(baseline);
|
||||
VirtualFS.diff(system, baseline, oldSnap);
|
||||
TestFSWithWatch.diff(system, baseline, oldSnap);
|
||||
system.writtenFiles.clear();
|
||||
oldSnap = VirtualFS.snap(system);
|
||||
oldSnap = TestFSWithWatch.snap(system);
|
||||
}
|
||||
});
|
||||
|
||||
@@ -322,8 +322,8 @@ namespace ts {
|
||||
const testsConfig = getTsBuildProjectFile("tests", "tsconfig.json");
|
||||
const testsIndex = getTsBuildProjectFile("tests", "index.ts");
|
||||
const baseline: string[] = [];
|
||||
let oldSnap: ReturnType<typeof VirtualFS.snap> | undefined;
|
||||
const system = VirtualFS.changeToHostTrackingWrittenFiles(
|
||||
let oldSnap: ReturnType<typeof TestFSWithWatch.snap> | undefined;
|
||||
const system = TestFSWithWatch.changeToHostTrackingWrittenFiles(
|
||||
fakes.patchHostForBuildInfoReadWrite(
|
||||
tscWatch.createWatchedSystem([
|
||||
coreConfig, coreIndex, coreDecl, coreAnotherModule,
|
||||
@@ -366,9 +366,9 @@ namespace ts {
|
||||
function baselineState(heading: string) {
|
||||
baseline.push(heading);
|
||||
system.serializeOutput(baseline);
|
||||
VirtualFS.diff(system, baseline, oldSnap);
|
||||
TestFSWithWatch.diff(system, baseline, oldSnap);
|
||||
system.writtenFiles.clear();
|
||||
oldSnap = VirtualFS.snap(system);
|
||||
oldSnap = TestFSWithWatch.snap(system);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
namespace ts.tscWatch {
|
||||
describe("unittests:: tsbuildWatch:: watchMode:: with demo project", () => {
|
||||
const projectLocation = `${VirtualFS.tsbuildProjectsLocation}/demo`;
|
||||
const projectLocation = `${TestFSWithWatch.tsbuildProjectsLocation}/demo`;
|
||||
let coreFiles: File[];
|
||||
let animalFiles: File[];
|
||||
let zooFiles: File[];
|
||||
@@ -82,7 +82,7 @@ ${coreFiles[1].content}`),
|
||||
}
|
||||
|
||||
function projectFile(fileName: string): File {
|
||||
return VirtualFS.getTsBuildProjectFile("demo", fileName);
|
||||
return TestFSWithWatch.getTsBuildProjectFile("demo", fileName);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@ namespace ts.tscWatch {
|
||||
function change(caption: string, content: string): TscWatchCompileChange {
|
||||
return {
|
||||
caption,
|
||||
change: sys => sys.writeFile(`${VirtualFS.tsbuildProjectsLocation}/noEmitOnError/src/main.ts`, content),
|
||||
change: sys => sys.writeFile(`${TestFSWithWatch.tsbuildProjectsLocation}/noEmitOnError/src/main.ts`, content),
|
||||
// build project
|
||||
timeouts: checkSingleTimeoutQueueLengthAndRunAndVerifyNoTimeout,
|
||||
};
|
||||
@@ -11,7 +11,7 @@ namespace ts.tscWatch {
|
||||
|
||||
const noChange: TscWatchCompileChange = {
|
||||
caption: "No change",
|
||||
change: sys => sys.writeFile(`${VirtualFS.tsbuildProjectsLocation}/noEmitOnError/src/main.ts`, sys.readFile(`${VirtualFS.tsbuildProjectsLocation}/noEmitOnError/src/main.ts`)!),
|
||||
change: sys => sys.writeFile(`${TestFSWithWatch.tsbuildProjectsLocation}/noEmitOnError/src/main.ts`, sys.readFile(`${TestFSWithWatch.tsbuildProjectsLocation}/noEmitOnError/src/main.ts`)!),
|
||||
// build project
|
||||
timeouts: checkSingleTimeoutQueueLengthAndRunAndVerifyNoTimeout,
|
||||
};
|
||||
@@ -22,10 +22,10 @@ namespace ts.tscWatch {
|
||||
sys: () => createWatchedSystem(
|
||||
[
|
||||
...["tsconfig.json", "shared/types/db.ts", "src/main.ts", "src/other.ts"]
|
||||
.map(f => VirtualFS.getTsBuildProjectFile("noEmitOnError", f)),
|
||||
.map(f => TestFSWithWatch.getTsBuildProjectFile("noEmitOnError", f)),
|
||||
{ path: libFile.path, content: libContent }
|
||||
],
|
||||
{ currentDirectory: `${VirtualFS.tsbuildProjectsLocation}/noEmitOnError` }
|
||||
{ currentDirectory: `${TestFSWithWatch.tsbuildProjectsLocation}/noEmitOnError` }
|
||||
),
|
||||
changes: [
|
||||
noChange,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
namespace ts.tscWatch {
|
||||
import projectsLocation = VirtualFS.tsbuildProjectsLocation;
|
||||
import projectsLocation = TestFSWithWatch.tsbuildProjectsLocation;
|
||||
describe("unittests:: tsbuildWatch:: watchMode:: program updates", () => {
|
||||
const enum SubProject {
|
||||
core = "core",
|
||||
@@ -11,11 +11,11 @@ namespace ts.tscWatch {
|
||||
/** [tsconfig, index] | [tsconfig, index, anotherModule, someDecl] */
|
||||
type SubProjectFiles = [tsconfig: ReadonlyFile, index: ReadonlyFile] | [tsconfig: ReadonlyFile, index: ReadonlyFile, anotherModule: ReadonlyFile, someDecl: ReadonlyFile];
|
||||
function projectFilePath(subProject: SubProject, baseFileName: string) {
|
||||
return `${VirtualFS.getTsBuildProjectFilePath("sample1", subProject)}/${baseFileName.toLowerCase()}`;
|
||||
return `${TestFSWithWatch.getTsBuildProjectFilePath("sample1", subProject)}/${baseFileName.toLowerCase()}`;
|
||||
}
|
||||
|
||||
function projectFile(subProject: SubProject, baseFileName: string): File {
|
||||
return VirtualFS.getTsBuildProjectFile("sample1", `${subProject}/${baseFileName}`);
|
||||
return TestFSWithWatch.getTsBuildProjectFile("sample1", `${subProject}/${baseFileName}`);
|
||||
}
|
||||
|
||||
function subProjectFiles(subProject: SubProject, anotherModuleAndSomeDecl?: true): SubProjectFiles {
|
||||
|
||||
@@ -11,15 +11,15 @@ namespace ts.tscWatch {
|
||||
"src/main/tsconfig.json", "src/main/index.ts",
|
||||
"src/pure/tsconfig.json", "src/pure/index.ts", "src/pure/session.ts"
|
||||
]
|
||||
.map(f => VirtualFS.getTsBuildProjectFile("reexport", f)),
|
||||
.map(f => TestFSWithWatch.getTsBuildProjectFile("reexport", f)),
|
||||
{ path: libFile.path, content: libContent }
|
||||
],
|
||||
{ currentDirectory: `${VirtualFS.tsbuildProjectsLocation}/reexport` }
|
||||
{ currentDirectory: `${TestFSWithWatch.tsbuildProjectsLocation}/reexport` }
|
||||
),
|
||||
changes: [
|
||||
{
|
||||
caption: "Introduce error",
|
||||
change: sys => replaceFileText(sys, `${VirtualFS.tsbuildProjectsLocation}/reexport/src/pure/session.ts`, "// ", ""),
|
||||
change: sys => replaceFileText(sys, `${TestFSWithWatch.tsbuildProjectsLocation}/reexport/src/pure/session.ts`, "// ", ""),
|
||||
timeouts: sys => {
|
||||
sys.checkTimeoutQueueLengthAndRun(1); // build src/pure
|
||||
sys.checkTimeoutQueueLengthAndRun(1); // build src/main and src
|
||||
@@ -28,7 +28,7 @@ namespace ts.tscWatch {
|
||||
},
|
||||
{
|
||||
caption: "Fix error",
|
||||
change: sys => replaceFileText(sys, `${VirtualFS.tsbuildProjectsLocation}/reexport/src/pure/session.ts`, "bar: ", "// bar: "),
|
||||
change: sys => replaceFileText(sys, `${TestFSWithWatch.tsbuildProjectsLocation}/reexport/src/pure/session.ts`, "bar: ", "// bar: "),
|
||||
timeouts: sys => {
|
||||
sys.checkTimeoutQueueLengthAndRun(1); // build src/pure
|
||||
sys.checkTimeoutQueueLengthAndRun(1); // build src/main and src
|
||||
|
||||
@@ -13,7 +13,7 @@ namespace ts.tscWatch {
|
||||
|
||||
function verifyWatchFileOnMultipleProjects(singleWatchPerFile: boolean, environmentVariables?: ESMap<string, string>) {
|
||||
it("watchFile on same file multiple times because file is part of multiple projects", () => {
|
||||
const project = `${VirtualFS.tsbuildProjectsLocation}/myproject`;
|
||||
const project = `${TestFSWithWatch.tsbuildProjectsLocation}/myproject`;
|
||||
let maxPkgs = 4;
|
||||
const configPath = `${project}/tsconfig.json`;
|
||||
const typing: File = {
|
||||
@@ -111,7 +111,7 @@ namespace ts.tscWatch {
|
||||
}
|
||||
];
|
||||
}
|
||||
function writePkgReferences(system: VirtualFS.TestServerHost) {
|
||||
function writePkgReferences(system: TestFSWithWatch.TestServerHost) {
|
||||
system.writeFile(configPath, JSON.stringify({
|
||||
files: [],
|
||||
include: [],
|
||||
|
||||
@@ -337,22 +337,22 @@ export class Data2 {
|
||||
function change(caption: string, content: string): TscWatchCompileChange {
|
||||
return {
|
||||
caption,
|
||||
change: sys => sys.writeFile(`${VirtualFS.tsbuildProjectsLocation}/noEmitOnError/src/main.ts`, content),
|
||||
change: sys => sys.writeFile(`${TestFSWithWatch.tsbuildProjectsLocation}/noEmitOnError/src/main.ts`, content),
|
||||
// build project
|
||||
timeouts: checkSingleTimeoutQueueLengthAndRun
|
||||
};
|
||||
}
|
||||
const noChange: TscWatchCompileChange = {
|
||||
caption: "No change",
|
||||
change: sys => sys.writeFile(`${VirtualFS.tsbuildProjectsLocation}/noEmitOnError/src/main.ts`, sys.readFile(`${VirtualFS.tsbuildProjectsLocation}/noEmitOnError/src/main.ts`)!),
|
||||
change: sys => sys.writeFile(`${TestFSWithWatch.tsbuildProjectsLocation}/noEmitOnError/src/main.ts`, sys.readFile(`${TestFSWithWatch.tsbuildProjectsLocation}/noEmitOnError/src/main.ts`)!),
|
||||
// build project
|
||||
timeouts: checkSingleTimeoutQueueLengthAndRun,
|
||||
};
|
||||
verifyEmitAndErrorUpdates({
|
||||
subScenario: "with noEmitOnError",
|
||||
currentDirectory: `${VirtualFS.tsbuildProjectsLocation}/noEmitOnError`,
|
||||
currentDirectory: `${TestFSWithWatch.tsbuildProjectsLocation}/noEmitOnError`,
|
||||
files: () => ["shared/types/db.ts", "src/main.ts", "src/other.ts", "tsconfig.json"]
|
||||
.map(f => VirtualFS.getTsBuildProjectFile("noEmitOnError", f)).concat({ path: libFile.path, content: libContent }),
|
||||
.map(f => TestFSWithWatch.getTsBuildProjectFile("noEmitOnError", f)).concat({ path: libFile.path, content: libContent }),
|
||||
changes: [
|
||||
noChange,
|
||||
change("Fix Syntax error", `import { A } from "../shared/types/db";
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
namespace ts.tscWatch {
|
||||
export const projects = `/user/username/projects`;
|
||||
export const projectRoot = `${projects}/myproject`;
|
||||
export import WatchedSystem = VirtualFS.TestServerHost;
|
||||
export import WatchedSystem = TestFSWithWatch.TestServerHost;
|
||||
export type File = VirtualFS.File;
|
||||
export type SymLink = VirtualFS.SymLink;
|
||||
export import libFile = VirtualFS.libFile;
|
||||
export import createWatchedSystem = VirtualFS.createWatchedSystem;
|
||||
export import checkArray = VirtualFS.checkArray;
|
||||
export import checkOutputContains = VirtualFS.checkOutputContains;
|
||||
export import checkOutputDoesNotContain = VirtualFS.checkOutputDoesNotContain;
|
||||
export import libFile = TestFSWithWatch.libFile;
|
||||
export import createWatchedSystem = TestFSWithWatch.createWatchedSystem;
|
||||
export import checkArray = TestFSWithWatch.checkArray;
|
||||
export import checkOutputContains = TestFSWithWatch.checkOutputContains;
|
||||
export import checkOutputDoesNotContain = TestFSWithWatch.checkOutputDoesNotContain;
|
||||
|
||||
export const commonFile1: File = {
|
||||
path: "/a/b/commonFile1.ts",
|
||||
@@ -98,9 +98,9 @@ namespace ts.tscWatch {
|
||||
export type WatchOrSolution<T extends BuilderProgram> = void | SolutionBuilder<T> | WatchOfConfigFile<T> | WatchOfFilesAndCompilerOptions<T>;
|
||||
export interface TscWatchCompileChange<T extends BuilderProgram = EmitAndSemanticDiagnosticsBuilderProgram> {
|
||||
caption: string;
|
||||
change: (sys: VirtualFS.TestServerHostTrackingWrittenFiles) => void;
|
||||
change: (sys: TestFSWithWatch.TestServerHostTrackingWrittenFiles) => void;
|
||||
timeouts: (
|
||||
sys: VirtualFS.TestServerHostTrackingWrittenFiles,
|
||||
sys: TestFSWithWatch.TestServerHostTrackingWrittenFiles,
|
||||
programs: readonly CommandLineProgram[],
|
||||
watchOrSolution: WatchOrSolution<T>
|
||||
) => void;
|
||||
@@ -125,7 +125,7 @@ namespace ts.tscWatch {
|
||||
timeouts: sys => sys.checkTimeoutQueueLength(0),
|
||||
};
|
||||
|
||||
export type SystemSnap = ReturnType<typeof VirtualFS.snap>;
|
||||
export type SystemSnap = ReturnType<typeof TestFSWithWatch.snap>;
|
||||
function tscWatchCompile(input: TscWatchCompile) {
|
||||
it("tsc-watch:: Generates files matching the baseline", () => {
|
||||
const { sys, baseline, oldSnap } = createBaseline(input.sys());
|
||||
@@ -160,7 +160,7 @@ namespace ts.tscWatch {
|
||||
|
||||
export interface BaselineBase {
|
||||
baseline: string[];
|
||||
sys: VirtualFS.TestServerHostTrackingWrittenFiles;
|
||||
sys: TestFSWithWatch.TestServerHostTrackingWrittenFiles;
|
||||
oldSnap: SystemSnap;
|
||||
}
|
||||
|
||||
@@ -171,12 +171,12 @@ namespace ts.tscWatch {
|
||||
const originalRead = system.readFile;
|
||||
const initialSys = fakes.patchHostForBuildInfoReadWrite(system);
|
||||
modifySystem?.(initialSys, originalRead);
|
||||
const sys = VirtualFS.changeToHostTrackingWrittenFiles(initialSys);
|
||||
const sys = TestFSWithWatch.changeToHostTrackingWrittenFiles(initialSys);
|
||||
const baseline: string[] = [];
|
||||
baseline.push("Input::");
|
||||
VirtualFS.diff(sys, baseline);
|
||||
TestFSWithWatch.diff(sys, baseline);
|
||||
const { cb, getPrograms } = commandLineCallbacks(sys);
|
||||
return { sys, baseline, oldSnap: VirtualFS.snap(sys), cb, getPrograms };
|
||||
return { sys, baseline, oldSnap: TestFSWithWatch.snap(sys), cb, getPrograms };
|
||||
}
|
||||
|
||||
export function createSolutionBuilderWithWatchHostForBaseline(sys: WatchedSystem, cb: ExecuteCommandLineCallbacks) {
|
||||
@@ -234,16 +234,16 @@ namespace ts.tscWatch {
|
||||
}
|
||||
|
||||
export function applyChange(sys: BaselineBase["sys"], baseline: BaselineBase["baseline"], change: TscWatchCompileChange["change"], caption?: TscWatchCompileChange["caption"]) {
|
||||
const oldSnap = VirtualFS.snap(sys);
|
||||
const oldSnap = TestFSWithWatch.snap(sys);
|
||||
baseline.push(`Change::${caption ? " " + caption : ""}`, "");
|
||||
change(sys);
|
||||
baseline.push("Input::");
|
||||
VirtualFS.diff(sys, baseline, oldSnap);
|
||||
return VirtualFS.snap(sys);
|
||||
TestFSWithWatch.diff(sys, baseline, oldSnap);
|
||||
return TestFSWithWatch.snap(sys);
|
||||
}
|
||||
|
||||
export interface RunWatchBaseline<T extends BuilderProgram> extends BaselineBase, TscWatchCompileBase<T> {
|
||||
sys: VirtualFS.TestServerHostTrackingWrittenFiles;
|
||||
sys: TestFSWithWatch.TestServerHostTrackingWrittenFiles;
|
||||
getPrograms: () => readonly CommandLineProgram[];
|
||||
watchOrSolution: WatchOrSolution<T>;
|
||||
}
|
||||
@@ -298,7 +298,7 @@ namespace ts.tscWatch {
|
||||
const programs = baselinePrograms(baseline, getPrograms, oldPrograms, baselineDependencies);
|
||||
sys.serializeWatches(baseline);
|
||||
baseline.push(`exitCode:: ExitStatus.${ExitStatus[sys.exitCode as ExitStatus]}`, "");
|
||||
VirtualFS.diff(sys, baseline, oldSnap);
|
||||
TestFSWithWatch.diff(sys, baseline, oldSnap);
|
||||
sys.writtenFiles.forEach((value, key) => {
|
||||
assert.equal(value, 1, `Expected to write file ${key} only once`);
|
||||
});
|
||||
@@ -422,7 +422,7 @@ namespace ts.tscWatch {
|
||||
const originalReadFile = sys.readFile;
|
||||
const originalWrite = sys.write;
|
||||
const originalWriteFile = sys.writeFile;
|
||||
const solutionBuilder = createSolutionBuilder(VirtualFS.changeToHostTrackingWrittenFiles(
|
||||
const solutionBuilder = createSolutionBuilder(TestFSWithWatch.changeToHostTrackingWrittenFiles(
|
||||
fakes.patchHostForBuildInfoReadWrite(sys)
|
||||
), solutionRoots, originalRead);
|
||||
solutionBuilder.build();
|
||||
@@ -432,7 +432,7 @@ namespace ts.tscWatch {
|
||||
return sys;
|
||||
}
|
||||
|
||||
export function createSystemWithSolutionBuild(solutionRoots: readonly string[], files: VirtualFS.FileOrFolderOrSymLinkMap | readonly VirtualFS.FileOrFolderOrSymLink[], params?: VirtualFS.TestServerHostCreationParameters) {
|
||||
export function createSystemWithSolutionBuild(solutionRoots: readonly string[], files: VirtualFS.FileOrFolderOrSymLinkMap | readonly VirtualFS.FileOrFolderOrSymLink[], params?: TestFSWithWatch.TestServerHostCreationParameters) {
|
||||
return solutionBuildWithBaseline(createWatchedSystem(files, params), solutionRoots);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -545,7 +545,7 @@ export class A {
|
||||
});
|
||||
|
||||
const {cb: cb2, getPrograms: getPrograms2 } = commandLineCallbacks(sys);
|
||||
const oldSnap2 = VirtualFS.snap(sys);
|
||||
const oldSnap2 = TestFSWithWatch.snap(sys);
|
||||
baseline.push("createing separate watcher");
|
||||
createWatchProgram(createWatchCompilerHostOfFilesAndCompilerOptionsForBaseline({
|
||||
rootFiles:[file1.path],
|
||||
|
||||
@@ -7,23 +7,23 @@ namespace ts.tscWatch {
|
||||
["tests"],
|
||||
[
|
||||
libFile,
|
||||
VirtualFS.getTsBuildProjectFile("sample1", "core/tsconfig.json"),
|
||||
VirtualFS.getTsBuildProjectFile("sample1", "core/index.ts"),
|
||||
VirtualFS.getTsBuildProjectFile("sample1", "core/anotherModule.ts"),
|
||||
VirtualFS.getTsBuildProjectFile("sample1", "core/some_decl.d.ts"),
|
||||
VirtualFS.getTsBuildProjectFile("sample1", "logic/tsconfig.json"),
|
||||
VirtualFS.getTsBuildProjectFile("sample1", "logic/index.ts"),
|
||||
VirtualFS.getTsBuildProjectFile("sample1", "tests/tsconfig.json"),
|
||||
VirtualFS.getTsBuildProjectFile("sample1", "tests/index.ts"),
|
||||
TestFSWithWatch.getTsBuildProjectFile("sample1", "core/tsconfig.json"),
|
||||
TestFSWithWatch.getTsBuildProjectFile("sample1", "core/index.ts"),
|
||||
TestFSWithWatch.getTsBuildProjectFile("sample1", "core/anotherModule.ts"),
|
||||
TestFSWithWatch.getTsBuildProjectFile("sample1", "core/some_decl.d.ts"),
|
||||
TestFSWithWatch.getTsBuildProjectFile("sample1", "logic/tsconfig.json"),
|
||||
TestFSWithWatch.getTsBuildProjectFile("sample1", "logic/index.ts"),
|
||||
TestFSWithWatch.getTsBuildProjectFile("sample1", "tests/tsconfig.json"),
|
||||
TestFSWithWatch.getTsBuildProjectFile("sample1", "tests/index.ts"),
|
||||
],
|
||||
{ currentDirectory: `${VirtualFS.tsbuildProjectsLocation}/sample1` }
|
||||
{ currentDirectory: `${TestFSWithWatch.tsbuildProjectsLocation}/sample1` }
|
||||
),
|
||||
commandLineArgs: ["-w", "-p", "tests"],
|
||||
changes: [
|
||||
{
|
||||
caption: "local edit in logic ts, and build logic",
|
||||
change: sys => {
|
||||
sys.appendFile(VirtualFS.getTsBuildProjectFilePath("sample1", "logic/index.ts"), `function foo() { }`);
|
||||
sys.appendFile(TestFSWithWatch.getTsBuildProjectFilePath("sample1", "logic/index.ts"), `function foo() { }`);
|
||||
const solutionBuilder = createSolutionBuilder(sys, ["logic"]);
|
||||
solutionBuilder.build();
|
||||
},
|
||||
@@ -34,7 +34,7 @@ namespace ts.tscWatch {
|
||||
{
|
||||
caption: "non local edit in logic ts, and build logic",
|
||||
change: sys => {
|
||||
sys.appendFile(VirtualFS.getTsBuildProjectFilePath("sample1", "logic/index.ts"), `export function gfoo() { }`);
|
||||
sys.appendFile(TestFSWithWatch.getTsBuildProjectFilePath("sample1", "logic/index.ts"), `export function gfoo() { }`);
|
||||
const solutionBuilder = createSolutionBuilder(sys, ["logic"]);
|
||||
solutionBuilder.build();
|
||||
},
|
||||
@@ -43,7 +43,7 @@ namespace ts.tscWatch {
|
||||
{
|
||||
caption: "change in project reference config file builds correctly",
|
||||
change: sys => {
|
||||
sys.writeFile(VirtualFS.getTsBuildProjectFilePath("sample1", "logic/tsconfig.json"), JSON.stringify({
|
||||
sys.writeFile(TestFSWithWatch.getTsBuildProjectFilePath("sample1", "logic/tsconfig.json"), JSON.stringify({
|
||||
compilerOptions: { composite: true, declaration: true, declarationDir: "decls" },
|
||||
references: [{ path: "../core" }]
|
||||
}));
|
||||
@@ -69,22 +69,22 @@ namespace ts.tscWatch {
|
||||
["tsconfig.c.json"],
|
||||
[
|
||||
libFile,
|
||||
VirtualFS.getTsBuildProjectFile("transitiveReferences", "tsconfig.a.json"),
|
||||
VirtualFS.getTsBuildProjectFile("transitiveReferences", "tsconfig.b.json"),
|
||||
VirtualFS.getTsBuildProjectFile("transitiveReferences", "tsconfig.c.json"),
|
||||
VirtualFS.getTsBuildProjectFile("transitiveReferences", "a.ts"),
|
||||
VirtualFS.getTsBuildProjectFile("transitiveReferences", "b.ts"),
|
||||
VirtualFS.getTsBuildProjectFile("transitiveReferences", "c.ts"),
|
||||
VirtualFS.getTsBuildProjectFile("transitiveReferences", "refs/a.d.ts"),
|
||||
TestFSWithWatch.getTsBuildProjectFile("transitiveReferences", "tsconfig.a.json"),
|
||||
TestFSWithWatch.getTsBuildProjectFile("transitiveReferences", "tsconfig.b.json"),
|
||||
TestFSWithWatch.getTsBuildProjectFile("transitiveReferences", "tsconfig.c.json"),
|
||||
TestFSWithWatch.getTsBuildProjectFile("transitiveReferences", "a.ts"),
|
||||
TestFSWithWatch.getTsBuildProjectFile("transitiveReferences", "b.ts"),
|
||||
TestFSWithWatch.getTsBuildProjectFile("transitiveReferences", "c.ts"),
|
||||
TestFSWithWatch.getTsBuildProjectFile("transitiveReferences", "refs/a.d.ts"),
|
||||
],
|
||||
{ currentDirectory: `${VirtualFS.tsbuildProjectsLocation}/transitiveReferences` }
|
||||
{ currentDirectory: `${TestFSWithWatch.tsbuildProjectsLocation}/transitiveReferences` }
|
||||
),
|
||||
commandLineArgs: ["-w", "-p", "tsconfig.c.json"],
|
||||
changes: [
|
||||
{
|
||||
caption: "non local edit b ts, and build b",
|
||||
change: sys => {
|
||||
sys.appendFile(VirtualFS.getTsBuildProjectFilePath("transitiveReferences", "b.ts"), `export function gfoo() { }`);
|
||||
sys.appendFile(TestFSWithWatch.getTsBuildProjectFilePath("transitiveReferences", "b.ts"), `export function gfoo() { }`);
|
||||
const solutionBuilder = createSolutionBuilder(sys, ["tsconfig.b.json"]);
|
||||
solutionBuilder.build();
|
||||
},
|
||||
@@ -94,46 +94,46 @@ namespace ts.tscWatch {
|
||||
caption: "edit on config file",
|
||||
change: sys => {
|
||||
sys.ensureFileOrFolder({
|
||||
path: VirtualFS.getTsBuildProjectFilePath("transitiveReferences", "nrefs/a.d.ts"),
|
||||
content: sys.readFile(VirtualFS.getTsBuildProjectFilePath("transitiveReferences", "refs/a.d.ts"))!
|
||||
path: TestFSWithWatch.getTsBuildProjectFilePath("transitiveReferences", "nrefs/a.d.ts"),
|
||||
content: sys.readFile(TestFSWithWatch.getTsBuildProjectFilePath("transitiveReferences", "refs/a.d.ts"))!
|
||||
});
|
||||
changeCompilerOpitonsPaths(sys, VirtualFS.getTsBuildProjectFilePath("transitiveReferences", "tsconfig.c.json"), { "@ref/*": ["./nrefs/*"] });
|
||||
changeCompilerOpitonsPaths(sys, TestFSWithWatch.getTsBuildProjectFilePath("transitiveReferences", "tsconfig.c.json"), { "@ref/*": ["./nrefs/*"] });
|
||||
},
|
||||
timeouts: checkSingleTimeoutQueueLengthAndRun
|
||||
},
|
||||
{
|
||||
caption: "Revert config file edit",
|
||||
change: sys => changeCompilerOpitonsPaths(sys, VirtualFS.getTsBuildProjectFilePath("transitiveReferences", "tsconfig.c.json"), { "@ref/*": ["./refs/*"] }),
|
||||
change: sys => changeCompilerOpitonsPaths(sys, TestFSWithWatch.getTsBuildProjectFilePath("transitiveReferences", "tsconfig.c.json"), { "@ref/*": ["./refs/*"] }),
|
||||
timeouts: checkSingleTimeoutQueueLengthAndRun
|
||||
},
|
||||
{
|
||||
caption: "edit in referenced config file",
|
||||
change: sys => changeCompilerOpitonsPaths(sys, VirtualFS.getTsBuildProjectFilePath("transitiveReferences", "tsconfig.b.json"), { "@ref/*": ["./nrefs/*"] }),
|
||||
change: sys => changeCompilerOpitonsPaths(sys, TestFSWithWatch.getTsBuildProjectFilePath("transitiveReferences", "tsconfig.b.json"), { "@ref/*": ["./nrefs/*"] }),
|
||||
timeouts: checkSingleTimeoutQueueLengthAndRun
|
||||
},
|
||||
{
|
||||
caption: "Revert referenced config file edit",
|
||||
change: sys => changeCompilerOpitonsPaths(sys, VirtualFS.getTsBuildProjectFilePath("transitiveReferences", "tsconfig.b.json"), { "@ref/*": ["./refs/*"] }),
|
||||
change: sys => changeCompilerOpitonsPaths(sys, TestFSWithWatch.getTsBuildProjectFilePath("transitiveReferences", "tsconfig.b.json"), { "@ref/*": ["./refs/*"] }),
|
||||
timeouts: checkSingleTimeoutQueueLengthAndRun
|
||||
},
|
||||
{
|
||||
caption: "deleting referenced config file",
|
||||
change: sys => sys.deleteFile(VirtualFS.getTsBuildProjectFilePath("transitiveReferences", "tsconfig.b.json")),
|
||||
change: sys => sys.deleteFile(TestFSWithWatch.getTsBuildProjectFilePath("transitiveReferences", "tsconfig.b.json")),
|
||||
timeouts: checkSingleTimeoutQueueLengthAndRun
|
||||
},
|
||||
{
|
||||
caption: "Revert deleting referenced config file",
|
||||
change: sys => sys.ensureFileOrFolder(VirtualFS.getTsBuildProjectFile("transitiveReferences", "tsconfig.b.json")),
|
||||
change: sys => sys.ensureFileOrFolder(TestFSWithWatch.getTsBuildProjectFile("transitiveReferences", "tsconfig.b.json")),
|
||||
timeouts: checkSingleTimeoutQueueLengthAndRun
|
||||
},
|
||||
{
|
||||
caption: "deleting transitively referenced config file",
|
||||
change: sys => sys.deleteFile(VirtualFS.getTsBuildProjectFilePath("transitiveReferences", "tsconfig.a.json")),
|
||||
change: sys => sys.deleteFile(TestFSWithWatch.getTsBuildProjectFilePath("transitiveReferences", "tsconfig.a.json")),
|
||||
timeouts: checkSingleTimeoutQueueLengthAndRun
|
||||
},
|
||||
{
|
||||
caption: "Revert deleting transitively referenced config file",
|
||||
change: sys => sys.ensureFileOrFolder(VirtualFS.getTsBuildProjectFile("transitiveReferences", "tsconfig.a.json")),
|
||||
change: sys => sys.ensureFileOrFolder(TestFSWithWatch.getTsBuildProjectFile("transitiveReferences", "tsconfig.a.json")),
|
||||
timeouts: checkSingleTimeoutQueueLengthAndRun
|
||||
},
|
||||
],
|
||||
@@ -147,25 +147,25 @@ namespace ts.tscWatch {
|
||||
["tsconfig.c.json"],
|
||||
[
|
||||
libFile,
|
||||
VirtualFS.getTsBuildProjectFile("transitiveReferences", "tsconfig.a.json"),
|
||||
TestFSWithWatch.getTsBuildProjectFile("transitiveReferences", "tsconfig.a.json"),
|
||||
{
|
||||
path: VirtualFS.getTsBuildProjectFilePath("transitiveReferences", "tsconfig.b.json"),
|
||||
path: TestFSWithWatch.getTsBuildProjectFilePath("transitiveReferences", "tsconfig.b.json"),
|
||||
content: JSON.stringify({
|
||||
compilerOptions: { composite: true, moduleResolution: "classic" },
|
||||
files: ["b.ts"],
|
||||
references: [{ path: "tsconfig.a.json" }]
|
||||
})
|
||||
},
|
||||
VirtualFS.getTsBuildProjectFile("transitiveReferences", "tsconfig.c.json"),
|
||||
VirtualFS.getTsBuildProjectFile("transitiveReferences", "a.ts"),
|
||||
TestFSWithWatch.getTsBuildProjectFile("transitiveReferences", "tsconfig.c.json"),
|
||||
TestFSWithWatch.getTsBuildProjectFile("transitiveReferences", "a.ts"),
|
||||
{
|
||||
path: VirtualFS.getTsBuildProjectFilePath("transitiveReferences", "b.ts"),
|
||||
path: TestFSWithWatch.getTsBuildProjectFilePath("transitiveReferences", "b.ts"),
|
||||
content: `import {A} from "a";export const b = new A();`
|
||||
},
|
||||
VirtualFS.getTsBuildProjectFile("transitiveReferences", "c.ts"),
|
||||
VirtualFS.getTsBuildProjectFile("transitiveReferences", "refs/a.d.ts"),
|
||||
TestFSWithWatch.getTsBuildProjectFile("transitiveReferences", "c.ts"),
|
||||
TestFSWithWatch.getTsBuildProjectFile("transitiveReferences", "refs/a.d.ts"),
|
||||
],
|
||||
{ currentDirectory: `${VirtualFS.tsbuildProjectsLocation}/transitiveReferences` }
|
||||
{ currentDirectory: `${TestFSWithWatch.tsbuildProjectsLocation}/transitiveReferences` }
|
||||
),
|
||||
commandLineArgs: ["-w", "-p", "tsconfig.c.json"],
|
||||
changes: emptyArray,
|
||||
@@ -180,14 +180,14 @@ namespace ts.tscWatch {
|
||||
[
|
||||
libFile,
|
||||
{
|
||||
path: VirtualFS.getTsBuildProjectFilePath("transitiveReferences", "a/tsconfig.json"),
|
||||
path: TestFSWithWatch.getTsBuildProjectFilePath("transitiveReferences", "a/tsconfig.json"),
|
||||
content: JSON.stringify({
|
||||
compilerOptions: { composite: true },
|
||||
files: ["index.ts"]
|
||||
}),
|
||||
},
|
||||
{
|
||||
path: VirtualFS.getTsBuildProjectFilePath("transitiveReferences", "b/tsconfig.json"),
|
||||
path: TestFSWithWatch.getTsBuildProjectFilePath("transitiveReferences", "b/tsconfig.json"),
|
||||
content: JSON.stringify({
|
||||
compilerOptions: { composite: true, baseUrl: "./", paths: { "@ref/*": ["../*"] } },
|
||||
files: ["index.ts"],
|
||||
@@ -195,7 +195,7 @@ namespace ts.tscWatch {
|
||||
}),
|
||||
},
|
||||
{
|
||||
path: VirtualFS.getTsBuildProjectFilePath("transitiveReferences", "c/tsconfig.json"),
|
||||
path: TestFSWithWatch.getTsBuildProjectFilePath("transitiveReferences", "c/tsconfig.json"),
|
||||
content: JSON.stringify({
|
||||
compilerOptions: { baseUrl: "./", paths: { "@ref/*": ["../refs/*"] } },
|
||||
files: ["index.ts"],
|
||||
@@ -203,31 +203,31 @@ namespace ts.tscWatch {
|
||||
}),
|
||||
},
|
||||
{
|
||||
path: VirtualFS.getTsBuildProjectFilePath("transitiveReferences", "a/index.ts"),
|
||||
path: TestFSWithWatch.getTsBuildProjectFilePath("transitiveReferences", "a/index.ts"),
|
||||
content: `export class A {}`,
|
||||
},
|
||||
{
|
||||
path: VirtualFS.getTsBuildProjectFilePath("transitiveReferences", "b/index.ts"),
|
||||
path: TestFSWithWatch.getTsBuildProjectFilePath("transitiveReferences", "b/index.ts"),
|
||||
content: `import {A} from '@ref/a';
|
||||
export const b = new A();`,
|
||||
},
|
||||
{
|
||||
path: VirtualFS.getTsBuildProjectFilePath("transitiveReferences", "c/index.ts"),
|
||||
path: TestFSWithWatch.getTsBuildProjectFilePath("transitiveReferences", "c/index.ts"),
|
||||
content: `import {b} from '../b';
|
||||
import {X} from "@ref/a";
|
||||
b;
|
||||
X;`,
|
||||
},
|
||||
VirtualFS.getTsBuildProjectFile("transitiveReferences", "refs/a.d.ts"),
|
||||
TestFSWithWatch.getTsBuildProjectFile("transitiveReferences", "refs/a.d.ts"),
|
||||
],
|
||||
{ currentDirectory: `${VirtualFS.tsbuildProjectsLocation}/transitiveReferences` }
|
||||
{ currentDirectory: `${TestFSWithWatch.tsbuildProjectsLocation}/transitiveReferences` }
|
||||
),
|
||||
commandLineArgs: ["-w", "-p", "c"],
|
||||
changes: [
|
||||
{
|
||||
caption: "non local edit b ts, and build b",
|
||||
change: sys => {
|
||||
sys.appendFile(VirtualFS.getTsBuildProjectFilePath("transitiveReferences", "b/index.ts"), `export function gfoo() { }`);
|
||||
sys.appendFile(TestFSWithWatch.getTsBuildProjectFilePath("transitiveReferences", "b/index.ts"), `export function gfoo() { }`);
|
||||
const solutionBuilder = createSolutionBuilder(sys, ["b"]);
|
||||
solutionBuilder.build();
|
||||
},
|
||||
@@ -237,37 +237,37 @@ X;`,
|
||||
caption: "edit on config file",
|
||||
change: sys => {
|
||||
sys.ensureFileOrFolder({
|
||||
path: VirtualFS.getTsBuildProjectFilePath("transitiveReferences", "nrefs/a.d.ts"),
|
||||
content: sys.readFile(VirtualFS.getTsBuildProjectFilePath("transitiveReferences", "refs/a.d.ts"))!
|
||||
path: TestFSWithWatch.getTsBuildProjectFilePath("transitiveReferences", "nrefs/a.d.ts"),
|
||||
content: sys.readFile(TestFSWithWatch.getTsBuildProjectFilePath("transitiveReferences", "refs/a.d.ts"))!
|
||||
});
|
||||
changeCompilerOpitonsPaths(sys, VirtualFS.getTsBuildProjectFilePath("transitiveReferences", "c/tsconfig.json"), { "@ref/*": ["../nrefs/*"] });
|
||||
changeCompilerOpitonsPaths(sys, TestFSWithWatch.getTsBuildProjectFilePath("transitiveReferences", "c/tsconfig.json"), { "@ref/*": ["../nrefs/*"] });
|
||||
},
|
||||
timeouts: checkSingleTimeoutQueueLengthAndRun
|
||||
},
|
||||
{
|
||||
caption: "Revert config file edit",
|
||||
change: sys => changeCompilerOpitonsPaths(sys, VirtualFS.getTsBuildProjectFilePath("transitiveReferences", "c/tsconfig.json"), { "@ref/*": ["../refs/*"] }),
|
||||
change: sys => changeCompilerOpitonsPaths(sys, TestFSWithWatch.getTsBuildProjectFilePath("transitiveReferences", "c/tsconfig.json"), { "@ref/*": ["../refs/*"] }),
|
||||
timeouts: checkSingleTimeoutQueueLengthAndRun
|
||||
},
|
||||
{
|
||||
caption: "edit in referenced config file",
|
||||
change: sys => changeCompilerOpitonsPaths(sys, VirtualFS.getTsBuildProjectFilePath("transitiveReferences", "b/tsconfig.json"), { "@ref/*": ["../nrefs/*"] }),
|
||||
change: sys => changeCompilerOpitonsPaths(sys, TestFSWithWatch.getTsBuildProjectFilePath("transitiveReferences", "b/tsconfig.json"), { "@ref/*": ["../nrefs/*"] }),
|
||||
timeouts: checkSingleTimeoutQueueLengthAndRun
|
||||
},
|
||||
{
|
||||
caption: "Revert referenced config file edit",
|
||||
change: sys => changeCompilerOpitonsPaths(sys, VirtualFS.getTsBuildProjectFilePath("transitiveReferences", "b/tsconfig.json"), { "@ref/*": ["../refs/*"] }),
|
||||
change: sys => changeCompilerOpitonsPaths(sys, TestFSWithWatch.getTsBuildProjectFilePath("transitiveReferences", "b/tsconfig.json"), { "@ref/*": ["../refs/*"] }),
|
||||
timeouts: checkSingleTimeoutQueueLengthAndRun
|
||||
},
|
||||
{
|
||||
caption: "deleting referenced config file",
|
||||
change: sys => sys.deleteFile(VirtualFS.getTsBuildProjectFilePath("transitiveReferences", "b/tsconfig.json")),
|
||||
change: sys => sys.deleteFile(TestFSWithWatch.getTsBuildProjectFilePath("transitiveReferences", "b/tsconfig.json")),
|
||||
timeouts: sys => sys.checkTimeoutQueueLengthAndRun(2)
|
||||
},
|
||||
{
|
||||
caption: "Revert deleting referenced config file",
|
||||
change: sys => sys.writeFile(
|
||||
VirtualFS.getTsBuildProjectFilePath("transitiveReferences", "b/tsconfig.json"),
|
||||
TestFSWithWatch.getTsBuildProjectFilePath("transitiveReferences", "b/tsconfig.json"),
|
||||
JSON.stringify({
|
||||
compilerOptions: { composite: true, baseUrl: "./", paths: { "@ref/*": ["../*"] } },
|
||||
files: ["index.ts"],
|
||||
@@ -278,13 +278,13 @@ X;`,
|
||||
},
|
||||
{
|
||||
caption: "deleting transitively referenced config file",
|
||||
change: sys => sys.deleteFile(VirtualFS.getTsBuildProjectFilePath("transitiveReferences", "a/tsconfig.json")),
|
||||
change: sys => sys.deleteFile(TestFSWithWatch.getTsBuildProjectFilePath("transitiveReferences", "a/tsconfig.json")),
|
||||
timeouts: sys => sys.checkTimeoutQueueLengthAndRun(2)
|
||||
},
|
||||
{
|
||||
caption: "Revert deleting transitively referenced config file",
|
||||
change: sys => sys.writeFile(
|
||||
VirtualFS.getTsBuildProjectFilePath("transitiveReferences", "a/tsconfig.json"),
|
||||
TestFSWithWatch.getTsBuildProjectFilePath("transitiveReferences", "a/tsconfig.json"),
|
||||
JSON.stringify({
|
||||
compilerOptions: { composite: true },
|
||||
files: ["index.ts"]
|
||||
@@ -304,49 +304,49 @@ X;`,
|
||||
[
|
||||
libFile,
|
||||
{
|
||||
path: VirtualFS.getTsBuildProjectFilePath("transitiveReferences", "a/tsconfig.json"),
|
||||
path: TestFSWithWatch.getTsBuildProjectFilePath("transitiveReferences", "a/tsconfig.json"),
|
||||
content: JSON.stringify({ compilerOptions: { composite: true } }),
|
||||
},
|
||||
{
|
||||
path: VirtualFS.getTsBuildProjectFilePath("transitiveReferences", "b/tsconfig.json"),
|
||||
path: TestFSWithWatch.getTsBuildProjectFilePath("transitiveReferences", "b/tsconfig.json"),
|
||||
content: JSON.stringify({
|
||||
compilerOptions: { composite: true, baseUrl: "./", paths: { "@ref/*": ["../*"] } },
|
||||
references: [{ path: `../a` }]
|
||||
}),
|
||||
},
|
||||
{
|
||||
path: VirtualFS.getTsBuildProjectFilePath("transitiveReferences", "c/tsconfig.json"),
|
||||
path: TestFSWithWatch.getTsBuildProjectFilePath("transitiveReferences", "c/tsconfig.json"),
|
||||
content: JSON.stringify({
|
||||
compilerOptions: { baseUrl: "./", paths: { "@ref/*": ["../refs/*"] } },
|
||||
references: [{ path: `../b` }]
|
||||
}),
|
||||
},
|
||||
{
|
||||
path: VirtualFS.getTsBuildProjectFilePath("transitiveReferences", "a/index.ts"),
|
||||
path: TestFSWithWatch.getTsBuildProjectFilePath("transitiveReferences", "a/index.ts"),
|
||||
content: `export class A {}`,
|
||||
},
|
||||
{
|
||||
path: VirtualFS.getTsBuildProjectFilePath("transitiveReferences", "b/index.ts"),
|
||||
path: TestFSWithWatch.getTsBuildProjectFilePath("transitiveReferences", "b/index.ts"),
|
||||
content: `import {A} from '@ref/a';
|
||||
export const b = new A();`,
|
||||
},
|
||||
{
|
||||
path: VirtualFS.getTsBuildProjectFilePath("transitiveReferences", "c/index.ts"),
|
||||
path: TestFSWithWatch.getTsBuildProjectFilePath("transitiveReferences", "c/index.ts"),
|
||||
content: `import {b} from '../b';
|
||||
import {X} from "@ref/a";
|
||||
b;
|
||||
X;`,
|
||||
},
|
||||
VirtualFS.getTsBuildProjectFile("transitiveReferences", "refs/a.d.ts"),
|
||||
TestFSWithWatch.getTsBuildProjectFile("transitiveReferences", "refs/a.d.ts"),
|
||||
],
|
||||
{ currentDirectory: `${VirtualFS.tsbuildProjectsLocation}/transitiveReferences` }
|
||||
{ currentDirectory: `${TestFSWithWatch.tsbuildProjectsLocation}/transitiveReferences` }
|
||||
),
|
||||
commandLineArgs: ["-w", "-p", "c"],
|
||||
changes: [
|
||||
{
|
||||
caption: "non local edit b ts, and build b",
|
||||
change: sys => {
|
||||
sys.appendFile(VirtualFS.getTsBuildProjectFilePath("transitiveReferences", "b/index.ts"), `export function gfoo() { }`);
|
||||
sys.appendFile(TestFSWithWatch.getTsBuildProjectFilePath("transitiveReferences", "b/index.ts"), `export function gfoo() { }`);
|
||||
const solutionBuilder = createSolutionBuilder(sys, ["b"]);
|
||||
solutionBuilder.build();
|
||||
},
|
||||
@@ -356,37 +356,37 @@ X;`,
|
||||
caption: "edit on config file",
|
||||
change: sys => {
|
||||
sys.ensureFileOrFolder({
|
||||
path: VirtualFS.getTsBuildProjectFilePath("transitiveReferences", "nrefs/a.d.ts"),
|
||||
content: sys.readFile(VirtualFS.getTsBuildProjectFilePath("transitiveReferences", "refs/a.d.ts"))!
|
||||
path: TestFSWithWatch.getTsBuildProjectFilePath("transitiveReferences", "nrefs/a.d.ts"),
|
||||
content: sys.readFile(TestFSWithWatch.getTsBuildProjectFilePath("transitiveReferences", "refs/a.d.ts"))!
|
||||
});
|
||||
changeCompilerOpitonsPaths(sys, VirtualFS.getTsBuildProjectFilePath("transitiveReferences", "c/tsconfig.json"), { "@ref/*": ["../nrefs/*"] });
|
||||
changeCompilerOpitonsPaths(sys, TestFSWithWatch.getTsBuildProjectFilePath("transitiveReferences", "c/tsconfig.json"), { "@ref/*": ["../nrefs/*"] });
|
||||
},
|
||||
timeouts: checkSingleTimeoutQueueLengthAndRun
|
||||
},
|
||||
{
|
||||
caption: "Revert config file edit",
|
||||
change: sys => changeCompilerOpitonsPaths(sys, VirtualFS.getTsBuildProjectFilePath("transitiveReferences", "c/tsconfig.json"), { "@ref/*": ["../refs/*"] }),
|
||||
change: sys => changeCompilerOpitonsPaths(sys, TestFSWithWatch.getTsBuildProjectFilePath("transitiveReferences", "c/tsconfig.json"), { "@ref/*": ["../refs/*"] }),
|
||||
timeouts: checkSingleTimeoutQueueLengthAndRun
|
||||
},
|
||||
{
|
||||
caption: "edit in referenced config file",
|
||||
change: sys => changeCompilerOpitonsPaths(sys, VirtualFS.getTsBuildProjectFilePath("transitiveReferences", "b/tsconfig.json"), { "@ref/*": ["../nrefs/*"] }),
|
||||
change: sys => changeCompilerOpitonsPaths(sys, TestFSWithWatch.getTsBuildProjectFilePath("transitiveReferences", "b/tsconfig.json"), { "@ref/*": ["../nrefs/*"] }),
|
||||
timeouts: checkSingleTimeoutQueueLengthAndRun
|
||||
},
|
||||
{
|
||||
caption: "Revert referenced config file edit",
|
||||
change: sys => changeCompilerOpitonsPaths(sys, VirtualFS.getTsBuildProjectFilePath("transitiveReferences", "b/tsconfig.json"), { "@ref/*": ["../refs/*"] }),
|
||||
change: sys => changeCompilerOpitonsPaths(sys, TestFSWithWatch.getTsBuildProjectFilePath("transitiveReferences", "b/tsconfig.json"), { "@ref/*": ["../refs/*"] }),
|
||||
timeouts: checkSingleTimeoutQueueLengthAndRun
|
||||
},
|
||||
{
|
||||
caption: "deleting referenced config file",
|
||||
change: sys => sys.deleteFile(VirtualFS.getTsBuildProjectFilePath("transitiveReferences", "b/tsconfig.json")),
|
||||
change: sys => sys.deleteFile(TestFSWithWatch.getTsBuildProjectFilePath("transitiveReferences", "b/tsconfig.json")),
|
||||
timeouts: sys => sys.checkTimeoutQueueLengthAndRun(2)
|
||||
},
|
||||
{
|
||||
caption: "Revert deleting referenced config file",
|
||||
change: sys => sys.writeFile(
|
||||
VirtualFS.getTsBuildProjectFilePath("transitiveReferences", "b/tsconfig.json"),
|
||||
TestFSWithWatch.getTsBuildProjectFilePath("transitiveReferences", "b/tsconfig.json"),
|
||||
JSON.stringify({
|
||||
compilerOptions: { composite: true, baseUrl: "./", paths: { "@ref/*": ["../*"] } },
|
||||
references: [{ path: `../a` }]
|
||||
@@ -396,13 +396,13 @@ X;`,
|
||||
},
|
||||
{
|
||||
caption: "deleting transitively referenced config file",
|
||||
change: sys => sys.deleteFile(VirtualFS.getTsBuildProjectFilePath("transitiveReferences", "a/tsconfig.json")),
|
||||
change: sys => sys.deleteFile(TestFSWithWatch.getTsBuildProjectFilePath("transitiveReferences", "a/tsconfig.json")),
|
||||
timeouts: sys => sys.checkTimeoutQueueLengthAndRun(2)
|
||||
},
|
||||
{
|
||||
caption: "Revert deleting transitively referenced config file",
|
||||
change: sys => sys.writeFile(
|
||||
VirtualFS.getTsBuildProjectFilePath("transitiveReferences", "a/tsconfig.json"),
|
||||
TestFSWithWatch.getTsBuildProjectFilePath("transitiveReferences", "a/tsconfig.json"),
|
||||
JSON.stringify({ compilerOptions: { composite: true } }),
|
||||
),
|
||||
timeouts: sys => sys.checkTimeoutQueueLengthAndRun(2)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
namespace ts.tscWatch {
|
||||
import getFileFromProject = VirtualFS.getTsBuildProjectFile;
|
||||
import getFileFromProject = TestFSWithWatch.getTsBuildProjectFile;
|
||||
describe("unittests:: tsc-watch:: watchAPI:: with sourceOfProjectReferenceRedirect", () => {
|
||||
interface VerifyWatchInput {
|
||||
files: readonly VirtualFS.FileOrFolderOrSymLink[];
|
||||
|
||||
@@ -204,13 +204,13 @@ namespace ts.tscWatch {
|
||||
function createWatch<T extends BuilderProgram>(
|
||||
baseline: string[],
|
||||
config: File,
|
||||
sys: VirtualFS.TestServerHostTrackingWrittenFiles,
|
||||
sys: TestFSWithWatch.TestServerHostTrackingWrittenFiles,
|
||||
createProgram: CreateProgram<T>,
|
||||
optionsToExtend?: CompilerOptions,
|
||||
) {
|
||||
const { cb, getPrograms } = commandLineCallbacks(sys);
|
||||
baseline.push(`tsc --w${optionsToExtend?.noEmit ? " --noEmit" : ""}`);
|
||||
const oldSnap = VirtualFS.snap(sys);
|
||||
const oldSnap = TestFSWithWatch.snap(sys);
|
||||
const host = createWatchCompilerHostOfConfigFileForBaseline<T>({
|
||||
configFileName: config.path,
|
||||
optionsToExtend,
|
||||
@@ -246,9 +246,9 @@ namespace ts.tscWatch {
|
||||
function applyChangeForBuilderTest(
|
||||
baseline: string[],
|
||||
emitBaseline: string[],
|
||||
sys: VirtualFS.TestServerHostTrackingWrittenFiles,
|
||||
emitSys: VirtualFS.TestServerHostTrackingWrittenFiles,
|
||||
change: (sys: VirtualFS.TestServerHostTrackingWrittenFiles) => void,
|
||||
sys: TestFSWithWatch.TestServerHostTrackingWrittenFiles,
|
||||
emitSys: TestFSWithWatch.TestServerHostTrackingWrittenFiles,
|
||||
change: (sys: TestFSWithWatch.TestServerHostTrackingWrittenFiles) => void,
|
||||
caption: string
|
||||
) {
|
||||
// Change file
|
||||
@@ -260,8 +260,8 @@ namespace ts.tscWatch {
|
||||
baseline: string[],
|
||||
emitBaseline: string[],
|
||||
config: File,
|
||||
sys: VirtualFS.TestServerHostTrackingWrittenFiles,
|
||||
emitSys: VirtualFS.TestServerHostTrackingWrittenFiles,
|
||||
sys: TestFSWithWatch.TestServerHostTrackingWrittenFiles,
|
||||
emitSys: TestFSWithWatch.TestServerHostTrackingWrittenFiles,
|
||||
createProgram: CreateProgram<T>,
|
||||
optionsToExtend?: CompilerOptions) {
|
||||
createWatch(baseline, config, sys, createProgram, optionsToExtend);
|
||||
@@ -385,7 +385,7 @@ namespace ts.tscWatch {
|
||||
applyChange(sys, baseline, sys => sys.writeFile(mainFile.path, "export const x = 10;"), "Fix error");
|
||||
|
||||
const { cb, getPrograms } = commandLineCallbacks(sys);
|
||||
const oldSnap = VirtualFS.snap(sys);
|
||||
const oldSnap = TestFSWithWatch.snap(sys);
|
||||
const reportDiagnostic = createDiagnosticReporter(sys, /*pretty*/ true);
|
||||
const reportWatchStatus = createWatchStatusReporter(sys, /*pretty*/ true);
|
||||
const host = createWatchCompilerHostOfConfigFile({
|
||||
|
||||
@@ -3,13 +3,13 @@ namespace ts.projectSystem {
|
||||
export import protocol = server.protocol;
|
||||
export import CommandNames = server.CommandNames;
|
||||
|
||||
export import TestServerHost = VirtualFS.TestServerHost;
|
||||
export import TestServerHost = TestFSWithWatch.TestServerHost;
|
||||
export type File = VirtualFS.File;
|
||||
export type SymLink = VirtualFS.SymLink;
|
||||
export type Folder = VirtualFS.Folder;
|
||||
export import createServerHost = VirtualFS.createServerHost;
|
||||
export import checkArray = VirtualFS.checkArray;
|
||||
export import libFile = VirtualFS.libFile;
|
||||
export import createServerHost = TestFSWithWatch.createServerHost;
|
||||
export import checkArray = TestFSWithWatch.checkArray;
|
||||
export import libFile = TestFSWithWatch.libFile;
|
||||
|
||||
export import commonFile1 = tscWatch.commonFile1;
|
||||
export import commonFile2 = tscWatch.commonFile2;
|
||||
|
||||
@@ -110,7 +110,7 @@ ${appendDts}`
|
||||
describe("when dependency project is not open", () => {
|
||||
describe("Of usageTs", () => {
|
||||
it("with initial file open, without specifying project file", () => {
|
||||
const host = VirtualFS.changeToHostTrackingWrittenFiles(
|
||||
const host = TestFSWithWatch.changeToHostTrackingWrittenFiles(
|
||||
createServerHost([dependencyTs, dependencyConfig, usageTs, usageConfig, libFile])
|
||||
);
|
||||
const session = createSession(host);
|
||||
@@ -146,7 +146,7 @@ ${appendDts}`
|
||||
assert.deepEqual(actualEmitOutput, expectedEmitOutput(expectedFiles), "Emit output");
|
||||
});
|
||||
it("with initial file open, with specifying project file", () => {
|
||||
const host = VirtualFS.changeToHostTrackingWrittenFiles(
|
||||
const host = TestFSWithWatch.changeToHostTrackingWrittenFiles(
|
||||
createServerHost([dependencyTs, dependencyConfig, usageTs, usageConfig, libFile])
|
||||
);
|
||||
const session = createSession(host);
|
||||
@@ -182,7 +182,7 @@ ${appendDts}`
|
||||
assert.deepEqual(actualEmitOutput, expectedEmitOutput(expectedFiles), "Emit output");
|
||||
});
|
||||
it("with local change to dependency, without specifying project file", () => {
|
||||
const host = VirtualFS.changeToHostTrackingWrittenFiles(
|
||||
const host = TestFSWithWatch.changeToHostTrackingWrittenFiles(
|
||||
createServerHost([dependencyTs, dependencyConfig, usageTs, usageConfig, libFile])
|
||||
);
|
||||
const session = createSession(host);
|
||||
@@ -225,7 +225,7 @@ ${appendDts}`
|
||||
assert.deepEqual(actualEmitOutput, expectedEmitOutput(expectedFiles), "Emit output");
|
||||
});
|
||||
it("with local change to dependency, with specifying project file", () => {
|
||||
const host = VirtualFS.changeToHostTrackingWrittenFiles(
|
||||
const host = TestFSWithWatch.changeToHostTrackingWrittenFiles(
|
||||
createServerHost([dependencyTs, dependencyConfig, usageTs, usageConfig, libFile])
|
||||
);
|
||||
const session = createSession(host);
|
||||
@@ -268,7 +268,7 @@ ${appendDts}`
|
||||
assert.deepEqual(actualEmitOutput, expectedEmitOutput(expectedFiles), "Emit output");
|
||||
});
|
||||
it("with local change to usage, without specifying project file", () => {
|
||||
const host = VirtualFS.changeToHostTrackingWrittenFiles(
|
||||
const host = TestFSWithWatch.changeToHostTrackingWrittenFiles(
|
||||
createServerHost([dependencyTs, dependencyConfig, usageTs, usageConfig, libFile])
|
||||
);
|
||||
const session = createSession(host);
|
||||
@@ -322,7 +322,7 @@ ${appendDts}`
|
||||
assert.deepEqual(actualEmitOutput, expectedEmitOutput(expectedFiles), "Emit output");
|
||||
});
|
||||
it("with local change to usage, with specifying project file", () => {
|
||||
const host = VirtualFS.changeToHostTrackingWrittenFiles(
|
||||
const host = TestFSWithWatch.changeToHostTrackingWrittenFiles(
|
||||
createServerHost([dependencyTs, dependencyConfig, usageTs, usageConfig, libFile])
|
||||
);
|
||||
const session = createSession(host);
|
||||
@@ -376,7 +376,7 @@ ${appendDts}`
|
||||
assert.deepEqual(actualEmitOutput, expectedEmitOutput(expectedFiles), "Emit output");
|
||||
});
|
||||
it("with change to dependency, without specifying project file", () => {
|
||||
const host = VirtualFS.changeToHostTrackingWrittenFiles(
|
||||
const host = TestFSWithWatch.changeToHostTrackingWrittenFiles(
|
||||
createServerHost([dependencyTs, dependencyConfig, usageTs, usageConfig, libFile])
|
||||
);
|
||||
const session = createSession(host);
|
||||
@@ -419,7 +419,7 @@ ${appendDts}`
|
||||
assert.deepEqual(actualEmitOutput, expectedEmitOutput(expectedFiles), "Emit output");
|
||||
});
|
||||
it("with change to dependency, with specifying project file", () => {
|
||||
const host = VirtualFS.changeToHostTrackingWrittenFiles(
|
||||
const host = TestFSWithWatch.changeToHostTrackingWrittenFiles(
|
||||
createServerHost([dependencyTs, dependencyConfig, usageTs, usageConfig, libFile])
|
||||
);
|
||||
const session = createSession(host);
|
||||
@@ -462,7 +462,7 @@ ${appendDts}`
|
||||
assert.deepEqual(actualEmitOutput, expectedEmitOutput(expectedFiles), "Emit output");
|
||||
});
|
||||
it("with change to usage, without specifying project file", () => {
|
||||
const host = VirtualFS.changeToHostTrackingWrittenFiles(
|
||||
const host = TestFSWithWatch.changeToHostTrackingWrittenFiles(
|
||||
createServerHost([dependencyTs, dependencyConfig, usageTs, usageConfig, libFile])
|
||||
);
|
||||
const session = createSession(host);
|
||||
@@ -516,7 +516,7 @@ ${appendDts}`
|
||||
assert.deepEqual(actualEmitOutput, expectedEmitOutput(expectedFiles), "Emit output");
|
||||
});
|
||||
it("with change to usage, with specifying project file", () => {
|
||||
const host = VirtualFS.changeToHostTrackingWrittenFiles(
|
||||
const host = TestFSWithWatch.changeToHostTrackingWrittenFiles(
|
||||
createServerHost([dependencyTs, dependencyConfig, usageTs, usageConfig, libFile])
|
||||
);
|
||||
const session = createSession(host);
|
||||
@@ -573,7 +573,7 @@ ${appendDts}`
|
||||
|
||||
describe("Of dependencyTs in usage project", () => {
|
||||
it("with initial file open, without specifying project file", () => {
|
||||
const host = VirtualFS.changeToHostTrackingWrittenFiles(
|
||||
const host = TestFSWithWatch.changeToHostTrackingWrittenFiles(
|
||||
createServerHost([dependencyTs, dependencyConfig, usageTs, usageConfig, libFile])
|
||||
);
|
||||
const session = createSession(host);
|
||||
@@ -604,7 +604,7 @@ ${appendDts}`
|
||||
assert.deepEqual(actualEmitOutput, noEmitOutput(), "Emit output");
|
||||
});
|
||||
it("with initial file open, with specifying project file", () => {
|
||||
const host = VirtualFS.changeToHostTrackingWrittenFiles(
|
||||
const host = TestFSWithWatch.changeToHostTrackingWrittenFiles(
|
||||
createServerHost([dependencyTs, dependencyConfig, usageTs, usageConfig, libFile])
|
||||
);
|
||||
const session = createSession(host);
|
||||
@@ -635,7 +635,7 @@ ${appendDts}`
|
||||
assert.deepEqual(actualEmitOutput, noEmitOutput(), "Emit output");
|
||||
});
|
||||
it("with local change to dependency, without specifying project file", () => {
|
||||
const host = VirtualFS.changeToHostTrackingWrittenFiles(
|
||||
const host = TestFSWithWatch.changeToHostTrackingWrittenFiles(
|
||||
createServerHost([dependencyTs, dependencyConfig, usageTs, usageConfig, libFile])
|
||||
);
|
||||
const session = createSession(host);
|
||||
@@ -673,7 +673,7 @@ ${appendDts}`
|
||||
assert.deepEqual(actualEmitOutput, noEmitOutput(), "Emit output");
|
||||
});
|
||||
it("with local change to dependency, with specifying project file", () => {
|
||||
const host = VirtualFS.changeToHostTrackingWrittenFiles(
|
||||
const host = TestFSWithWatch.changeToHostTrackingWrittenFiles(
|
||||
createServerHost([dependencyTs, dependencyConfig, usageTs, usageConfig, libFile])
|
||||
);
|
||||
const session = createSession(host);
|
||||
@@ -711,7 +711,7 @@ ${appendDts}`
|
||||
assert.deepEqual(actualEmitOutput, noEmitOutput(), "Emit output");
|
||||
});
|
||||
it("with local change to usage, without specifying project file", () => {
|
||||
const host = VirtualFS.changeToHostTrackingWrittenFiles(
|
||||
const host = TestFSWithWatch.changeToHostTrackingWrittenFiles(
|
||||
createServerHost([dependencyTs, dependencyConfig, usageTs, usageConfig, libFile])
|
||||
);
|
||||
const session = createSession(host);
|
||||
@@ -760,7 +760,7 @@ ${appendDts}`
|
||||
assert.deepEqual(actualEmitOutput, noEmitOutput(), "Emit output");
|
||||
});
|
||||
it("with local change to usage, with specifying project file", () => {
|
||||
const host = VirtualFS.changeToHostTrackingWrittenFiles(
|
||||
const host = TestFSWithWatch.changeToHostTrackingWrittenFiles(
|
||||
createServerHost([dependencyTs, dependencyConfig, usageTs, usageConfig, libFile])
|
||||
);
|
||||
const session = createSession(host);
|
||||
@@ -809,7 +809,7 @@ ${appendDts}`
|
||||
assert.deepEqual(actualEmitOutput, noEmitOutput(), "Emit output");
|
||||
});
|
||||
it("with change to dependency, without specifying project file", () => {
|
||||
const host = VirtualFS.changeToHostTrackingWrittenFiles(
|
||||
const host = TestFSWithWatch.changeToHostTrackingWrittenFiles(
|
||||
createServerHost([dependencyTs, dependencyConfig, usageTs, usageConfig, libFile])
|
||||
);
|
||||
const session = createSession(host);
|
||||
@@ -847,7 +847,7 @@ ${appendDts}`
|
||||
assert.deepEqual(actualEmitOutput, noEmitOutput(), "Emit output");
|
||||
});
|
||||
it("with change to dependency, with specifying project file", () => {
|
||||
const host = VirtualFS.changeToHostTrackingWrittenFiles(
|
||||
const host = TestFSWithWatch.changeToHostTrackingWrittenFiles(
|
||||
createServerHost([dependencyTs, dependencyConfig, usageTs, usageConfig, libFile])
|
||||
);
|
||||
const session = createSession(host);
|
||||
@@ -885,7 +885,7 @@ ${appendDts}`
|
||||
assert.deepEqual(actualEmitOutput, noEmitOutput(), "Emit output");
|
||||
});
|
||||
it("with change to usage, without specifying project file", () => {
|
||||
const host = VirtualFS.changeToHostTrackingWrittenFiles(
|
||||
const host = TestFSWithWatch.changeToHostTrackingWrittenFiles(
|
||||
createServerHost([dependencyTs, dependencyConfig, usageTs, usageConfig, libFile])
|
||||
);
|
||||
const session = createSession(host);
|
||||
@@ -934,7 +934,7 @@ ${appendDts}`
|
||||
assert.deepEqual(actualEmitOutput, noEmitOutput(), "Emit output");
|
||||
});
|
||||
it("with change to usage, with specifying project file", () => {
|
||||
const host = VirtualFS.changeToHostTrackingWrittenFiles(
|
||||
const host = TestFSWithWatch.changeToHostTrackingWrittenFiles(
|
||||
createServerHost([dependencyTs, dependencyConfig, usageTs, usageConfig, libFile])
|
||||
);
|
||||
const session = createSession(host);
|
||||
@@ -988,7 +988,7 @@ ${appendDts}`
|
||||
describe("when the depedency file is open", () => {
|
||||
describe("Of usageTs", () => {
|
||||
it("with initial file open, without specifying project file", () => {
|
||||
const host = VirtualFS.changeToHostTrackingWrittenFiles(
|
||||
const host = TestFSWithWatch.changeToHostTrackingWrittenFiles(
|
||||
createServerHost([dependencyTs, dependencyConfig, usageTs, usageConfig, libFile])
|
||||
);
|
||||
const session = createSession(host);
|
||||
@@ -1024,7 +1024,7 @@ ${appendDts}`
|
||||
assert.deepEqual(actualEmitOutput, expectedEmitOutput(expectedFiles), "Emit output");
|
||||
});
|
||||
it("with initial file open, with specifying project file", () => {
|
||||
const host = VirtualFS.changeToHostTrackingWrittenFiles(
|
||||
const host = TestFSWithWatch.changeToHostTrackingWrittenFiles(
|
||||
createServerHost([dependencyTs, dependencyConfig, usageTs, usageConfig, libFile])
|
||||
);
|
||||
const session = createSession(host);
|
||||
@@ -1060,7 +1060,7 @@ ${appendDts}`
|
||||
assert.deepEqual(actualEmitOutput, expectedEmitOutput(expectedFiles), "Emit output");
|
||||
});
|
||||
it("with local change to dependency, without specifying project file", () => {
|
||||
const host = VirtualFS.changeToHostTrackingWrittenFiles(
|
||||
const host = TestFSWithWatch.changeToHostTrackingWrittenFiles(
|
||||
createServerHost([dependencyTs, dependencyConfig, usageTs, usageConfig, libFile])
|
||||
);
|
||||
const session = createSession(host);
|
||||
@@ -1114,7 +1114,7 @@ ${appendDts}`
|
||||
assert.deepEqual(actualEmitOutput, expectedEmitOutput(expectedFiles), "Emit output");
|
||||
});
|
||||
it("with local change to dependency, with specifying project file", () => {
|
||||
const host = VirtualFS.changeToHostTrackingWrittenFiles(
|
||||
const host = TestFSWithWatch.changeToHostTrackingWrittenFiles(
|
||||
createServerHost([dependencyTs, dependencyConfig, usageTs, usageConfig, libFile])
|
||||
);
|
||||
const session = createSession(host);
|
||||
@@ -1168,7 +1168,7 @@ ${appendDts}`
|
||||
assert.deepEqual(actualEmitOutput, expectedEmitOutput(expectedFiles), "Emit output");
|
||||
});
|
||||
it("with local change to usage, without specifying project file", () => {
|
||||
const host = VirtualFS.changeToHostTrackingWrittenFiles(
|
||||
const host = TestFSWithWatch.changeToHostTrackingWrittenFiles(
|
||||
createServerHost([dependencyTs, dependencyConfig, usageTs, usageConfig, libFile])
|
||||
);
|
||||
const session = createSession(host);
|
||||
@@ -1222,7 +1222,7 @@ ${appendDts}`
|
||||
assert.deepEqual(actualEmitOutput, expectedEmitOutput(expectedFiles), "Emit output");
|
||||
});
|
||||
it("with local change to usage, with specifying project file", () => {
|
||||
const host = VirtualFS.changeToHostTrackingWrittenFiles(
|
||||
const host = TestFSWithWatch.changeToHostTrackingWrittenFiles(
|
||||
createServerHost([dependencyTs, dependencyConfig, usageTs, usageConfig, libFile])
|
||||
);
|
||||
const session = createSession(host);
|
||||
@@ -1276,7 +1276,7 @@ ${appendDts}`
|
||||
assert.deepEqual(actualEmitOutput, expectedEmitOutput(expectedFiles), "Emit output");
|
||||
});
|
||||
it("with change to dependency, without specifying project file", () => {
|
||||
const host = VirtualFS.changeToHostTrackingWrittenFiles(
|
||||
const host = TestFSWithWatch.changeToHostTrackingWrittenFiles(
|
||||
createServerHost([dependencyTs, dependencyConfig, usageTs, usageConfig, libFile])
|
||||
);
|
||||
const session = createSession(host);
|
||||
@@ -1330,7 +1330,7 @@ ${appendDts}`
|
||||
assert.deepEqual(actualEmitOutput, expectedEmitOutput(expectedFiles), "Emit output");
|
||||
});
|
||||
it("with change to dependency, with specifying project file", () => {
|
||||
const host = VirtualFS.changeToHostTrackingWrittenFiles(
|
||||
const host = TestFSWithWatch.changeToHostTrackingWrittenFiles(
|
||||
createServerHost([dependencyTs, dependencyConfig, usageTs, usageConfig, libFile])
|
||||
);
|
||||
const session = createSession(host);
|
||||
@@ -1384,7 +1384,7 @@ ${appendDts}`
|
||||
assert.deepEqual(actualEmitOutput, expectedEmitOutput(expectedFiles), "Emit output");
|
||||
});
|
||||
it("with change to usage, without specifying project file", () => {
|
||||
const host = VirtualFS.changeToHostTrackingWrittenFiles(
|
||||
const host = TestFSWithWatch.changeToHostTrackingWrittenFiles(
|
||||
createServerHost([dependencyTs, dependencyConfig, usageTs, usageConfig, libFile])
|
||||
);
|
||||
const session = createSession(host);
|
||||
@@ -1438,7 +1438,7 @@ ${appendDts}`
|
||||
assert.deepEqual(actualEmitOutput, expectedEmitOutput(expectedFiles), "Emit output");
|
||||
});
|
||||
it("with change to usage, with specifying project file", () => {
|
||||
const host = VirtualFS.changeToHostTrackingWrittenFiles(
|
||||
const host = TestFSWithWatch.changeToHostTrackingWrittenFiles(
|
||||
createServerHost([dependencyTs, dependencyConfig, usageTs, usageConfig, libFile])
|
||||
);
|
||||
const session = createSession(host);
|
||||
@@ -1495,7 +1495,7 @@ ${appendDts}`
|
||||
|
||||
describe("Of dependencyTs in usage project", () => {
|
||||
it("with initial file open, with specifying project file", () => {
|
||||
const host = VirtualFS.changeToHostTrackingWrittenFiles(
|
||||
const host = TestFSWithWatch.changeToHostTrackingWrittenFiles(
|
||||
createServerHost([dependencyTs, dependencyConfig, usageTs, usageConfig, libFile])
|
||||
);
|
||||
const session = createSession(host);
|
||||
@@ -1526,7 +1526,7 @@ ${appendDts}`
|
||||
assert.deepEqual(actualEmitOutput, noEmitOutput(), "Emit output");
|
||||
});
|
||||
it("with local change to dependency, with specifying project file", () => {
|
||||
const host = VirtualFS.changeToHostTrackingWrittenFiles(
|
||||
const host = TestFSWithWatch.changeToHostTrackingWrittenFiles(
|
||||
createServerHost([dependencyTs, dependencyConfig, usageTs, usageConfig, libFile])
|
||||
);
|
||||
const session = createSession(host);
|
||||
@@ -1575,7 +1575,7 @@ ${appendDts}`
|
||||
assert.deepEqual(actualEmitOutput, noEmitOutput(), "Emit output");
|
||||
});
|
||||
it("with local change to usage, with specifying project file", () => {
|
||||
const host = VirtualFS.changeToHostTrackingWrittenFiles(
|
||||
const host = TestFSWithWatch.changeToHostTrackingWrittenFiles(
|
||||
createServerHost([dependencyTs, dependencyConfig, usageTs, usageConfig, libFile])
|
||||
);
|
||||
const session = createSession(host);
|
||||
@@ -1624,7 +1624,7 @@ ${appendDts}`
|
||||
assert.deepEqual(actualEmitOutput, noEmitOutput(), "Emit output");
|
||||
});
|
||||
it("with change to dependency, with specifying project file", () => {
|
||||
const host = VirtualFS.changeToHostTrackingWrittenFiles(
|
||||
const host = TestFSWithWatch.changeToHostTrackingWrittenFiles(
|
||||
createServerHost([dependencyTs, dependencyConfig, usageTs, usageConfig, libFile])
|
||||
);
|
||||
const session = createSession(host);
|
||||
@@ -1673,7 +1673,7 @@ ${appendDts}`
|
||||
assert.deepEqual(actualEmitOutput, noEmitOutput(), "Emit output");
|
||||
});
|
||||
it("with change to usage, with specifying project file", () => {
|
||||
const host = VirtualFS.changeToHostTrackingWrittenFiles(
|
||||
const host = TestFSWithWatch.changeToHostTrackingWrittenFiles(
|
||||
createServerHost([dependencyTs, dependencyConfig, usageTs, usageConfig, libFile])
|
||||
);
|
||||
const session = createSession(host);
|
||||
@@ -1725,7 +1725,7 @@ ${appendDts}`
|
||||
|
||||
describe("Of dependencyTs", () => {
|
||||
it("with initial file open, without specifying project file", () => {
|
||||
const host = VirtualFS.changeToHostTrackingWrittenFiles(
|
||||
const host = TestFSWithWatch.changeToHostTrackingWrittenFiles(
|
||||
createServerHost([dependencyTs, dependencyConfig, usageTs, usageConfig, libFile])
|
||||
);
|
||||
const session = createSession(host);
|
||||
@@ -1762,7 +1762,7 @@ ${appendDts}`
|
||||
assert.deepEqual(actualEmitOutput, expectedEmitOutput(expectedFiles), "Emit output");
|
||||
});
|
||||
it("with initial file open, with specifying project file", () => {
|
||||
const host = VirtualFS.changeToHostTrackingWrittenFiles(
|
||||
const host = TestFSWithWatch.changeToHostTrackingWrittenFiles(
|
||||
createServerHost([dependencyTs, dependencyConfig, usageTs, usageConfig, libFile])
|
||||
);
|
||||
const session = createSession(host);
|
||||
@@ -1798,7 +1798,7 @@ ${appendDts}`
|
||||
assert.deepEqual(actualEmitOutput, expectedEmitOutput(expectedFiles), "Emit output");
|
||||
});
|
||||
it("with local change to dependency, without specifying project file", () => {
|
||||
const host = VirtualFS.changeToHostTrackingWrittenFiles(
|
||||
const host = TestFSWithWatch.changeToHostTrackingWrittenFiles(
|
||||
createServerHost([dependencyTs, dependencyConfig, usageTs, usageConfig, libFile])
|
||||
);
|
||||
const session = createSession(host);
|
||||
@@ -1853,7 +1853,7 @@ ${appendDts}`
|
||||
assert.deepEqual(actualEmitOutput, expectedEmitOutput(expectedFiles), "Emit output");
|
||||
});
|
||||
it("with local change to dependency, with specifying project file", () => {
|
||||
const host = VirtualFS.changeToHostTrackingWrittenFiles(
|
||||
const host = TestFSWithWatch.changeToHostTrackingWrittenFiles(
|
||||
createServerHost([dependencyTs, dependencyConfig, usageTs, usageConfig, libFile])
|
||||
);
|
||||
const session = createSession(host);
|
||||
@@ -1907,7 +1907,7 @@ ${appendDts}`
|
||||
assert.deepEqual(actualEmitOutput, expectedEmitOutput(expectedFiles), "Emit output");
|
||||
});
|
||||
it("with local change to usage, without specifying project file", () => {
|
||||
const host = VirtualFS.changeToHostTrackingWrittenFiles(
|
||||
const host = TestFSWithWatch.changeToHostTrackingWrittenFiles(
|
||||
createServerHost([dependencyTs, dependencyConfig, usageTs, usageConfig, libFile])
|
||||
);
|
||||
const session = createSession(host);
|
||||
@@ -1962,7 +1962,7 @@ ${appendDts}`
|
||||
assert.deepEqual(actualEmitOutput, expectedEmitOutput(expectedFiles), "Emit output");
|
||||
});
|
||||
it("with local change to usage, with specifying project file", () => {
|
||||
const host = VirtualFS.changeToHostTrackingWrittenFiles(
|
||||
const host = TestFSWithWatch.changeToHostTrackingWrittenFiles(
|
||||
createServerHost([dependencyTs, dependencyConfig, usageTs, usageConfig, libFile])
|
||||
);
|
||||
const session = createSession(host);
|
||||
@@ -2016,7 +2016,7 @@ ${appendDts}`
|
||||
assert.deepEqual(actualEmitOutput, expectedEmitOutput(expectedFiles), "Emit output");
|
||||
});
|
||||
it("with change to dependency, without specifying project file", () => {
|
||||
const host = VirtualFS.changeToHostTrackingWrittenFiles(
|
||||
const host = TestFSWithWatch.changeToHostTrackingWrittenFiles(
|
||||
createServerHost([dependencyTs, dependencyConfig, usageTs, usageConfig, libFile])
|
||||
);
|
||||
const session = createSession(host);
|
||||
@@ -2071,7 +2071,7 @@ ${appendDts}`
|
||||
assert.deepEqual(actualEmitOutput, expectedEmitOutput(expectedFiles), "Emit output");
|
||||
});
|
||||
it("with change to dependency, with specifying project file", () => {
|
||||
const host = VirtualFS.changeToHostTrackingWrittenFiles(
|
||||
const host = TestFSWithWatch.changeToHostTrackingWrittenFiles(
|
||||
createServerHost([dependencyTs, dependencyConfig, usageTs, usageConfig, libFile])
|
||||
);
|
||||
const session = createSession(host);
|
||||
@@ -2125,7 +2125,7 @@ ${appendDts}`
|
||||
assert.deepEqual(actualEmitOutput, expectedEmitOutput(expectedFiles), "Emit output");
|
||||
});
|
||||
it("with change to usage, without specifying project file", () => {
|
||||
const host = VirtualFS.changeToHostTrackingWrittenFiles(
|
||||
const host = TestFSWithWatch.changeToHostTrackingWrittenFiles(
|
||||
createServerHost([dependencyTs, dependencyConfig, usageTs, usageConfig, libFile])
|
||||
);
|
||||
const session = createSession(host);
|
||||
@@ -2180,7 +2180,7 @@ ${appendDts}`
|
||||
assert.deepEqual(actualEmitOutput, expectedEmitOutput(expectedFiles), "Emit output");
|
||||
});
|
||||
it("with change to usage, with specifying project file", () => {
|
||||
const host = VirtualFS.changeToHostTrackingWrittenFiles(
|
||||
const host = TestFSWithWatch.changeToHostTrackingWrittenFiles(
|
||||
createServerHost([dependencyTs, dependencyConfig, usageTs, usageConfig, libFile])
|
||||
);
|
||||
const session = createSession(host);
|
||||
|
||||
@@ -10,8 +10,8 @@ namespace ts.projectSystem {
|
||||
describe("with container project", () => {
|
||||
function getProjectFiles(project: string): [File, File] {
|
||||
return [
|
||||
VirtualFS.getTsBuildProjectFile(project, "tsconfig.json"),
|
||||
VirtualFS.getTsBuildProjectFile(project, "index.ts"),
|
||||
TestFSWithWatch.getTsBuildProjectFile(project, "tsconfig.json"),
|
||||
TestFSWithWatch.getTsBuildProjectFile(project, "index.ts"),
|
||||
];
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@ namespace ts.projectSystem {
|
||||
const containerLib = getProjectFiles("container/lib");
|
||||
const containerExec = getProjectFiles("container/exec");
|
||||
const containerCompositeExec = getProjectFiles("container/compositeExec");
|
||||
const containerConfig = VirtualFS.getTsBuildProjectFile(project, "tsconfig.json");
|
||||
const containerConfig = TestFSWithWatch.getTsBuildProjectFile(project, "tsconfig.json");
|
||||
const files = [libFile, ...containerLib, ...containerExec, ...containerCompositeExec, containerConfig];
|
||||
|
||||
it("does not error on container only project", () => {
|
||||
@@ -29,7 +29,7 @@ namespace ts.projectSystem {
|
||||
const session = createSession(host, { logger: createLoggerWithInMemoryLogs() });
|
||||
const service = session.getProjectService();
|
||||
service.openExternalProjects([{
|
||||
projectFileName: VirtualFS.getTsBuildProjectFilePath(project, project),
|
||||
projectFileName: TestFSWithWatch.getTsBuildProjectFilePath(project, project),
|
||||
rootFiles: files.map(f => ({ fileName: f.path })),
|
||||
options: {}
|
||||
}]);
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
namespace ts.projectSystem {
|
||||
describe("unittests:: tsserver:: projects with references: invoking when references are already built", () => {
|
||||
it("on sample project", () => {
|
||||
const coreConfig = VirtualFS.getTsBuildProjectFile("sample1", "core/tsconfig.json");
|
||||
const coreIndex = VirtualFS.getTsBuildProjectFile("sample1", "core/index.ts");
|
||||
const coreAnotherModule = VirtualFS.getTsBuildProjectFile("sample1", "core/anotherModule.ts");
|
||||
const coreSomeDecl = VirtualFS.getTsBuildProjectFile("sample1", "core/some_decl.d.ts");
|
||||
const logicConfig = VirtualFS.getTsBuildProjectFile("sample1", "logic/tsconfig.json");
|
||||
const logicIndex = VirtualFS.getTsBuildProjectFile("sample1", "logic/index.ts");
|
||||
const testsConfig = VirtualFS.getTsBuildProjectFile("sample1", "tests/tsconfig.json");
|
||||
const testsIndex = VirtualFS.getTsBuildProjectFile("sample1", "tests/index.ts");
|
||||
const coreConfig = TestFSWithWatch.getTsBuildProjectFile("sample1", "core/tsconfig.json");
|
||||
const coreIndex = TestFSWithWatch.getTsBuildProjectFile("sample1", "core/index.ts");
|
||||
const coreAnotherModule = TestFSWithWatch.getTsBuildProjectFile("sample1", "core/anotherModule.ts");
|
||||
const coreSomeDecl = TestFSWithWatch.getTsBuildProjectFile("sample1", "core/some_decl.d.ts");
|
||||
const logicConfig = TestFSWithWatch.getTsBuildProjectFile("sample1", "logic/tsconfig.json");
|
||||
const logicIndex = TestFSWithWatch.getTsBuildProjectFile("sample1", "logic/index.ts");
|
||||
const testsConfig = TestFSWithWatch.getTsBuildProjectFile("sample1", "tests/tsconfig.json");
|
||||
const testsIndex = TestFSWithWatch.getTsBuildProjectFile("sample1", "tests/index.ts");
|
||||
const host = createServerHost([libFile, coreConfig, coreIndex, coreAnotherModule, coreSomeDecl, logicConfig, logicIndex, testsConfig, testsIndex]);
|
||||
const logger = createLoggerWithInMemoryLogs();
|
||||
const service = createProjectService(host, { logger });
|
||||
|
||||
@@ -34,8 +34,8 @@ ${file.fileContent}`;
|
||||
subScenario: string,
|
||||
requests: [string, ((host: TestServerHost, fshost: VirtualFS.VirtualServerHost) => void) | Partial<protocol.Request>][],
|
||||
) {
|
||||
const host = VirtualFS.createServerHost({ executingFilePath: "/host/tsc.js" });
|
||||
const fshost = VirtualFS.createVirtualServerHost({ executingFilePath: "/fshost/tsc.js" });
|
||||
const host = TestFSWithWatch.createServerHost({ executingFilePath: "/host/tsc.js" });
|
||||
const fshost = TestFSWithWatch.createVirtualServerHost({ executingFilePath: "/fshost/tsc.js" });
|
||||
const session = createSession(host, { fshost, logger: createLoggerWithInMemoryLogs(), canUseEvents: true });
|
||||
const history: string[] = [];
|
||||
VirtualFS.createWatcher(fshost.fsWatches, "/host/b/app.ts" as Path, {
|
||||
@@ -46,8 +46,8 @@ ${file.fileContent}`;
|
||||
inode: undefined,
|
||||
});
|
||||
|
||||
let prev = VirtualFS.snap(fshost);
|
||||
let prev2 = VirtualFS.snap(host);
|
||||
let prev = TestFSWithWatch.snap(fshost);
|
||||
let prev2 = TestFSWithWatch.snap(host);
|
||||
for (const [name, request] of requests) {
|
||||
if (typeof request === "function") {
|
||||
request(host, fshost);
|
||||
@@ -57,16 +57,16 @@ ${file.fileContent}`;
|
||||
}
|
||||
history.push("");
|
||||
history.push("#### " + name);
|
||||
VirtualFS.diff(fshost, history, prev);
|
||||
prev = VirtualFS.snap(fshost);
|
||||
VirtualFS.diff(host, history, prev2);
|
||||
prev2 = VirtualFS.snap(host);
|
||||
host.serializeTimeout(history)
|
||||
TestFSWithWatch.diff(fshost, history, prev);
|
||||
prev = TestFSWithWatch.snap(fshost);
|
||||
TestFSWithWatch.diff(host, history, prev2);
|
||||
prev2 = TestFSWithWatch.snap(host);
|
||||
host.serializeTimeout(history);
|
||||
}
|
||||
history.push("### fshost watches")
|
||||
fshost.serializeWatches(history)
|
||||
history.push("### host watches")
|
||||
host.serializeWatches(history)
|
||||
history.push("### fshost watches");
|
||||
fshost.serializeWatches(history);
|
||||
history.push("### host watches");
|
||||
host.serializeWatches(history);
|
||||
Harness.Baseline.runBaseline(`tsserver/${scenario}/${subScenario.split(" ").join("-")}.txt`, history.join("\r\n"));
|
||||
baselineTsserverLogs(scenario, subScenario, session);
|
||||
}
|
||||
|
||||
@@ -41,7 +41,7 @@ namespace ts.projectSystem {
|
||||
let fshost: VirtualFS.VirtualServerHost | undefined;
|
||||
if (isVfs) {
|
||||
serverMode = LanguageServiceMode.Semantic;
|
||||
fshost = VirtualFS.createVirtualServerHost({ executingFilePath: "/a/lib/tsc.js" });
|
||||
fshost = TestFSWithWatch.createVirtualServerHost({ executingFilePath: "/a/lib/tsc.js" });
|
||||
fshost.ensureFileOrFolder(libFile);
|
||||
}
|
||||
const logger = logLevel !== undefined ? new server.MainProcessLogger(logLevel, webHost) : nullLogger();
|
||||
|
||||
@@ -58,7 +58,7 @@ namespace ts.server {
|
||||
console.warn = (...args) => logger.msg(args.length === 1 ? args[0] : args.join(", "), Msg.Err);
|
||||
console.error = (...args) => logger.msg(args.length === 1 ? args[0] : args.join(", "), Msg.Err);
|
||||
|
||||
const fshost = vfs ? new VirtualFS.VirtualServerHost({
|
||||
const fshost = vfs ? new TestFSWithWatch.VirtualServerHost({
|
||||
useCaseSensitiveFileNames: sys.useCaseSensitiveFileNames,
|
||||
executingFilePath: directorySeparator, // Use same executingFilePath as webserver
|
||||
newLine: sys.newLine,
|
||||
|
||||
@@ -16,9 +16,9 @@
|
||||
{ "path": "../compiler", "prepend": true },
|
||||
{ "path": "../services", "prepend": true },
|
||||
{ "path": "../jsTyping", "prepend": true },
|
||||
{ "path": "../vfs", "prepend": true },
|
||||
{ "path": "../server", "prepend": true },
|
||||
{ "path": "../webServer", "prepend": true },
|
||||
{ "path": "../vfs", "prepend": true },
|
||||
{ "path": "../deprecatedCompat", "prepend": true }
|
||||
]
|
||||
}
|
||||
|
||||
@@ -12,7 +12,6 @@
|
||||
{ "path": "../compiler" },
|
||||
{ "path": "../jsTyping" },
|
||||
{ "path": "../services" },
|
||||
{ "path": "../vfs" },
|
||||
{ "path": "../server" }
|
||||
],
|
||||
"files": [
|
||||
|
||||
Reference in New Issue
Block a user