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.
-
+
-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.

## 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.
+
+
+
+## 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.
+
+
+
+### 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.
-
+
## 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