Add MI/GDB and VSCode tests for non-English assembly and source name.
authorMikhail Kurinnoi <m.kurinnoi@samsung.com>
Mon, 3 Aug 2020 15:25:14 +0000 (18:25 +0300)
committerMikhail Kurinnoi <m.kurinnoi@samsung.com>
Thu, 20 Aug 2020 08:27:57 +0000 (11:27 +0300)
test-suite/MITest中文目录/MITest中文目录.csproj [new file with mode: 0644]
test-suite/MITest中文目录/中文文件名.cs [new file with mode: 0644]
test-suite/VSCodeTest中文目录/VSCodeTest中文目录.csproj [new file with mode: 0644]
test-suite/VSCodeTest中文目录/中文文件名.cs [new file with mode: 0644]
test-suite/XunitTests/LocalTest.cs
test-suite/XunitTests/XunitTests.csproj
test-suite/run_tests.ps1
test-suite/run_tests.sh
test-suite/sdb_run_tests.ps1
test-suite/sdb_run_tests.sh
test-suite/test-suite.sln

diff --git a/test-suite/MITest中文目录/MITest中文目录.csproj b/test-suite/MITest中文目录/MITest中文目录.csproj
new file mode 100644 (file)
index 0000000..1765610
--- /dev/null
@@ -0,0 +1,12 @@
+<Project Sdk="Microsoft.NET.Sdk">\r
+\r
+  <ItemGroup>
+    <ProjectReference Include="..\NetcoreDbgTest\NetcoreDbgTest.csproj" />
+  </ItemGroup>\r
+\r
+  <PropertyGroup>\r
+    <OutputType>Exe</OutputType>\r
+    <TargetFramework>netcoreapp3.1</TargetFramework>\r
+  </PropertyGroup>\r
+\r
+</Project>\r
diff --git a/test-suite/MITest中文目录/中文文件名.cs b/test-suite/MITest中文目录/中文文件名.cs
new file mode 100644 (file)
index 0000000..c6c0529
--- /dev/null
@@ -0,0 +1,182 @@
+using System;\r
+using System.IO;\r
+\r
+using NetcoreDbgTest;\r
+using NetcoreDbgTest.MI;\r
+using NetcoreDbgTest.Script;\r
+\r
+using Xunit;\r
+\r
+namespace NetcoreDbgTest.Script\r
+{\r
+    class Context\r
+    {\r
+        public static void Prepare()\r
+        {\r
+            Assert.Equal(MIResultClass.Done,\r
+                         MIDebugger.Request("-file-exec-and-symbols "\r
+                                            + DebuggeeInfo.CorerunPath).Class);\r
+\r
+            Assert.Equal(MIResultClass.Done,\r
+                         MIDebugger.Request("-exec-arguments "\r
+                                            + DebuggeeInfo.TargetAssemblyPath).Class);\r
+\r
+            Assert.Equal(MIResultClass.Running, MIDebugger.Request("-exec-run").Class);\r
+        }\r
+\r
+        static bool IsStoppedEvent(MIOutOfBandRecord record)\r
+        {\r
+            if (record.Type != MIOutOfBandRecordType.Async) {\r
+                return false;\r
+            }\r
+\r
+            var asyncRecord = (MIAsyncRecord)record;\r
+\r
+            if (asyncRecord.Class != MIAsyncRecordClass.Exec ||\r
+                asyncRecord.Output.Class != MIAsyncOutputClass.Stopped) {\r
+                return false;\r
+            }\r
+\r
+            return true;\r
+        }\r
+\r
+        public static void WasEntryPointHit()\r
+        {\r
+            Func<MIOutOfBandRecord, bool> filter = (record) => {\r
+                if (!IsStoppedEvent(record)) {\r
+                    return false;\r
+                }\r
+\r
+                var output = ((MIAsyncRecord)record).Output;\r
+                var reason = (MIConst)output["reason"];\r
+\r
+                if (reason.CString != "entry-point-hit") {\r
+                    return false;\r
+                }\r
+\r
+                var frame = (MITuple)(output["frame"]);\r
+                var func = (MIConst)(frame["func"]);\r
+                if (func.CString == DebuggeeInfo.TestName + ".Program.Main()") {\r
+                    return true;\r
+                }\r
+\r
+                return false;\r
+            };\r
+\r
+            if (!MIDebugger.IsEventReceived(filter))\r
+                throw new NetcoreDbgTestCore.ResultNotSuccessException();\r
+        }\r
+\r
+        public static void WasBreakpointHit(Breakpoint breakpoint)\r
+        {\r
+            var bp = (LineBreakpoint)breakpoint;\r
+\r
+            Func<MIOutOfBandRecord, bool> filter = (record) => {\r
+                if (!IsStoppedEvent(record)) {\r
+                    return false;\r
+                }\r
+\r
+                var output = ((MIAsyncRecord)record).Output;\r
+                var reason = (MIConst)output["reason"];\r
+\r
+                if (reason.CString != "breakpoint-hit") {\r
+                    return false;\r
+                }\r
+\r
+                var frame = (MITuple)(output["frame"]);\r
+                var fileName = (MIConst)(frame["file"]);\r
+                var numLine = (MIConst)(frame["line"]);\r
+\r
+                if (fileName.CString == bp.FileName &&\r
+                    numLine.CString == bp.NumLine.ToString()) {\r
+                    return true;\r
+                }\r
+\r
+                return false;\r
+            };\r
+\r
+            if (!MIDebugger.IsEventReceived(filter))\r
+                throw new NetcoreDbgTestCore.ResultNotSuccessException();\r
+        }\r
+\r
+        public static void WasExit()\r
+        {\r
+            Func<MIOutOfBandRecord, bool> filter = (record) => {\r
+                if (!IsStoppedEvent(record)) {\r
+                    return false;\r
+                }\r
+\r
+                var output = ((MIAsyncRecord)record).Output;\r
+                var reason = (MIConst)output["reason"];\r
+\r
+                if (reason.CString != "exited") {\r
+                    return false;\r
+                }\r
+\r
+                var exitCode = (MIConst)output["exit-code"];\r
+\r
+                if (exitCode.CString == "0") {\r
+                    return true;\r
+                }\r
+\r
+                return false;\r
+            };\r
+\r
+            if (!MIDebugger.IsEventReceived(filter))\r
+                throw new NetcoreDbgTestCore.ResultNotSuccessException();\r
+        }\r
+\r
+        public static void DebuggerExit()\r
+        {\r
+            Assert.Equal(MIResultClass.Exit, Context.MIDebugger.Request("-gdb-exit").Class);\r
+        }\r
+\r
+        public static void EnableBreakpoint(string bpName)\r
+        {\r
+            Breakpoint bp = DebuggeeInfo.Breakpoints[bpName];\r
+\r
+            Assert.Equal(BreakpointType.Line, bp.Type);\r
+\r
+            var lbp = (LineBreakpoint)bp;\r
+\r
+            Assert.Equal(MIResultClass.Done,\r
+                         MIDebugger.Request("-break-insert -f "\r
+                                            + lbp.FileName + ":" + lbp.NumLine).Class);\r
+        }\r
+\r
+        public static void Continue()\r
+        {\r
+            Assert.Equal(MIResultClass.Running, MIDebugger.Request("-exec-continue").Class);\r
+        }\r
+\r
+        static MIDebugger MIDebugger = new MIDebugger();\r
+    }\r
+}\r
+\r
+namespace MITest中文目录\r
+{\r
+    class Program\r
+    {\r
+        static void Main(string[] args)\r
+        {\r
+            Label.Checkpoint("init", "bp_test", () => {\r
+                Context.Prepare();\r
+                Context.WasEntryPointHit();\r
+                Context.EnableBreakpoint("bp");\r
+                Context.Continue();\r
+            });\r
+\r
+            Console.WriteLine("A breakpoint \"bp\" is set on this line"); Label.Breakpoint("bp");\r
+\r
+            Label.Checkpoint("bp_test", "finish", () => {\r
+                Context.WasBreakpointHit(DebuggeeInfo.Breakpoints["bp"]);\r
+                Context.Continue();\r
+            });\r
+\r
+            Label.Checkpoint("finish", "", () => {\r
+                Context.WasExit();\r
+                Context.DebuggerExit();\r
+            });\r
+        }\r
+    }\r
+}\r
diff --git a/test-suite/VSCodeTest中文目录/VSCodeTest中文目录.csproj b/test-suite/VSCodeTest中文目录/VSCodeTest中文目录.csproj
new file mode 100644 (file)
index 0000000..1765610
--- /dev/null
@@ -0,0 +1,12 @@
+<Project Sdk="Microsoft.NET.Sdk">\r
+\r
+  <ItemGroup>
+    <ProjectReference Include="..\NetcoreDbgTest\NetcoreDbgTest.csproj" />
+  </ItemGroup>\r
+\r
+  <PropertyGroup>\r
+    <OutputType>Exe</OutputType>\r
+    <TargetFramework>netcoreapp3.1</TargetFramework>\r
+  </PropertyGroup>\r
+\r
+</Project>\r
diff --git a/test-suite/VSCodeTest中文目录/中文文件名.cs b/test-suite/VSCodeTest中文目录/中文文件名.cs
new file mode 100644 (file)
index 0000000..8eff5b2
--- /dev/null
@@ -0,0 +1,204 @@
+using System;\r
+using System.IO;\r
+using System.Collections.Generic;\r
+\r
+using NetcoreDbgTest;\r
+using NetcoreDbgTest.VSCode;\r
+using NetcoreDbgTest.Script;\r
+\r
+using Xunit;\r
+using Newtonsoft.Json;\r
+\r
+namespace NetcoreDbgTest.Script\r
+{\r
+    // Context includes methods and constants which\r
+    // will be move to debugger API\r
+    class Context\r
+    {\r
+        public static void PrepareStart()\r
+        {\r
+            InitializeRequest initializeRequest = new InitializeRequest();\r
+            initializeRequest.arguments.clientID = "vscode";\r
+            initializeRequest.arguments.clientName = "Visual Studio Code";\r
+            initializeRequest.arguments.adapterID = "coreclr";\r
+            initializeRequest.arguments.pathFormat = "path";\r
+            initializeRequest.arguments.linesStartAt1 = true;\r
+            initializeRequest.arguments.columnsStartAt1 = true;\r
+            initializeRequest.arguments.supportsVariableType = true;\r
+            initializeRequest.arguments.supportsVariablePaging = true;\r
+            initializeRequest.arguments.supportsRunInTerminalRequest = true;\r
+            initializeRequest.arguments.locale = "en-us";\r
+            Assert.True(VSCodeDebugger.Request(initializeRequest).Success);\r
+\r
+            LaunchRequest launchRequest = new LaunchRequest();\r
+            launchRequest.arguments.name = ".NET Core Launch (console) with pipeline";\r
+            launchRequest.arguments.type = "coreclr";\r
+            launchRequest.arguments.preLaunchTask = "build";\r
+            launchRequest.arguments.program = DebuggeeInfo.TargetAssemblyPath;\r
+            launchRequest.arguments.cwd = "";\r
+            launchRequest.arguments.console = "internalConsole";\r
+            launchRequest.arguments.stopAtEntry = true;\r
+            launchRequest.arguments.internalConsoleOptions = "openOnSessionStart";\r
+            launchRequest.arguments.__sessionId = Guid.NewGuid().ToString();\r
+            Assert.True(VSCodeDebugger.Request(launchRequest).Success);\r
+        }\r
+\r
+        public static void PrepareEnd()\r
+        {\r
+            ConfigurationDoneRequest configurationDoneRequest = new ConfigurationDoneRequest();\r
+            Assert.True(VSCodeDebugger.Request(configurationDoneRequest).Success);\r
+        }\r
+\r
+        public static void WasEntryPointHit()\r
+        {\r
+            Func<string, bool> filter = (resJSON) => {\r
+                if (VSCodeDebugger.isResponseContainProperty(resJSON, "event", "stopped")\r
+                    && VSCodeDebugger.isResponseContainProperty(resJSON, "reason", "entry")) {\r
+                    threadId = Convert.ToInt32(VSCodeDebugger.GetResponsePropertyValue(resJSON, "threadId"));\r
+                    return true;\r
+                }\r
+                return false;\r
+            };\r
+\r
+            if (!VSCodeDebugger.IsEventReceived(filter))\r
+                throw new NetcoreDbgTestCore.ResultNotSuccessException();\r
+        }\r
+\r
+        public static void WasExit()\r
+        {\r
+            bool wasExited = false;\r
+            int ?exitCode = null;\r
+            bool wasTerminated = false;\r
+\r
+            Func<string, bool> filter = (resJSON) => {\r
+                if (VSCodeDebugger.isResponseContainProperty(resJSON, "event", "exited")) {\r
+                    wasExited = true;\r
+                    ExitedEvent exitedEvent = JsonConvert.DeserializeObject<ExitedEvent>(resJSON);\r
+                    exitCode = exitedEvent.body.exitCode;\r
+                }\r
+                if (VSCodeDebugger.isResponseContainProperty(resJSON, "event", "terminated")) {\r
+                    wasTerminated = true;\r
+                }\r
+                if (wasExited && exitCode == 0 && wasTerminated)\r
+                    return true;\r
+\r
+                return false;\r
+            };\r
+\r
+            if (!VSCodeDebugger.IsEventReceived(filter))\r
+                throw new NetcoreDbgTestCore.ResultNotSuccessException();\r
+        }\r
+\r
+        public static void DebuggerExit()\r
+        {\r
+            DisconnectRequest disconnectRequest = new DisconnectRequest();\r
+            disconnectRequest.arguments = new DisconnectArguments();\r
+            disconnectRequest.arguments.restart = false;\r
+            Assert.True(VSCodeDebugger.Request(disconnectRequest).Success);\r
+        }\r
+\r
+        public static void AddBreakpoint(string bpName, string Condition = null)\r
+        {\r
+            Breakpoint bp = DebuggeeInfo.Breakpoints[bpName];\r
+            Assert.Equal(BreakpointType.Line, bp.Type);\r
+            var lbp = (LineBreakpoint)bp;\r
+\r
+            BreakpointSourceName = lbp.FileName;\r
+            BreakpointList.Add(new SourceBreakpoint(lbp.NumLine, Condition));\r
+            BreakpointLines.Add(lbp.NumLine);\r
+        }\r
+\r
+        public static void SetBreakpoints()\r
+        {\r
+            SetBreakpointsRequest setBreakpointsRequest = new SetBreakpointsRequest();\r
+            setBreakpointsRequest.arguments.source.name = BreakpointSourceName;\r
+            // NOTE this code works only with one source file\r
+            setBreakpointsRequest.arguments.source.path = DebuggeeInfo.SourceFilesPath;\r
+            setBreakpointsRequest.arguments.lines.AddRange(BreakpointLines);\r
+            setBreakpointsRequest.arguments.breakpoints.AddRange(BreakpointList);\r
+            setBreakpointsRequest.arguments.sourceModified = false;\r
+            Assert.True(VSCodeDebugger.Request(setBreakpointsRequest).Success);\r
+        }\r
+\r
+        public static void WasBreakpointHit(Breakpoint breakpoint)\r
+        {\r
+            Func<string, bool> filter = (resJSON) => {\r
+                if (VSCodeDebugger.isResponseContainProperty(resJSON, "event", "stopped")\r
+                    && VSCodeDebugger.isResponseContainProperty(resJSON, "reason", "breakpoint")) {\r
+                    threadId = Convert.ToInt32(VSCodeDebugger.GetResponsePropertyValue(resJSON, "threadId"));\r
+                    return true;\r
+                }\r
+                return false;\r
+            };\r
+\r
+            if (!VSCodeDebugger.IsEventReceived(filter))\r
+                throw new NetcoreDbgTestCore.ResultNotSuccessException();\r
+\r
+            StackTraceRequest stackTraceRequest = new StackTraceRequest();\r
+            stackTraceRequest.arguments.threadId = threadId;\r
+            stackTraceRequest.arguments.startFrame = 0;\r
+            stackTraceRequest.arguments.levels = 20;\r
+            var ret = VSCodeDebugger.Request(stackTraceRequest);\r
+            Assert.True(ret.Success);\r
+\r
+            Assert.Equal(BreakpointType.Line, breakpoint.Type);\r
+            var lbp = (LineBreakpoint)breakpoint;\r
+\r
+            StackTraceResponse stackTraceResponse =\r
+                JsonConvert.DeserializeObject<StackTraceResponse>(ret.ResponseStr);\r
+\r
+            foreach (var Frame in stackTraceResponse.body.stackFrames) {\r
+                if (Frame.line == lbp.NumLine\r
+                    && Frame.source.name == lbp.FileName\r
+                    // NOTE this code works only with one source file\r
+                    && Frame.source.path == DebuggeeInfo.SourceFilesPath)\r
+                    return;\r
+            }\r
+\r
+            throw new NetcoreDbgTestCore.ResultNotSuccessException();\r
+        }\r
+\r
+        public static void Continue()\r
+        {\r
+            ContinueRequest continueRequest = new ContinueRequest();\r
+            continueRequest.arguments.threadId = threadId;\r
+            Assert.True(VSCodeDebugger.Request(continueRequest).Success);\r
+        }\r
+\r
+        static VSCodeDebugger VSCodeDebugger = new VSCodeDebugger();\r
+        static int threadId = -1;\r
+        public static string BreakpointSourceName;\r
+        public static List<SourceBreakpoint> BreakpointList = new List<SourceBreakpoint>();\r
+        public static List<int> BreakpointLines = new List<int>();\r
+    }\r
+}\r
+\r
+namespace VSCodeTest中文目录\r
+{\r
+    class Program\r
+    {\r
+        static void Main(string[] args)\r
+        {\r
+            Label.Checkpoint("init", "bp_test", () => {\r
+                Context.PrepareStart();\r
+                Context.AddBreakpoint("bp");\r
+                Context.SetBreakpoints();\r
+                Context.PrepareEnd();\r
+                Context.WasEntryPointHit();\r
+                Context.Continue();\r
+            });\r
+\r
+            Console.WriteLine("A breakpoint \"bp\" is set on this line"); Label.Breakpoint("bp");\r
+\r
+            Label.Checkpoint("bp_test", "finish", () => {\r
+                Context.WasBreakpointHit(DebuggeeInfo.Breakpoints["bp"]);\r
+                Context.Continue();\r
+            });\r
+\r
+            Label.Checkpoint("finish", "", () => {\r
+                Context.WasExit();\r
+                Context.DebuggerExit();\r
+            });\r
+        }\r
+    }\r
+}\r
index ba7ee950f1e80a5808872df8e448376df3f60aa0..9c8ca4923de3b8fd8ea47681fb496ce4e09177b6 100644 (file)
@@ -1,4 +1,4 @@
-using System;
+using System;
 using System.IO;
 using Xunit;
 
