From 312c2f0672089528daa89391566d864a9aa3a999 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Fri, 26 Feb 2016 13:08:17 -0800 Subject: [PATCH 1/7] Moved Javascript file extension check to own namespace --- Nodejs/Product/Nodejs/NodejsFileExtensions.cs | 31 +++++++++++++++++++ .../Nodejs/Project/NodejsProjectNode.cs | 4 +-- 2 files changed, 32 insertions(+), 3 deletions(-) create mode 100644 Nodejs/Product/Nodejs/NodejsFileExtensions.cs diff --git a/Nodejs/Product/Nodejs/NodejsFileExtensions.cs b/Nodejs/Product/Nodejs/NodejsFileExtensions.cs new file mode 100644 index 000000000..ddf7a4621 --- /dev/null +++ b/Nodejs/Product/Nodejs/NodejsFileExtensions.cs @@ -0,0 +1,31 @@ +//*********************************************************// +// Copyright (c) Microsoft. All rights reserved. +// +// Apache 2.0 License +// +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +// implied. See the License for the specific language governing +// permissions and limitations under the License. +// +//*********************************************************// + +using System; +using System.IO; + +namespace Microsoft.NodejsTools { + static class NodejsFileExtensions { + public static bool IsJavaScriptFile(string file) { + return IsFileType(file, NodejsConstants.JavaScriptExtension); + } + + private static bool IsFileType(string file, string extension) { + var ext = Path.GetExtension(file); + return String.Equals(ext, extension, StringComparison.OrdinalIgnoreCase); + } + } +} diff --git a/Nodejs/Product/Nodejs/Project/NodejsProjectNode.cs b/Nodejs/Product/Nodejs/Project/NodejsProjectNode.cs index 7c1388592..1bef80af3 100644 --- a/Nodejs/Product/Nodejs/Project/NodejsProjectNode.cs +++ b/Nodejs/Product/Nodejs/Project/NodejsProjectNode.cs @@ -244,9 +244,7 @@ protected override void AddNewFileNodeToHierarchy(HierarchyNode parentNode, stri } internal static bool IsNodejsFile(string strFileName) { - var ext = Path.GetExtension(strFileName); - - return String.Equals(ext, NodejsConstants.JavaScriptExtension, StringComparison.OrdinalIgnoreCase); + return NodejsFileExtensions.IsNodejsFile(strFileName); } internal override string GetItemType(string filename) { From 730031b13feec2f2d750853d06f3f7715a29ee89 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Fri, 26 Feb 2016 13:18:00 -0800 Subject: [PATCH 2/7] Switching some logic to use helper methods to check if a file is a js file. --- Nodejs/Product/Nodejs/Nodejs.csproj | 1 + Nodejs/Product/Nodejs/NodejsPackage.cs | 4 +- .../Project/ImportWizard/ImportSettings.cs | 2 +- .../Nodejs/Project/NodejsProjectNode.cs | 4 +- Nodejs/Product/TestAdapter/TestAdapter.csproj | 379 +++++++++--------- .../TestAdapter/TestContainerDiscoverer.cs | 2 +- 6 files changed, 197 insertions(+), 195 deletions(-) diff --git a/Nodejs/Product/Nodejs/Nodejs.csproj b/Nodejs/Product/Nodejs/Nodejs.csproj index 56464a0c8..1c92476fd 100644 --- a/Nodejs/Product/Nodejs/Nodejs.csproj +++ b/Nodejs/Product/Nodejs/Nodejs.csproj @@ -341,6 +341,7 @@ + NpmOutputWindow.xaml diff --git a/Nodejs/Product/Nodejs/NodejsPackage.cs b/Nodejs/Product/Nodejs/NodejsPackage.cs index 1678ec38f..d7c9b6ce0 100644 --- a/Nodejs/Product/Nodejs/NodejsPackage.cs +++ b/Nodejs/Product/Nodejs/NodejsPackage.cs @@ -431,9 +431,7 @@ public override Type GetLibraryManagerType() { } public override bool IsRecognizedFile(string filename) { - var ext = Path.GetExtension(filename); - - return String.Equals(ext, NodejsConstants.JavaScriptExtension, StringComparison.OrdinalIgnoreCase); + return NodejsFileExtensions.IsJavaScriptFile(filename); } internal new object GetService(Type serviceType) { diff --git a/Nodejs/Product/Nodejs/Project/ImportWizard/ImportSettings.cs b/Nodejs/Product/Nodejs/Project/ImportWizard/ImportSettings.cs index 03b6b26ed..daec5553b 100644 --- a/Nodejs/Product/Nodejs/Project/ImportWizard/ImportSettings.cs +++ b/Nodejs/Product/Nodejs/Project/ImportWizard/ImportSettings.cs @@ -335,7 +335,7 @@ out Guid projectGuid writer.WriteStartElement("ItemGroup"); foreach (var file in EnumerateAllFiles(sourcePath, filters, excludeNodeModules)) { var ext = Path.GetExtension(file); - if (NodejsConstants.JavaScriptExtension.Equals(ext, StringComparison.OrdinalIgnoreCase)) { + if (NodejsFileExtensions.IsJavaScriptFile(file)) { writer.WriteStartElement("Compile"); } else if (NodejsConstants.TypeScriptExtension.Equals(ext, StringComparison.OrdinalIgnoreCase)) { writer.WriteStartElement("TypeScriptCompile"); diff --git a/Nodejs/Product/Nodejs/Project/NodejsProjectNode.cs b/Nodejs/Product/Nodejs/Project/NodejsProjectNode.cs index 1bef80af3..33ac77693 100644 --- a/Nodejs/Product/Nodejs/Project/NodejsProjectNode.cs +++ b/Nodejs/Product/Nodejs/Project/NodejsProjectNode.cs @@ -244,7 +244,7 @@ protected override void AddNewFileNodeToHierarchy(HierarchyNode parentNode, stri } internal static bool IsNodejsFile(string strFileName) { - return NodejsFileExtensions.IsNodejsFile(strFileName); + return NodejsFileExtensions.IsJavaScriptFile(strFileName); } internal override string GetItemType(string filename) { @@ -385,7 +385,7 @@ protected override Stream ProjectIconsImageStripStream { public override bool IsCodeFile(string fileName) { var ext = Path.GetExtension(fileName); - return ext.Equals(NodejsConstants.JavaScriptExtension, StringComparison.OrdinalIgnoreCase) || + return NodejsFileExtensions.IsJavaScriptFile(fileName) || ext.Equals(NodejsConstants.TypeScriptExtension, StringComparison.OrdinalIgnoreCase); } diff --git a/Nodejs/Product/TestAdapter/TestAdapter.csproj b/Nodejs/Product/TestAdapter/TestAdapter.csproj index b6ab773b1..212c76eab 100644 --- a/Nodejs/Product/TestAdapter/TestAdapter.csproj +++ b/Nodejs/Product/TestAdapter/TestAdapter.csproj @@ -1,201 +1,204 @@ - - - - - - 14.0 - - - - - 4.0 - - - - - 12.0 - - - - - 4.0 - - - - - 11.0 - - - - - 4.0 - - - - - - Debug - AnyCPU - 10.0.20305 - 2.0 - {82b43b9b-a64c-4715-b499-d71e9ca2bd60};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - {5085DF35-3A32-4894-835E-E5A3956D4F57} - Library - Properties - Microsoft.NodejsTools.TestAdapter - Microsoft.NodejsTools.TestAdapter - true - SAK - SAK - SAK - SAK - ..\..\ - - - $(DefineConstants);NO_WINDOWS - - - - False - - - False - - - False - - - $(DevEnvDir)\CommonExtensions\Microsoft\TestWindow\Microsoft.VisualStudio.TestPlatform.ObjectModel.dll - False - - - $(DevEnvDir)\CommonExtensions\Microsoft\TestWindow\Microsoft.VisualStudio.TestWindow.Interfaces.dll - False - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + 14.0 + + + + + 4.0 + + + + + 12.0 + + + + + 4.0 + + + + + 11.0 + + + + + 4.0 + + + + + + Debug + AnyCPU + 10.0.20305 + 2.0 + {82b43b9b-a64c-4715-b499-d71e9ca2bd60};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + {5085DF35-3A32-4894-835E-E5A3956D4F57} + Library + Properties + Microsoft.NodejsTools.TestAdapter + Microsoft.NodejsTools.TestAdapter + true + SAK + SAK + SAK + SAK + ..\..\ + + + $(DefineConstants);NO_WINDOWS + + + + False + + + False + + + False + + + $(DevEnvDir)\CommonExtensions\Microsoft\TestWindow\Microsoft.VisualStudio.TestPlatform.ObjectModel.dll + False + + + $(DevEnvDir)\CommonExtensions\Microsoft\TestWindow\Microsoft.VisualStudio.TestWindow.Interfaces.dll + False + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - ..\..\packages\Newtonsoft.Json.4.5.11\lib\net40\Newtonsoft.Json.dll - - - - - - - ..\..\packages\Newtonsoft.Json.6.0.4\lib\net40\Newtonsoft.Json.dll - - - - - - - CommonConstants.cs - - - CommonUtils.cs - - - SolutionEventsListener.cs - - - ProcessOutput.cs - - - Guids.cs - - - Nodejs.cs - - - TestFrameworks\TestFrameworkDirectories.cs - - - TypeScriptHelpers.cs - - - - - ServiceProviderExtension.cs - - - TestContainer.cs - - - - - - TestFileAddRemoveListener.cs - - - TestFilesUpdateWatcher.cs - - - - - - - VisualStudioApp.cs - - - VsProjectExtensions.cs - - - - - - - - - - - This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - - - + --> + + + + ..\..\packages\Newtonsoft.Json.4.5.11\lib\net40\Newtonsoft.Json.dll + + + + + + + ..\..\packages\Newtonsoft.Json.6.0.4\lib\net40\Newtonsoft.Json.dll + + + + + + + CommonConstants.cs + + + CommonUtils.cs + + + SolutionEventsListener.cs + + + ProcessOutput.cs + + + Guids.cs + + + Nodejs.cs + + + NodejsFileExtensions.cs + + + TestFrameworks\TestFrameworkDirectories.cs + + + TypeScriptHelpers.cs + + + + + ServiceProviderExtension.cs + + + TestContainer.cs + + + + + + TestFileAddRemoveListener.cs + + + TestFilesUpdateWatcher.cs + + + + + + + VisualStudioApp.cs + + + VsProjectExtensions.cs + + + + + + + + + + + This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + + + + --> \ No newline at end of file diff --git a/Nodejs/Product/TestAdapter/TestContainerDiscoverer.cs b/Nodejs/Product/TestAdapter/TestContainerDiscoverer.cs index 5cc6f09d8..e9194942f 100644 --- a/Nodejs/Product/TestAdapter/TestContainerDiscoverer.cs +++ b/Nodejs/Product/TestAdapter/TestContainerDiscoverer.cs @@ -175,7 +175,7 @@ internal bool IsTestFile(string pathToFile) { // at that point this function gets invoked again on the .ts file and we'll see the newly created .js file return false; } - } else if (!NodejsConstants.JavaScriptExtension.Equals(Path.GetExtension(pathToFile), StringComparison.OrdinalIgnoreCase)) { + } else if (!NodejsFileExtensions.IsJavaScriptFile(pathToFile)) { return false; } From 2e7c92610da171d7696c599708a93affc2797009 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Fri, 26 Feb 2016 13:25:39 -0800 Subject: [PATCH 3/7] Moved typescript file extension check to use helpers as well. --- .../Nodejs/Debugger/DebugEngine/AD7Engine.cs | 4 ++-- Nodejs/Product/Nodejs/NodejsFileExtensions.cs | 4 ++++ .../Nodejs/Project/ImportWizard/ImportSettings.cs | 7 +++---- .../Product/Nodejs/Project/NodejsProjectLauncher.cs | 2 +- Nodejs/Product/Nodejs/Project/NodejsProjectNode.cs | 13 +++++-------- .../Product/TestAdapter/TestContainerDiscoverer.cs | 2 +- Nodejs/Product/TestAdapter/TestDiscoverer.cs | 2 +- Nodejs/Product/TypeScript/TypeScriptHelpers.cs | 4 ---- 8 files changed, 17 insertions(+), 21 deletions(-) diff --git a/Nodejs/Product/Nodejs/Debugger/DebugEngine/AD7Engine.cs b/Nodejs/Product/Nodejs/Debugger/DebugEngine/AD7Engine.cs index d56fc4325..b15903fb2 100644 --- a/Nodejs/Product/Nodejs/Debugger/DebugEngine/AD7Engine.cs +++ b/Nodejs/Product/Nodejs/Debugger/DebugEngine/AD7Engine.cs @@ -1230,7 +1230,7 @@ private void OnDocumentSaved(Document document) { } // For .ts files, we need to build the project to regenerate .js code. - if (String.Equals(Path.GetExtension(module.FileName), NodejsConstants.TypeScriptExtension, StringComparison.OrdinalIgnoreCase)) { + if (NodejsFileExtensions.IsTypeScriptFile(module.FileName)) { if (document.ProjectItem.ContainingProject.GetNodeProject().Build(null, null) != MSBuildResult.Successful) { var statusBar = (IVsStatusbar)ServiceProvider.GlobalProvider.GetService(typeof(SVsStatusbar)); statusBar.SetText(SR.GetString(SR.DebuggerModuleUpdateFailed)); @@ -1249,7 +1249,7 @@ private void OnDocumentSaved(Document document) { #endregion internal static void MapLanguageInfo(string filename, out string pbstrLanguage, out Guid pguidLanguage) { - if (String.Equals(Path.GetExtension(filename), NodejsConstants.TypeScriptExtension, StringComparison.OrdinalIgnoreCase)) { + if (NodejsFileExtensions.IsTypeScriptFile(filename)) { pbstrLanguage = NodejsConstants.TypeScript; pguidLanguage = Guids.TypeScriptDebugLanguage; } else { diff --git a/Nodejs/Product/Nodejs/NodejsFileExtensions.cs b/Nodejs/Product/Nodejs/NodejsFileExtensions.cs index ddf7a4621..bbc686101 100644 --- a/Nodejs/Product/Nodejs/NodejsFileExtensions.cs +++ b/Nodejs/Product/Nodejs/NodejsFileExtensions.cs @@ -23,6 +23,10 @@ public static bool IsJavaScriptFile(string file) { return IsFileType(file, NodejsConstants.JavaScriptExtension); } + public static bool IsTypeScriptFile(string file) { + return IsFileType(file, NodejsConstants.TypeScriptExtension); + } + private static bool IsFileType(string file, string extension) { var ext = Path.GetExtension(file); return String.Equals(ext, extension, StringComparison.OrdinalIgnoreCase); diff --git a/Nodejs/Product/Nodejs/Project/ImportWizard/ImportSettings.cs b/Nodejs/Product/Nodejs/Project/ImportWizard/ImportSettings.cs index daec5553b..e4965bed5 100644 --- a/Nodejs/Product/Nodejs/Project/ImportWizard/ImportSettings.cs +++ b/Nodejs/Product/Nodejs/Project/ImportWizard/ImportSettings.cs @@ -121,7 +121,7 @@ private static void SourcePath_Updated(DependencyObject d, DependencyPropertyCha Task.Factory.StartNew(() => { var files = Directory.EnumerateFiles(sourcePath, "*.js", SearchOption.TopDirectoryOnly); - if (filters.Split(';').Any(x => x.EndsWith(NodejsConstants.TypeScriptExtension, StringComparison.OrdinalIgnoreCase))) { + if (filters.Split(';').Any(NodejsFileExtensions.IsTypeScriptFile)) { files = Directory.EnumerateFiles( sourcePath, "*.ts", @@ -287,7 +287,7 @@ out Guid projectGuid writer.WriteElementString("OutputPath", "."); writer.WriteElementString("ProjectTypeGuids", "{3AF33F2E-1136-4D97-BBB7-1795711AC8B8};{349c5851-65df-11da-9384-00065b846f21};{9092AA53-FB77-4645-B42D-1CCCA6BD08BD}"); bool typeScriptSupport = EnumerateAllFiles(sourcePath, filters, excludeNodeModules) - .Any(filename => NodejsConstants.TypeScriptExtension.Equals(Path.GetExtension(filename), StringComparison.OrdinalIgnoreCase)); + .Any(NodejsFileExtensions.IsTypeScriptFile); if (typeScriptSupport) { writer.WriteElementString("TypeScriptSourceMap", "true"); @@ -334,10 +334,9 @@ out Guid projectGuid writer.WriteStartElement("ItemGroup"); foreach (var file in EnumerateAllFiles(sourcePath, filters, excludeNodeModules)) { - var ext = Path.GetExtension(file); if (NodejsFileExtensions.IsJavaScriptFile(file)) { writer.WriteStartElement("Compile"); - } else if (NodejsConstants.TypeScriptExtension.Equals(ext, StringComparison.OrdinalIgnoreCase)) { + } else if (NodejsFileExtensions.IsTypeScriptFile(file)) { writer.WriteStartElement("TypeScriptCompile"); } else { writer.WriteStartElement("Content"); diff --git a/Nodejs/Product/Nodejs/Project/NodejsProjectLauncher.cs b/Nodejs/Product/Nodejs/Project/NodejsProjectLauncher.cs index e2186f36c..55bcc1b59 100644 --- a/Nodejs/Product/Nodejs/Project/NodejsProjectLauncher.cs +++ b/Nodejs/Product/Nodejs/Project/NodejsProjectLauncher.cs @@ -341,7 +341,7 @@ private string ResolveStartupFile() { throw new ApplicationException("Please select a startup file to launch by right-clicking the file in Solution Explorer and selecting 'Set as Node.js Startup File' or by modifying your configuration in project properties."); } - if (TypeScriptHelpers.IsTypeScriptFile(startupFile)) { + if (NodejsFileExtensions.IsTypeScriptFile(startupFile)) { startupFile = TypeScriptHelpers.GetTypeScriptBackedJavaScriptFile(_project, startupFile); } return startupFile; diff --git a/Nodejs/Product/Nodejs/Project/NodejsProjectNode.cs b/Nodejs/Product/Nodejs/Project/NodejsProjectNode.cs index 33ac77693..b486dbaff 100644 --- a/Nodejs/Product/Nodejs/Project/NodejsProjectNode.cs +++ b/Nodejs/Product/Nodejs/Project/NodejsProjectNode.cs @@ -194,8 +194,7 @@ internal override string IssueTrackerUrl { protected override void FinishProjectCreation(string sourceFolder, string destFolder) { foreach (MSBuild.ProjectItem item in this.BuildProject.Items) { - if (String.Equals(Path.GetExtension(item.EvaluatedInclude), NodejsConstants.TypeScriptExtension, StringComparison.OrdinalIgnoreCase)) { - + if (NodejsFileExtensions.IsTypeScriptFile(item.EvaluatedInclude)) { // Create the 'typings' folder var typingsFolder = Path.Combine(ProjectHome, "Scripts", "typings"); if (!Directory.Exists(typingsFolder)) { @@ -232,7 +231,7 @@ protected override void FinishProjectCreation(string sourceFolder, string destFo protected override void AddNewFileNodeToHierarchy(HierarchyNode parentNode, string fileName) { base.AddNewFileNodeToHierarchy(parentNode, fileName); - if (String.Equals(Path.GetExtension(fileName), NodejsConstants.TypeScriptExtension, StringComparison.OrdinalIgnoreCase) && + if (NodejsFileExtensions.IsTypeScriptFile(fileName) && !String.Equals(GetProjectProperty(NodejsConstants.EnableTypeScript), "true", StringComparison.OrdinalIgnoreCase)) { // enable type script on the project automatically... SetProjectProperty(NodejsConstants.EnableTypeScript, "true"); @@ -258,7 +257,7 @@ internal override string GetItemType(string filename) { return node.ItemNode.ItemTypeName; } - if (string.Equals(Path.GetExtension(filename), NodejsConstants.TypeScriptExtension, StringComparison.OrdinalIgnoreCase)) { + if (NodejsFileExtensions.IsTypeScriptFile(filename)) { return NodejsConstants.TypeScriptCompileItemType; } return base.GetItemType(filename); @@ -306,8 +305,7 @@ protected internal override FolderNode CreateFolderNode(ProjectElement element) public override CommonFileNode CreateCodeFileNode(ProjectElement item) { string fileName = item.Url; - if (!String.IsNullOrWhiteSpace(fileName) - && Path.GetExtension(fileName).Equals(NodejsConstants.TypeScriptExtension, StringComparison.OrdinalIgnoreCase)) { + if (!String.IsNullOrWhiteSpace(fileName) && NodejsFileExtensions.IsTypeScriptFile(fileName)) { return new NodejsTypeScriptFileNode(this, item); } var res = new NodejsFileNode(this, item); @@ -384,9 +382,8 @@ protected override Stream ProjectIconsImageStripStream { } public override bool IsCodeFile(string fileName) { - var ext = Path.GetExtension(fileName); return NodejsFileExtensions.IsJavaScriptFile(fileName) || - ext.Equals(NodejsConstants.TypeScriptExtension, StringComparison.OrdinalIgnoreCase); + NodejsFileExtensions.IsTypeScriptFile(fileName); } public override int InitializeForOuter(string filename, string location, string name, uint flags, ref Guid iid, out IntPtr projectPointer, out int canceled) { diff --git a/Nodejs/Product/TestAdapter/TestContainerDiscoverer.cs b/Nodejs/Product/TestAdapter/TestContainerDiscoverer.cs index e9194942f..5ffd7c434 100644 --- a/Nodejs/Product/TestAdapter/TestContainerDiscoverer.cs +++ b/Nodejs/Product/TestAdapter/TestContainerDiscoverer.cs @@ -168,7 +168,7 @@ internal bool IsTestFile(string pathToFile) { //Check to see if we are dealing with a TypeScript file // If we are then switch the test container to the underlying js file // - if (TypeScriptHelpers.IsTypeScriptFile(pathToFile)) { + if (NodejsFileExtensions.IsTypeScriptFile(pathToFile)) { string jsFile = TypeScriptHelpers.GetTypeScriptBackedJavaScriptFile(project, pathToFile); if (!File.Exists(jsFile)) { //Ignore the file for now. On the next build event the typescript compiler will generate the file diff --git a/Nodejs/Product/TestAdapter/TestDiscoverer.cs b/Nodejs/Product/TestAdapter/TestDiscoverer.cs index 62baa41b5..340bf44d3 100644 --- a/Nodejs/Product/TestAdapter/TestDiscoverer.cs +++ b/Nodejs/Product/TestAdapter/TestDiscoverer.cs @@ -72,7 +72,7 @@ public void DiscoverTests(IEnumerable sources, IDiscoveryContext discove continue; } string fileAbsolutePath = CommonUtils.GetAbsoluteFilePath(projectHome, item.EvaluatedInclude); - bool typeScriptTest = TypeScript.TypeScriptHelpers.IsTypeScriptFile(fileAbsolutePath); + bool typeScriptTest = NodejsFileExtensions.IsTypeScriptFile(fileAbsolutePath); if(typeScriptTest){ fileAbsolutePath = TypeScript.TypeScriptHelpers.GetTypeScriptBackedJavaScriptFile(proj,fileAbsolutePath); } else if (!Path.GetExtension(fileAbsolutePath).Equals(".js", StringComparison.OrdinalIgnoreCase)) { diff --git a/Nodejs/Product/TypeScript/TypeScriptHelpers.cs b/Nodejs/Product/TypeScript/TypeScriptHelpers.cs index 149f59743..fac493228 100644 --- a/Nodejs/Product/TypeScript/TypeScriptHelpers.cs +++ b/Nodejs/Product/TypeScript/TypeScriptHelpers.cs @@ -31,10 +31,6 @@ namespace Microsoft.NodejsTools.TypeScript { internal static class TypeScriptHelpers { - internal static bool IsTypeScriptFile(string filename) { - return String.Equals(Path.GetExtension(filename), NodejsConstants.TypeScriptExtension, StringComparison.OrdinalIgnoreCase); - } - internal static string GetTypeScriptBackedJavaScriptFile(MSBuild.Project project, string pathToFile) { var typeScriptOutDir = project.GetPropertyValue("TypeScriptOutDir"); return GetTypeScriptBackedJavaScriptFile(project.DirectoryPath, typeScriptOutDir, pathToFile); From a51535e18108a240564fd4ad667fa6cfad258569 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Tue, 1 Mar 2016 13:59:51 -0800 Subject: [PATCH 4/7] Moving constants into class and updating callers --- .../Product/LogConverter/LogConverter.csproj | 199 +++++++++--------- .../Nodejs/Debugger/DebugEngine/AD7Engine.cs | 4 +- Nodejs/Product/Nodejs/Nodejs.csproj | 2 +- Nodejs/Product/Nodejs/NodejsConstants.cs | 2 - ...Extensions.cs => NodejsFileTypeHelpers.cs} | 13 +- Nodejs/Product/Nodejs/NodejsLanguageInfo.cs | 2 +- Nodejs/Product/Nodejs/NodejsPackage.cs | 2 +- .../Project/ImportWizard/ImportSettings.cs | 8 +- .../Nodejs/Project/NodejsProjectLauncher.cs | 2 +- .../Nodejs/Project/NodejsProjectNode.cs | 16 +- .../Nodejs/SourceMapping/SourceMapper.cs | 6 +- .../RunFromContextFileExtensions.cs | 2 +- Nodejs/Product/TestAdapter/TestAdapter.csproj | 3 + .../TestAdapter/TestContainerDiscoverer.cs | 4 +- Nodejs/Product/TestAdapter/TestDiscoverer.cs | 2 +- .../Product/TypeScript/TypeScriptHelpers.cs | 2 +- 16 files changed, 138 insertions(+), 131 deletions(-) rename Nodejs/Product/Nodejs/{NodejsFileExtensions.cs => NodejsFileTypeHelpers.cs} (68%) diff --git a/Nodejs/Product/LogConverter/LogConverter.csproj b/Nodejs/Product/LogConverter/LogConverter.csproj index cb0bac78d..da2c89b6f 100644 --- a/Nodejs/Product/LogConverter/LogConverter.csproj +++ b/Nodejs/Product/LogConverter/LogConverter.csproj @@ -1,105 +1,108 @@ - - - - - - 14.0 - - - - - 4.0 - - - - - 12.0 - - - - - 4.0 - - - - - 11.0 - - - - - 4.0 - - - - - - Debug - x86 - {9A69745F-546D-40A0-8770-7E5B9ED0C82F} - Exe - Properties - NodeLogConverter - Microsoft.NodejsTools.NodeLogConverter - SAK - SAK - SAK - SAK - - - x86 - true - full - $(DefineConstants);DEBUG - true - prompt - - - x86 - pdbonly - $(DefineConstants);TRACE - true - true - prompt - - - true - - - - - - - - - - - - - - - - SourceMapping\CommonUtils.cs - - - - - - - - - - - - - - - + + + + + + 14.0 + + + + + 4.0 + + + + + 12.0 + + + + + 4.0 + + + + + 11.0 + + + + + 4.0 + + + + + + Debug + x86 + {9A69745F-546D-40A0-8770-7E5B9ED0C82F} + Exe + Properties + NodeLogConverter + Microsoft.NodejsTools.NodeLogConverter + SAK + SAK + SAK + SAK + + + x86 + true + full + $(DefineConstants);DEBUG + true + prompt + + + x86 + pdbonly + $(DefineConstants);TRACE + true + true + prompt + + + true + + + + + + + + + + + + + + + + SourceMapping\CommonUtils.cs + + + NodejsFileTypeHelpers.cs + + + + + + + + + + + + + + + + --> \ No newline at end of file diff --git a/Nodejs/Product/Nodejs/Debugger/DebugEngine/AD7Engine.cs b/Nodejs/Product/Nodejs/Debugger/DebugEngine/AD7Engine.cs index b15903fb2..f2905f03f 100644 --- a/Nodejs/Product/Nodejs/Debugger/DebugEngine/AD7Engine.cs +++ b/Nodejs/Product/Nodejs/Debugger/DebugEngine/AD7Engine.cs @@ -1230,7 +1230,7 @@ private void OnDocumentSaved(Document document) { } // For .ts files, we need to build the project to regenerate .js code. - if (NodejsFileExtensions.IsTypeScriptFile(module.FileName)) { + if (NodejsFileTypeHelpers.IsTypeScriptFile(module.FileName)) { if (document.ProjectItem.ContainingProject.GetNodeProject().Build(null, null) != MSBuildResult.Successful) { var statusBar = (IVsStatusbar)ServiceProvider.GlobalProvider.GetService(typeof(SVsStatusbar)); statusBar.SetText(SR.GetString(SR.DebuggerModuleUpdateFailed)); @@ -1249,7 +1249,7 @@ private void OnDocumentSaved(Document document) { #endregion internal static void MapLanguageInfo(string filename, out string pbstrLanguage, out Guid pguidLanguage) { - if (NodejsFileExtensions.IsTypeScriptFile(filename)) { + if (NodejsFileTypeHelpers.IsTypeScriptFile(filename)) { pbstrLanguage = NodejsConstants.TypeScript; pguidLanguage = Guids.TypeScriptDebugLanguage; } else { diff --git a/Nodejs/Product/Nodejs/Nodejs.csproj b/Nodejs/Product/Nodejs/Nodejs.csproj index 1c92476fd..f7993924d 100644 --- a/Nodejs/Product/Nodejs/Nodejs.csproj +++ b/Nodejs/Product/Nodejs/Nodejs.csproj @@ -341,7 +341,7 @@ - + NpmOutputWindow.xaml diff --git a/Nodejs/Product/Nodejs/NodejsConstants.cs b/Nodejs/Product/Nodejs/NodejsConstants.cs index bae99e8ca..3b609e0ae 100644 --- a/Nodejs/Product/Nodejs/NodejsConstants.cs +++ b/Nodejs/Product/Nodejs/NodejsConstants.cs @@ -16,8 +16,6 @@ namespace Microsoft.NodejsTools { internal class NodejsConstants { - internal const string JavaScriptExtension = ".js"; - internal const string TypeScriptExtension = ".ts"; internal const string MapExtension = ".map"; internal const string NodejsProjectExtension = ".njsproj"; diff --git a/Nodejs/Product/Nodejs/NodejsFileExtensions.cs b/Nodejs/Product/Nodejs/NodejsFileTypeHelpers.cs similarity index 68% rename from Nodejs/Product/Nodejs/NodejsFileExtensions.cs rename to Nodejs/Product/Nodejs/NodejsFileTypeHelpers.cs index bbc686101..a5cc4e08d 100644 --- a/Nodejs/Product/Nodejs/NodejsFileExtensions.cs +++ b/Nodejs/Product/Nodejs/NodejsFileTypeHelpers.cs @@ -18,18 +18,21 @@ using System.IO; namespace Microsoft.NodejsTools { - static class NodejsFileExtensions { + static class NodejsFileTypeHelpers { + internal const string JavaScriptExtension = ".js"; + internal const string TypeScriptExtension = ".ts"; + public static bool IsJavaScriptFile(string file) { - return IsFileType(file, NodejsConstants.JavaScriptExtension); + return DoesFileHaveExtension(file, JavaScriptExtension); } public static bool IsTypeScriptFile(string file) { - return IsFileType(file, NodejsConstants.TypeScriptExtension); + return DoesFileHaveExtension(file, TypeScriptExtension); } - private static bool IsFileType(string file, string extension) { + private static bool DoesFileHaveExtension(string file, string extension) { var ext = Path.GetExtension(file); - return String.Equals(ext, extension, StringComparison.OrdinalIgnoreCase); + return string.Equals(ext, extension, StringComparison.OrdinalIgnoreCase); } } } diff --git a/Nodejs/Product/Nodejs/NodejsLanguageInfo.cs b/Nodejs/Product/Nodejs/NodejsLanguageInfo.cs index 801ea81e0..2ba2ff1bf 100644 --- a/Nodejs/Product/Nodejs/NodejsLanguageInfo.cs +++ b/Nodejs/Product/Nodejs/NodejsLanguageInfo.cs @@ -47,7 +47,7 @@ public int GetCodeWindowManager(IVsCodeWindow pCodeWin, out IVsCodeWindowManager public int GetFileExtensions(out string pbstrExtensions) { // This is the same extension the language service was // registered as supporting. - pbstrExtensions = NodejsConstants.JavaScriptExtension; + pbstrExtensions = NodejsFileTypeHelpers.JavaScriptExtension; return VSConstants.S_OK; } diff --git a/Nodejs/Product/Nodejs/NodejsPackage.cs b/Nodejs/Product/Nodejs/NodejsPackage.cs index d7c9b6ce0..a0b630ee9 100644 --- a/Nodejs/Product/Nodejs/NodejsPackage.cs +++ b/Nodejs/Product/Nodejs/NodejsPackage.cs @@ -431,7 +431,7 @@ public override Type GetLibraryManagerType() { } public override bool IsRecognizedFile(string filename) { - return NodejsFileExtensions.IsJavaScriptFile(filename); + return NodejsFileTypeHelpers.IsJavaScriptFile(filename); } internal new object GetService(Type serviceType) { diff --git a/Nodejs/Product/Nodejs/Project/ImportWizard/ImportSettings.cs b/Nodejs/Product/Nodejs/Project/ImportWizard/ImportSettings.cs index e4965bed5..f01746916 100644 --- a/Nodejs/Product/Nodejs/Project/ImportWizard/ImportSettings.cs +++ b/Nodejs/Product/Nodejs/Project/ImportWizard/ImportSettings.cs @@ -121,7 +121,7 @@ private static void SourcePath_Updated(DependencyObject d, DependencyPropertyCha Task.Factory.StartNew(() => { var files = Directory.EnumerateFiles(sourcePath, "*.js", SearchOption.TopDirectoryOnly); - if (filters.Split(';').Any(NodejsFileExtensions.IsTypeScriptFile)) { + if (filters.Split(';').Any(NodejsFileTypeHelpers.IsTypeScriptFile)) { files = Directory.EnumerateFiles( sourcePath, "*.ts", @@ -287,7 +287,7 @@ out Guid projectGuid writer.WriteElementString("OutputPath", "."); writer.WriteElementString("ProjectTypeGuids", "{3AF33F2E-1136-4D97-BBB7-1795711AC8B8};{349c5851-65df-11da-9384-00065b846f21};{9092AA53-FB77-4645-B42D-1CCCA6BD08BD}"); bool typeScriptSupport = EnumerateAllFiles(sourcePath, filters, excludeNodeModules) - .Any(NodejsFileExtensions.IsTypeScriptFile); + .Any(NodejsFileTypeHelpers.IsTypeScriptFile); if (typeScriptSupport) { writer.WriteElementString("TypeScriptSourceMap", "true"); @@ -334,9 +334,9 @@ out Guid projectGuid writer.WriteStartElement("ItemGroup"); foreach (var file in EnumerateAllFiles(sourcePath, filters, excludeNodeModules)) { - if (NodejsFileExtensions.IsJavaScriptFile(file)) { + if (NodejsFileTypeHelpers.IsJavaScriptFile(file)) { writer.WriteStartElement("Compile"); - } else if (NodejsFileExtensions.IsTypeScriptFile(file)) { + } else if (NodejsFileTypeHelpers.IsTypeScriptFile(file)) { writer.WriteStartElement("TypeScriptCompile"); } else { writer.WriteStartElement("Content"); diff --git a/Nodejs/Product/Nodejs/Project/NodejsProjectLauncher.cs b/Nodejs/Product/Nodejs/Project/NodejsProjectLauncher.cs index 55bcc1b59..9b414cb05 100644 --- a/Nodejs/Product/Nodejs/Project/NodejsProjectLauncher.cs +++ b/Nodejs/Product/Nodejs/Project/NodejsProjectLauncher.cs @@ -341,7 +341,7 @@ private string ResolveStartupFile() { throw new ApplicationException("Please select a startup file to launch by right-clicking the file in Solution Explorer and selecting 'Set as Node.js Startup File' or by modifying your configuration in project properties."); } - if (NodejsFileExtensions.IsTypeScriptFile(startupFile)) { + if (NodejsFileTypeHelpers.IsTypeScriptFile(startupFile)) { startupFile = TypeScriptHelpers.GetTypeScriptBackedJavaScriptFile(_project, startupFile); } return startupFile; diff --git a/Nodejs/Product/Nodejs/Project/NodejsProjectNode.cs b/Nodejs/Product/Nodejs/Project/NodejsProjectNode.cs index b486dbaff..a01a1ad9e 100644 --- a/Nodejs/Product/Nodejs/Project/NodejsProjectNode.cs +++ b/Nodejs/Product/Nodejs/Project/NodejsProjectNode.cs @@ -194,7 +194,7 @@ internal override string IssueTrackerUrl { protected override void FinishProjectCreation(string sourceFolder, string destFolder) { foreach (MSBuild.ProjectItem item in this.BuildProject.Items) { - if (NodejsFileExtensions.IsTypeScriptFile(item.EvaluatedInclude)) { + if (NodejsFileTypeHelpers.IsTypeScriptFile(item.EvaluatedInclude)) { // Create the 'typings' folder var typingsFolder = Path.Combine(ProjectHome, "Scripts", "typings"); if (!Directory.Exists(typingsFolder)) { @@ -231,7 +231,7 @@ protected override void FinishProjectCreation(string sourceFolder, string destFo protected override void AddNewFileNodeToHierarchy(HierarchyNode parentNode, string fileName) { base.AddNewFileNodeToHierarchy(parentNode, fileName); - if (NodejsFileExtensions.IsTypeScriptFile(fileName) && + if (NodejsFileTypeHelpers.IsTypeScriptFile(fileName) && !String.Equals(GetProjectProperty(NodejsConstants.EnableTypeScript), "true", StringComparison.OrdinalIgnoreCase)) { // enable type script on the project automatically... SetProjectProperty(NodejsConstants.EnableTypeScript, "true"); @@ -243,7 +243,7 @@ protected override void AddNewFileNodeToHierarchy(HierarchyNode parentNode, stri } internal static bool IsNodejsFile(string strFileName) { - return NodejsFileExtensions.IsJavaScriptFile(strFileName); + return NodejsFileTypeHelpers.IsJavaScriptFile(strFileName); } internal override string GetItemType(string filename) { @@ -257,7 +257,7 @@ internal override string GetItemType(string filename) { return node.ItemNode.ItemTypeName; } - if (NodejsFileExtensions.IsTypeScriptFile(filename)) { + if (NodejsFileTypeHelpers.IsTypeScriptFile(filename)) { return NodejsConstants.TypeScriptCompileItemType; } return base.GetItemType(filename); @@ -295,7 +295,7 @@ protected override bool DisableCmdInCurrentMode(Guid commandGroup, uint command) public override string[] CodeFileExtensions { get { - return new[] { NodejsConstants.JavaScriptExtension }; + return new[] { NodejsFileTypeHelpers.JavaScriptExtension }; } } @@ -305,7 +305,7 @@ protected internal override FolderNode CreateFolderNode(ProjectElement element) public override CommonFileNode CreateCodeFileNode(ProjectElement item) { string fileName = item.Url; - if (!String.IsNullOrWhiteSpace(fileName) && NodejsFileExtensions.IsTypeScriptFile(fileName)) { + if (!String.IsNullOrWhiteSpace(fileName) && NodejsFileTypeHelpers.IsTypeScriptFile(fileName)) { return new NodejsTypeScriptFileNode(this, item); } var res = new NodejsFileNode(this, item); @@ -382,8 +382,8 @@ protected override Stream ProjectIconsImageStripStream { } public override bool IsCodeFile(string fileName) { - return NodejsFileExtensions.IsJavaScriptFile(fileName) || - NodejsFileExtensions.IsTypeScriptFile(fileName); + return NodejsFileTypeHelpers.IsJavaScriptFile(fileName) || + NodejsFileTypeHelpers.IsTypeScriptFile(fileName); } public override int InitializeForOuter(string filename, string location, string name, uint flags, ref Guid iid, out IntPtr projectPointer, out int canceled) { diff --git a/Nodejs/Product/Nodejs/SourceMapping/SourceMapper.cs b/Nodejs/Product/Nodejs/SourceMapping/SourceMapper.cs index 2f34cde0c..e238d6077 100644 --- a/Nodejs/Product/Nodejs/SourceMapping/SourceMapper.cs +++ b/Nodejs/Product/Nodejs/SourceMapping/SourceMapper.cs @@ -215,13 +215,13 @@ private ReverseSourceMap GetReverseSourceMap(string fileName) { extension = String.Empty; } - if (!string.Equals(extension, NodejsConstants.JavaScriptExtension, StringComparison.OrdinalIgnoreCase)) { + if (!string.Equals(extension, NodejsFileTypeHelpers.JavaScriptExtension, StringComparison.OrdinalIgnoreCase)) { string baseFile = fileName.Substring(0, fileName.Length - extension.Length); - string jsFile = baseFile + NodejsConstants.JavaScriptExtension; + string jsFile = baseFile + NodejsFileTypeHelpers.JavaScriptExtension; if (File.Exists(jsFile) && File.Exists(jsFile + NodejsConstants.MapExtension)) { // we're using source maps... try { - using (StreamReader reader = new StreamReader(baseFile + NodejsConstants.JavaScriptExtension + NodejsConstants.MapExtension)) { + using (StreamReader reader = new StreamReader(baseFile + NodejsFileTypeHelpers.JavaScriptExtension + NodejsConstants.MapExtension)) { _generatedFileToSourceMap[fileName] = sourceMap = new ReverseSourceMap( new SourceMap(reader), jsFile diff --git a/Nodejs/Product/TestAdapter/RunFromContextFileExtensions.cs b/Nodejs/Product/TestAdapter/RunFromContextFileExtensions.cs index ef3e468c0..2d2c2039a 100644 --- a/Nodejs/Product/TestAdapter/RunFromContextFileExtensions.cs +++ b/Nodejs/Product/TestAdapter/RunFromContextFileExtensions.cs @@ -25,7 +25,7 @@ class RunFromContextFileExtensions : IRunFromContextFileExtensions { public IEnumerable FileTypes { get { - return new[] { NodejsConstants.JavaScriptExtension }; + return new[] { NodejsFileTypeHelpers.JavaScriptExtension }; } } diff --git a/Nodejs/Product/TestAdapter/TestAdapter.csproj b/Nodejs/Product/TestAdapter/TestAdapter.csproj index 212c76eab..d6cc90f83 100644 --- a/Nodejs/Product/TestAdapter/TestAdapter.csproj +++ b/Nodejs/Product/TestAdapter/TestAdapter.csproj @@ -148,6 +148,9 @@ NodejsFileExtensions.cs + + NodejsFileTypeHelpers.cs + TestFrameworks\TestFrameworkDirectories.cs diff --git a/Nodejs/Product/TestAdapter/TestContainerDiscoverer.cs b/Nodejs/Product/TestAdapter/TestContainerDiscoverer.cs index 5ffd7c434..ba735f85c 100644 --- a/Nodejs/Product/TestAdapter/TestContainerDiscoverer.cs +++ b/Nodejs/Product/TestAdapter/TestContainerDiscoverer.cs @@ -168,14 +168,14 @@ internal bool IsTestFile(string pathToFile) { //Check to see if we are dealing with a TypeScript file // If we are then switch the test container to the underlying js file // - if (NodejsFileExtensions.IsTypeScriptFile(pathToFile)) { + if (NodejsFileTypeHelpers.IsTypeScriptFile(pathToFile)) { string jsFile = TypeScriptHelpers.GetTypeScriptBackedJavaScriptFile(project, pathToFile); if (!File.Exists(jsFile)) { //Ignore the file for now. On the next build event the typescript compiler will generate the file // at that point this function gets invoked again on the .ts file and we'll see the newly created .js file return false; } - } else if (!NodejsFileExtensions.IsJavaScriptFile(pathToFile)) { + } else if (!NodejsFileTypeHelpers.IsJavaScriptFile(pathToFile)) { return false; } diff --git a/Nodejs/Product/TestAdapter/TestDiscoverer.cs b/Nodejs/Product/TestAdapter/TestDiscoverer.cs index 340bf44d3..56d8526ab 100644 --- a/Nodejs/Product/TestAdapter/TestDiscoverer.cs +++ b/Nodejs/Product/TestAdapter/TestDiscoverer.cs @@ -72,7 +72,7 @@ public void DiscoverTests(IEnumerable sources, IDiscoveryContext discove continue; } string fileAbsolutePath = CommonUtils.GetAbsoluteFilePath(projectHome, item.EvaluatedInclude); - bool typeScriptTest = NodejsFileExtensions.IsTypeScriptFile(fileAbsolutePath); + bool typeScriptTest = NodejsFileTypeHelpers.IsTypeScriptFile(fileAbsolutePath); if(typeScriptTest){ fileAbsolutePath = TypeScript.TypeScriptHelpers.GetTypeScriptBackedJavaScriptFile(proj,fileAbsolutePath); } else if (!Path.GetExtension(fileAbsolutePath).Equals(".js", StringComparison.OrdinalIgnoreCase)) { diff --git a/Nodejs/Product/TypeScript/TypeScriptHelpers.cs b/Nodejs/Product/TypeScript/TypeScriptHelpers.cs index fac493228..f43a25aab 100644 --- a/Nodejs/Product/TypeScript/TypeScriptHelpers.cs +++ b/Nodejs/Product/TypeScript/TypeScriptHelpers.cs @@ -49,7 +49,7 @@ internal static string GetTypeScriptBackedJavaScriptFile(IVsProject project, str } private static string GetTypeScriptBackedJavaScriptFile(string projectHome, string typeScriptOutDir, string pathToFile) { - string jsFilePath = Path.ChangeExtension(pathToFile, NodejsConstants.JavaScriptExtension); + string jsFilePath = Path.ChangeExtension(pathToFile, NodejsFileTypeHelpers.JavaScriptExtension); if (String.IsNullOrEmpty(typeScriptOutDir)) { //No setting for OutDir From 47a70333bafa0af932834bcd9e56a366c73e295b Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Tue, 1 Mar 2016 14:01:58 -0800 Subject: [PATCH 5/7] Updating a few more callsites and fixing proj reference --- Nodejs/Product/TestAdapter/TestAdapter.csproj | 3 --- Nodejs/Product/TestAdapter/TestDiscoverer.cs | 2 +- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/Nodejs/Product/TestAdapter/TestAdapter.csproj b/Nodejs/Product/TestAdapter/TestAdapter.csproj index d6cc90f83..4c95d5115 100644 --- a/Nodejs/Product/TestAdapter/TestAdapter.csproj +++ b/Nodejs/Product/TestAdapter/TestAdapter.csproj @@ -145,9 +145,6 @@ Nodejs.cs - - NodejsFileExtensions.cs - NodejsFileTypeHelpers.cs diff --git a/Nodejs/Product/TestAdapter/TestDiscoverer.cs b/Nodejs/Product/TestAdapter/TestDiscoverer.cs index 56d8526ab..9d38fe1ff 100644 --- a/Nodejs/Product/TestAdapter/TestDiscoverer.cs +++ b/Nodejs/Product/TestAdapter/TestDiscoverer.cs @@ -75,7 +75,7 @@ public void DiscoverTests(IEnumerable sources, IDiscoveryContext discove bool typeScriptTest = NodejsFileTypeHelpers.IsTypeScriptFile(fileAbsolutePath); if(typeScriptTest){ fileAbsolutePath = TypeScript.TypeScriptHelpers.GetTypeScriptBackedJavaScriptFile(proj,fileAbsolutePath); - } else if (!Path.GetExtension(fileAbsolutePath).Equals(".js", StringComparison.OrdinalIgnoreCase)) { + } else if (!NodejsFileTypeHelpers.IsJavaScriptFile(fileAbsolutePath)) { continue; } List fileList; From aa47925d9724b69db1878cd909bdc91e48aa39d0 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Tue, 1 Mar 2016 14:04:29 -0800 Subject: [PATCH 6/7] Updated a few more callers to use helper --- Nodejs/Product/Nodejs/SourceMapping/SourceMapper.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Nodejs/Product/Nodejs/SourceMapping/SourceMapper.cs b/Nodejs/Product/Nodejs/SourceMapping/SourceMapper.cs index e238d6077..761f95283 100644 --- a/Nodejs/Product/Nodejs/SourceMapping/SourceMapper.cs +++ b/Nodejs/Product/Nodejs/SourceMapping/SourceMapper.cs @@ -215,7 +215,7 @@ private ReverseSourceMap GetReverseSourceMap(string fileName) { extension = String.Empty; } - if (!string.Equals(extension, NodejsFileTypeHelpers.JavaScriptExtension, StringComparison.OrdinalIgnoreCase)) { + if (!NodejsFileTypeHelpers.IsJavaScriptFile(fileName)) { string baseFile = fileName.Substring(0, fileName.Length - extension.Length); string jsFile = baseFile + NodejsFileTypeHelpers.JavaScriptExtension; if (File.Exists(jsFile) && File.Exists(jsFile + NodejsConstants.MapExtension)) { From bebda02c0916be1df9c9e5e41f018c8fc0fe99aa Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Tue, 1 Mar 2016 14:06:47 -0800 Subject: [PATCH 7/7] Moved other extension constants into class to keep things together --- Nodejs/Product/Nodejs/NodejsConstants.cs | 3 --- Nodejs/Product/Nodejs/NodejsFileTypeHelpers.cs | 2 ++ Nodejs/Product/Nodejs/SourceMapping/SourceMapper.cs | 4 ++-- Nodejs/Product/TestAdapter/TestContainerDiscoverer.cs | 2 +- Nodejs/Product/TestAdapter/TestDiscoverer.cs | 2 +- 5 files changed, 6 insertions(+), 7 deletions(-) diff --git a/Nodejs/Product/Nodejs/NodejsConstants.cs b/Nodejs/Product/Nodejs/NodejsConstants.cs index 3b609e0ae..bf9e1c58e 100644 --- a/Nodejs/Product/Nodejs/NodejsConstants.cs +++ b/Nodejs/Product/Nodejs/NodejsConstants.cs @@ -16,9 +16,6 @@ namespace Microsoft.NodejsTools { internal class NodejsConstants { - internal const string MapExtension = ".map"; - internal const string NodejsProjectExtension = ".njsproj"; - internal const string JavaScript = "JavaScript"; internal const string CSS = "CSS"; internal const string Nodejs = "Node.js"; diff --git a/Nodejs/Product/Nodejs/NodejsFileTypeHelpers.cs b/Nodejs/Product/Nodejs/NodejsFileTypeHelpers.cs index a5cc4e08d..02beba52e 100644 --- a/Nodejs/Product/Nodejs/NodejsFileTypeHelpers.cs +++ b/Nodejs/Product/Nodejs/NodejsFileTypeHelpers.cs @@ -21,6 +21,8 @@ namespace Microsoft.NodejsTools { static class NodejsFileTypeHelpers { internal const string JavaScriptExtension = ".js"; internal const string TypeScriptExtension = ".ts"; + internal const string MapExtension = ".map"; + internal const string NodejsProjectExtension = ".njsproj"; public static bool IsJavaScriptFile(string file) { return DoesFileHaveExtension(file, JavaScriptExtension); diff --git a/Nodejs/Product/Nodejs/SourceMapping/SourceMapper.cs b/Nodejs/Product/Nodejs/SourceMapping/SourceMapper.cs index 761f95283..27f083072 100644 --- a/Nodejs/Product/Nodejs/SourceMapping/SourceMapper.cs +++ b/Nodejs/Product/Nodejs/SourceMapping/SourceMapper.cs @@ -218,10 +218,10 @@ private ReverseSourceMap GetReverseSourceMap(string fileName) { if (!NodejsFileTypeHelpers.IsJavaScriptFile(fileName)) { string baseFile = fileName.Substring(0, fileName.Length - extension.Length); string jsFile = baseFile + NodejsFileTypeHelpers.JavaScriptExtension; - if (File.Exists(jsFile) && File.Exists(jsFile + NodejsConstants.MapExtension)) { + if (File.Exists(jsFile) && File.Exists(jsFile + NodejsFileTypeHelpers.MapExtension)) { // we're using source maps... try { - using (StreamReader reader = new StreamReader(baseFile + NodejsFileTypeHelpers.JavaScriptExtension + NodejsConstants.MapExtension)) { + using (StreamReader reader = new StreamReader(baseFile + NodejsFileTypeHelpers.JavaScriptExtension + NodejsFileTypeHelpers.MapExtension)) { _generatedFileToSourceMap[fileName] = sourceMap = new ReverseSourceMap( new SourceMap(reader), jsFile diff --git a/Nodejs/Product/TestAdapter/TestContainerDiscoverer.cs b/Nodejs/Product/TestAdapter/TestContainerDiscoverer.cs index ba735f85c..beef04f87 100644 --- a/Nodejs/Product/TestAdapter/TestContainerDiscoverer.cs +++ b/Nodejs/Product/TestAdapter/TestContainerDiscoverer.cs @@ -358,7 +358,7 @@ private bool ShouldDiscover(string pathToItem) { //Setting/updating "TestFramework" property on a file item will cause metedata change in the project file, //so we need to re-discover when file change happens. - if (pathToItem.EndsWith(NodejsConstants.NodejsProjectExtension, StringComparison.OrdinalIgnoreCase)) { + if (pathToItem.EndsWith(NodejsFileTypeHelpers.NodejsProjectExtension, StringComparison.OrdinalIgnoreCase)) { return true; } diff --git a/Nodejs/Product/TestAdapter/TestDiscoverer.cs b/Nodejs/Product/TestAdapter/TestDiscoverer.cs index 9d38fe1ff..64b01fd38 100644 --- a/Nodejs/Product/TestAdapter/TestDiscoverer.cs +++ b/Nodejs/Product/TestAdapter/TestDiscoverer.cs @@ -33,7 +33,7 @@ using Microsoft.NodejsTools.SourceMapping; namespace Microsoft.NodejsTools.TestAdapter { - [FileExtension(NodejsConstants.NodejsProjectExtension)] + [FileExtension(NodejsFileTypeHelpers.NodejsProjectExtension)] [DefaultExecutorUri(TestExecutor.ExecutorUriString)] class TestDiscoverer : ITestDiscoverer { public TestDiscoverer() {