diff --git a/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/ColorProgressBar.cs b/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/ColorProgressBar.cs new file mode 100644 index 0000000..ed7c152 --- /dev/null +++ b/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/ColorProgressBar.cs @@ -0,0 +1,235 @@ +using System; +using System.ComponentModel; +using System.Windows.Forms; +using System.Drawing; + +namespace ColorProgressBar +{ + [Description("Color Progress Bar")] + [ToolboxBitmap(typeof(ProgressBar))] + [Designer(typeof(ColorProgressBarDesigner))] + public class ColorProgressBar : System.Windows.Forms.Control + { + + private int _Value = 0; + private int _Minimum = 0; + private int _Maximum = 100; + private int _Step = 10; + + private Color _BarColor = Color.Green; + private Color _BorderColor = Color.Black; + + public ColorProgressBar() + { + base.Size = new Size(200, 20); + SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.ResizeRedraw | ControlStyles.DoubleBuffer, true); + } + + [Description("Progress bar color")] + [Category("ColorProgressBar")] + public Color BarColor + { + get + { + return _BarColor; + } + set + { + _BarColor = value; + this.Invalidate(); + } + } + + [Description("The current value for the progres bar. Must be between Minimum and Maximum.")] + [Category("ColorProgressBar")] + [RefreshProperties(RefreshProperties.All)] + public int Value + { + get + { + return _Value; + } + set + { + if (value < _Minimum) + { + throw new ArgumentException($"'{value}' is not a valid 'Value'.\n'Value' must be between 'Minimum' and 'Maximum'."); + } + + if (value > _Maximum) + { + throw new ArgumentException($"'{value}' is not a valid 'Value'.\n'Value' must be between 'Minimum' and 'Maximum'."); + } + + _Value = value; + this.Invalidate(); + } + } + + [Description("The lower bound of the range.")] + [Category("ColorProgressBar")] + [RefreshProperties(RefreshProperties.All)] + public int Minimum + { + get + { + return _Minimum; + } + set + { + _Minimum = value; + + if (_Minimum > _Maximum) + _Maximum = _Minimum; + if (_Minimum > _Value) + _Value = _Minimum; + + this.Invalidate(); + } + } + + [Description("The uppper bound of the range.")] + [Category("ColorProgressBar")] + [RefreshProperties(RefreshProperties.All)] + public int Maximum + { + get + { + return _Maximum; + } + set + { + _Maximum = value; + + if (_Maximum < _Value) + _Value = _Maximum; + if (_Maximum < _Minimum) + _Minimum = _Maximum; + + this.Invalidate(); + } + } + + [Description("The value to move the progess bar when the Step() method is called.")] + [Category("ColorProgressBar")] + public int Step + { + get + { + return _Step; + } + set + { + _Step = value; + this.Invalidate(); + } + } + + [Description("The border color")] + [Category("ColorProgressBar")] + public Color BorderColor + { + get + { + return _BorderColor; + } + set + { + _BorderColor = value; + this.Invalidate(); + } + } + + /// + /// Call the PerformStep() method to increase the value displayed by the value set in the Step property + /// + public void PerformStep() + { + if (_Value < _Maximum) + _Value += _Step; + else + _Value = _Maximum; + + this.Invalidate(); + } + + /// + /// Call the PerformStepBack() method to decrease the value displayed by the value set in the Step property + /// + public void PerformStepBack() + { + if (_Value > _Minimum) + _Value -= _Step; + else + _Value = _Minimum; + + this.Invalidate(); + } + + /// + /// Call the Increment() method to increase the value displayed by the passed value + /// + public void Increment(int value) + { + if (_Value < _Maximum) + _Value += value; + else + _Value = _Maximum; + + this.Invalidate(); + } + + // + // Call the Decrement() method to decrease the value displayed by the passed value + // + public void Decrement(int value) + { + if (_Value > _Minimum) + _Value -= value; + else + _Value = _Minimum; + + this.Invalidate(); + } + + protected override void OnPaint(System.Windows.Forms.PaintEventArgs e) + { + // + // Check for value + // + if (_Maximum == _Minimum || _Value == 0) + { + // Draw border only and exit; + DrawBorder(e.Graphics); + return; + } + + // + // The following is the width of the bar. This will vary with each value. + // + int fillWidth = (this.Width * _Value) / (_Maximum - _Minimum); + + // + // Rectangles for upper and lower half of bar + // + Rectangle rect = new Rectangle(0, 0, fillWidth, this.Height); + + // + // The brush + // + SolidBrush brush = new SolidBrush(_BarColor); + e.Graphics.FillRectangle(brush, rect); + brush.Dispose(); + + // + // Draw border and exit + DrawBorder(e.Graphics); + } + + protected void DrawBorder(Graphics g) + { + Rectangle borderRect = new Rectangle(0, 0, ClientRectangle.Width - 1, ClientRectangle.Height - 1); + g.DrawRectangle(new Pen(_BorderColor, 1), borderRect); + } + } +} \ No newline at end of file diff --git a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.Ui.Standalone/utPLSQL.Ui.Standalone.csproj b/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/ColorProgressBar.csproj similarity index 56% rename from PlsqlDeveloperUtPlsqlPlugin/utPLSQL.Ui.Standalone/utPLSQL.Ui.Standalone.csproj rename to PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/ColorProgressBar.csproj index 2d8cc12..e67f3fc 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.Ui.Standalone/utPLSQL.Ui.Standalone.csproj +++ b/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/ColorProgressBar.csproj @@ -1,20 +1,17 @@  - Debug AnyCPU - {5D3EA63E-AAFE-47DB-9D48-4BA9C205ADBE} - WinExe - utPLSQL.UI.Standalone - utPLSQL.UI.Standalone - v4.5 + {739E6F07-E688-4D16-8FDF-7472E7F0FEA0} + Library + ColorProgressBar + ColorProgressBar + v4.8 512 true - - AnyCPU @@ -37,12 +34,13 @@ 4 false + + + - - ..\packages\Costura.Fody.4.1.0\lib\net40\Costura.dll - + @@ -53,17 +51,11 @@ - - Form - - - LoginForm.cs + + Component - + - - LoginForm.cs - ResXFileCodeGenerator Resources.Designer.cs @@ -74,8 +66,6 @@ Resources.resx True - - SettingsSingleFileGenerator Settings.Designer.cs @@ -86,19 +76,5 @@ True - - - {7669189c-4a58-4e82-9dcb-7956624a719b} - utPLSQL.Ui - - - - - - This project references NuGet package(s) that are missing on this computer. Use 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/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/ColorProgressBarDesigner.cs b/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/ColorProgressBarDesigner.cs new file mode 100644 index 0000000..81c0085 --- /dev/null +++ b/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/ColorProgressBarDesigner.cs @@ -0,0 +1,22 @@ +using System.Collections; + +namespace ColorProgressBar +{ + internal class ColorProgressBarDesigner : System.Windows.Forms.Design.ControlDesigner + { + /// Clean up some unnecessary properties + protected override void PostFilterProperties(IDictionary Properties) + { + Properties.Remove("AllowDrop"); + Properties.Remove("BackgroundImage"); + Properties.Remove("ContextMenu"); + Properties.Remove("FlatStyle"); + Properties.Remove("Image"); + Properties.Remove("ImageAlign"); + Properties.Remove("ImageIndex"); + Properties.Remove("ImageList"); + Properties.Remove("Text"); + Properties.Remove("TextAlign"); + } + } +} \ No newline at end of file diff --git a/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/Properties/AssemblyInfo.cs b/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..c0079b2 --- /dev/null +++ b/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/Properties/AssemblyInfo.cs @@ -0,0 +1,35 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("ColorProgressBar")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("utPLSQL.org")] +[assembly: AssemblyProduct("ColorProgressBar")] +[assembly: AssemblyCopyright("Copyright � 2021")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("739e6f07-e688-4d16-8fdf-7472e7f0fea0")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +[assembly: AssemblyVersion("3.1.6")] +[assembly: AssemblyFileVersion("3.1.6")] diff --git a/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/Properties/Resources.Designer.cs b/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/Properties/Resources.Designer.cs new file mode 100644 index 0000000..d9db046 --- /dev/null +++ b/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/Properties/Resources.Designer.cs @@ -0,0 +1,63 @@ +//------------------------------------------------------------------------------ +// +// Dieser Code wurde von einem Tool generiert. +// Laufzeitversion:4.0.30319.42000 +// +// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn +// der Code erneut generiert wird. +// +//------------------------------------------------------------------------------ + +namespace ColorProgressBar.Properties { + using System; + + + /// + /// Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw. + /// + // Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert + // -Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert. + // Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen + // mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ColorProgressBar.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle + /// Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + } +} diff --git a/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/Properties/Resources.resx b/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/Properties/Resources.resx new file mode 100644 index 0000000..af7dbeb --- /dev/null +++ b/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/Properties/Settings.Designer.cs b/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/Properties/Settings.Designer.cs new file mode 100644 index 0000000..04a8807 --- /dev/null +++ b/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/Properties/Settings.Designer.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// Dieser Code wurde von einem Tool generiert. +// Laufzeitversion:4.0.30319.42000 +// +// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn +// der Code erneut generiert wird. +// +//------------------------------------------------------------------------------ + +namespace ColorProgressBar.Properties { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.0.3.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default { + get { + return defaultInstance; + } + } + } +} diff --git a/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/Properties/Settings.settings b/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/Properties/Settings.settings new file mode 100644 index 0000000..3964565 --- /dev/null +++ b/PlsqlDeveloperUtPlsqlPlugin/ColorProgressBar/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin.sln b/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin.sln index 8b8a352..34ae292 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin.sln +++ b/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin.sln @@ -9,6 +9,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "utPLSQL.Ui", "utPLSQL.Ui\ut EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "utPLSQL.Ui.Standalone", "utPLSQL.Ui.Standalone\utPLSQL.Ui.Standalone.csproj", "{5D3EA63E-AAFE-47DB-9D48-4BA9C205ADBE}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ColorProgressBar", "ColorProgressBar\ColorProgressBar.csproj", "{739E6F07-E688-4D16-8FDF-7472E7F0FEA0}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -55,6 +57,18 @@ Global {5D3EA63E-AAFE-47DB-9D48-4BA9C205ADBE}.Release|x64.Build.0 = Release|Any CPU {5D3EA63E-AAFE-47DB-9D48-4BA9C205ADBE}.Release|x86.ActiveCfg = Release|Any CPU {5D3EA63E-AAFE-47DB-9D48-4BA9C205ADBE}.Release|x86.Build.0 = Release|Any CPU + {739E6F07-E688-4D16-8FDF-7472E7F0FEA0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {739E6F07-E688-4D16-8FDF-7472E7F0FEA0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {739E6F07-E688-4D16-8FDF-7472E7F0FEA0}.Debug|x64.ActiveCfg = Debug|Any CPU + {739E6F07-E688-4D16-8FDF-7472E7F0FEA0}.Debug|x64.Build.0 = Debug|Any CPU + {739E6F07-E688-4D16-8FDF-7472E7F0FEA0}.Debug|x86.ActiveCfg = Debug|Any CPU + {739E6F07-E688-4D16-8FDF-7472E7F0FEA0}.Debug|x86.Build.0 = Debug|Any CPU + {739E6F07-E688-4D16-8FDF-7472E7F0FEA0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {739E6F07-E688-4D16-8FDF-7472E7F0FEA0}.Release|Any CPU.Build.0 = Release|Any CPU + {739E6F07-E688-4D16-8FDF-7472E7F0FEA0}.Release|x64.ActiveCfg = Release|Any CPU + {739E6F07-E688-4D16-8FDF-7472E7F0FEA0}.Release|x64.Build.0 = Release|Any CPU + {739E6F07-E688-4D16-8FDF-7472E7F0FEA0}.Release|x86.ActiveCfg = Release|Any CPU + {739E6F07-E688-4D16-8FDF-7472E7F0FEA0}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/App.config b/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/App.config index 4338a08..3e0e37c 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/App.config +++ b/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/App.config @@ -1,3 +1,3 @@ - + - + diff --git a/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin.cs b/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin.cs index 818186a..2cf307f 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin.cs +++ b/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin.cs @@ -43,6 +43,7 @@ public class PlsqlDeveloperUtPlsqlPlugin private const int PluginMenuIndexAllTests = 3; private const int PluginMenuIndexAllTestsWithCoverage = 4; + private const int PluginMenuIndexPath = 5; private const int PluginPopupIndex = 1; private const int PluginPopupIndexWithCoverage = 2; @@ -107,6 +108,14 @@ public static void OnActivate() } } + using (var stream = assembly.GetManifestResourceStream("utPLSQL.utPLSQL.bmp")) + { + if (stream != null) + { + createToolButton(pluginId, PluginMenuIndexPath, "utPLSQL", "utPLSQL.bmp", new Bitmap(stream).GetHbitmap().ToInt64()); + } + } + using (var stream = assembly.GetManifestResourceStream("utPLSQL.utPLSQL.bmp")) { if (stream != null) @@ -136,6 +145,9 @@ public static void OnActivate() createPopupItem(pluginId, PluginPopupIndex, "Run utPLSQL Test", "PACKAGE BODY"); createPopupItem(pluginId, PluginPopupIndexWithCoverage, "Run Code Coverage", "PACKAGE BODY"); + + createPopupItem(pluginId, PluginPopupIndex, "Run utPLSQL Test", "PROCEDURE"); + createPopupItem(pluginId, PluginPopupIndexWithCoverage, "Run Code Coverage", "PROCEDURE"); } [DllExport("CanClose", CallingConvention = CallingConvention.Cdecl)] @@ -207,6 +219,8 @@ public static string CreateMenuItem(int index) return "LARGEITEM=Run all tests of current user"; case PluginMenuIndexAllTestsWithCoverage: return "LARGEITEM=Run code coverage for current user"; + case PluginMenuIndexPath: + return "LARGEITEM=Run tests for specific path"; default: return ""; } @@ -223,7 +237,7 @@ public static void OnMenuClick(int index) { var testResultWindow = new TestRunnerWindow(_plugin, username, password, database, connectAs, oracleHome); Windows.Add(testResultWindow); - testResultWindow.RunTestsAsync("_ALL", username, null, null, false); + testResultWindow.RunTestsAsync("_ALL", username, null, null, false, false); } } else if (index == PluginMenuIndexAllTestsWithCoverage) @@ -232,7 +246,16 @@ public static void OnMenuClick(int index) { var testResultWindow = new TestRunnerWindow(_plugin, username, password, database, connectAs, oracleHome); Windows.Add(testResultWindow); - testResultWindow.RunTestsAsync("_ALL", username, null, null, true); + testResultWindow.RunTestsAsync("_ALL", username, null, null, true, false); + } + } + else if (index == PluginMenuIndexPath) + { + if (isConnected() && !isSydba()) + { + var testResultWindow = new TestRunnerWindow(_plugin, username, password, database, connectAs, oracleHome); + Windows.Add(testResultWindow); + testResultWindow.RunTestsAsync(null, null, null, null, false, true); } } else if (index == PluginPopupIndex) @@ -244,7 +267,7 @@ public static void OnMenuClick(int index) var testResultWindow = new TestRunnerWindow(_plugin, username, password, database, connectAs, oracleHome); Windows.Add(testResultWindow); testResultWindow.RunTestsAsync(Marshal.PtrToStringAnsi(type), Marshal.PtrToStringAnsi(owner), - Marshal.PtrToStringAnsi(name), Marshal.PtrToStringAnsi(subType), false); + Marshal.PtrToStringAnsi(name), Marshal.PtrToStringAnsi(subType), false, false); } } else if (index == PluginPopupIndexWithCoverage) @@ -256,7 +279,7 @@ public static void OnMenuClick(int index) var testResultWindow = new TestRunnerWindow(_plugin, username, password, database, connectAs, oracleHome); Windows.Add(testResultWindow); testResultWindow.RunTestsAsync(Marshal.PtrToStringAnsi(type), Marshal.PtrToStringAnsi(owner), - Marshal.PtrToStringAnsi(name), Marshal.PtrToStringAnsi(subType), true); + Marshal.PtrToStringAnsi(name), Marshal.PtrToStringAnsi(subType), true, false); } } } diff --git a/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin.csproj b/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin.csproj index e62f061..47062f2 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin.csproj +++ b/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin.csproj @@ -10,7 +10,7 @@ Properties utPLSQL PlsqlDeveloperUtPlsqlPlugin - v4.5 + v4.8 512 true diff --git a/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/Properties/AssemblyInfo.cs b/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/Properties/AssemblyInfo.cs index f859e53..f74de45 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/Properties/AssemblyInfo.cs +++ b/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/Properties/AssemblyInfo.cs @@ -1,4 +1,4 @@ -using System.Reflection; +using System.Reflection; using System.Runtime.InteropServices; // General Information about an assembly is controlled through the following @@ -9,7 +9,7 @@ [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("utPLSQL.org")] [assembly: AssemblyProduct("PlsqlDeveloperUtPlsqlPlugin")] -[assembly: AssemblyCopyright("Copyright © 2020")] +[assembly: AssemblyCopyright("Copyright � 2021")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] @@ -28,8 +28,5 @@ // Build Number // Revision // -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.2.0.0")] -[assembly: AssemblyFileVersion("1.2.0.0")] +[assembly: AssemblyVersion("3.1.6")] +[assembly: AssemblyFileVersion("3.1.6")] diff --git a/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/Properties/Resources.Designer.cs b/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/Properties/Resources.Designer.cs index aed0e2d..c8d1576 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/Properties/Resources.Designer.cs +++ b/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/Properties/Resources.Designer.cs @@ -1,10 +1,10 @@ //------------------------------------------------------------------------------ // -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 +// Dieser Code wurde von einem Tool generiert. +// Laufzeitversion:4.0.30319.42000 // -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. +// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn +// der Code erneut generiert wird. // //------------------------------------------------------------------------------ @@ -13,13 +13,13 @@ namespace utPLSQL.Properties { /// - /// A strongly-typed resource class, for looking up localized strings, etc. + /// Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw. /// - // This class was auto-generated by the StronglyTypedResourceBuilder - // class via a tool like ResGen or Visual Studio. - // To add or remove a member, edit your .ResX file then rerun ResGen - // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] + // Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert + // -Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert. + // Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen + // mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] internal class Resources { @@ -33,7 +33,7 @@ internal Resources() { } /// - /// Returns the cached ResourceManager instance used by this class. + /// Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] internal static global::System.Resources.ResourceManager ResourceManager { @@ -47,8 +47,8 @@ internal Resources() { } /// - /// Overrides the current thread's CurrentUICulture property for all - /// resource lookups using this strongly typed resource class. + /// Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle + /// Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] internal static global::System.Globalization.CultureInfo Culture { @@ -61,7 +61,7 @@ internal Resources() { } /// - /// Looks up a localized resource of type System.Drawing.Bitmap. + /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap utPLSQL { get { @@ -71,7 +71,7 @@ internal static System.Drawing.Bitmap utPLSQL { } /// - /// Looks up a localized resource of type System.Drawing.Bitmap. + /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap utPLSQL_coverage { get { diff --git a/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/packages.config b/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/packages.config index 90cda05..a54dbe2 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/packages.config +++ b/PlsqlDeveloperUtPlsqlPlugin/PlsqlDeveloperUtPlsqlPlugin/packages.config @@ -3,5 +3,5 @@ - + \ No newline at end of file diff --git a/PlsqlDeveloperUtPlsqlPlugin/SetAssemblyVersion.ps1 b/PlsqlDeveloperUtPlsqlPlugin/SetAssemblyVersion.ps1 new file mode 100644 index 0000000..69e5f7e --- /dev/null +++ b/PlsqlDeveloperUtPlsqlPlugin/SetAssemblyVersion.ps1 @@ -0,0 +1,6 @@ +param([string]$NewVersion) + +Get-ChildItem -Include AssemblyInfo.cs -Recurse | ForEach-Object { + $_.IsReadOnly = $false + (Get-Content -Path $_) -replace '(?<=Assembly(?:File)?Version\(")[^"]*(?="\))', $NewVersion |Set-Content -Path $_ +} \ No newline at end of file diff --git a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/App.config b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/App.config index 4338a08..3e0e37c 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/App.config +++ b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/App.config @@ -1,3 +1,3 @@ - + - + diff --git a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.Ui.Standalone/FodyWeavers.xml b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/FodyWeavers.xml similarity index 100% rename from PlsqlDeveloperUtPlsqlPlugin/utPLSQL.Ui.Standalone/FodyWeavers.xml rename to PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/FodyWeavers.xml diff --git a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.Ui.Standalone/FodyWeavers.xsd b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/FodyWeavers.xsd similarity index 100% rename from PlsqlDeveloperUtPlsqlPlugin/utPLSQL.Ui.Standalone/FodyWeavers.xsd rename to PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/FodyWeavers.xsd diff --git a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/LoginForm.Designer.cs b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/LoginForm.Designer.cs index 2d8389b..7c2308e 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/LoginForm.Designer.cs +++ b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/LoginForm.Designer.cs @@ -111,6 +111,7 @@ private void InitializeComponent() // // LoginForm // + this.AcceptButton = this.btnRunTests; this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(271, 124); @@ -123,6 +124,8 @@ private void InitializeComponent() this.Controls.Add(this.txtUsername); this.Controls.Add(this.btnRunTests); this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.MaximizeBox = false; + this.MinimizeBox = false; this.Name = "LoginForm"; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; this.Text = "utPLSQL"; diff --git a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/LoginForm.cs b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/LoginForm.cs index 4450d65..0b808b1 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/LoginForm.cs +++ b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/LoginForm.cs @@ -13,13 +13,13 @@ public LoginForm() private void BtnRunTests_Click(object sender, EventArgs e) { var testRunnerWindow = new TestRunnerWindow(null, txtUsername.Text, txtPassword.Text, txtDatabase.Text, null, null); - testRunnerWindow.RunTestsAsync("USER", null, txtUsername.Text, null, false); + testRunnerWindow.RunTestsAsync("USER", null, txtUsername.Text, null, false, false); } private void btnCodeCoverage_Click(object sender, EventArgs e) { var testRunnerWindow = new TestRunnerWindow(null, txtUsername.Text, txtPassword.Text, txtDatabase.Text, null, null); - testRunnerWindow.RunTestsAsync("USER", null, txtUsername.Text, null, true); + testRunnerWindow.RunTestsAsync("USER", null, txtUsername.Text, null, true, false); } } } diff --git a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/Properties/AssemblyInfo.cs b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/Properties/AssemblyInfo.cs index 97bbaf1..747cc77 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/Properties/AssemblyInfo.cs +++ b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/Properties/AssemblyInfo.cs @@ -1,4 +1,4 @@ -using System.Reflection; +using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; @@ -8,9 +8,9 @@ [assembly: AssemblyTitle("utPLSQL.UI.Standalone")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("HP Inc.")] +[assembly: AssemblyCompany("utPLSQL.org")] [assembly: AssemblyProduct("utPLSQL.UI.Standalone")] -[assembly: AssemblyCopyright("Copyright © HP Inc. 2020")] +[assembly: AssemblyCopyright("Copyright � 2021")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] @@ -29,8 +29,5 @@ // Build Number // Revision // -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.2.0.0")] -[assembly: AssemblyFileVersion("1.2.0.0")] +[assembly: AssemblyVersion("3.1.6")] +[assembly: AssemblyFileVersion("3.1.6")] diff --git a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/Properties/Resources.Designer.cs b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/Properties/Resources.Designer.cs index fa38f58..a1baf06 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/Properties/Resources.Designer.cs +++ b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/Properties/Resources.Designer.cs @@ -1,10 +1,10 @@ //------------------------------------------------------------------------------ // -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 +// Dieser Code wurde von einem Tool generiert. +// Laufzeitversion:4.0.30319.42000 // -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. +// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn +// der Code erneut generiert wird. // //------------------------------------------------------------------------------ @@ -13,13 +13,13 @@ namespace utPLSQL.UI.Standalone.Properties { /// - /// A strongly-typed resource class, for looking up localized strings, etc. + /// Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw. /// - // This class was auto-generated by the StronglyTypedResourceBuilder - // class via a tool like ResGen or Visual Studio. - // To add or remove a member, edit your .ResX file then rerun ResGen - // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] + // Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert + // -Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert. + // Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen + // mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] internal class Resources { @@ -33,7 +33,7 @@ internal Resources() { } /// - /// Returns the cached ResourceManager instance used by this class. + /// Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] internal static global::System.Resources.ResourceManager ResourceManager { @@ -47,8 +47,8 @@ internal Resources() { } /// - /// Overrides the current thread's CurrentUICulture property for all - /// resource lookups using this strongly typed resource class. + /// Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle + /// Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] internal static global::System.Globalization.CultureInfo Culture { diff --git a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/Properties/Settings.Designer.cs b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/Properties/Settings.Designer.cs index 83b35b5..82c597d 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/Properties/Settings.Designer.cs +++ b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/Properties/Settings.Designer.cs @@ -1,10 +1,10 @@ //------------------------------------------------------------------------------ // -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 +// Dieser Code wurde von einem Tool generiert. +// Laufzeitversion:4.0.30319.42000 // -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. +// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn +// der Code erneut generiert wird. // //------------------------------------------------------------------------------ @@ -12,7 +12,7 @@ namespace utPLSQL.UI.Standalone.Properties { [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.8.1.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.0.3.0")] internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); diff --git a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/utPLSQL.UI.Standalone.csproj b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/utPLSQL.UI.Standalone.csproj index 2d8cc12..1e92865 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/utPLSQL.UI.Standalone.csproj +++ b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI.Standalone/utPLSQL.UI.Standalone.csproj @@ -9,7 +9,7 @@ WinExe utPLSQL.UI.Standalone utPLSQL.UI.Standalone - v4.5 + v4.8 512 true @@ -94,11 +94,4 @@ - - - This project references NuGet package(s) that are missing on this computer. Use 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/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/App.config b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/App.config index 292458b..7b54b1e 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/App.config +++ b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/App.config @@ -25,4 +25,4 @@ - + diff --git a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/CodeCoverageReportDialog.cs b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/CodeCoverageReportDialog.cs index 256fd2e..0a4d987 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/CodeCoverageReportDialog.cs +++ b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/CodeCoverageReportDialog.cs @@ -5,7 +5,7 @@ namespace utPLSQL { public partial class CodeCoverageReportDialog : Form { - public CodeCoverageReportDialog(List paths) + public CodeCoverageReportDialog(IReadOnlyList paths) { InitializeComponent(); diff --git a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/Properties/AssemblyInfo.cs b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/Properties/AssemblyInfo.cs index 3b6a419..3f2d36e 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/Properties/AssemblyInfo.cs +++ b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/Properties/AssemblyInfo.cs @@ -1,4 +1,4 @@ -using System.Reflection; +using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; @@ -8,9 +8,9 @@ [assembly: AssemblyTitle("utPLSQL.UI")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("HP Inc.")] +[assembly: AssemblyCompany("utPLSQL.org")] [assembly: AssemblyProduct("utPLSQL.UI")] -[assembly: AssemblyCopyright("Copyright © HP Inc. 2020")] +[assembly: AssemblyCopyright("Copyright � 2021")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] @@ -29,8 +29,5 @@ // Build Number // Revision // -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.2.0.0")] -[assembly: AssemblyFileVersion("1.2.0.0")] +[assembly: AssemblyVersion("3.1.6")] +[assembly: AssemblyFileVersion("3.1.6")] diff --git a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/TestRunnerWindow.Designer.cs b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/TestRunnerWindow.Designer.cs index b085609..1b4503c 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/TestRunnerWindow.Designer.cs +++ b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/TestRunnerWindow.Designer.cs @@ -30,6 +30,7 @@ protected override void Dispose(bool disposing) private void InitializeComponent() { this.components = new System.ComponentModel.Container(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle(); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(TestRunnerWindow)); this.btnClose = new System.Windows.Forms.Button(); this.lblTests = new System.Windows.Forms.Label(); @@ -42,12 +43,16 @@ private void InitializeComponent() this.txtFailures = new System.Windows.Forms.TextBox(); this.lblDisabled = new System.Windows.Forms.Label(); this.txtDisabled = new System.Windows.Forms.TextBox(); - this.gridResults = new System.Windows.Forms.DataGridView(); + this.dataGridViewTestResults = new System.Windows.Forms.DataGridView(); + this.iconDataGridViewImageColumn = new System.Windows.Forms.DataGridViewImageColumn(); + this.packageDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.procedureDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.timeDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.contextMenuResults = new System.Windows.Forms.ContextMenuStrip(this.components); this.menuItemRunTests = new System.Windows.Forms.ToolStripMenuItem(); this.menuItemCoverage = new System.Windows.Forms.ToolStripMenuItem(); this.dataSet = new System.Data.DataSet(); - this.dataTableTestResult = new System.Data.DataTable(); + this.dataTableTestResults = new System.Data.DataTable(); this.dataColumnTestResultId = new System.Data.DataColumn(); this.dataColumnTestResultIcon = new System.Data.DataColumn(); this.dataColumnTestResultPackage = new System.Data.DataColumn(); @@ -60,12 +65,12 @@ private void InitializeComponent() this.dataColumnTestResultName = new System.Data.DataColumn(); this.dataColumnTestResultDescription = new System.Data.DataColumn(); this.dataColumnTestResultError = new System.Data.DataColumn(); - this.dataTableExpectation = new System.Data.DataTable(); + this.dataTableExpectations = new System.Data.DataTable(); this.dataColumnExpectationTestResultId = new System.Data.DataColumn(); this.dataColumnExpectationMessage = new System.Data.DataColumn(); this.dataColumnExpectationCaller = new System.Data.DataColumn(); + this.dataColumnExpectationLine = new System.Data.DataColumn(); this.txtStatus = new System.Windows.Forms.TextBox(); - this.progressBar = new System.Windows.Forms.ProgressBar(); this.iconPictureBox1 = new FontAwesome.Sharp.IconPictureBox(); this.iconPictureBox2 = new FontAwesome.Sharp.IconPictureBox(); this.tabs = new System.Windows.Forms.TabControl(); @@ -90,7 +95,8 @@ private void InitializeComponent() this.txtTestOwner = new System.Windows.Forms.TextBox(); this.lblTestOwner = new System.Windows.Forms.Label(); this.tabFailures = new System.Windows.Forms.TabPage(); - this.gridTestFailures = new System.Windows.Forms.DataGridView(); + this.txtFailureMessage = new System.Windows.Forms.TextBox(); + this.dataGridViewExpectations = new System.Windows.Forms.DataGridView(); this.tabErrors = new System.Windows.Forms.TabPage(); this.txtErrorMessage = new System.Windows.Forms.TextBox(); this.label1 = new System.Windows.Forms.Label(); @@ -109,23 +115,19 @@ private void InitializeComponent() this.iconPictureBox3 = new FontAwesome.Sharp.IconPictureBox(); this.btnRun = new System.Windows.Forms.Button(); this.btnRunWithCoverage = new System.Windows.Forms.Button(); - this.messageDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.callerDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.iconDataGridViewImageColumn = new System.Windows.Forms.DataGridViewImageColumn(); - this.packageDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.procedureDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.timeDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); - ((System.ComponentModel.ISupportInitialize)(this.gridResults)).BeginInit(); + this.colorProgressBar = new ColorProgressBar.ColorProgressBar(); + this.Line = new System.Windows.Forms.DataGridViewTextBoxColumn(); + ((System.ComponentModel.ISupportInitialize)(this.dataGridViewTestResults)).BeginInit(); this.contextMenuResults.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.dataSet)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.dataTableTestResult)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.dataTableExpectation)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.dataTableTestResults)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.dataTableExpectations)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.iconPictureBox1)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.iconPictureBox2)).BeginInit(); this.tabs.SuspendLayout(); this.tabTest.SuspendLayout(); this.tabFailures.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.gridTestFailures)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.dataGridViewExpectations)).BeginInit(); this.tabErrors.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.iconPictureBox4)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.iconPictureBox3)).BeginInit(); @@ -137,7 +139,7 @@ private void InitializeComponent() this.btnClose.Location = new System.Drawing.Point(919, 694); this.btnClose.Name = "btnClose"; this.btnClose.Size = new System.Drawing.Size(75, 23); - this.btnClose.TabIndex = 0; + this.btnClose.TabIndex = 4; this.btnClose.Text = "Close"; this.btnClose.Click += new System.EventHandler(this.btnClose_Click); // @@ -235,37 +237,78 @@ private void InitializeComponent() this.txtDisabled.TabStop = false; this.txtDisabled.TextAlign = System.Windows.Forms.HorizontalAlignment.Right; // - // gridResults + // dataGridViewTestResults // - this.gridResults.AllowUserToAddRows = false; - this.gridResults.AllowUserToDeleteRows = false; - this.gridResults.AllowUserToResizeRows = false; - this.gridResults.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + this.dataGridViewTestResults.AllowUserToAddRows = false; + this.dataGridViewTestResults.AllowUserToDeleteRows = false; + this.dataGridViewTestResults.AllowUserToResizeRows = false; + this.dataGridViewTestResults.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); - this.gridResults.AutoGenerateColumns = false; - this.gridResults.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { + this.dataGridViewTestResults.AutoGenerateColumns = false; + this.dataGridViewTestResults.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { this.iconDataGridViewImageColumn, this.packageDataGridViewTextBoxColumn, this.procedureDataGridViewTextBoxColumn, this.timeDataGridViewTextBoxColumn}); - this.gridResults.ContextMenuStrip = this.contextMenuResults; - this.gridResults.DataMember = "TestResult"; - this.gridResults.DataSource = this.dataSet; - this.gridResults.ImeMode = System.Windows.Forms.ImeMode.On; - this.gridResults.Location = new System.Drawing.Point(12, 126); - this.gridResults.MultiSelect = false; - this.gridResults.Name = "gridResults"; - this.gridResults.ReadOnly = true; - this.gridResults.RowHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.None; - this.gridResults.RowHeadersVisible = false; - this.gridResults.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; - this.gridResults.ShowEditingIcon = false; - this.gridResults.Size = new System.Drawing.Size(986, 324); - this.gridResults.TabIndex = 18; - this.gridResults.CellContextMenuStripNeeded += new System.Windows.Forms.DataGridViewCellContextMenuStripNeededEventHandler(this.gridResults_CellContextMenuStripNeeded); - this.gridResults.CellDoubleClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.gridResults_CellDoubleClick); - this.gridResults.SelectionChanged += new System.EventHandler(this.gridResults_SelectionChanged); + this.dataGridViewTestResults.ContextMenuStrip = this.contextMenuResults; + this.dataGridViewTestResults.DataMember = "TestResults"; + this.dataGridViewTestResults.DataSource = this.dataSet; + this.dataGridViewTestResults.ImeMode = System.Windows.Forms.ImeMode.On; + this.dataGridViewTestResults.Location = new System.Drawing.Point(12, 126); + this.dataGridViewTestResults.MultiSelect = false; + this.dataGridViewTestResults.Name = "dataGridViewTestResults"; + this.dataGridViewTestResults.ReadOnly = true; + this.dataGridViewTestResults.RowHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.None; + this.dataGridViewTestResults.RowHeadersVisible = false; + this.dataGridViewTestResults.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; + this.dataGridViewTestResults.ShowEditingIcon = false; + this.dataGridViewTestResults.Size = new System.Drawing.Size(986, 324); + this.dataGridViewTestResults.TabIndex = 18; + this.dataGridViewTestResults.TabStop = false; + this.dataGridViewTestResults.CellContextMenuStripNeeded += new System.Windows.Forms.DataGridViewCellContextMenuStripNeededEventHandler(this.gridResults_CellContextMenuStripNeeded); + this.dataGridViewTestResults.CellDoubleClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.gridResults_CellDoubleClick); + this.dataGridViewTestResults.SelectionChanged += new System.EventHandler(this.gridResults_SelectionChanged); + // + // iconDataGridViewImageColumn + // + this.iconDataGridViewImageColumn.DataPropertyName = "Icon"; + this.iconDataGridViewImageColumn.FillWeight = 0.2504606F; + this.iconDataGridViewImageColumn.HeaderText = ""; + this.iconDataGridViewImageColumn.Name = "iconDataGridViewImageColumn"; + this.iconDataGridViewImageColumn.ReadOnly = true; + this.iconDataGridViewImageColumn.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic; + this.iconDataGridViewImageColumn.Width = 35; + // + // packageDataGridViewTextBoxColumn + // + this.packageDataGridViewTextBoxColumn.DataPropertyName = "Package"; + this.packageDataGridViewTextBoxColumn.FillWeight = 14.3167F; + this.packageDataGridViewTextBoxColumn.HeaderText = "Package"; + this.packageDataGridViewTextBoxColumn.Name = "packageDataGridViewTextBoxColumn"; + this.packageDataGridViewTextBoxColumn.ReadOnly = true; + this.packageDataGridViewTextBoxColumn.Width = 300; + // + // procedureDataGridViewTextBoxColumn + // + this.procedureDataGridViewTextBoxColumn.DataPropertyName = "Procedure"; + this.procedureDataGridViewTextBoxColumn.FillWeight = 182.3871F; + this.procedureDataGridViewTextBoxColumn.HeaderText = "Procedure"; + this.procedureDataGridViewTextBoxColumn.Name = "procedureDataGridViewTextBoxColumn"; + this.procedureDataGridViewTextBoxColumn.ReadOnly = true; + this.procedureDataGridViewTextBoxColumn.Width = 530; + // + // timeDataGridViewTextBoxColumn + // + this.timeDataGridViewTextBoxColumn.DataPropertyName = "Time"; + dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleRight; + dataGridViewCellStyle1.Format = "N3"; + dataGridViewCellStyle1.NullValue = null; + this.timeDataGridViewTextBoxColumn.DefaultCellStyle = dataGridViewCellStyle1; + this.timeDataGridViewTextBoxColumn.FillWeight = 203.0457F; + this.timeDataGridViewTextBoxColumn.HeaderText = "Time"; + this.timeDataGridViewTextBoxColumn.Name = "timeDataGridViewTextBoxColumn"; + this.timeDataGridViewTextBoxColumn.ReadOnly = true; // // contextMenuResults // @@ -294,12 +337,12 @@ private void InitializeComponent() // this.dataSet.DataSetName = "DataSet"; this.dataSet.Tables.AddRange(new System.Data.DataTable[] { - this.dataTableTestResult, - this.dataTableExpectation}); + this.dataTableTestResults, + this.dataTableExpectations}); // - // dataTableTestResult + // dataTableTestResults // - this.dataTableTestResult.Columns.AddRange(new System.Data.DataColumn[] { + this.dataTableTestResults.Columns.AddRange(new System.Data.DataColumn[] { this.dataColumnTestResultId, this.dataColumnTestResultIcon, this.dataColumnTestResultPackage, @@ -312,12 +355,12 @@ private void InitializeComponent() this.dataColumnTestResultName, this.dataColumnTestResultDescription, this.dataColumnTestResultError}); - this.dataTableTestResult.Constraints.AddRange(new System.Data.Constraint[] { + this.dataTableTestResults.Constraints.AddRange(new System.Data.Constraint[] { new System.Data.UniqueConstraint("Constraint1", new string[] { "Id"}, true)}); - this.dataTableTestResult.PrimaryKey = new System.Data.DataColumn[] { + this.dataTableTestResults.PrimaryKey = new System.Data.DataColumn[] { this.dataColumnTestResultId}; - this.dataTableTestResult.TableName = "TestResult"; + this.dataTableTestResults.TableName = "TestResults"; // // dataColumnTestResultId // @@ -384,17 +427,18 @@ private void InitializeComponent() this.dataColumnTestResultError.Caption = "Error"; this.dataColumnTestResultError.ColumnName = "Error"; // - // dataTableExpectation + // dataTableExpectations // - this.dataTableExpectation.Columns.AddRange(new System.Data.DataColumn[] { + this.dataTableExpectations.Columns.AddRange(new System.Data.DataColumn[] { this.dataColumnExpectationTestResultId, this.dataColumnExpectationMessage, - this.dataColumnExpectationCaller}); - this.dataTableExpectation.Constraints.AddRange(new System.Data.Constraint[] { - new System.Data.ForeignKeyConstraint("FkTestResult", "TestResult", new string[] { + this.dataColumnExpectationCaller, + this.dataColumnExpectationLine}); + this.dataTableExpectations.Constraints.AddRange(new System.Data.Constraint[] { + new System.Data.ForeignKeyConstraint("FkTestResult", "TestResults", new string[] { "Id"}, new string[] { "TestResultId"}, System.Data.AcceptRejectRule.None, System.Data.Rule.Cascade, System.Data.Rule.Cascade)}); - this.dataTableExpectation.TableName = "Expectation"; + this.dataTableExpectations.TableName = "Expectations"; // // dataColumnExpectationTestResultId // @@ -411,6 +455,11 @@ private void InitializeComponent() this.dataColumnExpectationCaller.Caption = "Caller"; this.dataColumnExpectationCaller.ColumnName = "Caller"; // + // dataColumnExpectationLine + // + this.dataColumnExpectationLine.Caption = "Line"; + this.dataColumnExpectationLine.ColumnName = "Line"; + // // txtStatus // this.txtStatus.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); @@ -421,13 +470,7 @@ private void InitializeComponent() this.txtStatus.ReadOnly = true; this.txtStatus.Size = new System.Drawing.Size(699, 13); this.txtStatus.TabIndex = 7; - // - // progressBar - // - this.progressBar.Location = new System.Drawing.Point(12, 85); - this.progressBar.Name = "progressBar"; - this.progressBar.Size = new System.Drawing.Size(986, 23); - this.progressBar.TabIndex = 21; + this.txtStatus.TabStop = false; // // iconPictureBox1 // @@ -469,6 +512,7 @@ private void InitializeComponent() this.tabs.SelectedIndex = 0; this.tabs.Size = new System.Drawing.Size(986, 225); this.tabs.TabIndex = 28; + this.tabs.TabStop = false; // // tabTest // @@ -672,7 +716,8 @@ private void InitializeComponent() // tabFailures // this.tabFailures.BackColor = System.Drawing.SystemColors.Control; - this.tabFailures.Controls.Add(this.gridTestFailures); + this.tabFailures.Controls.Add(this.txtFailureMessage); + this.tabFailures.Controls.Add(this.dataGridViewExpectations); this.tabFailures.Location = new System.Drawing.Point(4, 22); this.tabFailures.Name = "tabFailures"; this.tabFailures.Padding = new System.Windows.Forms.Padding(3); @@ -680,26 +725,38 @@ private void InitializeComponent() this.tabFailures.TabIndex = 0; this.tabFailures.Text = "Failures"; // - // gridTestFailures - // - this.gridTestFailures.AllowUserToAddRows = false; - this.gridTestFailures.AllowUserToDeleteRows = false; - this.gridTestFailures.AutoGenerateColumns = false; - this.gridTestFailures.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill; - this.gridTestFailures.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; - this.gridTestFailures.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { - this.messageDataGridViewTextBoxColumn, - this.callerDataGridViewTextBoxColumn}); - this.gridTestFailures.DataMember = "Expectation"; - this.gridTestFailures.DataSource = this.dataSet; - this.gridTestFailures.Location = new System.Drawing.Point(6, 6); - this.gridTestFailures.MultiSelect = false; - this.gridTestFailures.Name = "gridTestFailures"; - this.gridTestFailures.RowHeadersVisible = false; - this.gridTestFailures.ShowEditingIcon = false; - this.gridTestFailures.Size = new System.Drawing.Size(966, 188); - this.gridTestFailures.TabIndex = 0; - this.gridTestFailures.CellDoubleClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.gridTestFailures_CellDoubleClick); + // txtFailureMessage + // + this.txtFailureMessage.Location = new System.Drawing.Point(131, 6); + this.txtFailureMessage.Multiline = true; + this.txtFailureMessage.Name = "txtFailureMessage"; + this.txtFailureMessage.ReadOnly = true; + this.txtFailureMessage.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; + this.txtFailureMessage.Size = new System.Drawing.Size(841, 187); + this.txtFailureMessage.TabIndex = 1; + this.txtFailureMessage.TabStop = false; + // + // dataGridViewExpectations + // + this.dataGridViewExpectations.AllowUserToAddRows = false; + this.dataGridViewExpectations.AllowUserToDeleteRows = false; + this.dataGridViewExpectations.AutoGenerateColumns = false; + this.dataGridViewExpectations.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.dataGridViewExpectations.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { + this.Line}); + this.dataGridViewExpectations.DataMember = "Expectations"; + this.dataGridViewExpectations.DataSource = this.dataSet; + this.dataGridViewExpectations.Location = new System.Drawing.Point(6, 6); + this.dataGridViewExpectations.MultiSelect = false; + this.dataGridViewExpectations.Name = "dataGridViewExpectations"; + this.dataGridViewExpectations.ReadOnly = true; + this.dataGridViewExpectations.RowHeadersVisible = false; + this.dataGridViewExpectations.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; + this.dataGridViewExpectations.ShowEditingIcon = false; + this.dataGridViewExpectations.Size = new System.Drawing.Size(119, 187); + this.dataGridViewExpectations.TabIndex = 0; + this.dataGridViewExpectations.CellDoubleClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.gridTestFailures_CellDoubleClick); + this.dataGridViewExpectations.SelectionChanged += new System.EventHandler(this.dataGridViewExpectations_SelectionChanged); // // tabErrors // @@ -798,7 +855,7 @@ private void InitializeComponent() this.cbFailure.Location = new System.Drawing.Point(499, 48); this.cbFailure.Name = "cbFailure"; this.cbFailure.Size = new System.Drawing.Size(15, 14); - this.cbFailure.TabIndex = 35; + this.cbFailure.TabIndex = 1; this.cbFailure.UseVisualStyleBackColor = true; this.cbFailure.CheckedChanged += new System.EventHandler(this.cbFailures_CheckedChanged); // @@ -810,7 +867,7 @@ private void InitializeComponent() this.cbSuccess.Location = new System.Drawing.Point(338, 48); this.cbSuccess.Name = "cbSuccess"; this.cbSuccess.Size = new System.Drawing.Size(15, 14); - this.cbSuccess.TabIndex = 36; + this.cbSuccess.TabIndex = 0; this.cbSuccess.UseVisualStyleBackColor = true; this.cbSuccess.CheckedChanged += new System.EventHandler(this.cbSuccess_CheckedChanged); // @@ -822,7 +879,7 @@ private void InitializeComponent() this.cbError.Location = new System.Drawing.Point(652, 48); this.cbError.Name = "cbError"; this.cbError.Size = new System.Drawing.Size(15, 14); - this.cbError.TabIndex = 37; + this.cbError.TabIndex = 2; this.cbError.UseVisualStyleBackColor = true; this.cbError.CheckedChanged += new System.EventHandler(this.cbErrors_CheckedChanged); // @@ -834,7 +891,7 @@ private void InitializeComponent() this.cbDisabled.Location = new System.Drawing.Point(819, 48); this.cbDisabled.Name = "cbDisabled"; this.cbDisabled.Size = new System.Drawing.Size(15, 14); - this.cbDisabled.TabIndex = 38; + this.cbDisabled.TabIndex = 3; this.cbDisabled.UseVisualStyleBackColor = true; this.cbDisabled.CheckedChanged += new System.EventHandler(this.cbDisabled_CheckedChanged); // @@ -844,7 +901,7 @@ private void InitializeComponent() this.lblSuccess.Location = new System.Drawing.Point(228, 49); this.lblSuccess.Name = "lblSuccess"; this.lblSuccess.Size = new System.Drawing.Size(48, 13); - this.lblSuccess.TabIndex = 39; + this.lblSuccess.TabIndex = 3; this.lblSuccess.Text = "Success"; // // txtSuccess @@ -877,7 +934,7 @@ private void InitializeComponent() this.btnRun.Location = new System.Drawing.Point(722, 694); this.btnRun.Name = "btnRun"; this.btnRun.Size = new System.Drawing.Size(75, 23); - this.btnRun.TabIndex = 1; + this.btnRun.TabIndex = 5; this.btnRun.Text = "Run"; this.btnRun.UseVisualStyleBackColor = true; this.btnRun.Click += new System.EventHandler(this.btnRun_Click); @@ -888,59 +945,31 @@ private void InitializeComponent() this.btnRunWithCoverage.Location = new System.Drawing.Point(803, 694); this.btnRunWithCoverage.Name = "btnRunWithCoverage"; this.btnRunWithCoverage.Size = new System.Drawing.Size(110, 23); - this.btnRunWithCoverage.TabIndex = 2; + this.btnRunWithCoverage.TabIndex = 6; this.btnRunWithCoverage.Text = "Run with Coverage"; this.btnRunWithCoverage.UseVisualStyleBackColor = true; this.btnRunWithCoverage.Click += new System.EventHandler(this.button1_Click); // - // messageDataGridViewTextBoxColumn - // - this.messageDataGridViewTextBoxColumn.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; - this.messageDataGridViewTextBoxColumn.DataPropertyName = "Message"; - this.messageDataGridViewTextBoxColumn.HeaderText = "Message"; - this.messageDataGridViewTextBoxColumn.Name = "messageDataGridViewTextBoxColumn"; - // - // callerDataGridViewTextBoxColumn - // - this.callerDataGridViewTextBoxColumn.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; - this.callerDataGridViewTextBoxColumn.DataPropertyName = "Caller"; - this.callerDataGridViewTextBoxColumn.HeaderText = "Caller"; - this.callerDataGridViewTextBoxColumn.Name = "callerDataGridViewTextBoxColumn"; - // - // iconDataGridViewImageColumn - // - this.iconDataGridViewImageColumn.DataPropertyName = "Icon"; - this.iconDataGridViewImageColumn.FillWeight = 0.2504606F; - this.iconDataGridViewImageColumn.HeaderText = "Status"; - this.iconDataGridViewImageColumn.Name = "iconDataGridViewImageColumn"; - this.iconDataGridViewImageColumn.ReadOnly = true; - this.iconDataGridViewImageColumn.Width = 35; - // - // packageDataGridViewTextBoxColumn - // - this.packageDataGridViewTextBoxColumn.DataPropertyName = "Package"; - this.packageDataGridViewTextBoxColumn.FillWeight = 14.3167F; - this.packageDataGridViewTextBoxColumn.HeaderText = "Package"; - this.packageDataGridViewTextBoxColumn.Name = "packageDataGridViewTextBoxColumn"; - this.packageDataGridViewTextBoxColumn.ReadOnly = true; - this.packageDataGridViewTextBoxColumn.Width = 235; + // colorProgressBar // - // procedureDataGridViewTextBoxColumn + this.colorProgressBar.BarColor = System.Drawing.Color.Green; + this.colorProgressBar.BorderColor = System.Drawing.SystemColors.ControlDarkDark; + this.colorProgressBar.Location = new System.Drawing.Point(12, 86); + this.colorProgressBar.Maximum = 100; + this.colorProgressBar.Minimum = 0; + this.colorProgressBar.Name = "colorProgressBar"; + this.colorProgressBar.Size = new System.Drawing.Size(986, 23); + this.colorProgressBar.Step = 10; + this.colorProgressBar.TabIndex = 43; + this.colorProgressBar.Value = 0; // - this.procedureDataGridViewTextBoxColumn.DataPropertyName = "Procedure"; - this.procedureDataGridViewTextBoxColumn.FillWeight = 182.3871F; - this.procedureDataGridViewTextBoxColumn.HeaderText = "Procedure"; - this.procedureDataGridViewTextBoxColumn.Name = "procedureDataGridViewTextBoxColumn"; - this.procedureDataGridViewTextBoxColumn.ReadOnly = true; - this.procedureDataGridViewTextBoxColumn.Width = 600; + // Line // - // timeDataGridViewTextBoxColumn - // - this.timeDataGridViewTextBoxColumn.DataPropertyName = "Time"; - this.timeDataGridViewTextBoxColumn.FillWeight = 203.0457F; - this.timeDataGridViewTextBoxColumn.HeaderText = "Time"; - this.timeDataGridViewTextBoxColumn.Name = "timeDataGridViewTextBoxColumn"; - this.timeDataGridViewTextBoxColumn.ReadOnly = true; + this.Line.DataPropertyName = "Line"; + this.Line.FillWeight = 101.5228F; + this.Line.HeaderText = "Line"; + this.Line.Name = "Line"; + this.Line.ReadOnly = true; // // TestRunnerWindow // @@ -948,6 +977,7 @@ private void InitializeComponent() this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(1008, 729); + this.Controls.Add(this.colorProgressBar); this.Controls.Add(this.btnRunWithCoverage); this.Controls.Add(this.btnRun); this.Controls.Add(this.iconPictureBox3); @@ -967,9 +997,8 @@ private void InitializeComponent() this.Controls.Add(this.iconPictureBox4); this.Controls.Add(this.iconPictureBox2); this.Controls.Add(this.iconPictureBox1); - this.Controls.Add(this.progressBar); this.Controls.Add(this.txtStatus); - this.Controls.Add(this.gridResults); + this.Controls.Add(this.dataGridViewTestResults); this.Controls.Add(this.txtDisabled); this.Controls.Add(this.lblDisabled); this.Controls.Add(this.txtFailures); @@ -987,18 +1016,19 @@ private void InitializeComponent() this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; this.Text = "utPLSQL TestRunner"; this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.TestResultWindow_FormClosing); - ((System.ComponentModel.ISupportInitialize)(this.gridResults)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.dataGridViewTestResults)).EndInit(); this.contextMenuResults.ResumeLayout(false); ((System.ComponentModel.ISupportInitialize)(this.dataSet)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.dataTableTestResult)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.dataTableExpectation)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.dataTableTestResults)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.dataTableExpectations)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.iconPictureBox1)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.iconPictureBox2)).EndInit(); this.tabs.ResumeLayout(false); this.tabTest.ResumeLayout(false); this.tabTest.PerformLayout(); this.tabFailures.ResumeLayout(false); - ((System.ComponentModel.ISupportInitialize)(this.gridTestFailures)).EndInit(); + this.tabFailures.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.dataGridViewExpectations)).EndInit(); this.tabErrors.ResumeLayout(false); this.tabErrors.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.iconPictureBox4)).EndInit(); @@ -1020,9 +1050,8 @@ private void InitializeComponent() private System.Windows.Forms.TextBox txtFailures; private System.Windows.Forms.Label lblDisabled; private System.Windows.Forms.TextBox txtDisabled; - private System.Windows.Forms.DataGridView gridResults; + private System.Windows.Forms.DataGridView dataGridViewTestResults; private System.Windows.Forms.TextBox txtStatus; - private System.Windows.Forms.ProgressBar progressBar; private FontAwesome.Sharp.IconPictureBox iconPictureBox1; private FontAwesome.Sharp.IconPictureBox iconPictureBox2; private System.Windows.Forms.TabControl tabs; @@ -1044,7 +1073,7 @@ private void InitializeComponent() private System.Windows.Forms.TextBox txtTestStart; private System.Windows.Forms.TextBox txtTestEnd; private System.Windows.Forms.Label lblTestEnd; - private System.Windows.Forms.DataGridView gridTestFailures; + private System.Windows.Forms.DataGridView dataGridViewExpectations; private System.Windows.Forms.Label label1; private System.Windows.Forms.TextBox txtPath; private System.Windows.Forms.Label lblStart; @@ -1070,7 +1099,7 @@ private void InitializeComponent() private System.Windows.Forms.Button btnRun; private System.Windows.Forms.Button btnRunWithCoverage; private System.Data.DataSet dataSet; - private System.Data.DataTable dataTableTestResult; + private System.Data.DataTable dataTableTestResults; private System.Data.DataColumn dataColumnTestResultId; private System.Data.DataColumn dataColumnTestResultIcon; private System.Data.DataColumn dataColumnTestResultPackage; @@ -1083,15 +1112,17 @@ private void InitializeComponent() private System.Data.DataColumn dataColumnTestResultName; private System.Data.DataColumn dataColumnTestResultDescription; private System.Data.DataColumn dataColumnTestResultError; - private System.Data.DataTable dataTableExpectation; + private System.Data.DataTable dataTableExpectations; private System.Data.DataColumn dataColumnExpectationTestResultId; private System.Data.DataColumn dataColumnExpectationMessage; private System.Data.DataColumn dataColumnExpectationCaller; - private System.Windows.Forms.DataGridViewTextBoxColumn messageDataGridViewTextBoxColumn; - private System.Windows.Forms.DataGridViewTextBoxColumn callerDataGridViewTextBoxColumn; + private ColorProgressBar.ColorProgressBar colorProgressBar; + private System.Windows.Forms.TextBox txtFailureMessage; private System.Windows.Forms.DataGridViewImageColumn iconDataGridViewImageColumn; private System.Windows.Forms.DataGridViewTextBoxColumn packageDataGridViewTextBoxColumn; private System.Windows.Forms.DataGridViewTextBoxColumn procedureDataGridViewTextBoxColumn; private System.Windows.Forms.DataGridViewTextBoxColumn timeDataGridViewTextBoxColumn; + private System.Data.DataColumn dataColumnExpectationLine; + private System.Windows.Forms.DataGridViewTextBoxColumn Line; } } \ No newline at end of file diff --git a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/TestRunnerWindow.cs b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/TestRunnerWindow.cs index 9a72b1e..5091c2b 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/TestRunnerWindow.cs +++ b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/TestRunnerWindow.cs @@ -5,6 +5,7 @@ using System.Drawing; using System.Globalization; using System.IO; +using System.Text.RegularExpressions; using System.Threading.Tasks; using System.Windows.Forms; @@ -12,10 +13,11 @@ namespace utPLSQL { public partial class TestRunnerWindow : Form { + Regex regexLine = new Regex("(.*line )([0-9]+)( .*)", RegexOptions.IgnoreCase); + public bool Running { get; private set; } private const int IconSize = 24; - private const int Steps = 1000; private const string StatusSuccess = "Success"; private const string StatusFailure = "Failure"; private const string StatusError = "Error"; @@ -38,6 +40,7 @@ public partial class TestRunnerWindow : Form private ImageConverter imageConverter = new ImageConverter(); private DataView dataViewTestResults; + private DataView dataViewExpectations; public TestRunnerWindow(object pluginIntegration, string username, string password, string database, string connectAs, string oracleHome) { @@ -50,12 +53,18 @@ public TestRunnerWindow(object pluginIntegration, string username, string passwo InitializeComponent(); - dataViewTestResults = new DataView(dataTableTestResult); + dataViewTestResults = new DataView(dataTableTestResults); + dataGridViewTestResults.DataMember = null; + dataGridViewTestResults.DataSource = dataViewTestResults; + + dataViewExpectations = new DataView(dataTableExpectations); + dataGridViewExpectations.DataMember = null; + dataGridViewExpectations.DataSource = dataViewExpectations; } - public async Task RunTestsAsync(string type, string owner, string name, string procedure, bool coverage) + public async Task RunTestsAsync(string type, string owner, string name, string procedure, bool coverage, bool showOnly) { - var path = GetPath(type, owner, name, procedure); + var path = showOnly ? null : GetPath(type, owner, name, procedure); testRunner = new RealTimeTestRunner(); @@ -65,6 +74,8 @@ public async Task RunTestsAsync(string type, string owner, string name, string p { Environment.SetEnvironmentVariable("ORACLE_HOME", oracleHome); } + Running = true; + testRunner.Connect(username, password, database); } catch (Exception e) @@ -82,7 +93,16 @@ public async Task RunTestsAsync(string type, string owner, string name, string p return; } - await RunTestsAsync(path, coverage); + if (showOnly) + { + txtPath.ReadOnly = false; + txtPath.Focus(); + Show(); + } + else + { + await RunTestsAsync(path, coverage); + } } private async Task RunTestsAsync(List path, bool coverage) @@ -93,10 +113,6 @@ private async Task RunTestsAsync(List path, bool coverage) SetWindowTitle(path); - Running = true; - - EnableFilter(); - if (coverage) { var codeCoverageReportDialog = new CodeCoverageReportDialog(path); @@ -123,8 +139,6 @@ private async Task RunTestsAsync(List path, bool coverage) txtStatus.BeginInvoke((MethodInvoker)delegate { - EnableFilter(); - txtStatus.Text = totalNumberOfTests > 0 ? "Finished" : "No tests found"; }); @@ -145,49 +159,44 @@ private async Task RunTestsAsync(List path, bool coverage) } } - private void EnableFilter() - { - cbSuccess.Enabled = true; - cbFailure.Enabled = true; - cbError.Enabled = true; - cbDisabled.Enabled = true; - } - private Action<@event> CollectResults(bool coverage) { return @event => { if (@event.type.Equals("pre-run")) { - gridResults.BeginInvoke((MethodInvoker)delegate + dataGridViewTestResults.BeginInvoke((MethodInvoker)delegate { txtStatus.Text = "Running tests..."; totalNumberOfTests = @event.totalNumberOfTests; - progressBar.Minimum = 0; - progressBar.Maximum = totalNumberOfTests * Steps; - progressBar.Step = Steps; + colorProgressBar.Minimum = 0; + colorProgressBar.Maximum = totalNumberOfTests; + colorProgressBar.Step = 1; CreateTestResults(@event); + + + dataTableTestResults.AcceptChanges(); }); } else if (@event.type.Equals("post-test")) { - gridResults.BeginInvoke((MethodInvoker)delegate + dataGridViewTestResults.BeginInvoke((MethodInvoker)delegate { completedTests++; txtTests.Text = (completedTests > totalNumberOfTests ? totalNumberOfTests : completedTests) + "/" + totalNumberOfTests; - UpdateProgressBar(); + colorProgressBar.PerformStep(); UpdateTestResult(@event); }); } else if (@event.type.Equals("post-run")) { - gridResults.BeginInvoke((MethodInvoker)delegate + dataGridViewTestResults.BeginInvoke((MethodInvoker)delegate { txtStart.Text = @event.run.startTime.ToString(CultureInfo.CurrentCulture); txtEnd.Text = @event.run.endTime.ToString(CultureInfo.CurrentCulture); @@ -201,13 +210,11 @@ private Action<@event> CollectResults(bool coverage) if (@event.run.counter.failure > 0 || @event.run.counter.error > 0) { - progressBar.ForeColor = Color.DarkRed; + colorProgressBar.BarColor = Color.DarkRed; } if (!coverage) { - EnableFilter(); - txtStatus.Text = totalNumberOfTests > 0 ? "Finished" : "No tests found"; Running = false; @@ -248,27 +255,7 @@ private List ConvertToList(string listValue) } } - /* - * Workaround for the progressbar animation that produces lagging - * https://stackoverflow.com/questions/5332616/disabling-net-progressbar-animation-when-changing-value - */ - private void UpdateProgressBar() - { - var newValue = completedTests * Steps + 1; - if (newValue > progressBar.Maximum) - { - progressBar.Value = progressBar.Maximum; - progressBar.Value--; - progressBar.Value++; - } - else - { - progressBar.Value = newValue; - progressBar.Value--; - } - } - - private void SetWindowTitle(List path) + private void SetWindowTitle(IReadOnlyList path) { var startTime = DateTime.Now.ToString(CultureInfo.CurrentCulture); txtStart.Text = startTime; @@ -276,7 +263,7 @@ private void SetWindowTitle(List path) Text = $"{path[0]} {startTime}"; } - private List GetPath(string type, string owner, string name, string procedure) + private static List GetPath(string type, string owner, string name, string procedure) { switch (type) { @@ -284,6 +271,8 @@ private List GetPath(string type, string owner, string name, string proc return new List { name }; case "PACKAGE": return new List { $"{owner}.{name}" }; + case "PACKAGE BODY": + return new List { $"{owner}.{name}" }; case "PROCEDURE": return new List { $"{owner}.{name}.{procedure}" }; default: @@ -318,22 +307,17 @@ private void ResetComponents() txtErrorMessage.Text = ""; - progressBar.ForeColor = Color.Green; - progressBar.Minimum = 0; - progressBar.Maximum = 100; - progressBar.Value = 0; - - cbSuccess.Enabled = false; - cbFailure.Enabled = false; - cbError.Enabled = false; - cbDisabled.Enabled = false; + colorProgressBar.BarColor = Color.Green; + colorProgressBar.Minimum = 0; + colorProgressBar.Maximum = 100; + colorProgressBar.Value = 0; } private void UpdateTestResult(@event @event) { if (@event.test != null) { - var rows = dataTableTestResult.Select($"Id = '{ @event.test.id}'"); + var rows = dataTableTestResults.Select($"Id = '{ @event.test.id}'"); var testResult = rows[0]; testResult.BeginEdit(); @@ -358,11 +342,21 @@ private void UpdateTestResult(@event @event) { testResult["Icon"] = (byte[])imageConverter.ConvertTo(IconChar.TimesCircle.ToBitmap(IconFont.Solid, IconSize, Color.Orange), typeof(byte[])); testResult["Status"] = StatusFailure; + + colorProgressBar.BeginInvoke((MethodInvoker)delegate + { + colorProgressBar.BarColor = Color.DarkRed; + }); } else if (counter.error > 0) { testResult["Icon"] = (byte[])imageConverter.ConvertTo(IconChar.ExclamationCircle.ToBitmap(Color.Red, IconSize), typeof(byte[])); testResult["Status"] = StatusError; + + colorProgressBar.BeginInvoke((MethodInvoker)delegate + { + colorProgressBar.BarColor = Color.DarkRed; + }); } else if (counter.warning > 0) { @@ -379,41 +373,51 @@ private void UpdateTestResult(@event @event) { foreach (var expectation in @event.test.failedExpectations) { - var rowExpectation = dataTableExpectation.NewRow(); + var rowExpectation = dataTableExpectations.NewRow(); rowExpectation["TestResultId"] = @event.test.id; rowExpectation["Message"] = expectation.message; rowExpectation["Caller"] = expectation.caller; + rowExpectation["Line"] = ExtractLine(expectation.caller); - dataTableExpectation.Rows.Add(rowExpectation); + dataTableExpectations.Rows.Add(rowExpectation); - dataTableExpectation.AcceptChanges(); + dataTableExpectations.AcceptChanges(); } } testResult.EndEdit(); - dataTableTestResult.AcceptChanges(); + dataTableTestResults.AcceptChanges(); - int i = 0; - foreach (DataGridViewRow gridRow in gridResults.Rows) + var rowIndex = 0; + foreach (DataGridViewRow gridRow in dataGridViewTestResults.Rows) { - if (gridRow.DataBoundItem is DataRowView) + if (gridRow.DataBoundItem is DataRowView rowTestResult) { - var rowTestResult = (DataRowView)gridRow.DataBoundItem; - if (rowTestResult["Id"].ToString().Equals(@event.test.id)) { - gridResults.FirstDisplayedScrollingRowIndex = i; - gridResults.Rows[i].Selected = true; + dataGridViewTestResults.FirstDisplayedScrollingRowIndex = rowIndex; + dataGridViewTestResults.Rows[rowIndex].Selected = true; break; } - i++; + rowIndex++; } } } } + private string ExtractLine(string caller) + { + var m = regexLine.Match(caller); + if (m.Success) + { + var g = m.Groups[2]; + return g.Value; + } + return caller; + } + private void CreateTestResults(@event @event) { CreateTestResults(@event.items); @@ -455,7 +459,7 @@ private void CreateTestResults(test test) { if (test != null) { - var rowTestResult = dataTableTestResult.NewRow(); + var rowTestResult = dataTableTestResults.NewRow(); rowTestResult["Id"] = test.id; rowTestResult["Owner"] = test.ownerName; rowTestResult["Package"] = test.objectName; @@ -464,9 +468,7 @@ private void CreateTestResults(test test) rowTestResult["Description"] = test.description; rowTestResult["Icon"] = (byte[])imageConverter.ConvertTo(IconChar.None.ToBitmap(Color.Black, IconSize), typeof(byte[])); - dataTableTestResult.Rows.Add(rowTestResult); - - dataTableTestResult.AcceptChanges(); + dataTableTestResults.Rows.Add(rowTestResult); } } @@ -499,8 +501,6 @@ private void FilterTestResults() dataViewTestResults.RowFilter = filter; } - - gridResults.DataSource = dataViewTestResults; } private void btnClose_Click(object sender, EventArgs e) @@ -535,14 +535,12 @@ private void TestResultWindow_FormClosing(object sender, FormClosingEventArgs e) private void gridResults_SelectionChanged(object sender, EventArgs e) { - if (gridResults.SelectedRows.Count > 0) + if (dataGridViewTestResults.SelectedRows.Count > 0) { - var row = gridResults.SelectedRows[0]; + var row = dataGridViewTestResults.SelectedRows[0]; - if (row.DataBoundItem is DataRowView) + if (row.DataBoundItem is DataRowView rowTestResult) { - var rowTestResult = (DataRowView)row.DataBoundItem; - txtTestOwner.Text = "" + rowTestResult.Row["Owner"]; txtTestPackage.Text = "" + rowTestResult.Row["Package"]; txtTestProcuedure.Text = "" + rowTestResult.Row["Procedure"]; @@ -556,6 +554,15 @@ private void gridResults_SelectionChanged(object sender, EventArgs e) txtErrorMessage.Text = rowTestResult.Row["Error"] == null ? "" : rowTestResult.Row["Error"].ToString().Replace("\n", "\r\n"); + txtFailureMessage.Text = ""; + + dataViewExpectations.RowFilter = $"TestResultId = '{rowTestResult.Row["Id"]}'"; + + if (dataViewExpectations.Count > 0) + { + dataGridViewExpectations.Rows[0].Selected = true; + } + if (!Running) { if (rowTestResult.Row["Status"] == null) @@ -597,10 +604,10 @@ private void gridTestFailures_CellDoubleClick(object sender, DataGridViewCellEve private void invokeOpenPackageBody(DataGridViewCellEventArgs e) { - var rowTestResult = dataTableTestResult.Rows[e.RowIndex]; + var rowTestResult = dataTableTestResults.Rows[e.RowIndex]; var methodInfo = pluginIntegration.GetType().GetMethod("OpenPackageBody"); - methodInfo.Invoke(pluginIntegration, new object[] { rowTestResult["Owner"], rowTestResult["Package"] }); + methodInfo.Invoke(pluginIntegration, new[] { rowTestResult["Owner"], rowTestResult["Package"] }); } private void gridResults_CellContextMenuStripNeeded(object sender, DataGridViewCellContextMenuStripNeededEventArgs e) @@ -610,18 +617,18 @@ private void gridResults_CellContextMenuStripNeeded(object sender, DataGridViewC private async void menuItemRunTests_ClickAsync(object sender, EventArgs e) { - var rowTestResult = dataTableTestResult.Rows[rowIndexOnRightClick]; + var rowTestResult = dataTableTestResults.Rows[rowIndexOnRightClick]; var testResultWindow = new TestRunnerWindow(pluginIntegration, username, password, database, connectAs, oracleHome); - await testResultWindow.RunTestsAsync("PROCEDURE", rowTestResult["Owner"].ToString(), rowTestResult["Package"].ToString(), rowTestResult["Procedure"].ToString(), false); + await testResultWindow.RunTestsAsync("PROCEDURE", rowTestResult["Owner"].ToString(), rowTestResult["Package"].ToString(), rowTestResult["Procedure"].ToString(), false, false); } private async void menuItemCoverage_ClickAsync(object sender, EventArgs e) { - var rowTestResult = dataTableTestResult.Rows[rowIndexOnRightClick]; + var rowTestResult = dataTableTestResults.Rows[rowIndexOnRightClick]; var testResultWindow = new TestRunnerWindow(pluginIntegration, username, password, database, connectAs, oracleHome); - await testResultWindow.RunTestsAsync("PROCEDURE", rowTestResult["Owner"].ToString(), rowTestResult["Package"].ToString(), rowTestResult["Procedure"].ToString(), true); + await testResultWindow.RunTestsAsync("PROCEDURE", rowTestResult["Owner"].ToString(), rowTestResult["Package"].ToString(), rowTestResult["Procedure"].ToString(), true, false); } private void cbSuccess_CheckedChanged(object sender, EventArgs e) @@ -653,5 +660,20 @@ private async void button1_Click(object sender, EventArgs e) { await RunTestsAsync(new List { txtPath.Text }, true); } + + private void dataGridViewExpectations_SelectionChanged(object sender, EventArgs e) + { + txtFailureMessage.Text = ""; + + if (dataGridViewExpectations.SelectedRows.Count > 0) + { + var row = dataGridViewExpectations.SelectedRows[0]; + + if (row.DataBoundItem is DataRowView rowExpectation) + { + txtFailureMessage.Text = $"{rowExpectation.Row["Message"].ToString().Replace("\n", "\r\n")}\r\n\r\n{rowExpectation.Row["Caller"].ToString().Replace("\n", "\r\n")}"; + } + } + } } } \ No newline at end of file diff --git a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/TestRunnerWindow.resx b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/TestRunnerWindow.resx index 585acf9..af06881 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/TestRunnerWindow.resx +++ b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/TestRunnerWindow.resx @@ -123,6 +123,9 @@ 179, 17 + + True + diff --git a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/packages.config b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/packages.config index ca2e476..e4d0a02 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/packages.config +++ b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/packages.config @@ -1,7 +1,6 @@  - - - - + + + \ No newline at end of file diff --git a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/utPLSQL.UI.csproj b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/utPLSQL.UI.csproj index ebe6868..32746a5 100644 --- a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/utPLSQL.UI.csproj +++ b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.UI/utPLSQL.UI.csproj @@ -9,7 +9,7 @@ Properties utPLSQL utPLSQL.UI - v4.5 + v4.8 512 true @@ -34,9 +34,6 @@ false - - ..\packages\Geomatics.IO.BindingListView.1.3.2\lib\net40\BindingListView.dll - ..\packages\FontAwesome.Sharp.5.15.3\lib\net45\FontAwesome.Sharp.dll @@ -45,6 +42,7 @@ + @@ -52,8 +50,8 @@ - - ..\packages\utPLSQL.Api.1.5.2\lib\net45\utPLSQL.Api.dll + + ..\packages\utPLSQL.Api.1.5.6\lib\net45\utPLSQL.Api.dll @@ -88,5 +86,11 @@ + + + {739e6f07-e688-4d16-8fdf-7472e7f0fea0} + ColorProgressBar + + \ No newline at end of file diff --git a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.Ui.Standalone/packages.config b/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.Ui.Standalone/packages.config deleted file mode 100644 index 01e2767..0000000 --- a/PlsqlDeveloperUtPlsqlPlugin/utPLSQL.Ui.Standalone/packages.config +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/README.md b/README.md index 22aebfd..2d51958 100644 --- a/README.md +++ b/README.md @@ -2,33 +2,49 @@ The utPLSQL Plugin integrates [utPLSQL](https://utplsql.org) with [Allround Automations PL/SQL Developer](https://www.allroundautomations.com/products/pl-sql-developer/). -## Running Tests and Code Coverage +## Running Tests -The plugin adds a Button to the Tools ribbon to execute all tests of the current user or run code coverage. +The plugin adds three buttons to the tools ribbon to 1) execute all tests of the current user, 2) run code coverage or 3) run tests for a specific path. If you choose 3) the run window will open and you can enter the path manually. -![Tools Ribbon](screenshots/tools_ribbon.png) +![Tools Ribbon](screenshots/tools_ribbon_full.png) -In the object browser on Packages or Users there is a context menu entry to run the tests or code coverage of either the packages or the users. +In the object browser on Packages, Package Bodys, Procedures or Users there is a context menu entry to run the tests or code coverage of either the package, the procedure or the user. You can also run tests from an program window. ![Context Menu](screenshots/context_menu.png) ## Viewing Results -The results are opened in a new window. If you've chosen code coverage the coverage report will be opened in the default browser. +The results are opened in a new window. Each test run will open a separate window. ### Navigating to the package body Double-click on a test result entry will open the package body. -### Runing single tests +### Running tests + +There are two buttons to run the tests again either with or without coverage. + +### Running single tests A right-click opens the context menu, and you can run the test function. -### Filtering Results +### Filtering and Sorting Results + +You can filter the results by clicking on checkboxes behind the status field. A click on the header cell sorts the results first ascending and with a second click descending. + +![Result Window](screenshots/result_window.png) + +## Code Coverage + +If you select Run Code Coverage from the menu or the context menu a dialog is displayed. In this dialog you can configure the schemas to check for coverage and include or exclude specific objects. + +![Code Coverage Diaog](screenshots/code_coverage_dialog.png) + +### Report -Once the tests are run you can filter the results by clicking on checkboxes behind the status field. +After running the tests the HTML code coverage report will be opened in the default browser. -![img.png](screenshots/result_window_filter.png) +![Code Coverage Reports](screenshots/code_coverage_report.png) ## Releases diff --git a/screenshots/code_coverage_dialog.png b/screenshots/code_coverage_dialog.png new file mode 100644 index 0000000..332fe3c Binary files /dev/null and b/screenshots/code_coverage_dialog.png differ diff --git a/screenshots/code_coverage_report.png b/screenshots/code_coverage_report.png new file mode 100644 index 0000000..10728e3 Binary files /dev/null and b/screenshots/code_coverage_report.png differ diff --git a/screenshots/context_menu.png b/screenshots/context_menu.png index b717557..d6b3db2 100644 Binary files a/screenshots/context_menu.png and b/screenshots/context_menu.png differ diff --git a/screenshots/result_window.png b/screenshots/result_window.png new file mode 100644 index 0000000..d5b0612 Binary files /dev/null and b/screenshots/result_window.png differ diff --git a/screenshots/result_window_filter.png b/screenshots/result_window_filter.png deleted file mode 100644 index bb5dc1f..0000000 Binary files a/screenshots/result_window_filter.png and /dev/null differ diff --git a/screenshots/tools_ribbon.png b/screenshots/tools_ribbon.png deleted file mode 100644 index 9e7a745..0000000 Binary files a/screenshots/tools_ribbon.png and /dev/null differ diff --git a/screenshots/tools_ribbon_full.png b/screenshots/tools_ribbon_full.png new file mode 100644 index 0000000..85c1cfb Binary files /dev/null and b/screenshots/tools_ribbon_full.png differ