@@ -36,6 +36,7 @@ namespace XUnitTests
         [InlineData("MITestExceptionBreakpoint", "Program.cs")]
         [InlineData("MITestExitCode", "Program.cs")]
         [InlineData("MITestEvalNotEnglish", "Program.cs")]
+        [InlineData("MITest中文目录", "中文文件名.cs")]
         [InlineData("VSCodeExampleTest", "Program.cs")]
         [InlineData("VSCodeTestBreakpoint", "Program.cs")]
         [InlineData("VSCodeTestFuncBreak", "Program.cs")]
@@ -49,6 +50,7 @@ namespace XUnitTests
         [InlineData("VSCodeTestEnv", "Program.cs")]
         [InlineData("VSCodeTestExitCode", "Program.cs")]
         [InlineData("VSCodeTestEvalNotEnglish", "Program.cs")]
+        [InlineData("VSCodeTest中文目录", "中文文件名.cs")]
         public void Run(string testCaseName, string testCourceList)
         {
             string testSuiteRoot = Path.GetFullPath(
index 63653763b0612e5766d36c928fe7e2678aad96ae..9d3f5184ea0cfcec7645c117e162e03725ef1cca 100644 (file)
@@ -1,4 +1,4 @@
-<Project Sdk="Microsoft.NET.Sdk">\r
+<Project Sdk="Microsoft.NET.Sdk">\r
 \r
   <PropertyGroup>\r
     <TargetFramework>netcoreapp3.1</TargetFramework>\r
@@ -33,6 +33,7 @@
     <ProjectReference Include="..\MITestTarget\MITestTarget.csproj" />\r
     <ProjectReference Include="..\MITestExceptionBreakpoint\MITestExceptionBreakpoint.csproj" />\r
     <ProjectReference Include="..\MITestEvalNotEnglish\MITestEvalNotEnglish.csproj" />\r
+    <ProjectReference Include="..\MITest中文目录\MITest中文目录.csproj" />\r
     <ProjectReference Include="..\VSCodeExampleTest\VSCodeExampleTest.csproj" />\r
     <ProjectReference Include="..\VSCodeTestBreakpoint\VSCodeTestBreakpoint.csproj" />\r
     <ProjectReference Include="..\VSCodeTestFuncBreak\VSCodeTestFuncBreak.csproj" />\r
@@ -45,6 +46,7 @@
     <ProjectReference Include="..\VSCodeTestStepping\VSCodeTestStepping.csproj" />\r
     <ProjectReference Include="..\VSCodeTestEnv\VSCodeTestEnv.csproj" />\r
     <ProjectReference Include="..\VSCodeTestEvalNotEnglish\VSCodeTestEvalNotEnglish.csproj" />\r
+    <ProjectReference Include="..\VSCodeTest中文目录\VSCodeTest中文目录.csproj" />\r
   </ItemGroup>\r
 \r
 </Project>\r
index 033e1ac2234eb7997cca5e0f336446a7c4827eb9..2363b16d80352d447527691396cf08137d913d3a 100644 (file)
@@ -1,4 +1,4 @@
-# Making Windows PowerShell console window Unicode (UTF-8) aware.
+# Making Windows PowerShell console window Unicode (UTF-8) aware.
 $OutputEncoding = [console]::InputEncoding = [console]::OutputEncoding = New-Object System.Text.UTF8Encoding
 
 $ALL_TEST_NAMES = @(
@@ -20,6 +20,7 @@ $ALL_TEST_NAMES = @(
     "MITestExceptionBreakpoint"
     "MITestExitCode"
     "MITestEvalNotEnglish"
+    "MITest中文目录"
     "VSCodeExampleTest"
     "VSCodeTestBreakpoint"
     "VSCodeTestFuncBreak"
@@ -33,6 +34,7 @@ $ALL_TEST_NAMES = @(
     "VSCodeTestEnv"
     "VSCodeTestExitCode"
     "VSCodeTestEvalNotEnglish"
+    "VSCodeTest中文目录"
 )
 
 $TEST_NAMES = $args
index 5f3a009b255f860be5dff75a7eae462eff9e6fec..02674d5f71dd5f78de5471a7be1cb8917417f9d0 100755 (executable)
@@ -19,6 +19,7 @@ ALL_TEST_NAMES=(
     "MITestExceptionBreakpoint"
     "MITestExitCode"
     "MITestEvalNotEnglish"
+    "MITest中文目录"
     "VSCodeExampleTest"
     "VSCodeTestBreakpoint"
     "VSCodeTestFuncBreak"
@@ -32,6 +33,7 @@ ALL_TEST_NAMES=(
     "VSCodeTestEnv"
     "VSCodeTestExitCode"
     "VSCodeTestEvalNotEnglish"
+    "VSCodeTest中文目录"
 )
 
 TEST_NAMES="$@"
index 8b163828706d44986bc16476596e3ec920c423cc..1f2b10700e7ceb9356a899f607fc0b0daa6f02fc 100644 (file)
@@ -1,4 +1,4 @@
-# Making Windows PowerShell console window Unicode (UTF-8) aware.
+# Making Windows PowerShell console window Unicode (UTF-8) aware.
 $OutputEncoding = [console]::InputEncoding = [console]::OutputEncoding = New-Object System.Text.UTF8Encoding
 
 # Please prepare sdb target with netcoredbg before start
@@ -36,6 +36,9 @@ $ALL_TEST_NAMES = @(
     "VSCodeTestEvalNotEnglish"
 )
 
+# Skipped tests:
+# MITest中文目录 and VSCodeTest中文目录 - sdb related issue with non-English assembly/pdb name during 'push'
+
 $TEST_NAMES = $args
 
 if ($TEST_NAMES.count -eq 0) {
index 3d548e745d5b4800e6d59cff78eb7e275a627136..146827c16cd84e298baa5b747f8bd878958c627c 100755 (executable)
@@ -34,6 +34,7 @@ ALL_TEST_NAMES=(
     "MITestExceptionBreakpoint"
     "MITestExitCode"
     "MITestEvalNotEnglish"
+    "MITest中文目录"
     "VSCodeExampleTest"
     "VSCodeTestBreakpoint"
     "VSCodeTestFuncBreak"
@@ -46,6 +47,7 @@ ALL_TEST_NAMES=(
     "VSCodeTestEnv"
     "VSCodeTestExitCode"
     "VSCodeTestEvalNotEnglish"
+    "VSCodeTest中文目录"
 )
 
 SDB=${SDB:-sdb}
index 120b4eb12e1d9e1f31597711e60d1c7e3b98f997..01d364a7c7db8589b3234606214ca610108a29bf 100644 (file)
@@ -71,6 +71,10 @@ EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VSCodeTestEvalNotEnglish", "VSCodeTestEvalNotEnglish\VSCodeTestEvalNotEnglish.csproj", "{5FE6BDFF-AD0E-4E1C-A596-6D583D0777BC}"
 >>>>>>> Add MI/GDB and VSCode tests for non-English var evaluation.
 EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MITest中文目录", "MITest中文目录\MITest中文目录.csproj", "{6B76C4A1-D871-4A78-B284-FE8E2FCBA10D}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VSCodeTest中文目录", "VSCodeTest中文目录\VSCodeTest中文目录.csproj", "{56BFF745-3A77-44BF-B068-3E13901295A1}"
+EndProject
 Global
        GlobalSection(SolutionConfigurationPlatforms) = preSolution
                Debug|Any CPU = Debug|Any CPU
@@ -480,5 +484,29 @@ Global
                {5FE6BDFF-AD0E-4E1C-A596-6D583D0777BC}.Release|x64.Build.0 = Release|Any CPU
                {5FE6BDFF-AD0E-4E1C-A596-6D583D0777BC}.Release|x86.ActiveCfg = Release|Any CPU
                {5FE6BDFF-AD0E-4E1C-A596-6D583D0777BC}.Release|x86.Build.0 = Release|Any CPU
+               {6B76C4A1-D871-4A78-B284-FE8E2FCBA10D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {6B76C4A1-D871-4A78-B284-FE8E2FCBA10D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {6B76C4A1-D871-4A78-B284-FE8E2FCBA10D}.Debug|x64.ActiveCfg = Debug|Any CPU
+               {6B76C4A1-D871-4A78-B284-FE8E2FCBA10D}.Debug|x64.Build.0 = Debug|Any CPU
+               {6B76C4A1-D871-4A78-B284-FE8E2FCBA10D}.Debug|x86.ActiveCfg = Debug|Any CPU
+               {6B76C4A1-D871-4A78-B284-FE8E2FCBA10D}.Debug|x86.Build.0 = Debug|Any CPU
+               {6B76C4A1-D871-4A78-B284-FE8E2FCBA10D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {6B76C4A1-D871-4A78-B284-FE8E2FCBA10D}.Release|Any CPU.Build.0 = Release|Any CPU
+               {6B76C4A1-D871-4A78-B284-FE8E2FCBA10D}.Release|x64.ActiveCfg = Release|Any CPU
+               {6B76C4A1-D871-4A78-B284-FE8E2FCBA10D}.Release|x64.Build.0 = Release|Any CPU
+               {6B76C4A1-D871-4A78-B284-FE8E2FCBA10D}.Release|x86.ActiveCfg = Release|Any CPU
+               {6B76C4A1-D871-4A78-B284-FE8E2FCBA10D}.Release|x86.Build.0 = Release|Any CPU
+               {56BFF745-3A77-44BF-B068-3E13901295A1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {56BFF745-3A77-44BF-B068-3E13901295A1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {56BFF745-3A77-44BF-B068-3E13901295A1}.Debug|x64.ActiveCfg = Debug|Any CPU
+               {56BFF745-3A77-44BF-B068-3E13901295A1}.Debug|x64.Build.0 = Debug|Any CPU
+               {56BFF745-3A77-44BF-B068-3E13901295A1}.Debug|x86.ActiveCfg = Debug|Any CPU
+               {56BFF745-3A77-44BF-B068-3E13901295A1}.Debug|x86.Build.0 = Debug|Any CPU
+               {56BFF745-3A77-44BF-B068-3E13901295A1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {56BFF745-3A77-44BF-B068-3E13901295A1}.Release|Any CPU.Build.0 = Release|Any CPU
+               {56BFF745-3A77-44BF-B068-3E13901295A1}.Release|x64.ActiveCfg = Release|Any CPU
+               {56BFF745-3A77-44BF-B068-3E13901295A1}.Release|x64.Build.0 = Release|Any CPU
+               {56BFF745-3A77-44BF-B068-3E13901295A1}.Release|x86.ActiveCfg = Release|Any CPU
+               {56BFF745-3A77-44BF-B068-3E13901295A1}.Release|x86.Build.0 = Release|Any CPU
        EndGlobalSection
 EndGlobal