Browse Source

Fixed forum-9591: NUnit test results are read with incorrect encoding.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/3.0@4452 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 17 years ago
parent
commit
12f8a85a91
  1. 4
      src/AddIns/BackendBindings/VBNetBinding/Project/Src/VbcEncodingFixingLogger.cs
  2. 8
      src/Main/Base/Project/Src/Gui/Pads/PropertyPad/PropertyPad.cs
  3. 10
      src/Main/Base/Project/Src/Gui/Workbench/Layouts/SdiWorkspaceLayout.cs
  4. 18
      src/Main/Base/Project/Src/Util/NativeMethods.cs
  5. 10
      src/Main/Base/Project/Src/Util/ProcessRunner.cs
  6. 6
      src/Main/StartUp/Project/SharpDevelopMain.cs

4
src/AddIns/BackendBindings/VBNetBinding/Project/Src/VbcEncodingFixingLogger.cs

@ -84,9 +84,9 @@ namespace VBNetBinding @@ -84,9 +84,9 @@ namespace VBNetBinding
engineWorker.CurrentErrorOrWarning.FileName = FixEncoding(engineWorker.CurrentErrorOrWarning.FileName);
}
static string FixEncoding(string encoding)
static string FixEncoding(string text)
{
return Encoding.Default.GetString(Encoding.GetEncoding(850).GetBytes(encoding));
return Encoding.Default.GetString(ICSharpCode.SharpDevelop.Util.ProcessRunner.OemEncoding.GetBytes(text));
}
}
}

8
src/Main/Base/Project/Src/Gui/Pads/PropertyPad/PropertyPad.cs

@ -55,7 +55,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -55,7 +55,7 @@ namespace ICSharpCode.SharpDevelop.Gui
if (instance == null) return;
if (instance.activeContainer != container)
return;
LoggingService.Debug("UpdateSelectedObjectIfActive");
//LoggingService.Debug("UpdateSelectedObjectIfActive");
if (container.SelectedObjects != null)
instance.SetDesignableObjects(container.SelectedObjects);
else
@ -67,7 +67,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -67,7 +67,7 @@ namespace ICSharpCode.SharpDevelop.Gui
if (instance == null) return;
if (instance.activeContainer != container)
return;
LoggingService.Debug("UpdateHostIfActive");
//LoggingService.Debug("UpdateHostIfActive");
if (instance.host == container.Host)
return;
if (instance.host != null)
@ -81,7 +81,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -81,7 +81,7 @@ namespace ICSharpCode.SharpDevelop.Gui
if (instance == null) return;
if (instance.activeContainer != container)
return;
LoggingService.Debug("UpdateSelectableIfActive");
//LoggingService.Debug("UpdateSelectableIfActive");
instance.SetSelectableObjects(container.SelectableObjects);
}
@ -90,7 +90,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -90,7 +90,7 @@ namespace ICSharpCode.SharpDevelop.Gui
if (instance == null) return;
if (instance.activeContainer != container)
return;
LoggingService.Debug("UpdatePropertyGridReplacementControl");
//LoggingService.Debug("UpdatePropertyGridReplacementControl");
if (container.PropertyGridReplacementControl != null) {
if (!instance.panel.Controls.Contains(container.PropertyGridReplacementControl)) {
instance.panel.Controls.Clear();

10
src/Main/Base/Project/Src/Gui/Workbench/Layouts/SdiWorkspaceLayout.cs

@ -389,9 +389,13 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -389,9 +389,13 @@ namespace ICSharpCode.SharpDevelop.Gui
IPadContent content = padDescriptor.PadContent;
if (content == null)
return;
Control control = content.Control;
control.Dock = DockStyle.Fill;
Controls.Add(control);
try {
Control control = content.Control;
control.Dock = DockStyle.Fill;
Controls.Add(control);
} catch (Exception ex) {
MessageService.ShowError(ex, "Error in IPadContent.Control");
}
}
}

18
src/Main/Base/Project/Src/Util/NativeMethods.cs

@ -7,8 +7,9 @@ @@ -7,8 +7,9 @@
using System;
using System.IO;
using System.Security;
using System.Runtime.InteropServices;
using System.Security;
using System.Text;
using System.Windows.Forms;
namespace ICSharpCode.SharpDevelop
@ -109,5 +110,20 @@ namespace ICSharpCode.SharpDevelop @@ -109,5 +110,20 @@ namespace ICSharpCode.SharpDevelop
throw new IOException("Could not delete file " + fileName + ". Error " + result);
}
#endregion
[DllImport("kernel32.dll")]
static extern int GetOEMCP();
public static Encoding OemEncoding {
get {
try {
return Encoding.GetEncoding(GetOEMCP());
} catch (ArgumentException) {
return Encoding.Default;
} catch (NotSupportedException) {
return Encoding.Default;
}
}
}
}
}

10
src/Main/Base/Project/Src/Util/ProcessRunner.cs

@ -20,6 +20,12 @@ namespace ICSharpCode.SharpDevelop.Util @@ -20,6 +20,12 @@ namespace ICSharpCode.SharpDevelop.Util
/// </summary>
public class ProcessRunner : IDisposable
{
public static Encoding OemEncoding {
get {
return NativeMethods.OemEncoding;
}
}
Process process;
StringBuilder standardOutput = new StringBuilder();
StringBuilder standardError = new StringBuilder();
@ -153,13 +159,17 @@ namespace ICSharpCode.SharpDevelop.Util @@ -153,13 +159,17 @@ namespace ICSharpCode.SharpDevelop.Util
/// pass to the command.</param>
public void Start(string command, string arguments)
{
Encoding encoding = OemEncoding;
process = new Process();
process.StartInfo.CreateNoWindow = true;
process.StartInfo.FileName = command;
process.StartInfo.WorkingDirectory = WorkingDirectory;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.StandardOutputEncoding = encoding;
process.OutputDataReceived += OnOutputLineReceived;
process.StartInfo.RedirectStandardError = true;
process.StartInfo.StandardErrorEncoding = encoding;
process.ErrorDataReceived += OnErrorLineReceived;
process.StartInfo.UseShellExecute = false;
process.StartInfo.Arguments = arguments;

6
src/Main/StartUp/Project/SharpDevelopMain.cs

@ -104,6 +104,12 @@ namespace ICSharpCode.SharpDevelop @@ -104,6 +104,12 @@ namespace ICSharpCode.SharpDevelop
static void RunApplication()
{
// The output encoding differs based on whether SharpDevelop is a console app (debug mode)
// or Windows app (release mode). Because this flag also affects the default encoding
// when reading from other processes' standard output, we explicitly set the encoding to get
// consistent behaviour in debug and release builds of SharpDevelop.
Console.OutputEncoding = System.Text.Encoding.Default;
LoggingService.Info("Starting SharpDevelop...");
try {
StartupSettings startup = new StartupSettings();

Loading…
Cancel
Save