diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 0000000..844d3b9
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,84 @@
+
+[*.{cs,vb}]
+#### Naming styles ####
+
+# Naming rules
+
+dotnet_naming_rule.interface_should_be_begins_with_i.severity = suggestion
+dotnet_naming_rule.interface_should_be_begins_with_i.symbols = interface
+dotnet_naming_rule.interface_should_be_begins_with_i.style = begins_with_i
+
+dotnet_naming_rule.types_should_be_pascal_case.severity = suggestion
+dotnet_naming_rule.types_should_be_pascal_case.symbols = types
+dotnet_naming_rule.types_should_be_pascal_case.style = pascal_case
+
+dotnet_naming_rule.non_field_members_should_be_pascal_case.severity = suggestion
+dotnet_naming_rule.non_field_members_should_be_pascal_case.symbols = non_field_members
+dotnet_naming_rule.non_field_members_should_be_pascal_case.style = pascal_case
+
+# Symbol specifications
+
+dotnet_naming_symbols.interface.applicable_kinds = interface
+dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
+dotnet_naming_symbols.interface.required_modifiers =
+
+dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum
+dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
+dotnet_naming_symbols.types.required_modifiers =
+
+dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method
+dotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
+dotnet_naming_symbols.non_field_members.required_modifiers =
+
+# Naming styles
+
+dotnet_naming_style.begins_with_i.required_prefix = I
+dotnet_naming_style.begins_with_i.required_suffix =
+dotnet_naming_style.begins_with_i.word_separator =
+dotnet_naming_style.begins_with_i.capitalization = pascal_case
+
+dotnet_naming_style.pascal_case.required_prefix =
+dotnet_naming_style.pascal_case.required_suffix =
+dotnet_naming_style.pascal_case.word_separator =
+dotnet_naming_style.pascal_case.capitalization = pascal_case
+
+dotnet_naming_style.pascal_case.required_prefix =
+dotnet_naming_style.pascal_case.required_suffix =
+dotnet_naming_style.pascal_case.word_separator =
+dotnet_naming_style.pascal_case.capitalization = pascal_case
+dotnet_style_operator_placement_when_wrapping = beginning_of_line
+tab_width = 4
+indent_size = 4
+end_of_line = crlf
+dotnet_style_coalesce_expression = true:suggestion
+dotnet_style_null_propagation = true:suggestion
+dotnet_style_prefer_is_null_check_over_reference_equality_method = true:suggestion
+dotnet_style_prefer_auto_properties = true:silent
+dotnet_style_object_initializer = true:suggestion
+dotnet_style_prefer_collection_expression = true:suggestion
+dotnet_style_collection_initializer = true:suggestion
+dotnet_style_prefer_simplified_boolean_expressions = true:suggestion
+dotnet_style_prefer_conditional_expression_over_assignment = true:silent
+dotnet_style_prefer_conditional_expression_over_return = true:silent
+dotnet_style_explicit_tuple_names = true:suggestion
+dotnet_style_prefer_inferred_tuple_names = true:suggestion
+dotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion
+dotnet_style_prefer_compound_assignment = true:suggestion
+
+[*.cs]
+csharp_indent_labels = one_less_than_current
+csharp_using_directive_placement = outside_namespace:silent
+csharp_prefer_simple_using_statement = true:suggestion
+csharp_prefer_braces = true:silent
+csharp_style_namespace_declarations = file_scoped:suggestion
+csharp_style_prefer_method_group_conversion = true:silent
+csharp_style_prefer_top_level_statements = true:silent
+csharp_style_prefer_primary_constructors = true:suggestion
+csharp_style_expression_bodied_methods = false:silent
+csharp_style_expression_bodied_constructors = false:silent
+csharp_style_expression_bodied_operators = false:silent
+csharp_style_expression_bodied_properties = true:silent
+csharp_style_expression_bodied_indexers = true:silent
+csharp_style_expression_bodied_accessors = true:silent
+csharp_style_expression_bodied_lambdas = true:silent
+csharp_style_expression_bodied_local_functions = false:silent
\ No newline at end of file
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 54d6c89..158f7fa 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -20,6 +20,9 @@ jobs:
steps:
- uses: actions/checkout@v4
+ with:
+ submodules: recursive
+
- name: Setup .NET Core
uses: actions/setup-dotnet@v4
with:
@@ -48,6 +51,8 @@ jobs:
steps:
- uses: actions/checkout@v4
+ with:
+ submodules: recursive
- name: Setup go
uses: actions/setup-go@v5
@@ -113,6 +118,8 @@ jobs:
steps:
- uses: actions/checkout@v4
+ with:
+ submodules: recursive
- name: Setup go
uses: actions/setup-go@v5
diff --git a/.github/workflows/release-on-pr-merge.yml b/.github/workflows/release-on-pr-merge.yml
index dd02c55..6257458 100644
--- a/.github/workflows/release-on-pr-merge.yml
+++ b/.github/workflows/release-on-pr-merge.yml
@@ -12,6 +12,8 @@ jobs:
DOTNET_CLI_TELEMETRY_OPTOUT: 1
steps:
- uses: actions/checkout@v4
+ with:
+ submodules: recursive
- name: Setup .NET Core
uses: actions/setup-dotnet@v4
diff --git a/.gitignore b/.gitignore
index fc11b0c..f8d53f4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -9,3 +9,9 @@ artifacts
.DS_Store
.fake
.idea/
+
+# User-specific files
+**/*.suo
+**/*.user
+**/*.userosscache
+**/*.sln.docstates
\ No newline at end of file
diff --git a/Gauge.Dotnet.sln b/Gauge.Dotnet.sln
index 22853fc..7b0df6a 100644
--- a/Gauge.Dotnet.sln
+++ b/Gauge.Dotnet.sln
@@ -1,9 +1,9 @@
Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 15
-VisualStudioVersion = 15.0.27130.2020
+# Visual Studio Version 17
+VisualStudioVersion = 17.8.34601.278
MinimumVisualStudioVersion = 15.0.26124.0
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IntegrationTestSample", "IntegrationTestSample\IntegrationTestSample.csproj", "{8927158D-F899-4270-B898-906910A79D8A}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IntegrationTestSample", "_testdata\Sample\IntegrationTestSample.csproj", "{8927158D-F899-4270-B898-906910A79D8A}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Gauge.Dotnet", "src\Gauge.Dotnet.csproj", "{ACD9026F-BF29-4FC5-B8B4-67C27512E80D}"
EndProject
@@ -11,6 +11,21 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Gauge.Dotnet.UnitTests", "t
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Gauge.Dotnet.IntegrationTests", "integration-test\Gauge.Dotnet.IntegrationTests.csproj", "{E7079EDD-7987-4042-877C-999FCA6C60A1}"
EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{3852E248-E868-4E7F-A439-3F182E88A4A4}"
+ ProjectSection(SolutionItems) = preProject
+ .editorconfig = .editorconfig
+ EndProjectSection
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "IntegrationTestSamples", "IntegrationTestSamples", "{04F8F685-9990-40EA-A85C-EA18B3B6D9B9}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ReferenceProject", "_testdata\ReferenceProject\ReferenceProject.csproj", "{26039755-1F17-4AC1-8637-71F72C01DE90}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ReferenceDll", "_testdata\ReferenceDllProject\ReferenceDll.csproj", "{0CE94A26-CBE9-4539-9672-9DFCAE973C6A}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IntegrationTestSampleDllReference", "_testdata\SampleDllReference\IntegrationTestSampleDllReference.csproj", "{870537AD-A053-4651-BB77-41CB42890912}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IntegrationTestSampleProjectReference", "_testdata\SampleProjectReference\IntegrationTestSampleProjectReference.csproj", "{E558F296-5A27-4288-8559-5127C252948E}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -67,10 +82,57 @@ Global
{E7079EDD-7987-4042-877C-999FCA6C60A1}.Release|x64.Build.0 = Release|Any CPU
{E7079EDD-7987-4042-877C-999FCA6C60A1}.Release|x86.ActiveCfg = Release|Any CPU
{E7079EDD-7987-4042-877C-999FCA6C60A1}.Release|x86.Build.0 = Release|Any CPU
+ {26039755-1F17-4AC1-8637-71F72C01DE90}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {26039755-1F17-4AC1-8637-71F72C01DE90}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {26039755-1F17-4AC1-8637-71F72C01DE90}.Debug|x64.Build.0 = Debug|Any CPU
+ {26039755-1F17-4AC1-8637-71F72C01DE90}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {26039755-1F17-4AC1-8637-71F72C01DE90}.Debug|x86.Build.0 = Debug|Any CPU
+ {26039755-1F17-4AC1-8637-71F72C01DE90}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {26039755-1F17-4AC1-8637-71F72C01DE90}.Release|x64.ActiveCfg = Release|Any CPU
+ {26039755-1F17-4AC1-8637-71F72C01DE90}.Release|x64.Build.0 = Release|Any CPU
+ {26039755-1F17-4AC1-8637-71F72C01DE90}.Release|x86.ActiveCfg = Release|Any CPU
+ {26039755-1F17-4AC1-8637-71F72C01DE90}.Release|x86.Build.0 = Release|Any CPU
+ {0CE94A26-CBE9-4539-9672-9DFCAE973C6A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {0CE94A26-CBE9-4539-9672-9DFCAE973C6A}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {0CE94A26-CBE9-4539-9672-9DFCAE973C6A}.Debug|x64.Build.0 = Debug|Any CPU
+ {0CE94A26-CBE9-4539-9672-9DFCAE973C6A}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {0CE94A26-CBE9-4539-9672-9DFCAE973C6A}.Debug|x86.Build.0 = Debug|Any CPU
+ {0CE94A26-CBE9-4539-9672-9DFCAE973C6A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {0CE94A26-CBE9-4539-9672-9DFCAE973C6A}.Release|x64.ActiveCfg = Release|Any CPU
+ {0CE94A26-CBE9-4539-9672-9DFCAE973C6A}.Release|x64.Build.0 = Release|Any CPU
+ {0CE94A26-CBE9-4539-9672-9DFCAE973C6A}.Release|x86.ActiveCfg = Release|Any CPU
+ {0CE94A26-CBE9-4539-9672-9DFCAE973C6A}.Release|x86.Build.0 = Release|Any CPU
+ {870537AD-A053-4651-BB77-41CB42890912}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {870537AD-A053-4651-BB77-41CB42890912}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {870537AD-A053-4651-BB77-41CB42890912}.Debug|x64.Build.0 = Debug|Any CPU
+ {870537AD-A053-4651-BB77-41CB42890912}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {870537AD-A053-4651-BB77-41CB42890912}.Debug|x86.Build.0 = Debug|Any CPU
+ {870537AD-A053-4651-BB77-41CB42890912}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {870537AD-A053-4651-BB77-41CB42890912}.Release|x64.ActiveCfg = Release|Any CPU
+ {870537AD-A053-4651-BB77-41CB42890912}.Release|x64.Build.0 = Release|Any CPU
+ {870537AD-A053-4651-BB77-41CB42890912}.Release|x86.ActiveCfg = Release|Any CPU
+ {870537AD-A053-4651-BB77-41CB42890912}.Release|x86.Build.0 = Release|Any CPU
+ {E558F296-5A27-4288-8559-5127C252948E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {E558F296-5A27-4288-8559-5127C252948E}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {E558F296-5A27-4288-8559-5127C252948E}.Debug|x64.Build.0 = Debug|Any CPU
+ {E558F296-5A27-4288-8559-5127C252948E}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {E558F296-5A27-4288-8559-5127C252948E}.Debug|x86.Build.0 = Debug|Any CPU
+ {E558F296-5A27-4288-8559-5127C252948E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {E558F296-5A27-4288-8559-5127C252948E}.Release|x64.ActiveCfg = Release|Any CPU
+ {E558F296-5A27-4288-8559-5127C252948E}.Release|x64.Build.0 = Release|Any CPU
+ {E558F296-5A27-4288-8559-5127C252948E}.Release|x86.ActiveCfg = Release|Any CPU
+ {E558F296-5A27-4288-8559-5127C252948E}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
+ GlobalSection(NestedProjects) = preSolution
+ {8927158D-F899-4270-B898-906910A79D8A} = {04F8F685-9990-40EA-A85C-EA18B3B6D9B9}
+ {26039755-1F17-4AC1-8637-71F72C01DE90} = {04F8F685-9990-40EA-A85C-EA18B3B6D9B9}
+ {0CE94A26-CBE9-4539-9672-9DFCAE973C6A} = {04F8F685-9990-40EA-A85C-EA18B3B6D9B9}
+ {870537AD-A053-4651-BB77-41CB42890912} = {04F8F685-9990-40EA-A85C-EA18B3B6D9B9}
+ {E558F296-5A27-4288-8559-5127C252948E} = {04F8F685-9990-40EA-A85C-EA18B3B6D9B9}
+ EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {220CCF70-5732-4927-A27C-72A3C351E2EE}
EndGlobalSection
diff --git a/_testdata/ReferenceDllProject/Properties/PublishProfiles/FolderProfile.pubxml b/_testdata/ReferenceDllProject/Properties/PublishProfiles/FolderProfile.pubxml
new file mode 100644
index 0000000..587affb
--- /dev/null
+++ b/_testdata/ReferenceDllProject/Properties/PublishProfiles/FolderProfile.pubxml
@@ -0,0 +1,13 @@
+
+
+
+
+ Debug
+ Any CPU
+ ..\SampleDllReference\libs
+ FileSystem
+ <_TargetId>Folder
+
+
\ No newline at end of file
diff --git a/_testdata/ReferenceDllProject/ReferenceDll.csproj b/_testdata/ReferenceDllProject/ReferenceDll.csproj
index a34f1ff..9603f38 100644
--- a/_testdata/ReferenceDllProject/ReferenceDll.csproj
+++ b/_testdata/ReferenceDllProject/ReferenceDll.csproj
@@ -1,12 +1,12 @@
- net6.0
+ net8.0
-
-
+
+
diff --git a/_testdata/ReferenceProject/ReferenceProject.csproj b/_testdata/ReferenceProject/ReferenceProject.csproj
index a34f1ff..f61ec2b 100644
--- a/_testdata/ReferenceProject/ReferenceProject.csproj
+++ b/_testdata/ReferenceProject/ReferenceProject.csproj
@@ -1,12 +1,12 @@
-
+
- net6.0
+ net8.0
-
-
+
+
diff --git a/_testdata/Sample/IntegrationTestSample.csproj b/_testdata/Sample/IntegrationTestSample.csproj
index 5216469..408c3d6 100644
--- a/_testdata/Sample/IntegrationTestSample.csproj
+++ b/_testdata/Sample/IntegrationTestSample.csproj
@@ -1,10 +1,10 @@
-
+
- net6.0
+ net8.0
-
+
diff --git a/_testdata/Sample/Properties/PublishProfiles/FolderProfile.pubxml b/_testdata/Sample/Properties/PublishProfiles/FolderProfile.pubxml
new file mode 100644
index 0000000..d04ae58
--- /dev/null
+++ b/_testdata/Sample/Properties/PublishProfiles/FolderProfile.pubxml
@@ -0,0 +1,13 @@
+
+
+
+
+ Debug
+ Any CPU
+ gauge_bin
+ FileSystem
+ <_TargetId>Folder
+
+
\ No newline at end of file
diff --git a/_testdata/Sample/StepImplementation.cs b/_testdata/Sample/StepImplementation.cs
index 8d14cd1..b86d46d 100644
--- a/_testdata/Sample/StepImplementation.cs
+++ b/_testdata/Sample/StepImplementation.cs
@@ -7,8 +7,6 @@
using System;
using System.Linq;
-using System.Runtime.Serialization;
-using System.Text;
using System.Threading.Tasks;
using Gauge.CSharp.Lib;
using Gauge.CSharp.Lib.Attribute;
@@ -84,11 +82,6 @@ public class CustomSerializableException : Exception
public CustomSerializableException(string s) : base(s)
{
}
-
- public CustomSerializableException(SerializationInfo info, StreamingContext context)
- : base(info, context)
- {
- }
}
public class CustomException : Exception
diff --git a/_testdata/Sample/gauge_bin/Gauge.CSharp.Lib.dll b/_testdata/Sample/gauge_bin/Gauge.CSharp.Lib.dll
index c0dd492..81ababe 100755
Binary files a/_testdata/Sample/gauge_bin/Gauge.CSharp.Lib.dll and b/_testdata/Sample/gauge_bin/Gauge.CSharp.Lib.dll differ
diff --git a/_testdata/Sample/gauge_bin/IntegrationTestSample.deps.json b/_testdata/Sample/gauge_bin/IntegrationTestSample.deps.json
index 6d92b42..348e61a 100644
--- a/_testdata/Sample/gauge_bin/IntegrationTestSample.deps.json
+++ b/_testdata/Sample/gauge_bin/IntegrationTestSample.deps.json
@@ -1,24 +1,24 @@
{
"runtimeTarget": {
- "name": ".NETCoreApp,Version=v3.0",
+ "name": ".NETCoreApp,Version=v8.0",
"signature": ""
},
"compilationOptions": {},
"targets": {
- ".NETCoreApp,Version=v3.0": {
+ ".NETCoreApp,Version=v8.0": {
"IntegrationTestSample/1.0.0": {
"dependencies": {
- "Gauge.CSharp.Lib": "0.7.6"
+ "Gauge.CSharp.Lib": "0.11.1"
},
"runtime": {
"IntegrationTestSample.dll": {}
}
},
- "Gauge.CSharp.Lib/0.7.6": {
+ "Gauge.CSharp.Lib/0.11.1": {
"runtime": {
- "lib/netstandard2.0/Gauge.CSharp.Lib.dll": {
- "assemblyVersion": "0.7.6.0",
- "fileVersion": "0.7.6.0"
+ "lib/net8.0/Gauge.CSharp.Lib.dll": {
+ "assemblyVersion": "0.11.1.0",
+ "fileVersion": "0.11.1.0"
}
}
}
@@ -30,12 +30,12 @@
"serviceable": false,
"sha512": ""
},
- "Gauge.CSharp.Lib/0.7.6": {
+ "Gauge.CSharp.Lib/0.11.1": {
"type": "package",
"serviceable": true,
- "sha512": "sha512-VPkNe57TqAXTxA0+UHe35+cpJT2DkqWt1hmWi3eOxTJZy3widdC8GIhRERM34V5G5mQrfM2z4+AvPAbj0nv0+A==",
- "path": "gauge.csharp.lib/0.7.6",
- "hashPath": "gauge.csharp.lib.0.7.6.nupkg.sha512"
+ "sha512": "sha512-QEgfnNnhgPkW+BuXcz4bKN4DsjFWEepIN7gcIs68/STVlejB6LaMYDmrDFdakSVV6G21xWz4U8egSurZsN4RaA==",
+ "path": "gauge.csharp.lib/0.11.1",
+ "hashPath": "gauge.csharp.lib.0.11.1.nupkg.sha512"
}
}
}
\ No newline at end of file
diff --git a/_testdata/Sample/gauge_bin/IntegrationTestSample.dll b/_testdata/Sample/gauge_bin/IntegrationTestSample.dll
index cb96ec3..d3e34e7 100644
Binary files a/_testdata/Sample/gauge_bin/IntegrationTestSample.dll and b/_testdata/Sample/gauge_bin/IntegrationTestSample.dll differ
diff --git a/_testdata/Sample/gauge_bin/IntegrationTestSample.pdb b/_testdata/Sample/gauge_bin/IntegrationTestSample.pdb
index fa95a68..047994c 100644
Binary files a/_testdata/Sample/gauge_bin/IntegrationTestSample.pdb and b/_testdata/Sample/gauge_bin/IntegrationTestSample.pdb differ
diff --git a/_testdata/SampleDllReference/IntegrationTestSample.sln b/_testdata/SampleDllReference/IntegrationTestSample.sln
index 43974d4..0d80314 100644
--- a/_testdata/SampleDllReference/IntegrationTestSample.sln
+++ b/_testdata/SampleDllReference/IntegrationTestSample.sln
@@ -4,7 +4,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".paket", ".paket", "{B18284
..\paket.dependencies = ..\paket.dependencies
EndProjectSection
EndProject
-Project("91a15a46-889c-481f-8902-ef5ca22640c3") = "IntegrationTestSample", "IntegrationTestSample.csproj", "6c31d99f-a982-4596-b423-5e945c16662d"
+Project("91a15a46-889c-481f-8902-ef5ca22640c3") = "IntegrationTestSample", "IntegrationTestSampleDllReference.csproj", "6c31d99f-a982-4596-b423-5e945c16662d"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
diff --git a/_testdata/SampleDllReference/IntegrationTestSample.csproj b/_testdata/SampleDllReference/IntegrationTestSampleDllReference.csproj
similarity index 59%
rename from _testdata/SampleDllReference/IntegrationTestSample.csproj
rename to _testdata/SampleDllReference/IntegrationTestSampleDllReference.csproj
index df58507..9d21005 100644
--- a/_testdata/SampleDllReference/IntegrationTestSample.csproj
+++ b/_testdata/SampleDllReference/IntegrationTestSampleDllReference.csproj
@@ -1,11 +1,11 @@
-
+
- net6.0
+ net8.0
-
+
diff --git a/_testdata/SampleDllReference/Properties/PublishProfiles/FolderProfile.pubxml b/_testdata/SampleDllReference/Properties/PublishProfiles/FolderProfile.pubxml
new file mode 100644
index 0000000..d04ae58
--- /dev/null
+++ b/_testdata/SampleDllReference/Properties/PublishProfiles/FolderProfile.pubxml
@@ -0,0 +1,13 @@
+
+
+
+
+ Debug
+ Any CPU
+ gauge_bin
+ FileSystem
+ <_TargetId>Folder
+
+
\ No newline at end of file
diff --git a/_testdata/SampleDllReference/gauge_bin/FluentAssertions.Core.dll b/_testdata/SampleDllReference/gauge_bin/FluentAssertions.Core.dll
new file mode 100644
index 0000000..66f9879
Binary files /dev/null and b/_testdata/SampleDllReference/gauge_bin/FluentAssertions.Core.dll differ
diff --git a/_testdata/SampleDllReference/gauge_bin/FluentAssertions.dll b/_testdata/SampleDllReference/gauge_bin/FluentAssertions.dll
new file mode 100644
index 0000000..32bd384
Binary files /dev/null and b/_testdata/SampleDllReference/gauge_bin/FluentAssertions.dll differ
diff --git a/_testdata/SampleDllReference/gauge_bin/Gauge.CSharp.Lib.dll b/_testdata/SampleDllReference/gauge_bin/Gauge.CSharp.Lib.dll
index c0dd492..81ababe 100755
Binary files a/_testdata/SampleDllReference/gauge_bin/Gauge.CSharp.Lib.dll and b/_testdata/SampleDllReference/gauge_bin/Gauge.CSharp.Lib.dll differ
diff --git a/_testdata/SampleDllReference/gauge_bin/IntegrationTestSample.deps.json b/_testdata/SampleDllReference/gauge_bin/IntegrationTestSample.deps.json
deleted file mode 100644
index 43bdb39..0000000
--- a/_testdata/SampleDllReference/gauge_bin/IntegrationTestSample.deps.json
+++ /dev/null
@@ -1,55 +0,0 @@
-{
- "runtimeTarget": {
- "name": ".NETCoreApp,Version=v3.0",
- "signature": ""
- },
- "compilationOptions": {},
- "targets": {
- ".NETCoreApp,Version=v3.0": {
- "IntegrationTestSample/1.0.0": {
- "dependencies": {
- "Gauge.CSharp.Lib": "0.7.6",
- "ReferenceDll": "1.0.0.0"
- },
- "runtime": {
- "IntegrationTestSample.dll": {}
- }
- },
- "Gauge.CSharp.Lib/0.7.6": {
- "runtime": {
- "lib/netstandard2.0/Gauge.CSharp.Lib.dll": {
- "assemblyVersion": "0.7.6.0",
- "fileVersion": "0.7.6.0"
- }
- }
- },
- "ReferenceDll/1.0.0.0": {
- "runtime": {
- "ReferenceDll.dll": {
- "assemblyVersion": "1.0.0.0",
- "fileVersion": "1.0.0.0"
- }
- }
- }
- }
- },
- "libraries": {
- "IntegrationTestSample/1.0.0": {
- "type": "project",
- "serviceable": false,
- "sha512": ""
- },
- "Gauge.CSharp.Lib/0.7.6": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-VPkNe57TqAXTxA0+UHe35+cpJT2DkqWt1hmWi3eOxTJZy3widdC8GIhRERM34V5G5mQrfM2z4+AvPAbj0nv0+A==",
- "path": "gauge.csharp.lib/0.7.6",
- "hashPath": "gauge.csharp.lib.0.7.6.nupkg.sha512"
- },
- "ReferenceDll/1.0.0.0": {
- "type": "reference",
- "serviceable": false,
- "sha512": ""
- }
- }
-}
\ No newline at end of file
diff --git a/_testdata/SampleDllReference/gauge_bin/IntegrationTestSample.dll b/_testdata/SampleDllReference/gauge_bin/IntegrationTestSample.dll
deleted file mode 100644
index 6a81c84..0000000
Binary files a/_testdata/SampleDllReference/gauge_bin/IntegrationTestSample.dll and /dev/null differ
diff --git a/_testdata/SampleDllReference/gauge_bin/IntegrationTestSample.pdb b/_testdata/SampleDllReference/gauge_bin/IntegrationTestSample.pdb
deleted file mode 100644
index d664407..0000000
Binary files a/_testdata/SampleDllReference/gauge_bin/IntegrationTestSample.pdb and /dev/null differ
diff --git a/_testdata/SampleDllReference/gauge_bin/IntegrationTestSampleDllReference.deps.json b/_testdata/SampleDllReference/gauge_bin/IntegrationTestSampleDllReference.deps.json
new file mode 100644
index 0000000..9c77aa6
--- /dev/null
+++ b/_testdata/SampleDllReference/gauge_bin/IntegrationTestSampleDllReference.deps.json
@@ -0,0 +1,81 @@
+{
+ "runtimeTarget": {
+ "name": ".NETCoreApp,Version=v8.0",
+ "signature": ""
+ },
+ "compilationOptions": {},
+ "targets": {
+ ".NETCoreApp,Version=v8.0": {
+ "IntegrationTestSampleDllReference/1.0.0": {
+ "dependencies": {
+ "Gauge.CSharp.Lib": "0.11.1",
+ "ReferenceDll": "1.0.0.0"
+ },
+ "runtime": {
+ "IntegrationTestSampleDllReference.dll": {}
+ }
+ },
+ "Gauge.CSharp.Lib/0.11.1": {
+ "runtime": {
+ "lib/net8.0/Gauge.CSharp.Lib.dll": {
+ "assemblyVersion": "0.11.1.0",
+ "fileVersion": "0.11.1.0"
+ }
+ }
+ },
+ "ReferenceDll/1.0.0.0": {
+ "runtime": {
+ "ReferenceDll.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "FluentAssertions/4.19.4.0": {
+ "runtime": {
+ "FluentAssertions.dll": {
+ "assemblyVersion": "4.19.4.0",
+ "fileVersion": "4.19.4.0"
+ }
+ }
+ },
+ "FluentAssertions.Core/4.19.4.0": {
+ "runtime": {
+ "FluentAssertions.Core.dll": {
+ "assemblyVersion": "4.19.4.0",
+ "fileVersion": "4.19.4.0"
+ }
+ }
+ }
+ }
+ },
+ "libraries": {
+ "IntegrationTestSampleDllReference/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "Gauge.CSharp.Lib/0.11.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-QEgfnNnhgPkW+BuXcz4bKN4DsjFWEepIN7gcIs68/STVlejB6LaMYDmrDFdakSVV6G21xWz4U8egSurZsN4RaA==",
+ "path": "gauge.csharp.lib/0.11.1",
+ "hashPath": "gauge.csharp.lib.0.11.1.nupkg.sha512"
+ },
+ "ReferenceDll/1.0.0.0": {
+ "type": "reference",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "FluentAssertions/4.19.4.0": {
+ "type": "reference",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "FluentAssertions.Core/4.19.4.0": {
+ "type": "reference",
+ "serviceable": false,
+ "sha512": ""
+ }
+ }
+}
\ No newline at end of file
diff --git a/_testdata/SampleDllReference/gauge_bin/IntegrationTestSampleDllReference.dll b/_testdata/SampleDllReference/gauge_bin/IntegrationTestSampleDllReference.dll
new file mode 100644
index 0000000..451173e
Binary files /dev/null and b/_testdata/SampleDllReference/gauge_bin/IntegrationTestSampleDllReference.dll differ
diff --git a/_testdata/SampleDllReference/gauge_bin/IntegrationTestSampleDllReference.pdb b/_testdata/SampleDllReference/gauge_bin/IntegrationTestSampleDllReference.pdb
new file mode 100644
index 0000000..f3c13d9
Binary files /dev/null and b/_testdata/SampleDllReference/gauge_bin/IntegrationTestSampleDllReference.pdb differ
diff --git a/_testdata/SampleDllReference/libs/FluentAssertions.Core.dll b/_testdata/SampleDllReference/libs/FluentAssertions.Core.dll
new file mode 100644
index 0000000..66f9879
Binary files /dev/null and b/_testdata/SampleDllReference/libs/FluentAssertions.Core.dll differ
diff --git a/_testdata/SampleDllReference/libs/FluentAssertions.dll b/_testdata/SampleDllReference/libs/FluentAssertions.dll
new file mode 100644
index 0000000..32bd384
Binary files /dev/null and b/_testdata/SampleDllReference/libs/FluentAssertions.dll differ
diff --git a/_testdata/SampleDllReference/libs/Gauge.CSharp.Lib.dll b/_testdata/SampleDllReference/libs/Gauge.CSharp.Lib.dll
new file mode 100644
index 0000000..81ababe
Binary files /dev/null and b/_testdata/SampleDllReference/libs/Gauge.CSharp.Lib.dll differ
diff --git a/_testdata/SampleDllReference/libs/ReferenceDll.deps.json b/_testdata/SampleDllReference/libs/ReferenceDll.deps.json
new file mode 100644
index 0000000..01da4c0
--- /dev/null
+++ b/_testdata/SampleDllReference/libs/ReferenceDll.deps.json
@@ -0,0 +1,1137 @@
+{
+ "runtimeTarget": {
+ "name": ".NETCoreApp,Version=v8.0",
+ "signature": ""
+ },
+ "compilationOptions": {},
+ "targets": {
+ ".NETCoreApp,Version=v8.0": {
+ "ReferenceDll/1.0.0": {
+ "dependencies": {
+ "FluentAssertions": "4.19.4",
+ "Gauge.CSharp.Lib": "0.11.1"
+ },
+ "runtime": {
+ "ReferenceDll.dll": {}
+ }
+ },
+ "FluentAssertions/4.19.4": {
+ "dependencies": {
+ "NETStandard.Library": "1.6.0",
+ "System.Reflection.TypeExtensions": "4.1.0"
+ },
+ "runtime": {
+ "lib/netstandard1.3/FluentAssertions.Core.dll": {
+ "assemblyVersion": "4.19.4.0",
+ "fileVersion": "4.19.4.0"
+ },
+ "lib/netstandard1.3/FluentAssertions.dll": {
+ "assemblyVersion": "4.19.4.0",
+ "fileVersion": "4.19.4.0"
+ }
+ }
+ },
+ "Gauge.CSharp.Lib/0.11.1": {
+ "runtime": {
+ "lib/net8.0/Gauge.CSharp.Lib.dll": {
+ "assemblyVersion": "0.11.1.0",
+ "fileVersion": "0.11.1.0"
+ }
+ }
+ },
+ "Microsoft.NETCore.Platforms/1.0.1": {},
+ "Microsoft.NETCore.Targets/1.0.1": {},
+ "Microsoft.Win32.Primitives/4.0.1": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "NETStandard.Library/1.6.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.Win32.Primitives": "4.0.1",
+ "System.AppContext": "4.1.0",
+ "System.Collections": "4.0.11",
+ "System.Collections.Concurrent": "4.0.12",
+ "System.Console": "4.0.0",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Diagnostics.Tools": "4.0.1",
+ "System.Diagnostics.Tracing": "4.1.0",
+ "System.Globalization": "4.0.11",
+ "System.Globalization.Calendars": "4.0.1",
+ "System.IO": "4.1.0",
+ "System.IO.Compression": "4.1.0",
+ "System.IO.Compression.ZipFile": "4.0.1",
+ "System.IO.FileSystem": "4.0.1",
+ "System.IO.FileSystem.Primitives": "4.0.1",
+ "System.Linq": "4.1.0",
+ "System.Linq.Expressions": "4.1.0",
+ "System.Net.Http": "4.1.0",
+ "System.Net.Primitives": "4.0.11",
+ "System.Net.Sockets": "4.1.0",
+ "System.ObjectModel": "4.0.12",
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Extensions": "4.0.1",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Runtime.Handles": "4.0.1",
+ "System.Runtime.InteropServices": "4.1.0",
+ "System.Runtime.InteropServices.RuntimeInformation": "4.0.0",
+ "System.Runtime.Numerics": "4.0.1",
+ "System.Security.Cryptography.Algorithms": "4.2.0",
+ "System.Security.Cryptography.Encoding": "4.0.0",
+ "System.Security.Cryptography.Primitives": "4.0.0",
+ "System.Security.Cryptography.X509Certificates": "4.1.0",
+ "System.Text.Encoding": "4.0.11",
+ "System.Text.Encoding.Extensions": "4.0.11",
+ "System.Text.RegularExpressions": "4.1.0",
+ "System.Threading": "4.0.11",
+ "System.Threading.Tasks": "4.0.11",
+ "System.Threading.Timer": "4.0.1",
+ "System.Xml.ReaderWriter": "4.0.11",
+ "System.Xml.XDocument": "4.0.11"
+ }
+ },
+ "runtime.native.System/4.0.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1"
+ }
+ },
+ "runtime.native.System.IO.Compression/4.1.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1"
+ }
+ },
+ "runtime.native.System.Net.Http/4.0.1": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1"
+ }
+ },
+ "runtime.native.System.Security.Cryptography/4.0.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1"
+ }
+ },
+ "System.AppContext/4.1.0": {
+ "dependencies": {
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Buffers/4.0.0": {
+ "dependencies": {
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Diagnostics.Tracing": "4.1.0",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Threading": "4.0.11"
+ }
+ },
+ "System.Collections/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Collections.Concurrent/4.0.12": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Diagnostics.Tracing": "4.1.0",
+ "System.Globalization": "4.0.11",
+ "System.Reflection": "4.1.0",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Threading": "4.0.11",
+ "System.Threading.Tasks": "4.0.11"
+ }
+ },
+ "System.Console/4.0.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.IO": "4.1.0",
+ "System.Runtime": "4.1.0",
+ "System.Text.Encoding": "4.0.11"
+ }
+ },
+ "System.Diagnostics.Debug/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Diagnostics.DiagnosticSource/4.0.0": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Tracing": "4.1.0",
+ "System.Reflection": "4.1.0",
+ "System.Runtime": "4.1.0",
+ "System.Threading": "4.0.11"
+ }
+ },
+ "System.Diagnostics.Tools/4.0.1": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Diagnostics.Tracing/4.1.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Globalization/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Globalization.Calendars/4.0.1": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Globalization": "4.0.11",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Globalization.Extensions/4.0.1": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "System.Globalization": "4.0.11",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Runtime.InteropServices": "4.1.0"
+ }
+ },
+ "System.IO/4.1.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Text.Encoding": "4.0.11",
+ "System.Threading.Tasks": "4.0.11"
+ }
+ },
+ "System.IO.Compression/4.1.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.IO": "4.1.0",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Runtime.Handles": "4.0.1",
+ "System.Runtime.InteropServices": "4.1.0",
+ "System.Text.Encoding": "4.0.11",
+ "System.Threading": "4.0.11",
+ "System.Threading.Tasks": "4.0.11",
+ "runtime.native.System": "4.0.0",
+ "runtime.native.System.IO.Compression": "4.1.0"
+ }
+ },
+ "System.IO.Compression.ZipFile/4.0.1": {
+ "dependencies": {
+ "System.Buffers": "4.0.0",
+ "System.IO": "4.1.0",
+ "System.IO.Compression": "4.1.0",
+ "System.IO.FileSystem": "4.0.1",
+ "System.IO.FileSystem.Primitives": "4.0.1",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Text.Encoding": "4.0.11"
+ }
+ },
+ "System.IO.FileSystem/4.0.1": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.IO": "4.1.0",
+ "System.IO.FileSystem.Primitives": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Handles": "4.0.1",
+ "System.Text.Encoding": "4.0.11",
+ "System.Threading.Tasks": "4.0.11"
+ }
+ },
+ "System.IO.FileSystem.Primitives/4.0.1": {
+ "dependencies": {
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Linq/4.1.0": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0"
+ }
+ },
+ "System.Linq.Expressions/4.1.0": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Globalization": "4.0.11",
+ "System.IO": "4.1.0",
+ "System.Linq": "4.1.0",
+ "System.ObjectModel": "4.0.12",
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Emit": "4.0.1",
+ "System.Reflection.Emit.ILGeneration": "4.0.1",
+ "System.Reflection.Emit.Lightweight": "4.0.1",
+ "System.Reflection.Extensions": "4.0.1",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Reflection.TypeExtensions": "4.1.0",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Threading": "4.0.11"
+ }
+ },
+ "System.Net.Http/4.1.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Diagnostics.DiagnosticSource": "4.0.0",
+ "System.Diagnostics.Tracing": "4.1.0",
+ "System.Globalization": "4.0.11",
+ "System.Globalization.Extensions": "4.0.1",
+ "System.IO": "4.1.0",
+ "System.IO.FileSystem": "4.0.1",
+ "System.Net.Primitives": "4.0.11",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Runtime.Handles": "4.0.1",
+ "System.Runtime.InteropServices": "4.1.0",
+ "System.Security.Cryptography.Algorithms": "4.2.0",
+ "System.Security.Cryptography.Encoding": "4.0.0",
+ "System.Security.Cryptography.OpenSsl": "4.0.0",
+ "System.Security.Cryptography.Primitives": "4.0.0",
+ "System.Security.Cryptography.X509Certificates": "4.1.0",
+ "System.Text.Encoding": "4.0.11",
+ "System.Threading": "4.0.11",
+ "System.Threading.Tasks": "4.0.11",
+ "runtime.native.System": "4.0.0",
+ "runtime.native.System.Net.Http": "4.0.1",
+ "runtime.native.System.Security.Cryptography": "4.0.0"
+ }
+ },
+ "System.Net.Primitives/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Handles": "4.0.1"
+ }
+ },
+ "System.Net.Sockets/4.1.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.IO": "4.1.0",
+ "System.Net.Primitives": "4.0.11",
+ "System.Runtime": "4.1.0",
+ "System.Threading.Tasks": "4.0.11"
+ }
+ },
+ "System.ObjectModel/4.0.12": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Threading": "4.0.11"
+ }
+ },
+ "System.Reflection/4.1.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.IO": "4.1.0",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Emit/4.0.1": {
+ "dependencies": {
+ "System.IO": "4.1.0",
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Emit.ILGeneration": "4.0.1",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Emit.ILGeneration/4.0.1": {
+ "dependencies": {
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Emit.Lightweight/4.0.1": {
+ "dependencies": {
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Emit.ILGeneration": "4.0.1",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Extensions/4.0.1": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Reflection": "4.1.0",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Primitives/4.0.1": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.TypeExtensions/4.1.0": {
+ "dependencies": {
+ "System.Reflection": "4.1.0",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Resources.ResourceManager/4.0.1": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Globalization": "4.0.11",
+ "System.Reflection": "4.1.0",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Runtime/4.1.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1"
+ }
+ },
+ "System.Runtime.Extensions/4.1.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Runtime.Handles/4.0.1": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Runtime.InteropServices/4.1.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Handles": "4.0.1"
+ }
+ },
+ "System.Runtime.InteropServices.RuntimeInformation/4.0.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "System.Reflection": "4.1.0",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.InteropServices": "4.1.0",
+ "System.Threading": "4.0.11",
+ "runtime.native.System": "4.0.0"
+ }
+ },
+ "System.Runtime.Numerics/4.0.1": {
+ "dependencies": {
+ "System.Globalization": "4.0.11",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0"
+ }
+ },
+ "System.Security.Cryptography.Algorithms/4.2.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "System.Collections": "4.0.11",
+ "System.IO": "4.1.0",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Runtime.Handles": "4.0.1",
+ "System.Runtime.InteropServices": "4.1.0",
+ "System.Runtime.Numerics": "4.0.1",
+ "System.Security.Cryptography.Encoding": "4.0.0",
+ "System.Security.Cryptography.Primitives": "4.0.0",
+ "System.Text.Encoding": "4.0.11",
+ "runtime.native.System.Security.Cryptography": "4.0.0"
+ }
+ },
+ "System.Security.Cryptography.Cng/4.2.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "System.IO": "4.1.0",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Runtime.Handles": "4.0.1",
+ "System.Runtime.InteropServices": "4.1.0",
+ "System.Security.Cryptography.Algorithms": "4.2.0",
+ "System.Security.Cryptography.Encoding": "4.0.0",
+ "System.Security.Cryptography.Primitives": "4.0.0",
+ "System.Text.Encoding": "4.0.11"
+ }
+ },
+ "System.Security.Cryptography.Csp/4.0.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "System.IO": "4.1.0",
+ "System.Reflection": "4.1.0",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Runtime.Handles": "4.0.1",
+ "System.Runtime.InteropServices": "4.1.0",
+ "System.Security.Cryptography.Algorithms": "4.2.0",
+ "System.Security.Cryptography.Encoding": "4.0.0",
+ "System.Security.Cryptography.Primitives": "4.0.0",
+ "System.Text.Encoding": "4.0.11",
+ "System.Threading": "4.0.11"
+ }
+ },
+ "System.Security.Cryptography.Encoding/4.0.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "System.Collections": "4.0.11",
+ "System.Collections.Concurrent": "4.0.12",
+ "System.Linq": "4.1.0",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Runtime.Handles": "4.0.1",
+ "System.Runtime.InteropServices": "4.1.0",
+ "System.Security.Cryptography.Primitives": "4.0.0",
+ "System.Text.Encoding": "4.0.11",
+ "runtime.native.System.Security.Cryptography": "4.0.0"
+ }
+ },
+ "System.Security.Cryptography.OpenSsl/4.0.0": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.IO": "4.1.0",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Runtime.Handles": "4.0.1",
+ "System.Runtime.InteropServices": "4.1.0",
+ "System.Runtime.Numerics": "4.0.1",
+ "System.Security.Cryptography.Algorithms": "4.2.0",
+ "System.Security.Cryptography.Encoding": "4.0.0",
+ "System.Security.Cryptography.Primitives": "4.0.0",
+ "System.Text.Encoding": "4.0.11",
+ "runtime.native.System.Security.Cryptography": "4.0.0"
+ }
+ },
+ "System.Security.Cryptography.Primitives/4.0.0": {
+ "dependencies": {
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Globalization": "4.0.11",
+ "System.IO": "4.1.0",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Threading": "4.0.11",
+ "System.Threading.Tasks": "4.0.11"
+ }
+ },
+ "System.Security.Cryptography.X509Certificates/4.1.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Globalization": "4.0.11",
+ "System.Globalization.Calendars": "4.0.1",
+ "System.IO": "4.1.0",
+ "System.IO.FileSystem": "4.0.1",
+ "System.IO.FileSystem.Primitives": "4.0.1",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Runtime.Handles": "4.0.1",
+ "System.Runtime.InteropServices": "4.1.0",
+ "System.Runtime.Numerics": "4.0.1",
+ "System.Security.Cryptography.Algorithms": "4.2.0",
+ "System.Security.Cryptography.Cng": "4.2.0",
+ "System.Security.Cryptography.Csp": "4.0.0",
+ "System.Security.Cryptography.Encoding": "4.0.0",
+ "System.Security.Cryptography.OpenSsl": "4.0.0",
+ "System.Security.Cryptography.Primitives": "4.0.0",
+ "System.Text.Encoding": "4.0.11",
+ "System.Threading": "4.0.11",
+ "runtime.native.System": "4.0.0",
+ "runtime.native.System.Net.Http": "4.0.1",
+ "runtime.native.System.Security.Cryptography": "4.0.0"
+ }
+ },
+ "System.Text.Encoding/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Text.Encoding.Extensions/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Text.Encoding": "4.0.11"
+ }
+ },
+ "System.Text.RegularExpressions/4.1.0": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Globalization": "4.0.11",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Threading": "4.0.11"
+ }
+ },
+ "System.Threading/4.0.11": {
+ "dependencies": {
+ "System.Runtime": "4.1.0",
+ "System.Threading.Tasks": "4.0.11"
+ }
+ },
+ "System.Threading.Tasks/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Threading.Tasks.Extensions/4.0.0": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Runtime": "4.1.0",
+ "System.Threading.Tasks": "4.0.11"
+ }
+ },
+ "System.Threading.Timer/4.0.1": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Xml.ReaderWriter/4.0.11": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Globalization": "4.0.11",
+ "System.IO": "4.1.0",
+ "System.IO.FileSystem": "4.0.1",
+ "System.IO.FileSystem.Primitives": "4.0.1",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Runtime.InteropServices": "4.1.0",
+ "System.Text.Encoding": "4.0.11",
+ "System.Text.Encoding.Extensions": "4.0.11",
+ "System.Text.RegularExpressions": "4.1.0",
+ "System.Threading.Tasks": "4.0.11",
+ "System.Threading.Tasks.Extensions": "4.0.0"
+ }
+ },
+ "System.Xml.XDocument/4.0.11": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Diagnostics.Tools": "4.0.1",
+ "System.Globalization": "4.0.11",
+ "System.IO": "4.1.0",
+ "System.Reflection": "4.1.0",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Text.Encoding": "4.0.11",
+ "System.Threading": "4.0.11",
+ "System.Xml.ReaderWriter": "4.0.11"
+ }
+ }
+ }
+ },
+ "libraries": {
+ "ReferenceDll/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "FluentAssertions/4.19.4": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-i2o9/YjrJUI0sx1373gj83fsITo7W/aNJ+uciV5Cg7ZUbKhGWbMekx8gTU9AuDtB54mEhMUC9uF16MOzZEp0FQ==",
+ "path": "fluentassertions/4.19.4",
+ "hashPath": "fluentassertions.4.19.4.nupkg.sha512"
+ },
+ "Gauge.CSharp.Lib/0.11.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-QEgfnNnhgPkW+BuXcz4bKN4DsjFWEepIN7gcIs68/STVlejB6LaMYDmrDFdakSVV6G21xWz4U8egSurZsN4RaA==",
+ "path": "gauge.csharp.lib/0.11.1",
+ "hashPath": "gauge.csharp.lib.0.11.1.nupkg.sha512"
+ },
+ "Microsoft.NETCore.Platforms/1.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-2G6OjjJzwBfNOO8myRV/nFrbTw5iA+DEm0N+qUqhrOmaVtn4pC77h38I1jsXGw5VH55+dPfQsqHD0We9sCl9FQ==",
+ "path": "microsoft.netcore.platforms/1.0.1",
+ "hashPath": "microsoft.netcore.platforms.1.0.1.nupkg.sha512"
+ },
+ "Microsoft.NETCore.Targets/1.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-rkn+fKobF/cbWfnnfBOQHKVKIOpxMZBvlSHkqDWgBpwGDcLRduvs3D9OLGeV6GWGvVwNlVi2CBbTjuPmtHvyNw==",
+ "path": "microsoft.netcore.targets/1.0.1",
+ "hashPath": "microsoft.netcore.targets.1.0.1.nupkg.sha512"
+ },
+ "Microsoft.Win32.Primitives/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-fQnBHO9DgcmkC9dYSJoBqo6sH1VJwJprUHh8F3hbcRlxiQiBUuTntdk8tUwV490OqC2kQUrinGwZyQHTieuXRA==",
+ "path": "microsoft.win32.primitives/4.0.1",
+ "hashPath": "microsoft.win32.primitives.4.0.1.nupkg.sha512"
+ },
+ "NETStandard.Library/1.6.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-ypsCvIdCZ4IoYASJHt6tF2fMo7N30NLgV1EbmC+snO490OMl9FvVxmumw14rhReWU3j3g7BYudG6YCrchwHJlA==",
+ "path": "netstandard.library/1.6.0",
+ "hashPath": "netstandard.library.1.6.0.nupkg.sha512"
+ },
+ "runtime.native.System/4.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-QfS/nQI7k/BLgmLrw7qm7YBoULEvgWnPI+cYsbfCVFTW8Aj+i8JhccxcFMu1RWms0YZzF+UHguNBK4Qn89e2Sg==",
+ "path": "runtime.native.system/4.0.0",
+ "hashPath": "runtime.native.system.4.0.0.nupkg.sha512"
+ },
+ "runtime.native.System.IO.Compression/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-Ob7nvnJBox1aaB222zSVZSkf4WrebPG4qFscfK7vmD7P7NxoSxACQLtO7ytWpqXDn2wcd/+45+EAZ7xjaPip8A==",
+ "path": "runtime.native.system.io.compression/4.1.0",
+ "hashPath": "runtime.native.system.io.compression.4.1.0.nupkg.sha512"
+ },
+ "runtime.native.System.Net.Http/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-Nh0UPZx2Vifh8r+J+H2jxifZUD3sBrmolgiFWJd2yiNrxO0xTa6bAw3YwRn1VOiSen/tUXMS31ttNItCZ6lKuA==",
+ "path": "runtime.native.system.net.http/4.0.1",
+ "hashPath": "runtime.native.system.net.http.4.0.1.nupkg.sha512"
+ },
+ "runtime.native.System.Security.Cryptography/4.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-2CQK0jmO6Eu7ZeMgD+LOFbNJSXHFVQbCJJkEyEwowh1SCgYnrn9W9RykMfpeeVGw7h4IBvYikzpGUlmZTUafJw==",
+ "path": "runtime.native.system.security.cryptography/4.0.0",
+ "hashPath": "runtime.native.system.security.cryptography.4.0.0.nupkg.sha512"
+ },
+ "System.AppContext/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-3QjO4jNV7PdKkmQAVp9atA+usVnKRwI3Kx1nMwJ93T0LcQfx7pKAYk0nKz5wn1oP5iqlhZuy6RXOFdhr7rDwow==",
+ "path": "system.appcontext/4.1.0",
+ "hashPath": "system.appcontext.4.1.0.nupkg.sha512"
+ },
+ "System.Buffers/4.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-msXumHfjjURSkvxUjYuq4N2ghHoRi2VpXcKMA7gK6ujQfU3vGpl+B6ld0ATRg+FZFpRyA6PgEPA+VlIkTeNf2w==",
+ "path": "system.buffers/4.0.0",
+ "hashPath": "system.buffers.4.0.0.nupkg.sha512"
+ },
+ "System.Collections/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-YUJGz6eFKqS0V//mLt25vFGrrCvOnsXjlvFQs+KimpwNxug9x0Pzy4PlFMU3Q2IzqAa9G2L4LsK3+9vCBK7oTg==",
+ "path": "system.collections/4.0.11",
+ "hashPath": "system.collections.4.0.11.nupkg.sha512"
+ },
+ "System.Collections.Concurrent/4.0.12": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-2gBcbb3drMLgxlI0fBfxMA31ec6AEyYCHygGse4vxceJan8mRIWeKJ24BFzN7+bi/NFTgdIgufzb94LWO5EERQ==",
+ "path": "system.collections.concurrent/4.0.12",
+ "hashPath": "system.collections.concurrent.4.0.12.nupkg.sha512"
+ },
+ "System.Console/4.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-qSKUSOIiYA/a0g5XXdxFcUFmv1hNICBD7QZ0QhGYVipPIhvpiydY8VZqr1thmCXvmn8aipMg64zuanB4eotK9A==",
+ "path": "system.console/4.0.0",
+ "hashPath": "system.console.4.0.0.nupkg.sha512"
+ },
+ "System.Diagnostics.Debug/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-w5U95fVKHY4G8ASs/K5iK3J5LY+/dLFd4vKejsnI/ZhBsWS9hQakfx3Zr7lRWKg4tAw9r4iktyvsTagWkqYCiw==",
+ "path": "system.diagnostics.debug/4.0.11",
+ "hashPath": "system.diagnostics.debug.4.0.11.nupkg.sha512"
+ },
+ "System.Diagnostics.DiagnosticSource/4.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-YKglnq4BMTJxfcr6nuT08g+yJ0UxdePIHxosiLuljuHIUR6t4KhFsyaHOaOc1Ofqp0PUvJ0EmcgiEz6T7vEx3w==",
+ "path": "system.diagnostics.diagnosticsource/4.0.0",
+ "hashPath": "system.diagnostics.diagnosticsource.4.0.0.nupkg.sha512"
+ },
+ "System.Diagnostics.Tools/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-xBfJ8pnd4C17dWaC9FM6aShzbJcRNMChUMD42I6772KGGrqaFdumwhn9OdM68erj1ueNo3xdQ1EwiFjK5k8p0g==",
+ "path": "system.diagnostics.tools/4.0.1",
+ "hashPath": "system.diagnostics.tools.4.0.1.nupkg.sha512"
+ },
+ "System.Diagnostics.Tracing/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-vDN1PoMZCkkdNjvZLql592oYJZgS7URcJzJ7bxeBgGtx5UtR5leNm49VmfHGqIffX4FKacHbI3H6UyNSHQknBg==",
+ "path": "system.diagnostics.tracing/4.1.0",
+ "hashPath": "system.diagnostics.tracing.4.1.0.nupkg.sha512"
+ },
+ "System.Globalization/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-B95h0YLEL2oSnwF/XjqSWKnwKOy/01VWkNlsCeMTFJLLabflpGV26nK164eRs5GiaRSBGpOxQ3pKoSnnyZN5pg==",
+ "path": "system.globalization/4.0.11",
+ "hashPath": "system.globalization.4.0.11.nupkg.sha512"
+ },
+ "System.Globalization.Calendars/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-L1c6IqeQ88vuzC1P81JeHmHA8mxq8a18NUBNXnIY/BVb+TCyAaGIFbhpZt60h9FJNmisymoQkHEFSE9Vslja1Q==",
+ "path": "system.globalization.calendars/4.0.1",
+ "hashPath": "system.globalization.calendars.4.0.1.nupkg.sha512"
+ },
+ "System.Globalization.Extensions/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-KKo23iKeOaIg61SSXwjANN7QYDr/3op3OWGGzDzz7mypx0Za0fZSeG0l6cco8Ntp8YMYkIQcAqlk8yhm5/Uhcg==",
+ "path": "system.globalization.extensions/4.0.1",
+ "hashPath": "system.globalization.extensions.4.0.1.nupkg.sha512"
+ },
+ "System.IO/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-3KlTJceQc3gnGIaHZ7UBZO26SHL1SHE4ddrmiwumFnId+CEHP+O8r386tZKaE6zlk5/mF8vifMBzHj9SaXN+mQ==",
+ "path": "system.io/4.1.0",
+ "hashPath": "system.io.4.1.0.nupkg.sha512"
+ },
+ "System.IO.Compression/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-TjnBS6eztThSzeSib+WyVbLzEdLKUcEHN69VtS3u8aAsSc18FU6xCZlNWWsEd8SKcXAE+y1sOu7VbU8sUeM0sg==",
+ "path": "system.io.compression/4.1.0",
+ "hashPath": "system.io.compression.4.1.0.nupkg.sha512"
+ },
+ "System.IO.Compression.ZipFile/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-hBQYJzfTbQURF10nLhd+az2NHxsU6MU7AB8RUf4IolBP5lOAm4Luho851xl+CqslmhI5ZH/el8BlngEk4lBkaQ==",
+ "path": "system.io.compression.zipfile/4.0.1",
+ "hashPath": "system.io.compression.zipfile.4.0.1.nupkg.sha512"
+ },
+ "System.IO.FileSystem/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-IBErlVq5jOggAD69bg1t0pJcHaDbJbWNUZTPI96fkYWzwYbN6D9wRHMULLDd9dHsl7C2YsxXL31LMfPI1SWt8w==",
+ "path": "system.io.filesystem/4.0.1",
+ "hashPath": "system.io.filesystem.4.0.1.nupkg.sha512"
+ },
+ "System.IO.FileSystem.Primitives/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-kWkKD203JJKxJeE74p8aF8y4Qc9r9WQx4C0cHzHPrY3fv/L/IhWnyCHaFJ3H1QPOH6A93whlQ2vG5nHlBDvzWQ==",
+ "path": "system.io.filesystem.primitives/4.0.1",
+ "hashPath": "system.io.filesystem.primitives.4.0.1.nupkg.sha512"
+ },
+ "System.Linq/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-bQ0iYFOQI0nuTnt+NQADns6ucV4DUvMdwN6CbkB1yj8i7arTGiTN5eok1kQwdnnNWSDZfIUySQY+J3d5KjWn0g==",
+ "path": "system.linq/4.1.0",
+ "hashPath": "system.linq.4.1.0.nupkg.sha512"
+ },
+ "System.Linq.Expressions/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-I+y02iqkgmCAyfbqOmSDOgqdZQ5tTj80Akm5BPSS8EeB0VGWdy6X1KCoYe8Pk6pwDoAKZUOdLVxnTJcExiv5zw==",
+ "path": "system.linq.expressions/4.1.0",
+ "hashPath": "system.linq.expressions.4.1.0.nupkg.sha512"
+ },
+ "System.Net.Http/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-ULq9g3SOPVuupt+Y3U+A37coXzdNisB1neFCSKzBwo182u0RDddKJF8I5+HfyXqK6OhJPgeoAwWXrbiUXuRDsg==",
+ "path": "system.net.http/4.1.0",
+ "hashPath": "system.net.http.4.1.0.nupkg.sha512"
+ },
+ "System.Net.Primitives/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-hVvfl4405DRjA2408luZekbPhplJK03j2Y2lSfMlny7GHXlkByw1iLnc9mgKW0GdQn73vvMcWrWewAhylXA4Nw==",
+ "path": "system.net.primitives/4.0.11",
+ "hashPath": "system.net.primitives.4.0.11.nupkg.sha512"
+ },
+ "System.Net.Sockets/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-xAz0N3dAV/aR/9g8r0Y5oEqU1JRsz29F5EGb/WVHmX3jVSLqi2/92M5hTad2aNWovruXrJpJtgZ9fccPMG9uSw==",
+ "path": "system.net.sockets/4.1.0",
+ "hashPath": "system.net.sockets.4.1.0.nupkg.sha512"
+ },
+ "System.ObjectModel/4.0.12": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-tAgJM1xt3ytyMoW4qn4wIqgJYm7L7TShRZG4+Q4Qsi2PCcj96pXN7nRywS9KkB3p/xDUjc2HSwP9SROyPYDYKQ==",
+ "path": "system.objectmodel/4.0.12",
+ "hashPath": "system.objectmodel.4.0.12.nupkg.sha512"
+ },
+ "System.Reflection/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-JCKANJ0TI7kzoQzuwB/OoJANy1Lg338B6+JVacPl4TpUwi3cReg3nMLplMq2uqYfHFQpKIlHAUVAJlImZz/4ng==",
+ "path": "system.reflection/4.1.0",
+ "hashPath": "system.reflection.4.1.0.nupkg.sha512"
+ },
+ "System.Reflection.Emit/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-P2wqAj72fFjpP6wb9nSfDqNBMab+2ovzSDzUZK7MVIm54tBJEPr9jWfSjjoTpPwj1LeKcmX3vr0ttyjSSFM47g==",
+ "path": "system.reflection.emit/4.0.1",
+ "hashPath": "system.reflection.emit.4.0.1.nupkg.sha512"
+ },
+ "System.Reflection.Emit.ILGeneration/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-Ov6dU8Bu15Bc7zuqttgHF12J5lwSWyTf1S+FJouUXVMSqImLZzYaQ+vRr1rQ0OZ0HqsrwWl4dsKHELckQkVpgA==",
+ "path": "system.reflection.emit.ilgeneration/4.0.1",
+ "hashPath": "system.reflection.emit.ilgeneration.4.0.1.nupkg.sha512"
+ },
+ "System.Reflection.Emit.Lightweight/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-sSzHHXueZ5Uh0OLpUQprhr+ZYJrLPA2Cmr4gn0wj9+FftNKXx8RIMKvO9qnjk2ebPYUjZ+F2ulGdPOsvj+MEjA==",
+ "path": "system.reflection.emit.lightweight/4.0.1",
+ "hashPath": "system.reflection.emit.lightweight.4.0.1.nupkg.sha512"
+ },
+ "System.Reflection.Extensions/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-GYrtRsZcMuHF3sbmRHfMYpvxZoIN2bQGrYGerUiWLEkqdEUQZhH3TRSaC/oI4wO0II1RKBPlpIa1TOMxIcOOzQ==",
+ "path": "system.reflection.extensions/4.0.1",
+ "hashPath": "system.reflection.extensions.4.0.1.nupkg.sha512"
+ },
+ "System.Reflection.Primitives/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-4inTox4wTBaDhB7V3mPvp9XlCbeGYWVEM9/fXALd52vNEAVisc1BoVWQPuUuD0Ga//dNbA/WeMy9u9mzLxGTHQ==",
+ "path": "system.reflection.primitives/4.0.1",
+ "hashPath": "system.reflection.primitives.4.0.1.nupkg.sha512"
+ },
+ "System.Reflection.TypeExtensions/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-tsQ/ptQ3H5FYfON8lL4MxRk/8kFyE0A+tGPXmVP967cT/gzLHYxIejIYSxp4JmIeFHVP78g/F2FE1mUUTbDtrg==",
+ "path": "system.reflection.typeextensions/4.1.0",
+ "hashPath": "system.reflection.typeextensions.4.1.0.nupkg.sha512"
+ },
+ "System.Resources.ResourceManager/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-TxwVeUNoTgUOdQ09gfTjvW411MF+w9MBYL7AtNVc+HtBCFlutPLhUCdZjNkjbhj3bNQWMdHboF0KIWEOjJssbA==",
+ "path": "system.resources.resourcemanager/4.0.1",
+ "hashPath": "system.resources.resourcemanager.4.0.1.nupkg.sha512"
+ },
+ "System.Runtime/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-v6c/4Yaa9uWsq+JMhnOFewrYkgdNHNG2eMKuNqRn8P733rNXeRCGvV5FkkjBXn2dbVkPXOsO0xjsEeM1q2zC0g==",
+ "path": "system.runtime/4.1.0",
+ "hashPath": "system.runtime.4.1.0.nupkg.sha512"
+ },
+ "System.Runtime.Extensions/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-CUOHjTT/vgP0qGW22U4/hDlOqXmcPq5YicBaXdUR2UiUoLwBT+olO6we4DVbq57jeX5uXH2uerVZhf0qGj+sVQ==",
+ "path": "system.runtime.extensions/4.1.0",
+ "hashPath": "system.runtime.extensions.4.1.0.nupkg.sha512"
+ },
+ "System.Runtime.Handles/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-nCJvEKguXEvk2ymk1gqj625vVnlK3/xdGzx0vOKicQkoquaTBJTP13AIYkocSUwHCLNBwUbXTqTWGDxBTWpt7g==",
+ "path": "system.runtime.handles/4.0.1",
+ "hashPath": "system.runtime.handles.4.0.1.nupkg.sha512"
+ },
+ "System.Runtime.InteropServices/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-16eu3kjHS633yYdkjwShDHZLRNMKVi/s0bY8ODiqJ2RfMhDMAwxZaUaWVnZ2P71kr/or+X9o/xFWtNqz8ivieQ==",
+ "path": "system.runtime.interopservices/4.1.0",
+ "hashPath": "system.runtime.interopservices.4.1.0.nupkg.sha512"
+ },
+ "System.Runtime.InteropServices.RuntimeInformation/4.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-hWPhJxc453RCa8Z29O91EmfGeZIHX1ZH2A8L6lYQVSaKzku2DfArSfMEb1/MYYzPQRJZeu0c9dmYeJKxW5Fgng==",
+ "path": "system.runtime.interopservices.runtimeinformation/4.0.0",
+ "hashPath": "system.runtime.interopservices.runtimeinformation.4.0.0.nupkg.sha512"
+ },
+ "System.Runtime.Numerics/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-+XbKFuzdmLP3d1o9pdHu2nxjNr2OEPqGzKeegPLCUMM71a0t50A/rOcIRmGs9wR7a8KuHX6hYs/7/TymIGLNqg==",
+ "path": "system.runtime.numerics/4.0.1",
+ "hashPath": "system.runtime.numerics.4.0.1.nupkg.sha512"
+ },
+ "System.Security.Cryptography.Algorithms/4.2.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-8JQFxbLVdrtIOKMDN38Fn0GWnqYZw/oMlwOUG/qz1jqChvyZlnUmu+0s7wLx7JYua/nAXoESpHA3iw11QFWhXg==",
+ "path": "system.security.cryptography.algorithms/4.2.0",
+ "hashPath": "system.security.cryptography.algorithms.4.2.0.nupkg.sha512"
+ },
+ "System.Security.Cryptography.Cng/4.2.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-cUJ2h+ZvONDe28Szw3st5dOHdjndhJzQ2WObDEXAWRPEQBtVItVoxbXM/OEsTthl3cNn2dk2k0I3y45igCQcLw==",
+ "path": "system.security.cryptography.cng/4.2.0",
+ "hashPath": "system.security.cryptography.cng.4.2.0.nupkg.sha512"
+ },
+ "System.Security.Cryptography.Csp/4.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-/i1Usuo4PgAqgbPNC0NjbO3jPW//BoBlTpcWFD1EHVbidH21y4c1ap5bbEMSGAXjAShhMH4abi/K8fILrnu4BQ==",
+ "path": "system.security.cryptography.csp/4.0.0",
+ "hashPath": "system.security.cryptography.csp.4.0.0.nupkg.sha512"
+ },
+ "System.Security.Cryptography.Encoding/4.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-FbKgE5MbxSQMPcSVRgwM6bXN3GtyAh04NkV8E5zKCBE26X0vYW0UtTa2FIgkH33WVqBVxRgxljlVYumWtU+HcQ==",
+ "path": "system.security.cryptography.encoding/4.0.0",
+ "hashPath": "system.security.cryptography.encoding.4.0.0.nupkg.sha512"
+ },
+ "System.Security.Cryptography.OpenSsl/4.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-HUG/zNUJwEiLkoURDixzkzZdB5yGA5pQhDP93ArOpDPQMteURIGERRNzzoJlmTreLBWr5lkFSjjMSk8ySEpQMw==",
+ "path": "system.security.cryptography.openssl/4.0.0",
+ "hashPath": "system.security.cryptography.openssl.4.0.0.nupkg.sha512"
+ },
+ "System.Security.Cryptography.Primitives/4.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-Wkd7QryWYjkQclX0bngpntW5HSlMzeJU24UaLJQ7YTfI8ydAVAaU2J+HXLLABOVJlKTVvAeL0Aj39VeTe7L+oA==",
+ "path": "system.security.cryptography.primitives/4.0.0",
+ "hashPath": "system.security.cryptography.primitives.4.0.0.nupkg.sha512"
+ },
+ "System.Security.Cryptography.X509Certificates/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-4HEfsQIKAhA1+ApNn729Gi09zh+lYWwyIuViihoMDWp1vQnEkL2ct7mAbhBlLYm+x/L4Rr/pyGge1lIY635e0w==",
+ "path": "system.security.cryptography.x509certificates/4.1.0",
+ "hashPath": "system.security.cryptography.x509certificates.4.1.0.nupkg.sha512"
+ },
+ "System.Text.Encoding/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-U3gGeMlDZXxCEiY4DwVLSacg+DFWCvoiX+JThA/rvw37Sqrku7sEFeVBBBMBnfB6FeZHsyDx85HlKL19x0HtZA==",
+ "path": "system.text.encoding/4.0.11",
+ "hashPath": "system.text.encoding.4.0.11.nupkg.sha512"
+ },
+ "System.Text.Encoding.Extensions/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-jtbiTDtvfLYgXn8PTfWI+SiBs51rrmO4AAckx4KR6vFK9Wzf6tI8kcRdsYQNwriUeQ1+CtQbM1W4cMbLXnj/OQ==",
+ "path": "system.text.encoding.extensions/4.0.11",
+ "hashPath": "system.text.encoding.extensions.4.0.11.nupkg.sha512"
+ },
+ "System.Text.RegularExpressions/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-i88YCXpRTjCnoSQZtdlHkAOx4KNNik4hMy83n0+Ftlb7jvV6ZiZWMpnEZHhjBp6hQVh8gWd/iKNPzlPF7iyA2g==",
+ "path": "system.text.regularexpressions/4.1.0",
+ "hashPath": "system.text.regularexpressions.4.1.0.nupkg.sha512"
+ },
+ "System.Threading/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-N+3xqIcg3VDKyjwwCGaZ9HawG9aC6cSDI+s7ROma310GQo8vilFZa86hqKppwTHleR/G0sfOzhvgnUxWCR/DrQ==",
+ "path": "system.threading/4.0.11",
+ "hashPath": "system.threading.4.0.11.nupkg.sha512"
+ },
+ "System.Threading.Tasks/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-k1S4Gc6IGwtHGT8188RSeGaX86Qw/wnrgNLshJvsdNUOPP9etMmo8S07c+UlOAx4K/xLuN9ivA1bD0LVurtIxQ==",
+ "path": "system.threading.tasks/4.0.11",
+ "hashPath": "system.threading.tasks.4.0.11.nupkg.sha512"
+ },
+ "System.Threading.Tasks.Extensions/4.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-pH4FZDsZQ/WmgJtN4LWYmRdJAEeVkyriSwrv2Teoe5FOU0Yxlb6II6GL8dBPOfRmutHGATduj3ooMt7dJ2+i+w==",
+ "path": "system.threading.tasks.extensions/4.0.0",
+ "hashPath": "system.threading.tasks.extensions.4.0.0.nupkg.sha512"
+ },
+ "System.Threading.Timer/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-saGfUV8uqVW6LeURiqxcGhZ24PzuRNaUBtbhVeuUAvky1naH395A/1nY0P2bWvrw/BreRtIB/EzTDkGBpqCwEw==",
+ "path": "system.threading.timer/4.0.1",
+ "hashPath": "system.threading.timer.4.0.1.nupkg.sha512"
+ },
+ "System.Xml.ReaderWriter/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-ZIiLPsf67YZ9zgr31vzrFaYQqxRPX9cVHjtPSnmx4eN6lbS/yEyYNr2vs1doGDEscF0tjCZFsk9yUg1sC9e8tg==",
+ "path": "system.xml.readerwriter/4.0.11",
+ "hashPath": "system.xml.readerwriter.4.0.11.nupkg.sha512"
+ },
+ "System.Xml.XDocument/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-Mk2mKmPi0nWaoiYeotq1dgeNK1fqWh61+EK+w4Wu8SWuTYLzpUnschb59bJtGywaPq7SmTuPf44wrXRwbIrukg==",
+ "path": "system.xml.xdocument/4.0.11",
+ "hashPath": "system.xml.xdocument.4.0.11.nupkg.sha512"
+ }
+ }
+}
\ No newline at end of file
diff --git a/_testdata/SampleDllReference/libs/ReferenceDll.dll b/_testdata/SampleDllReference/libs/ReferenceDll.dll
index 7b9aa1b..ad9e44e 100644
Binary files a/_testdata/SampleDllReference/libs/ReferenceDll.dll and b/_testdata/SampleDllReference/libs/ReferenceDll.dll differ
diff --git a/_testdata/SampleDllReference/libs/ReferenceDll.pdb b/_testdata/SampleDllReference/libs/ReferenceDll.pdb
new file mode 100644
index 0000000..5a2813b
Binary files /dev/null and b/_testdata/SampleDllReference/libs/ReferenceDll.pdb differ
diff --git a/_testdata/SampleProjectReference/IntegrationTestSample.sln b/_testdata/SampleProjectReference/IntegrationTestSample.sln
index 43974d4..277c11c 100644
--- a/_testdata/SampleProjectReference/IntegrationTestSample.sln
+++ b/_testdata/SampleProjectReference/IntegrationTestSample.sln
@@ -4,7 +4,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".paket", ".paket", "{B18284
..\paket.dependencies = ..\paket.dependencies
EndProjectSection
EndProject
-Project("91a15a46-889c-481f-8902-ef5ca22640c3") = "IntegrationTestSample", "IntegrationTestSample.csproj", "6c31d99f-a982-4596-b423-5e945c16662d"
+Project("91a15a46-889c-481f-8902-ef5ca22640c3") = "IntegrationTestSample", "IntegrationTestSampleProjectReference.csproj", "6c31d99f-a982-4596-b423-5e945c16662d"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
diff --git a/_testdata/SampleProjectReference/IntegrationTestSample.csproj b/_testdata/SampleProjectReference/IntegrationTestSampleProjectReference.csproj
similarity index 56%
rename from _testdata/SampleProjectReference/IntegrationTestSample.csproj
rename to _testdata/SampleProjectReference/IntegrationTestSampleProjectReference.csproj
index 44dbfe7..4e38c49 100644
--- a/_testdata/SampleProjectReference/IntegrationTestSample.csproj
+++ b/_testdata/SampleProjectReference/IntegrationTestSampleProjectReference.csproj
@@ -1,11 +1,11 @@
-
+
- net6.0
+ net8.0
-
+
diff --git a/_testdata/SampleProjectReference/Properties/PublishProfiles/FolderProfile.pubxml b/_testdata/SampleProjectReference/Properties/PublishProfiles/FolderProfile.pubxml
new file mode 100644
index 0000000..d04ae58
--- /dev/null
+++ b/_testdata/SampleProjectReference/Properties/PublishProfiles/FolderProfile.pubxml
@@ -0,0 +1,13 @@
+
+
+
+
+ Debug
+ Any CPU
+ gauge_bin
+ FileSystem
+ <_TargetId>Folder
+
+
\ No newline at end of file
diff --git a/_testdata/SampleProjectReference/StepImplementation.cs b/_testdata/SampleProjectReference/StepImplementation.cs
index 0d53326..ec6c40d 100644
--- a/_testdata/SampleProjectReference/StepImplementation.cs
+++ b/_testdata/SampleProjectReference/StepImplementation.cs
@@ -7,8 +7,6 @@
using System;
using System.Linq;
-using System.Runtime.Serialization;
-using System.Text;
using System.Threading.Tasks;
using Gauge.CSharp.Lib;
using Gauge.CSharp.Lib.Attribute;
@@ -79,7 +77,8 @@ public void ReadTable(Table table)
}
[Step("Take Screenshot in reference Project")]
- public void TakeProjectReferenceScreenshot() {
+ public void TakeProjectReferenceScreenshot()
+ {
GaugeScreenshots.RegisterCustomScreenshotWriter(new ReferenceProject.ScreenshotWriter());
GaugeScreenshots.Capture();
GaugeScreenshots.RegisterCustomScreenshotWriter(new StringScreenshotWriter());
@@ -91,11 +90,6 @@ public class CustomSerializableException : Exception
public CustomSerializableException(string s) : base(s)
{
}
-
- public CustomSerializableException(SerializationInfo info, StreamingContext context)
- : base(info, context)
- {
- }
}
public class CustomException : Exception
diff --git a/_testdata/SampleProjectReference/gauge_bin/Gauge.CSharp.Lib.dll b/_testdata/SampleProjectReference/gauge_bin/Gauge.CSharp.Lib.dll
index c0dd492..81ababe 100755
Binary files a/_testdata/SampleProjectReference/gauge_bin/Gauge.CSharp.Lib.dll and b/_testdata/SampleProjectReference/gauge_bin/Gauge.CSharp.Lib.dll differ
diff --git a/_testdata/SampleProjectReference/gauge_bin/IntegrationTestSample.deps.json b/_testdata/SampleProjectReference/gauge_bin/IntegrationTestSample.deps.json
index d6271b7..fd7adf4 100644
--- a/_testdata/SampleProjectReference/gauge_bin/IntegrationTestSample.deps.json
+++ b/_testdata/SampleProjectReference/gauge_bin/IntegrationTestSample.deps.json
@@ -1,14 +1,14 @@
{
"runtimeTarget": {
- "name": ".NETCoreApp,Version=v3.0",
+ "name": ".NETCoreApp,Version=v8.0",
"signature": ""
},
"compilationOptions": {},
"targets": {
- ".NETCoreApp,Version=v3.0": {
+ ".NETCoreApp,Version=v8.0": {
"IntegrationTestSample/1.0.0": {
"dependencies": {
- "Gauge.CSharp.Lib": "0.7.6",
+ "Gauge.CSharp.Lib": "0.11.29",
"ReferenceProject": "1.0.0"
},
"runtime": {
@@ -31,11 +31,11 @@
}
}
},
- "Gauge.CSharp.Lib/0.7.6": {
+ "Gauge.CSharp.Lib/0.11.29": {
"runtime": {
- "lib/netstandard2.0/Gauge.CSharp.Lib.dll": {
- "assemblyVersion": "0.7.6.0",
- "fileVersion": "0.7.6.0"
+ "lib/net8.0/Gauge.CSharp.Lib.dll": {
+ "assemblyVersion": "0.11.29.0",
+ "fileVersion": "0.10.3.0"
}
}
},
@@ -687,7 +687,7 @@
"ReferenceProject/1.0.0": {
"dependencies": {
"FluentAssertions": "4.19.4",
- "Gauge.CSharp.Lib": "0.7.6"
+ "Gauge.CSharp.Lib": "0.11.29"
},
"runtime": {
"ReferenceProject.dll": {}
@@ -708,12 +708,12 @@
"path": "fluentassertions/4.19.4",
"hashPath": "fluentassertions.4.19.4.nupkg.sha512"
},
- "Gauge.CSharp.Lib/0.7.6": {
+ "Gauge.CSharp.Lib/0.11.29": {
"type": "package",
"serviceable": true,
- "sha512": "sha512-VPkNe57TqAXTxA0+UHe35+cpJT2DkqWt1hmWi3eOxTJZy3widdC8GIhRERM34V5G5mQrfM2z4+AvPAbj0nv0+A==",
- "path": "gauge.csharp.lib/0.7.6",
- "hashPath": "gauge.csharp.lib.0.7.6.nupkg.sha512"
+ "sha512": "sha512-3WXaDyUh63Z0YDz2OI4Af0UC20ggt8NBebUM6dtpydAOrqqIOHvK84Fc7iHyB5UT2hFUQlNhuBQnF9O2h0/crQ==",
+ "path": "gauge.csharp.lib/0.11.29",
+ "hashPath": "gauge.csharp.lib.0.11.29.nupkg.sha512"
},
"Microsoft.NETCore.Platforms/1.0.1": {
"type": "package",
diff --git a/_testdata/SampleProjectReference/gauge_bin/IntegrationTestSample.dll b/_testdata/SampleProjectReference/gauge_bin/IntegrationTestSample.dll
index ba10939..d5afe22 100644
Binary files a/_testdata/SampleProjectReference/gauge_bin/IntegrationTestSample.dll and b/_testdata/SampleProjectReference/gauge_bin/IntegrationTestSample.dll differ
diff --git a/_testdata/SampleProjectReference/gauge_bin/IntegrationTestSample.pdb b/_testdata/SampleProjectReference/gauge_bin/IntegrationTestSample.pdb
index e140605..8c1dac7 100644
Binary files a/_testdata/SampleProjectReference/gauge_bin/IntegrationTestSample.pdb and b/_testdata/SampleProjectReference/gauge_bin/IntegrationTestSample.pdb differ
diff --git a/_testdata/SampleProjectReference/gauge_bin/IntegrationTestSampleProjectReference.deps.json b/_testdata/SampleProjectReference/gauge_bin/IntegrationTestSampleProjectReference.deps.json
new file mode 100644
index 0000000..e607333
--- /dev/null
+++ b/_testdata/SampleProjectReference/gauge_bin/IntegrationTestSampleProjectReference.deps.json
@@ -0,0 +1,1151 @@
+{
+ "runtimeTarget": {
+ "name": ".NETCoreApp,Version=v8.0",
+ "signature": ""
+ },
+ "compilationOptions": {},
+ "targets": {
+ ".NETCoreApp,Version=v8.0": {
+ "IntegrationTestSampleProjectReference/1.0.0": {
+ "dependencies": {
+ "Gauge.CSharp.Lib": "0.11.1",
+ "ReferenceProject": "1.0.0"
+ },
+ "runtime": {
+ "IntegrationTestSampleProjectReference.dll": {}
+ }
+ },
+ "FluentAssertions/4.19.4": {
+ "dependencies": {
+ "NETStandard.Library": "1.6.0",
+ "System.Reflection.TypeExtensions": "4.1.0"
+ },
+ "runtime": {
+ "lib/netstandard1.3/FluentAssertions.Core.dll": {
+ "assemblyVersion": "4.19.4.0",
+ "fileVersion": "4.19.4.0"
+ },
+ "lib/netstandard1.3/FluentAssertions.dll": {
+ "assemblyVersion": "4.19.4.0",
+ "fileVersion": "4.19.4.0"
+ }
+ }
+ },
+ "Gauge.CSharp.Lib/0.11.1": {
+ "runtime": {
+ "lib/net8.0/Gauge.CSharp.Lib.dll": {
+ "assemblyVersion": "0.11.1.0",
+ "fileVersion": "0.11.1.0"
+ }
+ }
+ },
+ "Microsoft.NETCore.Platforms/1.0.1": {},
+ "Microsoft.NETCore.Targets/1.0.1": {},
+ "Microsoft.Win32.Primitives/4.0.1": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "NETStandard.Library/1.6.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.Win32.Primitives": "4.0.1",
+ "System.AppContext": "4.1.0",
+ "System.Collections": "4.0.11",
+ "System.Collections.Concurrent": "4.0.12",
+ "System.Console": "4.0.0",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Diagnostics.Tools": "4.0.1",
+ "System.Diagnostics.Tracing": "4.1.0",
+ "System.Globalization": "4.0.11",
+ "System.Globalization.Calendars": "4.0.1",
+ "System.IO": "4.1.0",
+ "System.IO.Compression": "4.1.0",
+ "System.IO.Compression.ZipFile": "4.0.1",
+ "System.IO.FileSystem": "4.0.1",
+ "System.IO.FileSystem.Primitives": "4.0.1",
+ "System.Linq": "4.1.0",
+ "System.Linq.Expressions": "4.1.0",
+ "System.Net.Http": "4.1.0",
+ "System.Net.Primitives": "4.0.11",
+ "System.Net.Sockets": "4.1.0",
+ "System.ObjectModel": "4.0.12",
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Extensions": "4.0.1",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Runtime.Handles": "4.0.1",
+ "System.Runtime.InteropServices": "4.1.0",
+ "System.Runtime.InteropServices.RuntimeInformation": "4.0.0",
+ "System.Runtime.Numerics": "4.0.1",
+ "System.Security.Cryptography.Algorithms": "4.2.0",
+ "System.Security.Cryptography.Encoding": "4.0.0",
+ "System.Security.Cryptography.Primitives": "4.0.0",
+ "System.Security.Cryptography.X509Certificates": "4.1.0",
+ "System.Text.Encoding": "4.0.11",
+ "System.Text.Encoding.Extensions": "4.0.11",
+ "System.Text.RegularExpressions": "4.1.0",
+ "System.Threading": "4.0.11",
+ "System.Threading.Tasks": "4.0.11",
+ "System.Threading.Timer": "4.0.1",
+ "System.Xml.ReaderWriter": "4.0.11",
+ "System.Xml.XDocument": "4.0.11"
+ }
+ },
+ "runtime.native.System/4.0.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1"
+ }
+ },
+ "runtime.native.System.IO.Compression/4.1.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1"
+ }
+ },
+ "runtime.native.System.Net.Http/4.0.1": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1"
+ }
+ },
+ "runtime.native.System.Security.Cryptography/4.0.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1"
+ }
+ },
+ "System.AppContext/4.1.0": {
+ "dependencies": {
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Buffers/4.0.0": {
+ "dependencies": {
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Diagnostics.Tracing": "4.1.0",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Threading": "4.0.11"
+ }
+ },
+ "System.Collections/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Collections.Concurrent/4.0.12": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Diagnostics.Tracing": "4.1.0",
+ "System.Globalization": "4.0.11",
+ "System.Reflection": "4.1.0",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Threading": "4.0.11",
+ "System.Threading.Tasks": "4.0.11"
+ }
+ },
+ "System.Console/4.0.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.IO": "4.1.0",
+ "System.Runtime": "4.1.0",
+ "System.Text.Encoding": "4.0.11"
+ }
+ },
+ "System.Diagnostics.Debug/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Diagnostics.DiagnosticSource/4.0.0": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Tracing": "4.1.0",
+ "System.Reflection": "4.1.0",
+ "System.Runtime": "4.1.0",
+ "System.Threading": "4.0.11"
+ }
+ },
+ "System.Diagnostics.Tools/4.0.1": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Diagnostics.Tracing/4.1.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Globalization/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Globalization.Calendars/4.0.1": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Globalization": "4.0.11",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Globalization.Extensions/4.0.1": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "System.Globalization": "4.0.11",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Runtime.InteropServices": "4.1.0"
+ }
+ },
+ "System.IO/4.1.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Text.Encoding": "4.0.11",
+ "System.Threading.Tasks": "4.0.11"
+ }
+ },
+ "System.IO.Compression/4.1.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.IO": "4.1.0",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Runtime.Handles": "4.0.1",
+ "System.Runtime.InteropServices": "4.1.0",
+ "System.Text.Encoding": "4.0.11",
+ "System.Threading": "4.0.11",
+ "System.Threading.Tasks": "4.0.11",
+ "runtime.native.System": "4.0.0",
+ "runtime.native.System.IO.Compression": "4.1.0"
+ }
+ },
+ "System.IO.Compression.ZipFile/4.0.1": {
+ "dependencies": {
+ "System.Buffers": "4.0.0",
+ "System.IO": "4.1.0",
+ "System.IO.Compression": "4.1.0",
+ "System.IO.FileSystem": "4.0.1",
+ "System.IO.FileSystem.Primitives": "4.0.1",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Text.Encoding": "4.0.11"
+ }
+ },
+ "System.IO.FileSystem/4.0.1": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.IO": "4.1.0",
+ "System.IO.FileSystem.Primitives": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Handles": "4.0.1",
+ "System.Text.Encoding": "4.0.11",
+ "System.Threading.Tasks": "4.0.11"
+ }
+ },
+ "System.IO.FileSystem.Primitives/4.0.1": {
+ "dependencies": {
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Linq/4.1.0": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0"
+ }
+ },
+ "System.Linq.Expressions/4.1.0": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Globalization": "4.0.11",
+ "System.IO": "4.1.0",
+ "System.Linq": "4.1.0",
+ "System.ObjectModel": "4.0.12",
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Emit": "4.0.1",
+ "System.Reflection.Emit.ILGeneration": "4.0.1",
+ "System.Reflection.Emit.Lightweight": "4.0.1",
+ "System.Reflection.Extensions": "4.0.1",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Reflection.TypeExtensions": "4.1.0",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Threading": "4.0.11"
+ }
+ },
+ "System.Net.Http/4.1.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Diagnostics.DiagnosticSource": "4.0.0",
+ "System.Diagnostics.Tracing": "4.1.0",
+ "System.Globalization": "4.0.11",
+ "System.Globalization.Extensions": "4.0.1",
+ "System.IO": "4.1.0",
+ "System.IO.FileSystem": "4.0.1",
+ "System.Net.Primitives": "4.0.11",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Runtime.Handles": "4.0.1",
+ "System.Runtime.InteropServices": "4.1.0",
+ "System.Security.Cryptography.Algorithms": "4.2.0",
+ "System.Security.Cryptography.Encoding": "4.0.0",
+ "System.Security.Cryptography.OpenSsl": "4.0.0",
+ "System.Security.Cryptography.Primitives": "4.0.0",
+ "System.Security.Cryptography.X509Certificates": "4.1.0",
+ "System.Text.Encoding": "4.0.11",
+ "System.Threading": "4.0.11",
+ "System.Threading.Tasks": "4.0.11",
+ "runtime.native.System": "4.0.0",
+ "runtime.native.System.Net.Http": "4.0.1",
+ "runtime.native.System.Security.Cryptography": "4.0.0"
+ }
+ },
+ "System.Net.Primitives/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Handles": "4.0.1"
+ }
+ },
+ "System.Net.Sockets/4.1.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.IO": "4.1.0",
+ "System.Net.Primitives": "4.0.11",
+ "System.Runtime": "4.1.0",
+ "System.Threading.Tasks": "4.0.11"
+ }
+ },
+ "System.ObjectModel/4.0.12": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Threading": "4.0.11"
+ }
+ },
+ "System.Reflection/4.1.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.IO": "4.1.0",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Emit/4.0.1": {
+ "dependencies": {
+ "System.IO": "4.1.0",
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Emit.ILGeneration": "4.0.1",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Emit.ILGeneration/4.0.1": {
+ "dependencies": {
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Emit.Lightweight/4.0.1": {
+ "dependencies": {
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Emit.ILGeneration": "4.0.1",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Extensions/4.0.1": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Reflection": "4.1.0",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Primitives/4.0.1": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.TypeExtensions/4.1.0": {
+ "dependencies": {
+ "System.Reflection": "4.1.0",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Resources.ResourceManager/4.0.1": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Globalization": "4.0.11",
+ "System.Reflection": "4.1.0",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Runtime/4.1.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1"
+ }
+ },
+ "System.Runtime.Extensions/4.1.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Runtime.Handles/4.0.1": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Runtime.InteropServices/4.1.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Handles": "4.0.1"
+ }
+ },
+ "System.Runtime.InteropServices.RuntimeInformation/4.0.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "System.Reflection": "4.1.0",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.InteropServices": "4.1.0",
+ "System.Threading": "4.0.11",
+ "runtime.native.System": "4.0.0"
+ }
+ },
+ "System.Runtime.Numerics/4.0.1": {
+ "dependencies": {
+ "System.Globalization": "4.0.11",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0"
+ }
+ },
+ "System.Security.Cryptography.Algorithms/4.2.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "System.Collections": "4.0.11",
+ "System.IO": "4.1.0",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Runtime.Handles": "4.0.1",
+ "System.Runtime.InteropServices": "4.1.0",
+ "System.Runtime.Numerics": "4.0.1",
+ "System.Security.Cryptography.Encoding": "4.0.0",
+ "System.Security.Cryptography.Primitives": "4.0.0",
+ "System.Text.Encoding": "4.0.11",
+ "runtime.native.System.Security.Cryptography": "4.0.0"
+ }
+ },
+ "System.Security.Cryptography.Cng/4.2.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "System.IO": "4.1.0",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Runtime.Handles": "4.0.1",
+ "System.Runtime.InteropServices": "4.1.0",
+ "System.Security.Cryptography.Algorithms": "4.2.0",
+ "System.Security.Cryptography.Encoding": "4.0.0",
+ "System.Security.Cryptography.Primitives": "4.0.0",
+ "System.Text.Encoding": "4.0.11"
+ }
+ },
+ "System.Security.Cryptography.Csp/4.0.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "System.IO": "4.1.0",
+ "System.Reflection": "4.1.0",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Runtime.Handles": "4.0.1",
+ "System.Runtime.InteropServices": "4.1.0",
+ "System.Security.Cryptography.Algorithms": "4.2.0",
+ "System.Security.Cryptography.Encoding": "4.0.0",
+ "System.Security.Cryptography.Primitives": "4.0.0",
+ "System.Text.Encoding": "4.0.11",
+ "System.Threading": "4.0.11"
+ }
+ },
+ "System.Security.Cryptography.Encoding/4.0.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "System.Collections": "4.0.11",
+ "System.Collections.Concurrent": "4.0.12",
+ "System.Linq": "4.1.0",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Runtime.Handles": "4.0.1",
+ "System.Runtime.InteropServices": "4.1.0",
+ "System.Security.Cryptography.Primitives": "4.0.0",
+ "System.Text.Encoding": "4.0.11",
+ "runtime.native.System.Security.Cryptography": "4.0.0"
+ }
+ },
+ "System.Security.Cryptography.OpenSsl/4.0.0": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.IO": "4.1.0",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Runtime.Handles": "4.0.1",
+ "System.Runtime.InteropServices": "4.1.0",
+ "System.Runtime.Numerics": "4.0.1",
+ "System.Security.Cryptography.Algorithms": "4.2.0",
+ "System.Security.Cryptography.Encoding": "4.0.0",
+ "System.Security.Cryptography.Primitives": "4.0.0",
+ "System.Text.Encoding": "4.0.11",
+ "runtime.native.System.Security.Cryptography": "4.0.0"
+ }
+ },
+ "System.Security.Cryptography.Primitives/4.0.0": {
+ "dependencies": {
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Globalization": "4.0.11",
+ "System.IO": "4.1.0",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Threading": "4.0.11",
+ "System.Threading.Tasks": "4.0.11"
+ }
+ },
+ "System.Security.Cryptography.X509Certificates/4.1.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Globalization": "4.0.11",
+ "System.Globalization.Calendars": "4.0.1",
+ "System.IO": "4.1.0",
+ "System.IO.FileSystem": "4.0.1",
+ "System.IO.FileSystem.Primitives": "4.0.1",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Runtime.Handles": "4.0.1",
+ "System.Runtime.InteropServices": "4.1.0",
+ "System.Runtime.Numerics": "4.0.1",
+ "System.Security.Cryptography.Algorithms": "4.2.0",
+ "System.Security.Cryptography.Cng": "4.2.0",
+ "System.Security.Cryptography.Csp": "4.0.0",
+ "System.Security.Cryptography.Encoding": "4.0.0",
+ "System.Security.Cryptography.OpenSsl": "4.0.0",
+ "System.Security.Cryptography.Primitives": "4.0.0",
+ "System.Text.Encoding": "4.0.11",
+ "System.Threading": "4.0.11",
+ "runtime.native.System": "4.0.0",
+ "runtime.native.System.Net.Http": "4.0.1",
+ "runtime.native.System.Security.Cryptography": "4.0.0"
+ }
+ },
+ "System.Text.Encoding/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Text.Encoding.Extensions/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Text.Encoding": "4.0.11"
+ }
+ },
+ "System.Text.RegularExpressions/4.1.0": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Globalization": "4.0.11",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Threading": "4.0.11"
+ }
+ },
+ "System.Threading/4.0.11": {
+ "dependencies": {
+ "System.Runtime": "4.1.0",
+ "System.Threading.Tasks": "4.0.11"
+ }
+ },
+ "System.Threading.Tasks/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Threading.Tasks.Extensions/4.0.0": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Runtime": "4.1.0",
+ "System.Threading.Tasks": "4.0.11"
+ }
+ },
+ "System.Threading.Timer/4.0.1": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Xml.ReaderWriter/4.0.11": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Globalization": "4.0.11",
+ "System.IO": "4.1.0",
+ "System.IO.FileSystem": "4.0.1",
+ "System.IO.FileSystem.Primitives": "4.0.1",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Runtime.InteropServices": "4.1.0",
+ "System.Text.Encoding": "4.0.11",
+ "System.Text.Encoding.Extensions": "4.0.11",
+ "System.Text.RegularExpressions": "4.1.0",
+ "System.Threading.Tasks": "4.0.11",
+ "System.Threading.Tasks.Extensions": "4.0.0"
+ }
+ },
+ "System.Xml.XDocument/4.0.11": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Diagnostics.Tools": "4.0.1",
+ "System.Globalization": "4.0.11",
+ "System.IO": "4.1.0",
+ "System.Reflection": "4.1.0",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Text.Encoding": "4.0.11",
+ "System.Threading": "4.0.11",
+ "System.Xml.ReaderWriter": "4.0.11"
+ }
+ },
+ "ReferenceProject/1.0.0": {
+ "dependencies": {
+ "FluentAssertions": "4.19.4",
+ "Gauge.CSharp.Lib": "0.11.1"
+ },
+ "runtime": {
+ "ReferenceProject.dll": {}
+ }
+ }
+ }
+ },
+ "libraries": {
+ "IntegrationTestSampleProjectReference/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "FluentAssertions/4.19.4": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-i2o9/YjrJUI0sx1373gj83fsITo7W/aNJ+uciV5Cg7ZUbKhGWbMekx8gTU9AuDtB54mEhMUC9uF16MOzZEp0FQ==",
+ "path": "fluentassertions/4.19.4",
+ "hashPath": "fluentassertions.4.19.4.nupkg.sha512"
+ },
+ "Gauge.CSharp.Lib/0.11.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-QEgfnNnhgPkW+BuXcz4bKN4DsjFWEepIN7gcIs68/STVlejB6LaMYDmrDFdakSVV6G21xWz4U8egSurZsN4RaA==",
+ "path": "gauge.csharp.lib/0.11.1",
+ "hashPath": "gauge.csharp.lib.0.11.1.nupkg.sha512"
+ },
+ "Microsoft.NETCore.Platforms/1.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-2G6OjjJzwBfNOO8myRV/nFrbTw5iA+DEm0N+qUqhrOmaVtn4pC77h38I1jsXGw5VH55+dPfQsqHD0We9sCl9FQ==",
+ "path": "microsoft.netcore.platforms/1.0.1",
+ "hashPath": "microsoft.netcore.platforms.1.0.1.nupkg.sha512"
+ },
+ "Microsoft.NETCore.Targets/1.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-rkn+fKobF/cbWfnnfBOQHKVKIOpxMZBvlSHkqDWgBpwGDcLRduvs3D9OLGeV6GWGvVwNlVi2CBbTjuPmtHvyNw==",
+ "path": "microsoft.netcore.targets/1.0.1",
+ "hashPath": "microsoft.netcore.targets.1.0.1.nupkg.sha512"
+ },
+ "Microsoft.Win32.Primitives/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-fQnBHO9DgcmkC9dYSJoBqo6sH1VJwJprUHh8F3hbcRlxiQiBUuTntdk8tUwV490OqC2kQUrinGwZyQHTieuXRA==",
+ "path": "microsoft.win32.primitives/4.0.1",
+ "hashPath": "microsoft.win32.primitives.4.0.1.nupkg.sha512"
+ },
+ "NETStandard.Library/1.6.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-ypsCvIdCZ4IoYASJHt6tF2fMo7N30NLgV1EbmC+snO490OMl9FvVxmumw14rhReWU3j3g7BYudG6YCrchwHJlA==",
+ "path": "netstandard.library/1.6.0",
+ "hashPath": "netstandard.library.1.6.0.nupkg.sha512"
+ },
+ "runtime.native.System/4.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-QfS/nQI7k/BLgmLrw7qm7YBoULEvgWnPI+cYsbfCVFTW8Aj+i8JhccxcFMu1RWms0YZzF+UHguNBK4Qn89e2Sg==",
+ "path": "runtime.native.system/4.0.0",
+ "hashPath": "runtime.native.system.4.0.0.nupkg.sha512"
+ },
+ "runtime.native.System.IO.Compression/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-Ob7nvnJBox1aaB222zSVZSkf4WrebPG4qFscfK7vmD7P7NxoSxACQLtO7ytWpqXDn2wcd/+45+EAZ7xjaPip8A==",
+ "path": "runtime.native.system.io.compression/4.1.0",
+ "hashPath": "runtime.native.system.io.compression.4.1.0.nupkg.sha512"
+ },
+ "runtime.native.System.Net.Http/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-Nh0UPZx2Vifh8r+J+H2jxifZUD3sBrmolgiFWJd2yiNrxO0xTa6bAw3YwRn1VOiSen/tUXMS31ttNItCZ6lKuA==",
+ "path": "runtime.native.system.net.http/4.0.1",
+ "hashPath": "runtime.native.system.net.http.4.0.1.nupkg.sha512"
+ },
+ "runtime.native.System.Security.Cryptography/4.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-2CQK0jmO6Eu7ZeMgD+LOFbNJSXHFVQbCJJkEyEwowh1SCgYnrn9W9RykMfpeeVGw7h4IBvYikzpGUlmZTUafJw==",
+ "path": "runtime.native.system.security.cryptography/4.0.0",
+ "hashPath": "runtime.native.system.security.cryptography.4.0.0.nupkg.sha512"
+ },
+ "System.AppContext/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-3QjO4jNV7PdKkmQAVp9atA+usVnKRwI3Kx1nMwJ93T0LcQfx7pKAYk0nKz5wn1oP5iqlhZuy6RXOFdhr7rDwow==",
+ "path": "system.appcontext/4.1.0",
+ "hashPath": "system.appcontext.4.1.0.nupkg.sha512"
+ },
+ "System.Buffers/4.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-msXumHfjjURSkvxUjYuq4N2ghHoRi2VpXcKMA7gK6ujQfU3vGpl+B6ld0ATRg+FZFpRyA6PgEPA+VlIkTeNf2w==",
+ "path": "system.buffers/4.0.0",
+ "hashPath": "system.buffers.4.0.0.nupkg.sha512"
+ },
+ "System.Collections/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-YUJGz6eFKqS0V//mLt25vFGrrCvOnsXjlvFQs+KimpwNxug9x0Pzy4PlFMU3Q2IzqAa9G2L4LsK3+9vCBK7oTg==",
+ "path": "system.collections/4.0.11",
+ "hashPath": "system.collections.4.0.11.nupkg.sha512"
+ },
+ "System.Collections.Concurrent/4.0.12": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-2gBcbb3drMLgxlI0fBfxMA31ec6AEyYCHygGse4vxceJan8mRIWeKJ24BFzN7+bi/NFTgdIgufzb94LWO5EERQ==",
+ "path": "system.collections.concurrent/4.0.12",
+ "hashPath": "system.collections.concurrent.4.0.12.nupkg.sha512"
+ },
+ "System.Console/4.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-qSKUSOIiYA/a0g5XXdxFcUFmv1hNICBD7QZ0QhGYVipPIhvpiydY8VZqr1thmCXvmn8aipMg64zuanB4eotK9A==",
+ "path": "system.console/4.0.0",
+ "hashPath": "system.console.4.0.0.nupkg.sha512"
+ },
+ "System.Diagnostics.Debug/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-w5U95fVKHY4G8ASs/K5iK3J5LY+/dLFd4vKejsnI/ZhBsWS9hQakfx3Zr7lRWKg4tAw9r4iktyvsTagWkqYCiw==",
+ "path": "system.diagnostics.debug/4.0.11",
+ "hashPath": "system.diagnostics.debug.4.0.11.nupkg.sha512"
+ },
+ "System.Diagnostics.DiagnosticSource/4.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-YKglnq4BMTJxfcr6nuT08g+yJ0UxdePIHxosiLuljuHIUR6t4KhFsyaHOaOc1Ofqp0PUvJ0EmcgiEz6T7vEx3w==",
+ "path": "system.diagnostics.diagnosticsource/4.0.0",
+ "hashPath": "system.diagnostics.diagnosticsource.4.0.0.nupkg.sha512"
+ },
+ "System.Diagnostics.Tools/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-xBfJ8pnd4C17dWaC9FM6aShzbJcRNMChUMD42I6772KGGrqaFdumwhn9OdM68erj1ueNo3xdQ1EwiFjK5k8p0g==",
+ "path": "system.diagnostics.tools/4.0.1",
+ "hashPath": "system.diagnostics.tools.4.0.1.nupkg.sha512"
+ },
+ "System.Diagnostics.Tracing/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-vDN1PoMZCkkdNjvZLql592oYJZgS7URcJzJ7bxeBgGtx5UtR5leNm49VmfHGqIffX4FKacHbI3H6UyNSHQknBg==",
+ "path": "system.diagnostics.tracing/4.1.0",
+ "hashPath": "system.diagnostics.tracing.4.1.0.nupkg.sha512"
+ },
+ "System.Globalization/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-B95h0YLEL2oSnwF/XjqSWKnwKOy/01VWkNlsCeMTFJLLabflpGV26nK164eRs5GiaRSBGpOxQ3pKoSnnyZN5pg==",
+ "path": "system.globalization/4.0.11",
+ "hashPath": "system.globalization.4.0.11.nupkg.sha512"
+ },
+ "System.Globalization.Calendars/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-L1c6IqeQ88vuzC1P81JeHmHA8mxq8a18NUBNXnIY/BVb+TCyAaGIFbhpZt60h9FJNmisymoQkHEFSE9Vslja1Q==",
+ "path": "system.globalization.calendars/4.0.1",
+ "hashPath": "system.globalization.calendars.4.0.1.nupkg.sha512"
+ },
+ "System.Globalization.Extensions/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-KKo23iKeOaIg61SSXwjANN7QYDr/3op3OWGGzDzz7mypx0Za0fZSeG0l6cco8Ntp8YMYkIQcAqlk8yhm5/Uhcg==",
+ "path": "system.globalization.extensions/4.0.1",
+ "hashPath": "system.globalization.extensions.4.0.1.nupkg.sha512"
+ },
+ "System.IO/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-3KlTJceQc3gnGIaHZ7UBZO26SHL1SHE4ddrmiwumFnId+CEHP+O8r386tZKaE6zlk5/mF8vifMBzHj9SaXN+mQ==",
+ "path": "system.io/4.1.0",
+ "hashPath": "system.io.4.1.0.nupkg.sha512"
+ },
+ "System.IO.Compression/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-TjnBS6eztThSzeSib+WyVbLzEdLKUcEHN69VtS3u8aAsSc18FU6xCZlNWWsEd8SKcXAE+y1sOu7VbU8sUeM0sg==",
+ "path": "system.io.compression/4.1.0",
+ "hashPath": "system.io.compression.4.1.0.nupkg.sha512"
+ },
+ "System.IO.Compression.ZipFile/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-hBQYJzfTbQURF10nLhd+az2NHxsU6MU7AB8RUf4IolBP5lOAm4Luho851xl+CqslmhI5ZH/el8BlngEk4lBkaQ==",
+ "path": "system.io.compression.zipfile/4.0.1",
+ "hashPath": "system.io.compression.zipfile.4.0.1.nupkg.sha512"
+ },
+ "System.IO.FileSystem/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-IBErlVq5jOggAD69bg1t0pJcHaDbJbWNUZTPI96fkYWzwYbN6D9wRHMULLDd9dHsl7C2YsxXL31LMfPI1SWt8w==",
+ "path": "system.io.filesystem/4.0.1",
+ "hashPath": "system.io.filesystem.4.0.1.nupkg.sha512"
+ },
+ "System.IO.FileSystem.Primitives/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-kWkKD203JJKxJeE74p8aF8y4Qc9r9WQx4C0cHzHPrY3fv/L/IhWnyCHaFJ3H1QPOH6A93whlQ2vG5nHlBDvzWQ==",
+ "path": "system.io.filesystem.primitives/4.0.1",
+ "hashPath": "system.io.filesystem.primitives.4.0.1.nupkg.sha512"
+ },
+ "System.Linq/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-bQ0iYFOQI0nuTnt+NQADns6ucV4DUvMdwN6CbkB1yj8i7arTGiTN5eok1kQwdnnNWSDZfIUySQY+J3d5KjWn0g==",
+ "path": "system.linq/4.1.0",
+ "hashPath": "system.linq.4.1.0.nupkg.sha512"
+ },
+ "System.Linq.Expressions/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-I+y02iqkgmCAyfbqOmSDOgqdZQ5tTj80Akm5BPSS8EeB0VGWdy6X1KCoYe8Pk6pwDoAKZUOdLVxnTJcExiv5zw==",
+ "path": "system.linq.expressions/4.1.0",
+ "hashPath": "system.linq.expressions.4.1.0.nupkg.sha512"
+ },
+ "System.Net.Http/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-ULq9g3SOPVuupt+Y3U+A37coXzdNisB1neFCSKzBwo182u0RDddKJF8I5+HfyXqK6OhJPgeoAwWXrbiUXuRDsg==",
+ "path": "system.net.http/4.1.0",
+ "hashPath": "system.net.http.4.1.0.nupkg.sha512"
+ },
+ "System.Net.Primitives/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-hVvfl4405DRjA2408luZekbPhplJK03j2Y2lSfMlny7GHXlkByw1iLnc9mgKW0GdQn73vvMcWrWewAhylXA4Nw==",
+ "path": "system.net.primitives/4.0.11",
+ "hashPath": "system.net.primitives.4.0.11.nupkg.sha512"
+ },
+ "System.Net.Sockets/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-xAz0N3dAV/aR/9g8r0Y5oEqU1JRsz29F5EGb/WVHmX3jVSLqi2/92M5hTad2aNWovruXrJpJtgZ9fccPMG9uSw==",
+ "path": "system.net.sockets/4.1.0",
+ "hashPath": "system.net.sockets.4.1.0.nupkg.sha512"
+ },
+ "System.ObjectModel/4.0.12": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-tAgJM1xt3ytyMoW4qn4wIqgJYm7L7TShRZG4+Q4Qsi2PCcj96pXN7nRywS9KkB3p/xDUjc2HSwP9SROyPYDYKQ==",
+ "path": "system.objectmodel/4.0.12",
+ "hashPath": "system.objectmodel.4.0.12.nupkg.sha512"
+ },
+ "System.Reflection/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-JCKANJ0TI7kzoQzuwB/OoJANy1Lg338B6+JVacPl4TpUwi3cReg3nMLplMq2uqYfHFQpKIlHAUVAJlImZz/4ng==",
+ "path": "system.reflection/4.1.0",
+ "hashPath": "system.reflection.4.1.0.nupkg.sha512"
+ },
+ "System.Reflection.Emit/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-P2wqAj72fFjpP6wb9nSfDqNBMab+2ovzSDzUZK7MVIm54tBJEPr9jWfSjjoTpPwj1LeKcmX3vr0ttyjSSFM47g==",
+ "path": "system.reflection.emit/4.0.1",
+ "hashPath": "system.reflection.emit.4.0.1.nupkg.sha512"
+ },
+ "System.Reflection.Emit.ILGeneration/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-Ov6dU8Bu15Bc7zuqttgHF12J5lwSWyTf1S+FJouUXVMSqImLZzYaQ+vRr1rQ0OZ0HqsrwWl4dsKHELckQkVpgA==",
+ "path": "system.reflection.emit.ilgeneration/4.0.1",
+ "hashPath": "system.reflection.emit.ilgeneration.4.0.1.nupkg.sha512"
+ },
+ "System.Reflection.Emit.Lightweight/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-sSzHHXueZ5Uh0OLpUQprhr+ZYJrLPA2Cmr4gn0wj9+FftNKXx8RIMKvO9qnjk2ebPYUjZ+F2ulGdPOsvj+MEjA==",
+ "path": "system.reflection.emit.lightweight/4.0.1",
+ "hashPath": "system.reflection.emit.lightweight.4.0.1.nupkg.sha512"
+ },
+ "System.Reflection.Extensions/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-GYrtRsZcMuHF3sbmRHfMYpvxZoIN2bQGrYGerUiWLEkqdEUQZhH3TRSaC/oI4wO0II1RKBPlpIa1TOMxIcOOzQ==",
+ "path": "system.reflection.extensions/4.0.1",
+ "hashPath": "system.reflection.extensions.4.0.1.nupkg.sha512"
+ },
+ "System.Reflection.Primitives/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-4inTox4wTBaDhB7V3mPvp9XlCbeGYWVEM9/fXALd52vNEAVisc1BoVWQPuUuD0Ga//dNbA/WeMy9u9mzLxGTHQ==",
+ "path": "system.reflection.primitives/4.0.1",
+ "hashPath": "system.reflection.primitives.4.0.1.nupkg.sha512"
+ },
+ "System.Reflection.TypeExtensions/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-tsQ/ptQ3H5FYfON8lL4MxRk/8kFyE0A+tGPXmVP967cT/gzLHYxIejIYSxp4JmIeFHVP78g/F2FE1mUUTbDtrg==",
+ "path": "system.reflection.typeextensions/4.1.0",
+ "hashPath": "system.reflection.typeextensions.4.1.0.nupkg.sha512"
+ },
+ "System.Resources.ResourceManager/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-TxwVeUNoTgUOdQ09gfTjvW411MF+w9MBYL7AtNVc+HtBCFlutPLhUCdZjNkjbhj3bNQWMdHboF0KIWEOjJssbA==",
+ "path": "system.resources.resourcemanager/4.0.1",
+ "hashPath": "system.resources.resourcemanager.4.0.1.nupkg.sha512"
+ },
+ "System.Runtime/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-v6c/4Yaa9uWsq+JMhnOFewrYkgdNHNG2eMKuNqRn8P733rNXeRCGvV5FkkjBXn2dbVkPXOsO0xjsEeM1q2zC0g==",
+ "path": "system.runtime/4.1.0",
+ "hashPath": "system.runtime.4.1.0.nupkg.sha512"
+ },
+ "System.Runtime.Extensions/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-CUOHjTT/vgP0qGW22U4/hDlOqXmcPq5YicBaXdUR2UiUoLwBT+olO6we4DVbq57jeX5uXH2uerVZhf0qGj+sVQ==",
+ "path": "system.runtime.extensions/4.1.0",
+ "hashPath": "system.runtime.extensions.4.1.0.nupkg.sha512"
+ },
+ "System.Runtime.Handles/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-nCJvEKguXEvk2ymk1gqj625vVnlK3/xdGzx0vOKicQkoquaTBJTP13AIYkocSUwHCLNBwUbXTqTWGDxBTWpt7g==",
+ "path": "system.runtime.handles/4.0.1",
+ "hashPath": "system.runtime.handles.4.0.1.nupkg.sha512"
+ },
+ "System.Runtime.InteropServices/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-16eu3kjHS633yYdkjwShDHZLRNMKVi/s0bY8ODiqJ2RfMhDMAwxZaUaWVnZ2P71kr/or+X9o/xFWtNqz8ivieQ==",
+ "path": "system.runtime.interopservices/4.1.0",
+ "hashPath": "system.runtime.interopservices.4.1.0.nupkg.sha512"
+ },
+ "System.Runtime.InteropServices.RuntimeInformation/4.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-hWPhJxc453RCa8Z29O91EmfGeZIHX1ZH2A8L6lYQVSaKzku2DfArSfMEb1/MYYzPQRJZeu0c9dmYeJKxW5Fgng==",
+ "path": "system.runtime.interopservices.runtimeinformation/4.0.0",
+ "hashPath": "system.runtime.interopservices.runtimeinformation.4.0.0.nupkg.sha512"
+ },
+ "System.Runtime.Numerics/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-+XbKFuzdmLP3d1o9pdHu2nxjNr2OEPqGzKeegPLCUMM71a0t50A/rOcIRmGs9wR7a8KuHX6hYs/7/TymIGLNqg==",
+ "path": "system.runtime.numerics/4.0.1",
+ "hashPath": "system.runtime.numerics.4.0.1.nupkg.sha512"
+ },
+ "System.Security.Cryptography.Algorithms/4.2.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-8JQFxbLVdrtIOKMDN38Fn0GWnqYZw/oMlwOUG/qz1jqChvyZlnUmu+0s7wLx7JYua/nAXoESpHA3iw11QFWhXg==",
+ "path": "system.security.cryptography.algorithms/4.2.0",
+ "hashPath": "system.security.cryptography.algorithms.4.2.0.nupkg.sha512"
+ },
+ "System.Security.Cryptography.Cng/4.2.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-cUJ2h+ZvONDe28Szw3st5dOHdjndhJzQ2WObDEXAWRPEQBtVItVoxbXM/OEsTthl3cNn2dk2k0I3y45igCQcLw==",
+ "path": "system.security.cryptography.cng/4.2.0",
+ "hashPath": "system.security.cryptography.cng.4.2.0.nupkg.sha512"
+ },
+ "System.Security.Cryptography.Csp/4.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-/i1Usuo4PgAqgbPNC0NjbO3jPW//BoBlTpcWFD1EHVbidH21y4c1ap5bbEMSGAXjAShhMH4abi/K8fILrnu4BQ==",
+ "path": "system.security.cryptography.csp/4.0.0",
+ "hashPath": "system.security.cryptography.csp.4.0.0.nupkg.sha512"
+ },
+ "System.Security.Cryptography.Encoding/4.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-FbKgE5MbxSQMPcSVRgwM6bXN3GtyAh04NkV8E5zKCBE26X0vYW0UtTa2FIgkH33WVqBVxRgxljlVYumWtU+HcQ==",
+ "path": "system.security.cryptography.encoding/4.0.0",
+ "hashPath": "system.security.cryptography.encoding.4.0.0.nupkg.sha512"
+ },
+ "System.Security.Cryptography.OpenSsl/4.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-HUG/zNUJwEiLkoURDixzkzZdB5yGA5pQhDP93ArOpDPQMteURIGERRNzzoJlmTreLBWr5lkFSjjMSk8ySEpQMw==",
+ "path": "system.security.cryptography.openssl/4.0.0",
+ "hashPath": "system.security.cryptography.openssl.4.0.0.nupkg.sha512"
+ },
+ "System.Security.Cryptography.Primitives/4.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-Wkd7QryWYjkQclX0bngpntW5HSlMzeJU24UaLJQ7YTfI8ydAVAaU2J+HXLLABOVJlKTVvAeL0Aj39VeTe7L+oA==",
+ "path": "system.security.cryptography.primitives/4.0.0",
+ "hashPath": "system.security.cryptography.primitives.4.0.0.nupkg.sha512"
+ },
+ "System.Security.Cryptography.X509Certificates/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-4HEfsQIKAhA1+ApNn729Gi09zh+lYWwyIuViihoMDWp1vQnEkL2ct7mAbhBlLYm+x/L4Rr/pyGge1lIY635e0w==",
+ "path": "system.security.cryptography.x509certificates/4.1.0",
+ "hashPath": "system.security.cryptography.x509certificates.4.1.0.nupkg.sha512"
+ },
+ "System.Text.Encoding/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-U3gGeMlDZXxCEiY4DwVLSacg+DFWCvoiX+JThA/rvw37Sqrku7sEFeVBBBMBnfB6FeZHsyDx85HlKL19x0HtZA==",
+ "path": "system.text.encoding/4.0.11",
+ "hashPath": "system.text.encoding.4.0.11.nupkg.sha512"
+ },
+ "System.Text.Encoding.Extensions/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-jtbiTDtvfLYgXn8PTfWI+SiBs51rrmO4AAckx4KR6vFK9Wzf6tI8kcRdsYQNwriUeQ1+CtQbM1W4cMbLXnj/OQ==",
+ "path": "system.text.encoding.extensions/4.0.11",
+ "hashPath": "system.text.encoding.extensions.4.0.11.nupkg.sha512"
+ },
+ "System.Text.RegularExpressions/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-i88YCXpRTjCnoSQZtdlHkAOx4KNNik4hMy83n0+Ftlb7jvV6ZiZWMpnEZHhjBp6hQVh8gWd/iKNPzlPF7iyA2g==",
+ "path": "system.text.regularexpressions/4.1.0",
+ "hashPath": "system.text.regularexpressions.4.1.0.nupkg.sha512"
+ },
+ "System.Threading/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-N+3xqIcg3VDKyjwwCGaZ9HawG9aC6cSDI+s7ROma310GQo8vilFZa86hqKppwTHleR/G0sfOzhvgnUxWCR/DrQ==",
+ "path": "system.threading/4.0.11",
+ "hashPath": "system.threading.4.0.11.nupkg.sha512"
+ },
+ "System.Threading.Tasks/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-k1S4Gc6IGwtHGT8188RSeGaX86Qw/wnrgNLshJvsdNUOPP9etMmo8S07c+UlOAx4K/xLuN9ivA1bD0LVurtIxQ==",
+ "path": "system.threading.tasks/4.0.11",
+ "hashPath": "system.threading.tasks.4.0.11.nupkg.sha512"
+ },
+ "System.Threading.Tasks.Extensions/4.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-pH4FZDsZQ/WmgJtN4LWYmRdJAEeVkyriSwrv2Teoe5FOU0Yxlb6II6GL8dBPOfRmutHGATduj3ooMt7dJ2+i+w==",
+ "path": "system.threading.tasks.extensions/4.0.0",
+ "hashPath": "system.threading.tasks.extensions.4.0.0.nupkg.sha512"
+ },
+ "System.Threading.Timer/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-saGfUV8uqVW6LeURiqxcGhZ24PzuRNaUBtbhVeuUAvky1naH395A/1nY0P2bWvrw/BreRtIB/EzTDkGBpqCwEw==",
+ "path": "system.threading.timer/4.0.1",
+ "hashPath": "system.threading.timer.4.0.1.nupkg.sha512"
+ },
+ "System.Xml.ReaderWriter/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-ZIiLPsf67YZ9zgr31vzrFaYQqxRPX9cVHjtPSnmx4eN6lbS/yEyYNr2vs1doGDEscF0tjCZFsk9yUg1sC9e8tg==",
+ "path": "system.xml.readerwriter/4.0.11",
+ "hashPath": "system.xml.readerwriter.4.0.11.nupkg.sha512"
+ },
+ "System.Xml.XDocument/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-Mk2mKmPi0nWaoiYeotq1dgeNK1fqWh61+EK+w4Wu8SWuTYLzpUnschb59bJtGywaPq7SmTuPf44wrXRwbIrukg==",
+ "path": "system.xml.xdocument/4.0.11",
+ "hashPath": "system.xml.xdocument.4.0.11.nupkg.sha512"
+ },
+ "ReferenceProject/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ }
+ }
+}
\ No newline at end of file
diff --git a/_testdata/SampleProjectReference/gauge_bin/IntegrationTestSampleProjectReference.dll b/_testdata/SampleProjectReference/gauge_bin/IntegrationTestSampleProjectReference.dll
new file mode 100644
index 0000000..4dc1176
Binary files /dev/null and b/_testdata/SampleProjectReference/gauge_bin/IntegrationTestSampleProjectReference.dll differ
diff --git a/_testdata/SampleProjectReference/gauge_bin/IntegrationTestSampleProjectReference.pdb b/_testdata/SampleProjectReference/gauge_bin/IntegrationTestSampleProjectReference.pdb
new file mode 100644
index 0000000..55e4766
Binary files /dev/null and b/_testdata/SampleProjectReference/gauge_bin/IntegrationTestSampleProjectReference.pdb differ
diff --git a/_testdata/SampleProjectReference/gauge_bin/ReferenceProject.dll b/_testdata/SampleProjectReference/gauge_bin/ReferenceProject.dll
index 277f34b..687ed2a 100644
Binary files a/_testdata/SampleProjectReference/gauge_bin/ReferenceProject.dll and b/_testdata/SampleProjectReference/gauge_bin/ReferenceProject.dll differ
diff --git a/_testdata/SampleProjectReference/gauge_bin/ReferenceProject.pdb b/_testdata/SampleProjectReference/gauge_bin/ReferenceProject.pdb
index 8df94d6..84bd2a2 100644
Binary files a/_testdata/SampleProjectReference/gauge_bin/ReferenceProject.pdb and b/_testdata/SampleProjectReference/gauge_bin/ReferenceProject.pdb differ
diff --git a/integration-test/ExecuteStepProcessorTests.cs b/integration-test/ExecuteStepProcessorTests.cs
index 0009623..7b6a402 100644
--- a/integration-test/ExecuteStepProcessorTests.cs
+++ b/integration-test/ExecuteStepProcessorTests.cs
@@ -5,103 +5,101 @@
*----------------------------------------------------------------*/
-using System.Threading;
+using Gauge.Dotnet.Executors;
using Gauge.Dotnet.Models;
using Gauge.Dotnet.Processors;
using Gauge.Dotnet.Wrappers;
using Gauge.Messages;
-using NUnit.Framework;
-using NUnit.Framework.Legacy;
+using Microsoft.Extensions.Logging;
-namespace Gauge.Dotnet.IntegrationTests
+namespace Gauge.Dotnet.IntegrationTests;
+
+public class ExecuteStepProcessorTests : IntegrationTestsBase
{
- public class ExecuteStepProcessorTests : IntegrationTestsBase
+ [Test]
+ public async Task ShouldExecuteMethodFromRequest()
{
- [Test]
- public void ShouldExecuteMethodFromRequest()
- {
- const string parameterizedStepText = "Step that takes a table {}";
- const string stepText = "Step that takes a table ";
- var reflectionWrapper = new ReflectionWrapper();
- var activatorWrapper = new ActivatorWrapper();
- var path = new AssemblyLocater(new DirectoryWrapper()).GetTestAssembly();
- var assemblyLoader = new AssemblyLoader(path, new GaugeLoadContext(path), reflectionWrapper, activatorWrapper, new StepRegistry());
- var executionInfoMapper = new ExecutionInfoMapper(assemblyLoader, activatorWrapper);
- var classInstanceManager = assemblyLoader.GetClassInstanceManager();
- var orchestrator = new ExecutionOrchestrator(reflectionWrapper, assemblyLoader,
- classInstanceManager,
- new HookExecutor(assemblyLoader, reflectionWrapper, classInstanceManager, executionInfoMapper),
- new StepExecutor(assemblyLoader, reflectionWrapper, classInstanceManager));
+ const string parameterizedStepText = "Step that takes a table {}";
+ const string stepText = "Step that takes a table ";
+ var reflectionWrapper = new ReflectionWrapper();
+ var activatorWrapper = new ActivatorWrapper();
+ var assemblyLocater = new AssemblyLocater(new DirectoryWrapper(), _configuration);
+ var assemblyLoader = new AssemblyLoader(assemblyLocater, new GaugeLoadContext(assemblyLocater, _loggerFactory.CreateLogger()), reflectionWrapper,
+ activatorWrapper, new StepRegistry(), _loggerFactory.CreateLogger());
+ var executionInfoMapper = new ExecutionInfoMapper(assemblyLoader, activatorWrapper);
+ var hookRegistry = new HookRegistry(assemblyLoader);
+ var orchestrator = new ExecutionOrchestrator(reflectionWrapper, assemblyLoader,
+ new HookExecutor(assemblyLoader, executionInfoMapper, hookRegistry, _loggerFactory.CreateLogger()),
+ new StepExecutor(assemblyLoader, _loggerFactory.CreateLogger()), _configuration, _loggerFactory.CreateLogger());
- var executeStepProcessor = new ExecuteStepProcessor(assemblyLoader.GetStepRegistry(),
- orchestrator, new TableFormatter(assemblyLoader, activatorWrapper));
+ var executeStepProcessor = new ExecuteStepProcessor(assemblyLoader.GetStepRegistry(),
+ orchestrator, new TableFormatter(assemblyLoader, activatorWrapper));
- var protoTable = new ProtoTable
+ var protoTable = new ProtoTable
+ {
+ Headers = new ProtoTableRow
+ {
+ Cells = { "foo", "bar" }
+ },
+ Rows =
{
- Headers = new ProtoTableRow
+ new ProtoTableRow
{
- Cells = { "foo", "bar" }
- },
- Rows =
+ Cells = {"foorow1", "foorow2"}
+ }
+ }
+ };
+ var message = new ExecuteStepRequest
+ {
+ ParsedStepText = parameterizedStepText,
+ ActualStepText = stepText,
+ Parameters =
{
- new ProtoTableRow
+ new Parameter
{
- Cells = {"foorow1", "foorow2"}
+ Name = "table",
+ ParameterType = Parameter.Types.ParameterType.Table,
+ Table = protoTable
}
}
- };
- var message = new ExecuteStepRequest
- {
- ParsedStepText = parameterizedStepText,
- ActualStepText = stepText,
- Parameters =
- {
- new Parameter
- {
- Name = "table",
- ParameterType = Parameter.Types.ParameterType.Table,
- Table = protoTable
- }
- }
- };
- var result = executeStepProcessor.Process(message);
+ };
+ var result = await executeStepProcessor.Process(1, message);
- var protoExecutionResult = result.ExecutionResult;
- ClassicAssert.IsNotNull(protoExecutionResult);
- ClassicAssert.IsFalse(protoExecutionResult.Failed);
- }
+ var protoExecutionResult = result.ExecutionResult;
+ ClassicAssert.IsNotNull(protoExecutionResult);
+ ClassicAssert.IsFalse(protoExecutionResult.Failed);
+ }
- [Test]
- public void ShouldCaptureScreenshotOnFailure()
- {
- const string stepText = "I throw a serializable exception";
- var reflectionWrapper = new ReflectionWrapper();
- var activatorWrapper = new ActivatorWrapper();
- var path = new AssemblyLocater(new DirectoryWrapper()).GetTestAssembly();
- var assemblyLoader = new AssemblyLoader(path, new GaugeLoadContext(path), reflectionWrapper, activatorWrapper, new StepRegistry());
- var classInstanceManager = new ThreadLocal(() => assemblyLoader.GetClassInstanceManager());
- var executionInfoMapper = new ExecutionInfoMapper(assemblyLoader, activatorWrapper);
- var orchestrator = new ExecutionOrchestrator(reflectionWrapper, assemblyLoader,
- classInstanceManager,
- new HookExecutor(assemblyLoader, reflectionWrapper, classInstanceManager, executionInfoMapper),
- new StepExecutor(assemblyLoader, reflectionWrapper, classInstanceManager));
+ [Test]
+ public async Task ShouldCaptureScreenshotOnFailure()
+ {
+ const string stepText = "I throw a serializable exception";
+ var reflectionWrapper = new ReflectionWrapper();
+ var activatorWrapper = new ActivatorWrapper();
+ var assemblyLocator = new AssemblyLocater(new DirectoryWrapper(), _configuration);
+ var assemblyLoader = new AssemblyLoader(assemblyLocator, new GaugeLoadContext(assemblyLocator, _loggerFactory.CreateLogger()), reflectionWrapper,
+ activatorWrapper, new StepRegistry(), _loggerFactory.CreateLogger());
+ var hookRegistry = new HookRegistry(assemblyLoader);
+ var executionInfoMapper = new ExecutionInfoMapper(assemblyLoader, activatorWrapper);
+ var orchestrator = new ExecutionOrchestrator(reflectionWrapper, assemblyLoader,
+ new HookExecutor(assemblyLoader, executionInfoMapper, hookRegistry, _loggerFactory.CreateLogger()),
+ new StepExecutor(assemblyLoader, _loggerFactory.CreateLogger()), _configuration, _loggerFactory.CreateLogger());
- var executeStepProcessor = new ExecuteStepProcessor(assemblyLoader.GetStepRegistry(),
- orchestrator, new TableFormatter(assemblyLoader, activatorWrapper));
+ var executeStepProcessor = new ExecuteStepProcessor(assemblyLoader.GetStepRegistry(),
+ orchestrator, new TableFormatter(assemblyLoader, activatorWrapper));
- var message = new ExecuteStepRequest
- {
- ParsedStepText = stepText,
- ActualStepText = stepText
- };
+ var message = new ExecuteStepRequest
+ {
+ ParsedStepText = stepText,
+ ActualStepText = stepText
+ };
- var result = executeStepProcessor.Process(message);
- var protoExecutionResult = result.ExecutionResult;
+ var result = await executeStepProcessor.Process(1, message);
+ var protoExecutionResult = result.ExecutionResult;
- ClassicAssert.IsNotNull(protoExecutionResult);
- ClassicAssert.IsTrue(protoExecutionResult.Failed);
- ClassicAssert.AreEqual("screenshot.png", protoExecutionResult.FailureScreenshotFile);
- }
+ ClassicAssert.IsNotNull(protoExecutionResult);
+ ClassicAssert.IsTrue(protoExecutionResult.Failed);
+ ClassicAssert.AreEqual("screenshot.png", protoExecutionResult.FailureScreenshotFile);
}
}
\ No newline at end of file
diff --git a/integration-test/ExecutionOrchestratorTests.cs b/integration-test/ExecutionOrchestratorTests.cs
index d326bce..4b6434f 100644
--- a/integration-test/ExecutionOrchestratorTests.cs
+++ b/integration-test/ExecutionOrchestratorTests.cs
@@ -5,186 +5,184 @@
*----------------------------------------------------------------*/
-using System.Collections.Generic;
-using System.Linq;
using Gauge.CSharp.Lib;
+using Gauge.Dotnet.Executors;
using Gauge.Dotnet.Models;
using Gauge.Dotnet.Wrappers;
-using NUnit.Framework;
-using NUnit.Framework.Legacy;
+using Microsoft.Extensions.Logging;
-namespace Gauge.Dotnet.IntegrationTests
+namespace Gauge.Dotnet.IntegrationTests;
+
+[TestFixture]
+public class ExecutionOrchestratorTests : IntegrationTestsBase
{
- [TestFixture]
- public class ExecutionOrchestratorTests : IntegrationTestsBase
+ [Test]
+ public async Task RecoverableIsTrueOnExceptionThrownWhenContinueOnFailure()
+ {
+ var reflectionWrapper = new ReflectionWrapper();
+ var activatorWrapper = new ActivatorWrapper();
+ var assemblyLocator = new AssemblyLocater(new DirectoryWrapper(), _configuration);
+ var assemblyLoader = new AssemblyLoader(assemblyLocator, new GaugeLoadContext(assemblyLocator, _loggerFactory.CreateLogger()), reflectionWrapper,
+ activatorWrapper, new StepRegistry(), _loggerFactory.CreateLogger());
+ var hookRegistry = new HookRegistry(assemblyLoader);
+ var executionInfoMapper = new ExecutionInfoMapper(assemblyLoader, activatorWrapper);
+ var orchestrator = new ExecutionOrchestrator(reflectionWrapper, assemblyLoader,
+ new HookExecutor(assemblyLoader, executionInfoMapper, hookRegistry, _loggerFactory.CreateLogger()),
+ new StepExecutor(assemblyLoader, _loggerFactory.CreateLogger()), _configuration, _loggerFactory.CreateLogger());
+ var gaugeMethod = assemblyLoader.GetStepRegistry()
+ .MethodFor("I throw a serializable exception and continue");
+ var executionResult = await orchestrator.ExecuteStep(gaugeMethod, 1);
+ ClassicAssert.IsTrue(executionResult.Failed);
+ ClassicAssert.IsTrue(executionResult.RecoverableError);
+ }
+
+ [Test]
+ public async Task ShouldCreateTableFromTargetType()
+ {
+ var reflectionWrapper = new ReflectionWrapper();
+ var activatorWrapper = new ActivatorWrapper();
+ var assemblyLocator = new AssemblyLocater(new DirectoryWrapper(), _configuration);
+ var assemblyLoader = new AssemblyLoader(assemblyLocator, new GaugeLoadContext(assemblyLocator, _loggerFactory.CreateLogger()), reflectionWrapper,
+ activatorWrapper, new StepRegistry(), _loggerFactory.CreateLogger());
+ var hookRegistry = new HookRegistry(assemblyLoader);
+ var executionInfoMapper = new ExecutionInfoMapper(assemblyLoader, activatorWrapper);
+ var orchestrator = new ExecutionOrchestrator(reflectionWrapper, assemblyLoader,
+ new HookExecutor(assemblyLoader, executionInfoMapper, hookRegistry, _loggerFactory.CreateLogger()),
+ new StepExecutor(assemblyLoader, _loggerFactory.CreateLogger()), _configuration, _loggerFactory.CreateLogger());
+ var gaugeMethod = assemblyLoader.GetStepRegistry().MethodFor("Step that takes a table {}");
+ var table = new Table(new List { "foo", "bar" });
+ table.AddRow(new List { "foorow1", "barrow1" });
+ table.AddRow(new List { "foorow2", "barrow2" });
+
+ var executionResult = await orchestrator.ExecuteStep(gaugeMethod, 1, SerializeTable(table));
+ ClassicAssert.False(executionResult.Failed);
+ }
+
+ [Test]
+ public async Task ShouldExecuteMethodAndReturnResult()
+ {
+ var reflectionWrapper = new ReflectionWrapper();
+ var activatorWrapper = new ActivatorWrapper();
+ var assemblyLocator = new AssemblyLocater(new DirectoryWrapper(), _configuration);
+ var assemblyLoader = new AssemblyLoader(assemblyLocator, new GaugeLoadContext(assemblyLocator, _loggerFactory.CreateLogger()), reflectionWrapper,
+ activatorWrapper, new StepRegistry(), _loggerFactory.CreateLogger());
+ var hookRegistry = new HookRegistry(assemblyLoader);
+ var executionInfoMapper = new ExecutionInfoMapper(assemblyLoader, activatorWrapper);
+ var orchestrator = new ExecutionOrchestrator(reflectionWrapper, assemblyLoader,
+ new HookExecutor(assemblyLoader, executionInfoMapper, hookRegistry, _loggerFactory.CreateLogger()),
+ new StepExecutor(assemblyLoader, _loggerFactory.CreateLogger()), _configuration, _loggerFactory.CreateLogger());
+ var gaugeMethod = assemblyLoader.GetStepRegistry()
+ .MethodFor("A context step which gets executed before every scenario");
+
+ var executionResult = await orchestrator.ExecuteStep(gaugeMethod, 1);
+ ClassicAssert.False(executionResult.Failed);
+ }
+
+
+ [Test]
+ public async Task ShouldGetPendingMessages()
+ {
+ var reflectionWrapper = new ReflectionWrapper();
+ var activatorWrapper = new ActivatorWrapper();
+ var assemblyLocator = new AssemblyLocater(new DirectoryWrapper(), _configuration);
+ var assemblyLoader = new AssemblyLoader(assemblyLocator, new GaugeLoadContext(assemblyLocator, _loggerFactory.CreateLogger()), reflectionWrapper,
+ activatorWrapper, new StepRegistry(), _loggerFactory.CreateLogger());
+ var hookRegistry = new HookRegistry(assemblyLoader);
+ var executionInfoMapper = new ExecutionInfoMapper(assemblyLoader, activatorWrapper);
+ var executionOrchestrator = new ExecutionOrchestrator(reflectionWrapper, assemblyLoader,
+ new HookExecutor(assemblyLoader, executionInfoMapper, hookRegistry, _loggerFactory.CreateLogger()),
+ new StepExecutor(assemblyLoader, _loggerFactory.CreateLogger()), _configuration, _loggerFactory.CreateLogger());
+
+ var gaugeMethod = assemblyLoader.GetStepRegistry().MethodFor("Say {} to {}");
+
+ var executionResult = await executionOrchestrator.ExecuteStep(gaugeMethod, 1, "hello", "world");
+
+ ClassicAssert.False(executionResult.Failed);
+ ClassicAssert.Contains("hello, world!", executionResult.Message);
+ }
+
+ [Test]
+ public async Task ShouldGetStacktraceForAggregateException()
+ {
+ var reflectionWrapper = new ReflectionWrapper();
+ var activatorWrapper = new ActivatorWrapper();
+ var assemblyLocator = new AssemblyLocater(new DirectoryWrapper(), _configuration);
+ var assemblyLoader = new AssemblyLoader(assemblyLocator, new GaugeLoadContext(assemblyLocator, _loggerFactory.CreateLogger()), reflectionWrapper,
+ activatorWrapper, new StepRegistry(), _loggerFactory.CreateLogger());
+ var hookRegistry = new HookRegistry(assemblyLoader);
+ var executionInfoMapper = new ExecutionInfoMapper(assemblyLoader, activatorWrapper);
+ var executionOrchestrator = new ExecutionOrchestrator(reflectionWrapper, assemblyLoader,
+ new HookExecutor(assemblyLoader, executionInfoMapper, hookRegistry, _loggerFactory.CreateLogger()),
+ new StepExecutor(assemblyLoader, _loggerFactory.CreateLogger()), _configuration, _loggerFactory.CreateLogger());
+
+ var gaugeMethod = assemblyLoader.GetStepRegistry().MethodFor("I throw an AggregateException");
+ var executionResult = await executionOrchestrator.ExecuteStep(gaugeMethod, 1);
+
+ ClassicAssert.True(executionResult.Failed);
+ ClassicAssert.True(executionResult.StackTrace.Contains("First Exception"));
+ ClassicAssert.True(executionResult.StackTrace.Contains("Second Exception"));
+ }
+
+ [Test]
+ public void ShouldGetStepTextsForMethod()
+ {
+ var reflectionWrapper = new ReflectionWrapper();
+ var activatorWrapper = new ActivatorWrapper();
+ var assemblyLocator = new AssemblyLocater(new DirectoryWrapper(), _configuration);
+ var assemblyLoader = new AssemblyLoader(assemblyLocator, new GaugeLoadContext(assemblyLocator, _loggerFactory.CreateLogger()), reflectionWrapper,
+ activatorWrapper, new StepRegistry(), _loggerFactory.CreateLogger());
+ var registry = assemblyLoader.GetStepRegistry();
+ var gaugeMethod = registry.MethodFor("and an alias");
+ var stepTexts = gaugeMethod.Aliases.ToList();
+
+ ClassicAssert.Contains("Step with text", stepTexts);
+ ClassicAssert.Contains("and an alias", stepTexts);
+ }
+
+ [Test]
+ public async Task SuccessIsFalseOnSerializableExceptionThrown()
+ {
+ const string expectedMessage = "I am a custom serializable exception";
+ var reflectionWrapper = new ReflectionWrapper();
+ var activatorWrapper = new ActivatorWrapper();
+ var assemblyLocator = new AssemblyLocater(new DirectoryWrapper(), _configuration);
+ var assemblyLoader = new AssemblyLoader(assemblyLocator, new GaugeLoadContext(assemblyLocator, _loggerFactory.CreateLogger()), reflectionWrapper,
+ activatorWrapper, new StepRegistry(), _loggerFactory.CreateLogger());
+ var hookRegistry = new HookRegistry(assemblyLoader);
+ var executionInfoMapper = new ExecutionInfoMapper(assemblyLoader, activatorWrapper);
+ var executionOrchestrator = new ExecutionOrchestrator(reflectionWrapper, assemblyLoader,
+ new HookExecutor(assemblyLoader, executionInfoMapper, hookRegistry, _loggerFactory.CreateLogger()),
+ new StepExecutor(assemblyLoader, _loggerFactory.CreateLogger()), _configuration, _loggerFactory.CreateLogger());
+ var gaugeMethod = assemblyLoader.GetStepRegistry().MethodFor("I throw a serializable exception");
+
+ var executionResult = await executionOrchestrator.ExecuteStep(gaugeMethod, 1);
+
+ ClassicAssert.True(executionResult.Failed);
+ ClassicAssert.AreEqual(expectedMessage, executionResult.ErrorMessage);
+ StringAssert.Contains("IntegrationTestSample.StepImplementation.ThrowSerializableException",
+ executionResult.StackTrace);
+ }
+
+ [Test]
+ public async Task SuccessIsFalseOnUnserializableExceptionThrown()
{
- [Test]
- public void RecoverableIsTrueOnExceptionThrownWhenContinueOnFailure()
- {
- var reflectionWrapper = new ReflectionWrapper();
- var activatorWrapper = new ActivatorWrapper();
- var path = new AssemblyLocater(new DirectoryWrapper()).GetTestAssembly();
- var assemblyLoader = new AssemblyLoader(path, new GaugeLoadContext(path), reflectionWrapper, activatorWrapper, new StepRegistry());
- var classInstanceManager = assemblyLoader.GetClassInstanceManager();
- var executionInfoMapper = new ExecutionInfoMapper(assemblyLoader, activatorWrapper);
- var orchestrator = new ExecutionOrchestrator(reflectionWrapper, assemblyLoader,
- classInstanceManager,
- new HookExecutor(assemblyLoader, reflectionWrapper, classInstanceManager, executionInfoMapper),
- new StepExecutor(assemblyLoader, reflectionWrapper, classInstanceManager));
- var gaugeMethod = assemblyLoader.GetStepRegistry()
- .MethodFor("I throw a serializable exception and continue");
- var executionResult = orchestrator.ExecuteStep(gaugeMethod);
- ClassicAssert.IsTrue(executionResult.Failed);
- ClassicAssert.IsTrue(executionResult.RecoverableError);
- }
-
- [Test]
- public void ShouldCreateTableFromTargetType()
- {
- var reflectionWrapper = new ReflectionWrapper();
- var activatorWrapper = new ActivatorWrapper();
- var path = new AssemblyLocater(new DirectoryWrapper()).GetTestAssembly();
- var assemblyLoader = new AssemblyLoader(path, new GaugeLoadContext(path), reflectionWrapper, activatorWrapper, new StepRegistry());
- var classInstanceManager = assemblyLoader.GetClassInstanceManager();
- var executionInfoMapper = new ExecutionInfoMapper(assemblyLoader, activatorWrapper);
- var orchestrator = new ExecutionOrchestrator(reflectionWrapper, assemblyLoader,
- classInstanceManager,
- new HookExecutor(assemblyLoader, reflectionWrapper, classInstanceManager, executionInfoMapper),
- new StepExecutor(assemblyLoader, reflectionWrapper, classInstanceManager));
- var gaugeMethod = assemblyLoader.GetStepRegistry().MethodFor("Step that takes a table {}");
- var table = new Table(new List { "foo", "bar" });
- table.AddRow(new List { "foorow1", "barrow1" });
- table.AddRow(new List { "foorow2", "barrow2" });
-
- var executionResult = orchestrator.ExecuteStep(gaugeMethod, SerializeTable(table));
- ClassicAssert.False(executionResult.Failed);
- }
-
- [Test]
- public void ShouldExecuteMethodAndReturnResult()
- {
- var reflectionWrapper = new ReflectionWrapper();
- var activatorWrapper = new ActivatorWrapper();
- var path = new AssemblyLocater(new DirectoryWrapper()).GetTestAssembly();
- var assemblyLoader = new AssemblyLoader(path, new GaugeLoadContext(path), reflectionWrapper, activatorWrapper, new StepRegistry());
- var classInstanceManager = assemblyLoader.GetClassInstanceManager();
- var executionInfoMapper = new ExecutionInfoMapper(assemblyLoader, activatorWrapper);
- var orchestrator = new ExecutionOrchestrator(reflectionWrapper, assemblyLoader,
- classInstanceManager,
- new HookExecutor(assemblyLoader, reflectionWrapper, classInstanceManager, executionInfoMapper),
- new StepExecutor(assemblyLoader, reflectionWrapper, classInstanceManager));
- var gaugeMethod = assemblyLoader.GetStepRegistry()
- .MethodFor("A context step which gets executed before every scenario");
-
- var executionResult = orchestrator.ExecuteStep(gaugeMethod);
- ClassicAssert.False(executionResult.Failed);
- }
-
-
- [Test]
- public void ShouldGetPendingMessages()
- {
- var reflectionWrapper = new ReflectionWrapper();
- var activatorWrapper = new ActivatorWrapper();
- var path = new AssemblyLocater(new DirectoryWrapper()).GetTestAssembly();
- var assemblyLoader = new AssemblyLoader(path, new GaugeLoadContext(path), reflectionWrapper, activatorWrapper, new StepRegistry());
- var classInstanceManager = assemblyLoader.GetClassInstanceManager();
- var executionInfoMapper = new ExecutionInfoMapper(assemblyLoader, activatorWrapper);
- var executionOrchestrator = new ExecutionOrchestrator(reflectionWrapper, assemblyLoader,
- classInstanceManager,
- new HookExecutor(assemblyLoader, reflectionWrapper, classInstanceManager, executionInfoMapper),
- new StepExecutor(assemblyLoader, reflectionWrapper, classInstanceManager));
-
- var gaugeMethod = assemblyLoader.GetStepRegistry().MethodFor("Say {} to {}");
-
- var executionResult = executionOrchestrator.ExecuteStep(gaugeMethod, "hello", "world");
-
- ClassicAssert.False(executionResult.Failed);
- ClassicAssert.Contains("hello, world!", executionResult.Message);
- }
-
- [Test]
- public void ShouldGetStacktraceForAggregateException()
- {
- var reflectionWrapper = new ReflectionWrapper();
- var activatorWrapper = new ActivatorWrapper();
- var path = new AssemblyLocater(new DirectoryWrapper()).GetTestAssembly();
- var assemblyLoader = new AssemblyLoader(path, new GaugeLoadContext(path), reflectionWrapper, activatorWrapper, new StepRegistry());
- var classInstanceManager = assemblyLoader.GetClassInstanceManager();
- var executionInfoMapper = new ExecutionInfoMapper(assemblyLoader, activatorWrapper);
- var executionOrchestrator = new ExecutionOrchestrator(reflectionWrapper, assemblyLoader,
- classInstanceManager,
- new HookExecutor(assemblyLoader, reflectionWrapper, classInstanceManager, executionInfoMapper),
- new StepExecutor(assemblyLoader, reflectionWrapper, classInstanceManager));
-
- var gaugeMethod = assemblyLoader.GetStepRegistry().MethodFor("I throw an AggregateException");
- var executionResult = executionOrchestrator.ExecuteStep(gaugeMethod);
-
- ClassicAssert.True(executionResult.Failed);
- ClassicAssert.True(executionResult.StackTrace.Contains("First Exception"));
- ClassicAssert.True(executionResult.StackTrace.Contains("Second Exception"));
- }
-
- [Test]
- public void ShouldGetStepTextsForMethod()
- {
- var reflectionWrapper = new ReflectionWrapper();
- var activatorWrapper = new ActivatorWrapper();
- var path = new AssemblyLocater(new DirectoryWrapper()).GetTestAssembly();
- var assemblyLoader = new AssemblyLoader(path, new GaugeLoadContext(path), reflectionWrapper, activatorWrapper, new StepRegistry());
- var registry = assemblyLoader.GetStepRegistry();
- var gaugeMethod = registry.MethodFor("and an alias");
- var stepTexts = gaugeMethod.Aliases.ToList();
-
- ClassicAssert.Contains("Step with text", stepTexts);
- ClassicAssert.Contains("and an alias", stepTexts);
- }
-
- [Test]
- public void SuccessIsFalseOnSerializableExceptionThrown()
- {
- const string expectedMessage = "I am a custom serializable exception";
- var reflectionWrapper = new ReflectionWrapper();
- var activatorWrapper = new ActivatorWrapper();
- var path = new AssemblyLocater(new DirectoryWrapper()).GetTestAssembly();
- var assemblyLoader = new AssemblyLoader(path, new GaugeLoadContext(path), reflectionWrapper, activatorWrapper, new StepRegistry());
- var classInstanceManager = assemblyLoader.GetClassInstanceManager();
- var executionInfoMapper = new ExecutionInfoMapper(assemblyLoader, activatorWrapper);
- var executionOrchestrator = new ExecutionOrchestrator(reflectionWrapper, assemblyLoader,
- classInstanceManager,
- new HookExecutor(assemblyLoader, reflectionWrapper, classInstanceManager, executionInfoMapper),
- new StepExecutor(assemblyLoader, reflectionWrapper, classInstanceManager));
- var gaugeMethod = assemblyLoader.GetStepRegistry().MethodFor("I throw a serializable exception");
-
- var executionResult = executionOrchestrator.ExecuteStep(gaugeMethod);
-
- ClassicAssert.True(executionResult.Failed);
- ClassicAssert.AreEqual(expectedMessage, executionResult.ErrorMessage);
- StringAssert.Contains("IntegrationTestSample.StepImplementation.ThrowSerializableException",
- executionResult.StackTrace);
- }
-
- [Test]
- public void SuccessIsFalseOnUnserializableExceptionThrown()
- {
- const string expectedMessage = "I am a custom exception";
- var reflectionWrapper = new ReflectionWrapper();
- var activatorWrapper = new ActivatorWrapper();
- var path = new AssemblyLocater(new DirectoryWrapper()).GetTestAssembly();
- var assemblyLoader = new AssemblyLoader(path, new GaugeLoadContext(path), reflectionWrapper, activatorWrapper, new StepRegistry());
- var classInstanceManager = assemblyLoader.GetClassInstanceManager();
- var executionInfoMapper = new ExecutionInfoMapper(assemblyLoader, activatorWrapper);
- var executionOrchestrator = new ExecutionOrchestrator(reflectionWrapper, assemblyLoader,
- classInstanceManager,
- new HookExecutor(assemblyLoader, reflectionWrapper, classInstanceManager, executionInfoMapper),
- new StepExecutor(assemblyLoader, reflectionWrapper, classInstanceManager));
-
- var gaugeMethod = assemblyLoader.GetStepRegistry().MethodFor("I throw an unserializable exception");
- var executionResult = executionOrchestrator.ExecuteStep(gaugeMethod);
- ClassicAssert.True(executionResult.Failed);
- ClassicAssert.AreEqual(expectedMessage, executionResult.ErrorMessage);
- StringAssert.Contains("IntegrationTestSample.StepImplementation.ThrowUnserializableException",
- executionResult.StackTrace);
- }
+ const string expectedMessage = "I am a custom exception";
+ var reflectionWrapper = new ReflectionWrapper();
+ var activatorWrapper = new ActivatorWrapper();
+ var assemblyLocator = new AssemblyLocater(new DirectoryWrapper(), _configuration);
+ var assemblyLoader = new AssemblyLoader(assemblyLocator, new GaugeLoadContext(assemblyLocator, _loggerFactory.CreateLogger()), reflectionWrapper,
+ activatorWrapper, new StepRegistry(), _loggerFactory.CreateLogger());
+ var hookRegistry = new HookRegistry(assemblyLoader);
+ var executionInfoMapper = new ExecutionInfoMapper(assemblyLoader, activatorWrapper);
+ var executionOrchestrator = new ExecutionOrchestrator(reflectionWrapper, assemblyLoader,
+ new HookExecutor(assemblyLoader, executionInfoMapper, hookRegistry, _loggerFactory.CreateLogger()),
+ new StepExecutor(assemblyLoader, _loggerFactory.CreateLogger()), _configuration, _loggerFactory.CreateLogger());
+
+ var gaugeMethod = assemblyLoader.GetStepRegistry().MethodFor("I throw an unserializable exception");
+ var executionResult = await executionOrchestrator.ExecuteStep(gaugeMethod, 1);
+ ClassicAssert.True(executionResult.Failed);
+ ClassicAssert.AreEqual(expectedMessage, executionResult.ErrorMessage);
+ StringAssert.Contains("IntegrationTestSample.StepImplementation.ThrowUnserializableException",
+ executionResult.StackTrace);
}
}
\ No newline at end of file
diff --git a/integration-test/ExternalReferenceTests.cs b/integration-test/ExternalReferenceTests.cs
index d7df069..f55e912 100644
--- a/integration-test/ExternalReferenceTests.cs
+++ b/integration-test/ExternalReferenceTests.cs
@@ -5,79 +5,82 @@
*----------------------------------------------------------------*/
-using System;
-using System.Threading;
+using Gauge.Dotnet.Executors;
using Gauge.Dotnet.Models;
using Gauge.Dotnet.Processors;
using Gauge.Dotnet.Wrappers;
using Gauge.Messages;
-using NUnit.Framework;
-using NUnit.Framework.Legacy;
+using Microsoft.Extensions.Configuration;
+using Microsoft.Extensions.Logging;
-namespace Gauge.Dotnet.IntegrationTests
-{
- public class ExternalReferenceTests
- {
- [Test]
- [TestCase("DllReference", "Dll Reference: Vowels in English language are {}.", "Dll Reference: Vowels in English language are .", "Dll Reference: Vowels in English language are \"aeiou\".")]
- [TestCase("ProjectReference", "Project Reference: Vowels in English language are {}.", "Project Reference: Vowels in English language are .", "Project Reference: Vowels in English language are \"aeiou\".")]
- public void ShouldGetStepsFromReference(string referenceType, string stepText, string stepValue, string parameterizedStepValue)
- {
- Environment.SetEnvironmentVariable("GAUGE_PROJECT_ROOT", TestUtils.GetIntegrationTestSampleDirectory(referenceType));
- var path = new AssemblyLocater(new DirectoryWrapper()).GetTestAssembly();
- var assemblyLoader = new AssemblyLoader(path, new GaugeLoadContext(path), new ReflectionWrapper(), new ActivatorWrapper(), new StepRegistry());
+namespace Gauge.Dotnet.IntegrationTests;
- var stepValidationProcessor = new StepValidationProcessor(assemblyLoader.GetStepRegistry());
- var message = new StepValidateRequest
- {
- StepText = stepText,
- StepValue = new ProtoStepValue { StepValue = stepValue, ParameterizedStepValue = parameterizedStepValue },
- NumberOfParameters = 1,
- };
- var result = stepValidationProcessor.Process(message);
+public class ExternalReferenceTests
+{
+ protected readonly ILoggerFactory _loggerFactory = new LoggerFactory();
- ClassicAssert.IsTrue(result.IsValid, $"Expected valid step text, got error: {result.ErrorMessage}");
- }
+ [Test]
+ [TestCase("DllReference", "Dll Reference: Vowels in English language are {}.", "Dll Reference: Vowels in English language are .", "Dll Reference: Vowels in English language are \"aeiou\".")]
+ [TestCase("ProjectReference", "Project Reference: Vowels in English language are {}.", "Project Reference: Vowels in English language are .", "Project Reference: Vowels in English language are \"aeiou\".")]
+ public async Task ShouldGetStepsFromReference(string referenceType, string stepText, string stepValue, string parameterizedStepValue)
+ {
+ var testProjectPath = TestUtils.GetIntegrationTestSampleDirectory(referenceType);
+ var builder = new ConfigurationBuilder();
+ builder.AddInMemoryCollection(new Dictionary { { "GAUGE_PROJECT_ROOT", testProjectPath } });
+ var config = builder.Build();
+ var assemblyLocator = new AssemblyLocater(new DirectoryWrapper(), config);
+ var assemblyLoader = new AssemblyLoader(assemblyLocator, new GaugeLoadContext(assemblyLocator, _loggerFactory.CreateLogger()),
+ new ReflectionWrapper(), new ActivatorWrapper(), new StepRegistry(), _loggerFactory.CreateLogger());
- [Test]
- [TestCase("ProjectReference", "Take Screenshot in reference Project", "ReferenceProject-IDoNotExist.png")]
- [TestCase("DllReference", "Take Screenshot in reference DLL", "ReferenceDll-IDoNotExist.png")]
- public void ShouldRegisterScreenshotWriterFromReference(string referenceType, string stepText, string expected)
+ var stepValidationProcessor = new StepValidationProcessor(assemblyLoader.GetStepRegistry());
+ var message = new StepValidateRequest
{
- Environment.SetEnvironmentVariable("GAUGE_PROJECT_ROOT", TestUtils.GetIntegrationTestSampleDirectory(referenceType));
- var reflectionWrapper = new ReflectionWrapper();
- var activatorWrapper = new ActivatorWrapper();
- var path = new AssemblyLocater(new DirectoryWrapper()).GetTestAssembly();
- var assemblyLoader = new AssemblyLoader(path, new GaugeLoadContext(path), reflectionWrapper, activatorWrapper, new StepRegistry());
- var classInstanceManager = new ThreadLocal(() => assemblyLoader.GetClassInstanceManager()).Value;
- var executionInfoMapper = new ExecutionInfoMapper(assemblyLoader, activatorWrapper);
- var executionOrchestrator = new ExecutionOrchestrator(reflectionWrapper, assemblyLoader,
- classInstanceManager,
- new HookExecutor(assemblyLoader, reflectionWrapper, classInstanceManager, executionInfoMapper),
- new StepExecutor(assemblyLoader, reflectionWrapper, classInstanceManager));
+ StepText = stepText,
+ StepValue = new ProtoStepValue { StepValue = stepValue, ParameterizedStepValue = parameterizedStepValue },
+ NumberOfParameters = 1,
+ };
+ var result = await stepValidationProcessor.Process(1, message);
+
+ ClassicAssert.IsTrue(result.IsValid, $"Expected valid step text, got error: {result.ErrorMessage}");
+ }
- var executeStepProcessor = new ExecuteStepProcessor(assemblyLoader.GetStepRegistry(),
- executionOrchestrator, new TableFormatter(assemblyLoader, activatorWrapper));
- var message = new ExecuteStepRequest
- {
- ParsedStepText = stepText,
- ActualStepText = stepText
- };
+ [Test]
+ [TestCase("ProjectReference", "Take Screenshot in reference Project", "ReferenceProject-IDoNotExist.png")]
+ [TestCase("DllReference", "Take Screenshot in reference DLL", "ReferenceDll-IDoNotExist.png")]
+ public async Task ShouldRegisterScreenshotWriterFromReference(string referenceType, string stepText, string expected)
+ {
+ var testProjectPath = TestUtils.GetIntegrationTestSampleDirectory(referenceType);
+ var builder = new ConfigurationBuilder();
+ builder.AddInMemoryCollection(new Dictionary { { "GAUGE_PROJECT_ROOT", testProjectPath } });
+ var config = builder.Build();
- var result = executeStepProcessor.Process(message);
- var protoExecutionResult = result.ExecutionResult;
+ var reflectionWrapper = new ReflectionWrapper();
+ var activatorWrapper = new ActivatorWrapper();
+ var assemblyLocator = new AssemblyLocater(new DirectoryWrapper(), config);
+ var assemblyLoader = new AssemblyLoader(assemblyLocator, new GaugeLoadContext(assemblyLocator, _loggerFactory.CreateLogger()), reflectionWrapper,
+ activatorWrapper, new StepRegistry(), _loggerFactory.CreateLogger());
+ var hookRegistry = new HookRegistry(assemblyLoader);
+ var executionInfoMapper = new ExecutionInfoMapper(assemblyLoader, activatorWrapper);
+ var executionOrchestrator = new ExecutionOrchestrator(reflectionWrapper, assemblyLoader,
+ new HookExecutor(assemblyLoader, executionInfoMapper, hookRegistry, _loggerFactory.CreateLogger()),
+ new StepExecutor(assemblyLoader, _loggerFactory.CreateLogger()), config, _loggerFactory.CreateLogger());
- ClassicAssert.IsNotNull(protoExecutionResult);
- Console.WriteLine(protoExecutionResult.ScreenshotFiles[0]);
- ClassicAssert.AreEqual(protoExecutionResult.ScreenshotFiles[0], expected);
- }
+ var executeStepProcessor = new ExecuteStepProcessor(assemblyLoader.GetStepRegistry(),
+ executionOrchestrator, new TableFormatter(assemblyLoader, activatorWrapper));
- [TearDown]
- public void TearDown()
+ var message = new ExecuteStepRequest
{
- Environment.SetEnvironmentVariable("GAUGE_PROJECT_ROOT", null);
- }
+ ParsedStepText = stepText,
+ ActualStepText = stepText
+ };
+
+ var result = await executeStepProcessor.Process(1, message);
+ var protoExecutionResult = result.ExecutionResult;
+
+ ClassicAssert.IsNotNull(protoExecutionResult);
+ Console.WriteLine(protoExecutionResult.ScreenshotFiles[0]);
+ ClassicAssert.AreEqual(protoExecutionResult.ScreenshotFiles[0], expected);
}
}
\ No newline at end of file
diff --git a/integration-test/Gauge.Dotnet.IntegrationTests.csproj b/integration-test/Gauge.Dotnet.IntegrationTests.csproj
index 5a2db39..4741f80 100644
--- a/integration-test/Gauge.Dotnet.IntegrationTests.csproj
+++ b/integration-test/Gauge.Dotnet.IntegrationTests.csproj
@@ -1,16 +1,17 @@
-
- net8.0
-
+
+ net8.0
+ enable
+
-
-
-
-
-
+
+
+
+
+
-
-
-
+
+
+
diff --git a/integration-test/ImplementCodeProcessorTests.cs b/integration-test/ImplementCodeProcessorTests.cs
index 3d2b7a5..0822c4d 100644
--- a/integration-test/ImplementCodeProcessorTests.cs
+++ b/integration-test/ImplementCodeProcessorTests.cs
@@ -5,122 +5,117 @@
*----------------------------------------------------------------*/
-using System;
-using System.IO;
using Gauge.Dotnet.Processors;
using Gauge.Messages;
-using NUnit.Framework;
-using NUnit.Framework.Legacy;
-namespace Gauge.Dotnet.IntegrationTests
+namespace Gauge.Dotnet.IntegrationTests;
+
+public class StubImplementationCodeTests : IntegrationTestsBase
{
- public class StubImplementationCodeTests : IntegrationTestsBase
+ [Test]
+ public async Task ShouldProcessMessage()
{
- [Test]
- public void ShouldProcessMessage()
+ var message = new StubImplementationCodeRequest
{
- var message = new StubImplementationCodeRequest
- {
- ImplementationFilePath = "New File",
- Codes =
- {
- "method"
- }
- };
+ ImplementationFilePath = "New File",
+ Codes =
+ {
+ "method"
+ }
+ };
- var processor = new StubImplementationCodeProcessor();
- var result = processor.Process(message);
- ClassicAssert.AreEqual("StepImplementation1.cs", Path.GetFileName(result.FilePath));
- ClassicAssert.AreEqual(1, result.TextDiffs.Count);
- Console.WriteLine(result.TextDiffs[0].Content);
- ClassicAssert.True(result.TextDiffs[0].Content.Contains("namespace Sample"));
- ClassicAssert.True(result.TextDiffs[0].Content.Contains("class StepImplementation1"));
- ClassicAssert.AreEqual(result.TextDiffs[0].Span.Start, 0);
- }
+ var processor = new StubImplementationCodeProcessor(_configuration);
+ var result = await processor.Process(1, message);
+ ClassicAssert.AreEqual("StepImplementation1.cs", Path.GetFileName(result.FilePath));
+ ClassicAssert.AreEqual(1, result.TextDiffs.Count);
+ Console.WriteLine(result.TextDiffs[0].Content);
+ ClassicAssert.True(result.TextDiffs[0].Content.Contains("namespace Sample"));
+ ClassicAssert.True(result.TextDiffs[0].Content.Contains("class StepImplementation1"));
+ ClassicAssert.AreEqual(result.TextDiffs[0].Span.Start, 0);
+ }
- [Test]
- public void ShouldProcessMessageForExistingButEmptyFile()
+ [Test]
+ public async Task ShouldProcessMessageForExistingButEmptyFile()
+ {
+ var file = Path.Combine(_testProjectPath, "Empty.cs");
+ var message = new StubImplementationCodeRequest
{
- var file = Path.Combine(_testProjectPath, "Empty.cs");
- var message = new StubImplementationCodeRequest
- {
- ImplementationFilePath = file,
- Codes =
- {
- "Step Method"
- }
- };
+ ImplementationFilePath = file,
+ Codes =
+ {
+ "Step Method"
+ }
+ };
- var processor = new StubImplementationCodeProcessor();
- var result = processor.Process(message);
- ClassicAssert.AreEqual(1, result.TextDiffs.Count);
- ClassicAssert.True(result.TextDiffs[0].Content.Contains("namespace Sample"));
- ClassicAssert.True(result.TextDiffs[0].Content.Contains("class Empty"));
- StringAssert.Contains("Step Method", result.TextDiffs[0].Content);
- ClassicAssert.AreEqual(result.TextDiffs[0].Span.Start, 0);
- }
+ var processor = new StubImplementationCodeProcessor(_configuration);
+ var result = await processor.Process(1, message);
+ ClassicAssert.AreEqual(1, result.TextDiffs.Count);
+ ClassicAssert.True(result.TextDiffs[0].Content.Contains("namespace Sample"));
+ ClassicAssert.True(result.TextDiffs[0].Content.Contains("class Empty"));
+ StringAssert.Contains("Step Method", result.TextDiffs[0].Content);
+ ClassicAssert.AreEqual(result.TextDiffs[0].Span.Start, 0);
+ }
- [Test]
- public void ShouldProcessMessageForExistingClass()
+ [Test]
+ public async Task ShouldProcessMessageForExistingClass()
+ {
+ var file = Path.Combine(_testProjectPath, "StepImplementation.cs");
+ var message = new StubImplementationCodeRequest
{
- var file = Path.Combine(_testProjectPath, "StepImplementation.cs");
- var message = new StubImplementationCodeRequest
- {
- ImplementationFilePath = file,
- Codes =
- {
- "Step Method"
- }
- };
+ ImplementationFilePath = file,
+ Codes =
+ {
+ "Step Method"
+ }
+ };
- var processor = new StubImplementationCodeProcessor();
- var result = processor.Process(message);
- ClassicAssert.AreEqual(1, result.TextDiffs.Count);
- StringAssert.Contains("Step Method", result.TextDiffs[0].Content);
- ClassicAssert.AreEqual(107, result.TextDiffs[0].Span.Start);
- }
+ var processor = new StubImplementationCodeProcessor(_configuration);
+ var result = await processor.Process(1, message);
+ ClassicAssert.AreEqual(1, result.TextDiffs.Count);
+ StringAssert.Contains("Step Method", result.TextDiffs[0].Content);
+ ClassicAssert.AreEqual(100, result.TextDiffs[0].Span.Start);
+ }
- [Test]
- public void ShouldProcessMessageForExistingFileWithEmptyClass()
+ [Test]
+ public async Task ShouldProcessMessageForExistingFileWithEmptyClass()
+ {
+ var file = Path.Combine(_testProjectPath, "EmptyClass.cs");
+ var message = new StubImplementationCodeRequest
{
- var file = Path.Combine(_testProjectPath, "EmptyClass.cs");
- var message = new StubImplementationCodeRequest
- {
- ImplementationFilePath = file,
- Codes =
- {
- "Step Method"
- }
- };
+ ImplementationFilePath = file,
+ Codes =
+ {
+ "Step Method"
+ }
+ };
- var processor = new StubImplementationCodeProcessor();
- var result = processor.Process(message);
- ClassicAssert.AreEqual(1, result.TextDiffs.Count);
- StringAssert.Contains("Step Method", result.TextDiffs[0].Content);
- ClassicAssert.True(result.TextDiffs[0].Content.Contains("Step Method"));
- ClassicAssert.AreEqual(result.TextDiffs[0].Span.Start, 8);
- }
+ var processor = new StubImplementationCodeProcessor(_configuration);
+ var result = await processor.Process(1, message);
+ ClassicAssert.AreEqual(1, result.TextDiffs.Count);
+ StringAssert.Contains("Step Method", result.TextDiffs[0].Content);
+ ClassicAssert.True(result.TextDiffs[0].Content.Contains("Step Method"));
+ ClassicAssert.AreEqual(result.TextDiffs[0].Span.Start, 8);
+ }
- [Test]
- public void ShouldProcessMessageForExistingFileWithSomeComments()
+ [Test]
+ public async Task ShouldProcessMessageForExistingFileWithSomeComments()
+ {
+ var file = Path.Combine(_testProjectPath, "CommentFile.cs");
+ var message = new StubImplementationCodeRequest
{
- var file = Path.Combine(_testProjectPath, "CommentFile.cs");
- var message = new StubImplementationCodeRequest
- {
- ImplementationFilePath = file,
- Codes =
- {
- "Step Method"
- }
- };
+ ImplementationFilePath = file,
+ Codes =
+ {
+ "Step Method"
+ }
+ };
- var processor = new StubImplementationCodeProcessor();
- var result = processor.Process(message);
- ClassicAssert.AreEqual(1, result.TextDiffs.Count);
- StringAssert.Contains("Step Method", result.TextDiffs[0].Content);
- ClassicAssert.True(result.TextDiffs[0].Content.Contains("namespace Sample"));
- ClassicAssert.True(result.TextDiffs[0].Content.Contains("class CommentFile"));
- ClassicAssert.AreEqual(result.TextDiffs[0].Span.Start, 3);
- }
+ var processor = new StubImplementationCodeProcessor(_configuration);
+ var result = await processor.Process(1, message);
+ ClassicAssert.AreEqual(1, result.TextDiffs.Count);
+ StringAssert.Contains("Step Method", result.TextDiffs[0].Content);
+ ClassicAssert.True(result.TextDiffs[0].Content.Contains("namespace Sample"));
+ ClassicAssert.True(result.TextDiffs[0].Content.Contains("class CommentFile"));
+ ClassicAssert.AreEqual(result.TextDiffs[0].Span.Start, 3);
}
}
\ No newline at end of file
diff --git a/integration-test/IntegrationTestsBase.cs b/integration-test/IntegrationTestsBase.cs
index 45a3115..63b6303 100644
--- a/integration-test/IntegrationTestsBase.cs
+++ b/integration-test/IntegrationTestsBase.cs
@@ -5,39 +5,35 @@
*----------------------------------------------------------------*/
-using System;
-using System.IO;
using System.Runtime.Serialization.Json;
using System.Text;
using Gauge.CSharp.Lib;
-using NUnit.Framework;
+using Microsoft.Extensions.Configuration;
+using Microsoft.Extensions.Logging;
-namespace Gauge.Dotnet.IntegrationTests
-{
- public class IntegrationTestsBase
- {
- protected string _testProjectPath = TestUtils.GetIntegrationTestSampleDirectory();
+namespace Gauge.Dotnet.IntegrationTests;
- [SetUp]
- public void Setup()
- {
- Environment.SetEnvironmentVariable("GAUGE_PROJECT_ROOT", _testProjectPath);
- }
+public class IntegrationTestsBase
+{
+ protected readonly ILoggerFactory _loggerFactory = new LoggerFactory();
+ protected IConfiguration _configuration;
+ protected string _testProjectPath = TestUtils.GetIntegrationTestSampleDirectory();
- public static string SerializeTable(Table table)
- {
- var serializer = new DataContractJsonSerializer(typeof(Table));
- using (var memoryStream = new MemoryStream())
- {
- serializer.WriteObject(memoryStream, table);
- return Encoding.UTF8.GetString(memoryStream.ToArray());
- }
- }
+ [SetUp]
+ public void Setup()
+ {
+ var builder = new ConfigurationBuilder();
+ builder.AddInMemoryCollection(new Dictionary { { "GAUGE_PROJECT_ROOT", _testProjectPath } });
+ _configuration = builder.Build();
+ }
- [TearDown]
- public void TearDown()
+ public static string SerializeTable(Table table)
+ {
+ var serializer = new DataContractJsonSerializer(typeof(Table));
+ using (var memoryStream = new MemoryStream())
{
- Environment.SetEnvironmentVariable("GAUGE_PROJECT_ROOT", null);
+ serializer.WriteObject(memoryStream, table);
+ return Encoding.UTF8.GetString(memoryStream.ToArray());
}
}
}
\ No newline at end of file
diff --git a/integration-test/RefactorHelperTests.cs b/integration-test/RefactorHelperTests.cs
index c38b9b5..61140e0 100644
--- a/integration-test/RefactorHelperTests.cs
+++ b/integration-test/RefactorHelperTests.cs
@@ -5,226 +5,216 @@
*----------------------------------------------------------------*/
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Linq;
using Gauge.CSharp.Lib.Attribute;
using Gauge.Dotnet.Models;
using Microsoft.CodeAnalysis.CSharp;
using Microsoft.CodeAnalysis.CSharp.Syntax;
-using NUnit.Framework;
-using NUnit.Framework.Legacy;
-namespace Gauge.Dotnet.IntegrationTests
+namespace Gauge.Dotnet.IntegrationTests;
+
+[TestFixture]
+internal class RefactorHelperTests
{
- [TestFixture]
- internal class RefactorHelperTests
+ [SetUp]
+ public void Setup()
{
- [SetUp]
- public void Setup()
- {
- Environment.SetEnvironmentVariable("GAUGE_PROJECT_ROOT", _testProjectPath);
+ File.Copy(Path.Combine(_testProjectPath, "RefactoringSample.cs"),
+ Path.Combine(_testProjectPath, "RefactoringSample.copy"), true);
+ }
- File.Copy(Path.Combine(_testProjectPath, "RefactoringSample.cs"),
- Path.Combine(_testProjectPath, "RefactoringSample.copy"), true);
- }
+ [TearDown]
+ public void TearDown()
+ {
+ var sourceFileName = Path.Combine(_testProjectPath, "RefactoringSample.copy");
+ File.Copy(sourceFileName, Path.Combine(_testProjectPath, "RefactoringSample.cs"), true);
+ File.Delete(sourceFileName);
+ }
- [TearDown]
- public void TearDown()
- {
- var sourceFileName = Path.Combine(_testProjectPath, "RefactoringSample.copy");
- File.Copy(sourceFileName, Path.Combine(_testProjectPath, "RefactoringSample.cs"), true);
- File.Delete(sourceFileName);
- Environment.SetEnvironmentVariable("GAUGE_PROJECT_ROOT", null);
- }
+ private readonly string _testProjectPath = TestUtils.GetIntegrationTestSampleDirectory();
- private readonly string _testProjectPath = TestUtils.GetIntegrationTestSampleDirectory();
+ private void ClassicAssertStepAttributeWithTextExists(RefactoringChange result, string methodName, string text)
+ {
+ var name = methodName.Split('.').Last().Split('-').First();
+ var tree =
+ CSharpSyntaxTree.ParseText(result.FileContent);
+ var root = tree.GetRoot();
+
+ var stepTexts = root.DescendantNodes().OfType()
+ .Select(
+ node => new { node, attributeSyntaxes = node.AttributeLists.SelectMany(syntax => syntax.Attributes) })
+ .Where(t => string.CompareOrdinal(t.node.Identifier.ValueText, name) == 0
+ &&
+ t.attributeSyntaxes.Any(
+ syntax => string.CompareOrdinal(syntax.ToFullString(), typeof(Step).ToString()) > 0))
+ .SelectMany(t => t.node.AttributeLists.SelectMany(syntax => syntax.Attributes))
+ .SelectMany(syntax => syntax.ArgumentList.Arguments)
+ .Select(syntax => syntax.GetText().ToString().Trim('"'));
+ ClassicAssert.True(stepTexts.Contains(text));
+ }
- private void ClassicAssertStepAttributeWithTextExists(RefactoringChange result, string methodName, string text)
- {
- var name = methodName.Split('.').Last().Split('-').First();
- var tree =
- CSharpSyntaxTree.ParseText(result.FileContent);
- var root = tree.GetRoot();
-
- var stepTexts = root.DescendantNodes().OfType()
- .Select(
- node => new { node, attributeSyntaxes = node.AttributeLists.SelectMany(syntax => syntax.Attributes) })
- .Where(t => string.CompareOrdinal(t.node.Identifier.ValueText, name) == 0
- &&
- t.attributeSyntaxes.Any(
- syntax => string.CompareOrdinal(syntax.ToFullString(), typeof(Step).ToString()) > 0))
- .SelectMany(t => t.node.AttributeLists.SelectMany(syntax => syntax.Attributes))
- .SelectMany(syntax => syntax.ArgumentList.Arguments)
- .Select(syntax => syntax.GetText().ToString().Trim('"'));
- ClassicAssert.True(stepTexts.Contains(text));
- }
-
- private void ClassicAssertParametersExist(RefactoringChange result, string methodName,
- IReadOnlyList parameters)
- {
- var name = methodName.Split('.').Last().Split('-').First();
- var tree =
- CSharpSyntaxTree.ParseText(result.FileContent);
- var root = tree.GetRoot();
- var methodParameters = root.DescendantNodes().OfType()
- .Where(syntax => string.CompareOrdinal(syntax.Identifier.Text, name) == 0)
- .Select(syntax => syntax.ParameterList)
- .SelectMany(syntax => syntax.Parameters)
- .Select(syntax => syntax.Identifier.Text)
- .ToArray();
-
- for (var i = 0; i < parameters.Count; i++)
- ClassicAssert.AreEqual(parameters[i], methodParameters[i]);
- }
-
- [Test]
- public void ShouldAddParameters()
- {
- const string newStepValue = "Refactoring Say to in ";
- var gaugeMethod = new GaugeMethod
- {
- Name = "RefactoringSaySomething",
- ClassName = "RefactoringSample",
- FileName = Path.Combine(_testProjectPath, "RefactoringSample.cs")
- };
-
- var parameterPositions = new[]
- {new Tuple(0, 0), new Tuple(1, 1), new Tuple(-1, 2)};
- var changes = RefactorHelper.Refactor(gaugeMethod, parameterPositions,
- new List { "what", "who", "where" },
- newStepValue);
- ClassicAssertStepAttributeWithTextExists(changes, gaugeMethod.Name, newStepValue);
- ClassicAssertParametersExist(changes, gaugeMethod.Name, new[] { "what", "who", "where" });
- }
-
- [Test]
- public void ShouldAddParametersWhenNoneExisted()
+ private void ClassicAssertParametersExist(RefactoringChange result, string methodName,
+ IReadOnlyList parameters)
+ {
+ var name = methodName.Split('.').Last().Split('-').First();
+ var tree =
+ CSharpSyntaxTree.ParseText(result.FileContent);
+ var root = tree.GetRoot();
+ var methodParameters = root.DescendantNodes().OfType()
+ .Where(syntax => string.CompareOrdinal(syntax.Identifier.Text, name) == 0)
+ .Select(syntax => syntax.ParameterList)
+ .SelectMany(syntax => syntax.Parameters)
+ .Select(syntax => syntax.Identifier.Text)
+ .ToArray();
+
+ for (var i = 0; i < parameters.Count; i++)
+ ClassicAssert.AreEqual(parameters[i], methodParameters[i]);
+ }
+
+ [Test]
+ public void ShouldAddParameters()
+ {
+ const string newStepValue = "Refactoring Say to in ";
+ var gaugeMethod = new GaugeMethod
{
- const string newStepValue = "Refactoring this is a test step ";
- var gaugeMethod = new GaugeMethod
- {
- Name = "RefactoringSampleTest",
- ClassName = "RefactoringSample",
- FileName = Path.Combine(_testProjectPath, "RefactoringSample.cs")
- };
- var parameterPositions = new[] { new Tuple(-1, 0) };
-
- var changes =
- RefactorHelper.Refactor(gaugeMethod, parameterPositions, new List { "foo" }, newStepValue);
-
- ClassicAssertStepAttributeWithTextExists(changes, gaugeMethod.Name, newStepValue);
- ClassicAssertParametersExist(changes, gaugeMethod.Name, new[] { "foo" });
- }
-
- [Test]
- public void ShouldAddParametersWithReservedKeywordName()
+ Name = "RefactoringSaySomething",
+ ClassName = "RefactoringSample",
+ FileName = Path.Combine(_testProjectPath, "RefactoringSample.cs")
+ };
+
+ var parameterPositions = new[]
+ {new Tuple(0, 0), new Tuple(1, 1), new Tuple(-1, 2)};
+ var changes = RefactorHelper.Refactor(gaugeMethod, parameterPositions,
+ new List { "what", "who", "where" },
+ newStepValue);
+ ClassicAssertStepAttributeWithTextExists(changes, gaugeMethod.Name, newStepValue);
+ ClassicAssertParametersExist(changes, gaugeMethod.Name, new[] { "what", "who", "where" });
+ }
+
+ [Test]
+ public void ShouldAddParametersWhenNoneExisted()
+ {
+ const string newStepValue = "Refactoring this is a test step ";
+ var gaugeMethod = new GaugeMethod
{
- const string newStepValue = "Refactoring this is a test step ";
+ Name = "RefactoringSampleTest",
+ ClassName = "RefactoringSample",
+ FileName = Path.Combine(_testProjectPath, "RefactoringSample.cs")
+ };
+ var parameterPositions = new[] { new Tuple(-1, 0) };
+
+ var changes =
+ RefactorHelper.Refactor(gaugeMethod, parameterPositions, new List { "foo" }, newStepValue);
+
+ ClassicAssertStepAttributeWithTextExists(changes, gaugeMethod.Name, newStepValue);
+ ClassicAssertParametersExist(changes, gaugeMethod.Name, new[] { "foo" });
+ }
- var gaugeMethod = new GaugeMethod
- {
- Name = "RefactoringSampleTest",
- ClassName = "RefactoringSample",
- FileName = Path.Combine(_testProjectPath, "RefactoringSample.cs")
- };
- var parameterPositions = new[] { new Tuple(-1, 0) };
+ [Test]
+ public void ShouldAddParametersWithReservedKeywordName()
+ {
+ const string newStepValue = "Refactoring this is a test step ";
- var changes = RefactorHelper.Refactor(gaugeMethod, parameterPositions, new List { "class" },
- newStepValue);
+ var gaugeMethod = new GaugeMethod
+ {
+ Name = "RefactoringSampleTest",
+ ClassName = "RefactoringSample",
+ FileName = Path.Combine(_testProjectPath, "RefactoringSample.cs")
+ };
+ var parameterPositions = new[] { new Tuple(-1, 0) };
- ClassicAssertStepAttributeWithTextExists(changes, gaugeMethod.Name, newStepValue);
- ClassicAssertParametersExist(changes, gaugeMethod.Name, new[] { "@class" });
- }
+ var changes = RefactorHelper.Refactor(gaugeMethod, parameterPositions, new List { "class" },
+ newStepValue);
+
+ ClassicAssertStepAttributeWithTextExists(changes, gaugeMethod.Name, newStepValue);
+ ClassicAssertParametersExist(changes, gaugeMethod.Name, new[] { "@class" });
+ }
- [Test]
- public void ShouldRefactorAndReturnFilesChanged()
+ [Test]
+ public void ShouldRefactorAndReturnFilesChanged()
+ {
+ var gaugeMethod = new GaugeMethod
{
- var gaugeMethod = new GaugeMethod
- {
- Name = "RefactoringContext",
- ClassName = "RefactoringSample",
- FileName = Path.Combine(_testProjectPath, "RefactoringSample.cs")
- };
+ Name = "RefactoringContext",
+ ClassName = "RefactoringSample",
+ FileName = Path.Combine(_testProjectPath, "RefactoringSample.cs")
+ };
- var expectedPath = Path.GetFullPath(Path.Combine(_testProjectPath, "RefactoringSample.cs"));
+ var expectedPath = Path.GetFullPath(Path.Combine(_testProjectPath, "RefactoringSample.cs"));
- var changes =
- RefactorHelper.Refactor(gaugeMethod, new List>(), new List(), "foo");
+ var changes =
+ RefactorHelper.Refactor(gaugeMethod, new List>(), new List(), "foo");
- ClassicAssert.AreEqual(expectedPath, changes.FileName);
- }
+ ClassicAssert.AreEqual(expectedPath, changes.FileName);
+ }
- [Test]
- public void ShouldRefactorAttributeText()
+ [Test]
+ public void ShouldRefactorAttributeText()
+ {
+ var gaugeMethod = new GaugeMethod
{
- var gaugeMethod = new GaugeMethod
- {
- Name = "RefactoringContext",
- ClassName = "RefactoringSample",
- FileName = Path.Combine(_testProjectPath, "RefactoringSample.cs")
- };
- var changes = RefactorHelper.Refactor(gaugeMethod, new List>(), new List(), "foo");
-
- ClassicAssertStepAttributeWithTextExists(changes, gaugeMethod.Name, "foo");
- }
-
- [Test]
- public void ShouldRemoveParameters()
+ Name = "RefactoringContext",
+ ClassName = "RefactoringSample",
+ FileName = Path.Combine(_testProjectPath, "RefactoringSample.cs")
+ };
+ var changes = RefactorHelper.Refactor(gaugeMethod, new List>(), new List(), "foo");
+
+ ClassicAssertStepAttributeWithTextExists(changes, gaugeMethod.Name, "foo");
+ }
+
+ [Test]
+ public void ShouldRemoveParameters()
+ {
+ var gaugeMethod = new GaugeMethod
{
- var gaugeMethod = new GaugeMethod
- {
- Name = "RefactoringSaySomething",
- ClassName = "RefactoringSample",
- FileName = Path.Combine(_testProjectPath, "RefactoringSample.cs")
- };
- var parameterPositions = new[] { new Tuple(0, 0) };
-
- var changes = RefactorHelper.Refactor(gaugeMethod, parameterPositions, new List(),
- "Refactoring Say to someone");
-
- ClassicAssertParametersExist(changes, gaugeMethod.Name, new[] { "what" });
- }
-
- [Test]
- public void ShouldRemoveParametersInAnyOrder()
+ Name = "RefactoringSaySomething",
+ ClassName = "RefactoringSample",
+ FileName = Path.Combine(_testProjectPath, "RefactoringSample.cs")
+ };
+ var parameterPositions = new[] { new Tuple(0, 0) };
+
+ var changes = RefactorHelper.Refactor(gaugeMethod, parameterPositions, new List(),
+ "Refactoring Say to someone");
+
+ ClassicAssertParametersExist(changes, gaugeMethod.Name, new[] { "what" });
+ }
+
+ [Test]
+ public void ShouldRemoveParametersInAnyOrder()
+ {
+ var gaugeMethod = new GaugeMethod
{
- var gaugeMethod = new GaugeMethod
- {
- Name = "RefactoringSaySomething",
- ClassName = "RefactoringSample",
- FileName = Path.Combine(_testProjectPath, "RefactoringSample.cs")
- };
+ Name = "RefactoringSaySomething",
+ ClassName = "RefactoringSample",
+ FileName = Path.Combine(_testProjectPath, "RefactoringSample.cs")
+ };
- var parameterPositions = new[] { new Tuple(1, 0) };
+ var parameterPositions = new[] { new Tuple(1, 0) };
- var changes = RefactorHelper.Refactor(gaugeMethod, parameterPositions, new List(),
- "Refactoring Say something to ");
+ var changes = RefactorHelper.Refactor(gaugeMethod, parameterPositions, new List(),
+ "Refactoring Say something to ");
- ClassicAssertParametersExist(changes, gaugeMethod.Name, new[] { "who" });
- }
+ ClassicAssertParametersExist(changes, gaugeMethod.Name, new[] { "who" });
+ }
+
+ [Test]
+ public void ShouldReorderParameters()
+ {
+ const string newStepValue = "Refactoring Say to ";
- [Test]
- public void ShouldReorderParameters()
+ var gaugeMethod = new GaugeMethod
{
- const string newStepValue = "Refactoring Say to ";
-
- var gaugeMethod = new GaugeMethod
- {
- Name = "RefactoringSaySomething",
- ClassName = "RefactoringSample",
- FileName = Path.Combine(_testProjectPath, "RefactoringSample.cs")
- };
-
- var parameterPositions = new[] { new Tuple(0, 1), new Tuple(1, 0) };
- var result = RefactorHelper.Refactor(gaugeMethod, parameterPositions, new List { "who", "what" },
- newStepValue);
-
- ClassicAssertStepAttributeWithTextExists(result, gaugeMethod.Name, newStepValue);
- ClassicAssertParametersExist(result, gaugeMethod.Name, new[] { "who", "what" });
- ClassicAssert.True(result.Diffs.Any(d => d.Content == "\"Refactoring Say to \""));
- ClassicAssert.True(result.Diffs.Any(d => d.Content == "(string who,string what)"));
- }
+ Name = "RefactoringSaySomething",
+ ClassName = "RefactoringSample",
+ FileName = Path.Combine(_testProjectPath, "RefactoringSample.cs")
+ };
+
+ var parameterPositions = new[] { new Tuple(0, 1), new Tuple(1, 0) };
+ var result = RefactorHelper.Refactor(gaugeMethod, parameterPositions, new List { "who", "what" },
+ newStepValue);
+
+ ClassicAssertStepAttributeWithTextExists(result, gaugeMethod.Name, newStepValue);
+ ClassicAssertParametersExist(result, gaugeMethod.Name, new[] { "who", "what" });
+ ClassicAssert.True(result.Diffs.Any(d => d.Content == "\"Refactoring Say to \""));
+ ClassicAssert.True(result.Diffs.Any(d => d.Content == "(string who,string what)"));
}
}
\ No newline at end of file
diff --git a/integration-test/RefactorProcessorTests.cs b/integration-test/RefactorProcessorTests.cs
index d1a1fb3..1fb0091 100644
--- a/integration-test/RefactorProcessorTests.cs
+++ b/integration-test/RefactorProcessorTests.cs
@@ -5,13 +5,9 @@
*----------------------------------------------------------------*/
-using System;
-using System.IO;
using Gauge.Dotnet.Models;
using Gauge.Dotnet.Processors;
using Gauge.Messages;
-using NUnit.Framework;
-using NUnit.Framework.Legacy;
namespace Gauge.Dotnet.IntegrationTests
{
@@ -22,14 +18,12 @@ public class RefactorProcessorTests
[SetUp]
public void Setup()
{
- Environment.SetEnvironmentVariable("GAUGE_PROJECT_ROOT", _testProjectPath);
-
File.Copy(Path.Combine(_testProjectPath, "RefactoringSample.cs"),
Path.Combine(_testProjectPath, "RefactoringSample.copy1"), true);
}
[Test]
- public void ShouldAddParameters()
+ public async Task ShouldAddParameters()
{
const string parameterizedStepText = "Refactoring 1 Say to ";
const string stepValue = "Refactoring 1 Say {} to {}";
@@ -65,7 +59,7 @@ public void ShouldAddParameters()
};
var refactorProcessor = new RefactorProcessor(stepRegistry);
- var result = refactorProcessor.Process(message);
+ var result = await refactorProcessor.Process(1, message);
ClassicAssert.IsTrue(result.Success);
}
@@ -75,7 +69,6 @@ public void TearDown()
var sourceFileName = Path.Combine(_testProjectPath, "RefactoringSample.copy1");
File.Copy(sourceFileName, Path.Combine(_testProjectPath, "RefactoringSample.cs"), true);
File.Delete(sourceFileName);
- Environment.SetEnvironmentVariable("GAUGE_PROJECT_ROOT", null);
}
}
}
\ No newline at end of file
diff --git a/integration-test/Usings.cs b/integration-test/Usings.cs
new file mode 100644
index 0000000..9064743
--- /dev/null
+++ b/integration-test/Usings.cs
@@ -0,0 +1,2 @@
+global using NUnit.Framework;
+global using NUnit.Framework.Legacy;
\ No newline at end of file
diff --git a/src/AssemblyLoader.cs b/src/AssemblyLoader.cs
index 768d160..d119e83 100644
--- a/src/AssemblyLoader.cs
+++ b/src/AssemblyLoader.cs
@@ -5,184 +5,178 @@
*----------------------------------------------------------------*/
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Linq;
using System.Reflection;
using System.Text.RegularExpressions;
using Gauge.Dotnet.Extensions;
using Gauge.Dotnet.Models;
using Gauge.Dotnet.Wrappers;
-namespace Gauge.Dotnet
+namespace Gauge.Dotnet;
+
+public class AssemblyLoader : IAssemblyLoader
{
- public class AssemblyLoader : IAssemblyLoader
+ private const string GaugeLibAssemblyName = "Gauge.CSharp.Lib";
+ private readonly IReflectionWrapper _reflectionWrapper;
+ private readonly IGaugeLoadContext _gaugeLoadContext;
+ private Assembly _targetLibAssembly;
+ private object _classInstanceManager;
+
+ private readonly IActivatorWrapper _activatorWrapper;
+ private readonly IStepRegistry _registry;
+ private readonly ILogger _logger;
+
+ public AssemblyLoader(IAssemblyLocater locater, IGaugeLoadContext gaugeLoadContext, IReflectionWrapper reflectionWrapper,
+ IActivatorWrapper activatorWrapper, IStepRegistry registry, ILogger logger)
{
- private const string GaugeLibAssemblyName = "Gauge.CSharp.Lib";
- private readonly IReflectionWrapper _reflectionWrapper;
- private readonly IGaugeLoadContext _gaugeLoadContext;
- private Assembly _targetLibAssembly;
+ var assemblyPath = locater.GetTestAssembly();
+ _reflectionWrapper = reflectionWrapper;
+ _activatorWrapper = activatorWrapper;
+ AssembliesReferencingGaugeLib = new List();
+ _registry = registry;
+ _logger = logger;
+
+ _logger.LogDebug("Loading assembly from : {AssemblyPath}", assemblyPath);
+ _gaugeLoadContext = gaugeLoadContext;
+ this._targetLibAssembly = _gaugeLoadContext.LoadFromAssemblyName(new AssemblyName(GaugeLibAssemblyName));
+ ScanAndLoad(assemblyPath);
+ AssembliesReferencingGaugeLib = _gaugeLoadContext.GetAssembliesReferencingGaugeLib().ToList();
+ _logger.LogDebug("Number of AssembliesReferencingGaugeLib : {AssembliesReferencingGaugeLibCount}", AssembliesReferencingGaugeLib.Count);
+ SetDefaultTypes();
+ _registry = GetStepRegistry();
+ }
- private readonly IActivatorWrapper _activatorWrapper;
- private readonly IStepRegistry _registry;
+ public List AssembliesReferencingGaugeLib { get; }
+ public Type ScreenshotWriter { get; private set; }
+ public Type ClassInstanceManagerType { get; private set; }
+
+ public IEnumerable GetMethods(LibType type)
+ {
+ var attributeType = _targetLibAssembly.ExportedTypes.First(x => x.FullName == type.FullName());
- public AssemblyLoader(AssemblyPath assemblyPath, IGaugeLoadContext gaugeLoadContext,
- IReflectionWrapper reflectionWrapper, IActivatorWrapper activatorWrapper, IStepRegistry registry)
+ IEnumerable MethodSelector(Type t)
{
- _reflectionWrapper = reflectionWrapper;
- _activatorWrapper = activatorWrapper;
- AssembliesReferencingGaugeLib = new List();
- _registry = registry;
-
- Logger.Debug($"Loading assembly from : {assemblyPath}");
- _gaugeLoadContext = gaugeLoadContext;
- this._targetLibAssembly = _gaugeLoadContext.LoadFromAssemblyName(new AssemblyName(GaugeLibAssemblyName));
- ScanAndLoad(assemblyPath);
- AssembliesReferencingGaugeLib = _gaugeLoadContext.GetAssembliesReferencingGaugeLib().ToList();
- Logger.Debug($"Number of AssembliesReferencingGaugeLib : {AssembliesReferencingGaugeLib.Count()}");
- SetDefaultTypes();
+ return _reflectionWrapper.GetMethods(t)
+ .Where(info => info.GetCustomAttributes(false).Any(attributeType.IsInstanceOfType));
}
+ return AssembliesReferencingGaugeLib.SelectMany(assembly => assembly.ExportedTypes.SelectMany(MethodSelector));
+ }
- public List AssembliesReferencingGaugeLib { get; }
- public Type ScreenshotWriter { get; private set; }
- public Type ClassInstanceManagerType { get; private set; }
-
- public IEnumerable GetMethods(LibType type)
+ public Type GetLibType(LibType type)
+ {
+ try
{
- var attributeType = _targetLibAssembly.ExportedTypes.First(x => x.FullName == type.FullName());
-
- IEnumerable MethodSelector(Type t)
- {
- return _reflectionWrapper.GetMethods(t)
- .Where(info => info.GetCustomAttributes(false).Any(attributeType.IsInstanceOfType));
- }
- return AssembliesReferencingGaugeLib.SelectMany(assembly => assembly.ExportedTypes.SelectMany(MethodSelector));
+ return _targetLibAssembly.ExportedTypes.First(t => t.FullName == type.FullName());
}
-
- public Type GetLibType(LibType type)
+ catch (InvalidOperationException ex)
{
- try
- {
- return _targetLibAssembly.ExportedTypes.First(t => t.FullName == type.FullName());
- }
- catch (InvalidOperationException ex)
- {
- throw new InvalidOperationException($"Cannot locate {type.FullName()} in Gauge.CSharp.Lib", ex);
- }
+ throw new InvalidOperationException($"Cannot locate {type.FullName()} in Gauge.CSharp.Lib", ex);
}
+ }
- public IStepRegistry GetStepRegistry()
+ public IStepRegistry GetStepRegistry()
+ {
+ _logger.LogDebug("Building StepRegistry...");
+ var infos = GetMethods(LibType.Step);
+ _logger.LogDebug("{InfosCount} Step implementations found. Adding to registry...", infos.Count());
+ foreach (var info in infos)
{
- Logger.Debug("Building StepRegistry...");
- var infos = GetMethods(LibType.Step);
- Logger.Debug($"{infos.Count()} Step implementations found. Adding to registry...");
- foreach (var info in infos)
+ var stepTexts = Attribute.GetCustomAttributes(info).Where(x => x.GetType().FullName == LibType.Step.FullName())
+ .SelectMany(x => x.GetType().GetProperty("Names").GetValue(x, null) as string[]);
+ foreach (var stepText in stepTexts)
{
- var stepTexts = info.GetCustomAttributes().Where(x => x.GetType().FullName == LibType.Step.FullName())
- .SelectMany(x => x.GetType().GetProperty("Names").GetValue(x, null) as string[]);
- foreach (var stepText in stepTexts)
+ var stepValue = GetStepValue(stepText);
+ if (_registry.ContainsStep(stepValue))
{
- var stepValue = GetStepValue(stepText);
- if (_registry.ContainsStep(stepValue))
- {
- Logger.Debug($"'{stepValue}': implementation found in StepRegistry, setting reflected methodInfo");
- _registry.MethodFor(stepValue).MethodInfo = info;
- _registry.MethodFor(stepValue).ContinueOnFailure = info.IsRecoverableStep(this);
- }
- else
+ _logger.LogDebug("'{StepValue}': implementation found in StepRegistry, setting reflected methodInfo", stepValue);
+ _registry.MethodFor(stepValue).MethodInfo = info;
+ _registry.MethodFor(stepValue).ContinueOnFailure = info.IsRecoverableStep(this);
+ }
+ else
+ {
+ _logger.LogDebug("'{StepValue}': no implementation in StepRegistry, adding via reflection", stepValue);
+ var hasAlias = stepTexts.Count() > 1;
+ var stepMethod = new GaugeMethod
{
- Logger.Debug($"'{stepValue}': no implementation in StepRegistry, adding via reflection");
- var hasAlias = stepTexts.Count() > 1;
- var stepMethod = new GaugeMethod
- {
- Name = info.FullyQuallifiedName(),
- ParameterCount = info.GetParameters().Length,
- StepText = stepText,
- HasAlias = hasAlias,
- Aliases = stepTexts,
- MethodInfo = info,
- ContinueOnFailure = info.IsRecoverableStep(this),
- StepValue = stepValue,
- IsExternal = true,
- };
- _registry.AddStep(stepValue, stepMethod);
- }
-
+ Name = info.FullyQuallifiedName(),
+ ParameterCount = info.GetParameters().Length,
+ StepText = stepText,
+ HasAlias = hasAlias,
+ Aliases = stepTexts,
+ MethodInfo = info,
+ ContinueOnFailure = info.IsRecoverableStep(this),
+ StepValue = stepValue,
+ IsExternal = true,
+ };
+ _registry.AddStep(stepValue, stepMethod);
}
+
}
- return _registry;
}
+ return _registry;
+ }
- public object GetClassInstanceManager()
- {
- if (ClassInstanceManagerType == null) return null;
- var classInstanceManager = _activatorWrapper.CreateInstance(ClassInstanceManagerType);
- Logger.Debug("Loaded Instance Manager of Type:" + classInstanceManager.GetType().FullName);
- _reflectionWrapper.InvokeMethod(ClassInstanceManagerType, classInstanceManager, "Initialize",
- AssembliesReferencingGaugeLib);
- return classInstanceManager;
- }
+ public object GetClassInstanceManager()
+ {
+ if (_classInstanceManager != null) return _classInstanceManager;
+ if (ClassInstanceManagerType == null) return null;
+ _classInstanceManager = _activatorWrapper.CreateInstance(ClassInstanceManagerType);
+ _logger.LogDebug("Loaded Instance Manager of Type: {ClassInstanceManagerType}", _classInstanceManager.GetType().FullName);
+ _reflectionWrapper.InvokeMethod(ClassInstanceManagerType, _classInstanceManager, "Initialize", AssembliesReferencingGaugeLib);
+ return _classInstanceManager;
+ }
+
+ private static string GetStepValue(string stepText)
+ {
+ return Regex.Replace(stepText, @"(<.*?>)", @"{}");
+ }
- private static string GetStepValue(string stepText)
+ private void ScanAndLoad(string path)
+ {
+ var assembly = _gaugeLoadContext.LoadFromAssemblyName(new AssemblyName(Path.GetFileNameWithoutExtension(path)));
+ foreach (var reference in assembly.GetReferencedAssemblies())
{
- return Regex.Replace(stepText, @"(<.*?>)", @"{}");
+ _gaugeLoadContext.LoadFromAssemblyName(reference);
}
-
- private void ScanAndLoad(string path)
+ try
{
- var assembly = _gaugeLoadContext.LoadFromAssemblyName(new AssemblyName(Path.GetFileNameWithoutExtension(path)));
- foreach (var reference in assembly.GetReferencedAssemblies())
- {
- _gaugeLoadContext.LoadFromAssemblyName(reference);
- }
- try
- {
- if (ScreenshotWriter is null)
- ScanForCustomScreenshotWriter(assembly.ExportedTypes);
+ var exportedTypes = _gaugeLoadContext.GetAssembliesReferencingGaugeLib().SelectMany(x => x.ExportedTypes).ToList();
+ if (ScreenshotWriter is null)
+ ScanForCustomScreenshotWriter(exportedTypes);
- if (ClassInstanceManagerType is null)
- ScanForCustomInstanceManager(assembly.ExportedTypes);
- }
- catch (ReflectionTypeLoadException ex)
- {
- foreach (var e in ex.LoaderExceptions)
- Logger.Error(e.ToString());
- }
+ if (ClassInstanceManagerType is null)
+ ScanForCustomInstanceManager(exportedTypes);
}
-
- private void ScanForCustomScreenshotWriter(IEnumerable types)
+ catch (ReflectionTypeLoadException ex)
{
- var deprecatedImplementations = types.Where(type => type.GetInterfaces().Any(t => t.FullName == "Gauge.CSharp.Lib.ICustomScreenshotGrabber"));
- if (deprecatedImplementations.Any())
- {
- Logger.Error("These types implement DEPRECATED ICustomScreenshotGrabber interface and will not be used. Use ICustomScreenshotWriter instead.\n" +
- deprecatedImplementations.Select(x => x.FullName).Aggregate((a, b) => $"{a}, {b}"));
- }
- var implementingTypes = types.Where(type =>
- type.GetInterfaces().Any(t => t.FullName == "Gauge.CSharp.Lib.ICustomScreenshotWriter"));
- ScreenshotWriter = implementingTypes.FirstOrDefault();
- if (ScreenshotWriter is null) return;
- var csg = _activatorWrapper.CreateInstance(ScreenshotWriter);
- var gaugeScreenshotsType = _targetLibAssembly.ExportedTypes.First(x => x.FullName == "Gauge.CSharp.Lib.GaugeScreenshots");
- _reflectionWrapper.InvokeMethod(gaugeScreenshotsType, null, "RegisterCustomScreenshotWriter",
- BindingFlags.Static | BindingFlags.Public, new[] {csg});
+ foreach (var e in ex.LoaderExceptions)
+ _logger.LogError(e.ToString());
}
+ }
- private void ScanForCustomInstanceManager(IEnumerable types)
- {
- var implementingTypes = types.Where(type =>
- type.GetInterfaces().Any(t => t.FullName == "Gauge.CSharp.Lib.IClassInstanceManager"));
- ClassInstanceManagerType = implementingTypes.FirstOrDefault();
- }
+ private void ScanForCustomScreenshotWriter(IEnumerable types)
+ {
+ var implementingTypes = types.Where(type => type.GetInterfaces().Any(t => t.FullName == "Gauge.CSharp.Lib.ICustomScreenshotWriter"));
+ ScreenshotWriter = implementingTypes.FirstOrDefault();
+ if (ScreenshotWriter is null) return;
+ var csg = _activatorWrapper.CreateInstance(ScreenshotWriter);
+ var gaugeScreenshotsType = _targetLibAssembly.ExportedTypes.First(x => x.FullName == "Gauge.CSharp.Lib.GaugeScreenshots");
+ _reflectionWrapper.InvokeMethod(gaugeScreenshotsType, null, "RegisterCustomScreenshotWriter",
+ BindingFlags.Static | BindingFlags.Public, new[] { csg });
+ }
- private void SetDefaultTypes()
- {
- ClassInstanceManagerType = ClassInstanceManagerType ??
- _targetLibAssembly.GetType(LibType.DefaultClassInstanceManager.FullName());
- ScreenshotWriter = ScreenshotWriter ??
- _targetLibAssembly.GetType(LibType.DefaultScreenshotWriter.FullName());
- }
+ private void ScanForCustomInstanceManager(IEnumerable types)
+ {
+ var implementingTypes = types.Where(type =>
+ type.GetInterfaces().Any(t => t.FullName == "Gauge.CSharp.Lib.IClassInstanceManager"));
+ ClassInstanceManagerType = implementingTypes.FirstOrDefault();
+ }
+
+ private void SetDefaultTypes()
+ {
+ ClassInstanceManagerType = ClassInstanceManagerType ??
+ _targetLibAssembly.GetType(LibType.DefaultClassInstanceManager.FullName());
+ ScreenshotWriter = ScreenshotWriter ??
+ _targetLibAssembly.GetType(LibType.DefaultScreenshotWriter.FullName());
}
}
\ No newline at end of file
diff --git a/src/AssemblyLocater.cs b/src/AssemblyLocater.cs
index 22709fd..f967946 100644
--- a/src/AssemblyLocater.cs
+++ b/src/AssemblyLocater.cs
@@ -5,36 +5,35 @@
*----------------------------------------------------------------*/
-using System.IO;
-using System.Linq;
-using Gauge.CSharp.Core;
using Gauge.Dotnet.Exceptions;
+using Gauge.Dotnet.Extensions;
using Gauge.Dotnet.Wrappers;
-namespace Gauge.Dotnet
+namespace Gauge.Dotnet;
+
+public class AssemblyLocater : IAssemblyLocater
{
- public class AssemblyLocater : IAssemblyLocater
+ private readonly IDirectoryWrapper _directoryWrapper;
+ private readonly IConfiguration _config;
+
+ public AssemblyLocater(IDirectoryWrapper directoryWrapper, IConfiguration config)
{
- private readonly IDirectoryWrapper _directoryWrapper;
+ _directoryWrapper = directoryWrapper;
+ _config = config;
+ }
- public AssemblyLocater(IDirectoryWrapper directoryWrapper)
+ public string GetTestAssembly()
+ {
+ var gaugeBinDir = _config.GetGaugeBinDir();
+ try
{
- _directoryWrapper = directoryWrapper;
+ return _directoryWrapper
+ .EnumerateFiles(gaugeBinDir, "*.deps.json", SearchOption.TopDirectoryOnly)
+ .First().Replace(".deps.json", ".dll");
}
-
- public AssemblyPath GetTestAssembly()
+ catch (System.InvalidOperationException)
{
- var gaugeBinDir = Utils.GetGaugeBinDir();
- try
- {
- return _directoryWrapper
- .EnumerateFiles(gaugeBinDir, "*.deps.json", SearchOption.TopDirectoryOnly)
- .First().Replace(".deps.json", ".dll");
- }
- catch (System.InvalidOperationException)
- {
- throw new GaugeTestAssemblyNotFoundException(gaugeBinDir);
- }
+ throw new GaugeTestAssemblyNotFoundException(gaugeBinDir);
}
}
}
\ No newline at end of file
diff --git a/src/AssemblyPath.cs b/src/AssemblyPath.cs
deleted file mode 100644
index 760759c..0000000
--- a/src/AssemblyPath.cs
+++ /dev/null
@@ -1,29 +0,0 @@
-/*----------------------------------------------------------------
- * Copyright (c) ThoughtWorks, Inc.
- * Licensed under the Apache License, Version 2.0
- * See LICENSE.txt in the project root for license information.
- *----------------------------------------------------------------*/
-
-
-namespace Gauge.Dotnet
-{
- public class AssemblyPath
- {
- private readonly string _path;
-
- public AssemblyPath(string path)
- {
- this._path = path;
- }
-
- public static implicit operator string(AssemblyPath path)
- {
- return path._path;
- }
-
- public static implicit operator AssemblyPath(string path)
- {
- return new AssemblyPath(path);
- }
- }
-}
\ No newline at end of file
diff --git a/src/AttributesLoader.cs b/src/AttributesLoader.cs
index 185f8f8..cec37e9 100644
--- a/src/AttributesLoader.cs
+++ b/src/AttributesLoader.cs
@@ -5,19 +5,24 @@
*----------------------------------------------------------------*/
-using System.Collections.Generic;
using System.Xml.Linq;
-using Gauge.CSharp.Core;
+using Gauge.Dotnet.Extensions;
-namespace Gauge.Dotnet
+namespace Gauge.Dotnet;
+
+public class AttributesLoader : IAttributesLoader
{
- public class AttributesLoader : IAttributesLoader
+ private readonly IConfiguration _config;
+
+ public AttributesLoader(IConfiguration config)
+ {
+ _config = config;
+ }
+
+ public virtual IEnumerable GetRemovedAttributes()
{
- public virtual IEnumerable GetRemovedAttributes()
- {
- var xmldoc = XDocument.Load(Utils.ReadEnvValue("GAUGE_CSHARP_PROJECT_FILE"));
- var attributes = xmldoc.Descendants().Attributes("Remove");
- return attributes;
- }
+ var xmldoc = XDocument.Load(_config.GetGaugeCSharpProjectFile());
+ var attributes = xmldoc.Descendants().Attributes("Remove");
+ return attributes;
}
}
\ No newline at end of file
diff --git a/src/AuthoringRunnerServiceHandler.cs b/src/AuthoringRunnerServiceHandler.cs
index 3d4596c..0199073 100644
--- a/src/AuthoringRunnerServiceHandler.cs
+++ b/src/AuthoringRunnerServiceHandler.cs
@@ -5,119 +5,78 @@
*----------------------------------------------------------------*/
-using System.Threading.Tasks;
-using Gauge.Dotnet.Executor;
-using Gauge.Dotnet.Helpers;
+using Gauge.Dotnet.Executors;
using Gauge.Dotnet.Models;
-using Gauge.Dotnet.Processors;
using Gauge.Messages;
using Grpc.Core;
-using Microsoft.Extensions.Hosting;
-namespace Gauge.Dotnet
-{
- internal class AuthoringRunnerServiceHandler : Runner.RunnerBase
- {
- private readonly int DefaultExecutionStream = 1;
-
- private readonly IStaticLoader _loader;
- protected readonly ExecutorPool _pool;
- private readonly IHostApplicationLifetime lifetime;
- protected IStepRegistry _stepRegistry;
-
- private StepValidationProcessor stepValidateRequestProcessor;
- private StepNameProcessor stepNameRequestProcessor;
- private RefactorProcessor refactorRequestProcessor;
- private CacheFileProcessor cacheFileRequestProcessor;
- private StubImplementationCodeProcessor stubImplementationCodeRequestProcessor;
- private StepPositionsProcessor stepPositionsRequestProcessor;
- private StepNamesProcessor stepNamesRequestProcessor;
-
- public AuthoringRunnerServiceHandler(IStaticLoader loader, ExecutorPool pool, IHostApplicationLifetime lifetime)
- {
- this._pool = pool;
- this.lifetime = lifetime;
- this._loader = loader;
- _stepRegistry = loader.GetStepRegistry();
- this.InitializeMessageProcessors();
- }
-
- public override Task ValidateStep(StepValidateRequest request, ServerCallContext context)
- {
- return _pool.Execute(DefaultExecutionStream, () => this.stepValidateRequestProcessor.Process(request));
- }
+namespace Gauge.Dotnet;
+internal class AuthoringRunnerServiceHandler : Runner.RunnerBase
+{
+ private const int DefaultStream = 1;
+ protected IExecutor Executor { get; private init; }
+ private readonly IHostApplicationLifetime _lifetime;
+ protected IStepRegistry _stepRegistry;
+ protected ILogger _logger;
- public override Task CacheFile(CacheFileRequest request, ServerCallContext context)
- {
- return _pool.Execute(1, () => this.cacheFileRequestProcessor.Process(request));
- }
+ public AuthoringRunnerServiceHandler(IExecutor executor, IHostApplicationLifetime lifetime, IStepRegistry stepRegistry, ILogger logger)
+ {
+ Executor = executor;
+ _lifetime = lifetime;
+ _stepRegistry = stepRegistry;
+ _logger = logger;
+ }
- public override Task GetGlobPatterns(Empty request, ServerCallContext context)
- {
- var response = new ImplementationFileGlobPatternResponse();
- response.GlobPatterns.Add(FileHelper.GetImplementationGlobPatterns());
- return _pool.Execute(1, () => response);
- }
+ public override Task ValidateStep(StepValidateRequest request, ServerCallContext context)
+ {
+ return Executor.Execute(DefaultStream, request);
+ }
+ public override Task CacheFile(CacheFileRequest request, ServerCallContext context)
+ {
+ return Executor.Execute(DefaultStream, request);
+ }
- public override Task GetImplementationFiles(Empty request, ServerCallContext context)
- {
- return _pool.Execute(DefaultExecutionStream,() => {
- var response = new ImplementationFileListResponse();
- response.ImplementationFilePaths.AddRange(FileHelper.GetImplementationFiles());
- return response;
- });
- }
+ public override Task GetGlobPatterns(Empty request, ServerCallContext context)
+ {
+ return Executor.Execute(DefaultStream, request);
+ }
- public override Task GetStepName(StepNameRequest request, ServerCallContext context)
- {
- return _pool.Execute(DefaultExecutionStream, () => this.stepNameRequestProcessor.Process(request));
- }
+ public override Task GetImplementationFiles(Empty request, ServerCallContext context)
+ {
+ return Executor.Execute(DefaultStream, request);
+ }
- public override Task GetStepNames(StepNamesRequest request, ServerCallContext context)
- {
- return _pool.Execute(DefaultExecutionStream, () => this.stepNamesRequestProcessor.Process(request));
- }
+ public override Task GetStepName(StepNameRequest request, ServerCallContext context)
+ {
+ return Executor.Execute(DefaultStream, request);
+ }
- public override Task GetStepPositions(StepPositionsRequest request, ServerCallContext context)
- {
- return _pool.Execute(DefaultExecutionStream, () => this.stepPositionsRequestProcessor.Process(request));
- }
+ public override Task GetStepNames(StepNamesRequest request, ServerCallContext context)
+ {
+ return Executor.Execute(DefaultStream, request);
+ }
- public override Task ImplementStub(StubImplementationCodeRequest request, ServerCallContext context)
- {
- return _pool.Execute(DefaultExecutionStream, () => this.stubImplementationCodeRequestProcessor.Process(request));
- }
+ public override Task GetStepPositions(StepPositionsRequest request, ServerCallContext context)
+ {
+ return Executor.Execute(DefaultStream, request);
+ }
- public override Task Refactor(RefactorRequest request, ServerCallContext context)
- {
- return _pool.Execute(DefaultExecutionStream, () => this.refactorRequestProcessor.Process(request));
- }
+ public override Task ImplementStub(StubImplementationCodeRequest request, ServerCallContext context)
+ {
+ return Executor.Execute(DefaultStream, request);
+ }
- protected void InitializeMessageProcessors()
- {
- this.stepValidateRequestProcessor = new StepValidationProcessor(_stepRegistry);
- this.stepNameRequestProcessor = new StepNameProcessor(_stepRegistry);
- this.refactorRequestProcessor = new RefactorProcessor(_stepRegistry);
- this.cacheFileRequestProcessor = new CacheFileProcessor(_loader);
- this.stubImplementationCodeRequestProcessor = new StubImplementationCodeProcessor();
- this.stepPositionsRequestProcessor = new StepPositionsProcessor(_stepRegistry);
- this.stepNamesRequestProcessor = new StepNamesProcessor(_stepRegistry);
- }
+ public override Task Refactor(RefactorRequest request, ServerCallContext context)
+ {
+ return Executor.Execute(DefaultStream, request);
+ }
- public override Task Kill(KillProcessRequest request, ServerCallContext context)
- {
- try
- {
- Logger.Debug("KillProcessrequest received");
- lifetime.StopApplication();
- return Task.FromResult(new Empty());
- }
- finally
- {
- _pool.Dispose();
- }
- }
+ public override Task Kill(KillProcessRequest request, ServerCallContext context)
+ {
+ _logger.LogDebug("KillProcessrequest received");
+ _lifetime.StopApplication();
+ return Task.FromResult(new Empty());
}
}
\ No newline at end of file
diff --git a/src/Exceptions/StreamNotFountException.cs b/src/Exceptions/StreamNotFountException.cs
deleted file mode 100644
index ef6cbc2..0000000
--- a/src/Exceptions/StreamNotFountException.cs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*----------------------------------------------------------------
- * Copyright (c) ThoughtWorks, Inc.
- * Licensed under the Apache License, Version 2.0
- * See LICENSE.txt in the project root for license information.
- *----------------------------------------------------------------*/
-
-using System;
-
-namespace Gauge.Dotnet.Executor
-{
- [Serializable]
- internal class StreamNotFountException : Exception
- {
- private static string _message = "Requested stream {0} not found.";
-
- public StreamNotFountException(int stream) : base(String.Format(_message, stream))
- {
- }
- }
-}
\ No newline at end of file
diff --git a/src/ExecutableRunnerServiceHandler.cs b/src/ExecutableRunnerServiceHandler.cs
index 9d72d89..8eacb12 100644
--- a/src/ExecutableRunnerServiceHandler.cs
+++ b/src/ExecutableRunnerServiceHandler.cs
@@ -5,163 +5,117 @@
*----------------------------------------------------------------*/
-using System;
-using System.Threading;
-using System.Threading.Tasks;
-using Gauge.Dotnet.Executor;
-using Gauge.Dotnet.Processors;
-using Gauge.Dotnet.Wrappers;
+using Gauge.Dotnet.Executors;
+using Gauge.Dotnet.Extensions;
+using Gauge.Dotnet.Models;
using Gauge.Messages;
using Grpc.Core;
-using Microsoft.Extensions.Hosting;
-namespace Gauge.Dotnet
+namespace Gauge.Dotnet;
+
+internal class ExecutableRunnerServiceHandler : AuthoringRunnerServiceHandler
{
- internal class ExecutableRunnerServiceHandler : AuthoringRunnerServiceHandler
- {
- private readonly IActivatorWrapper _activatorWrapper;
- private readonly IReflectionWrapper _reflectionWrapper;
- private readonly IAssemblyLoader _assemblyLoader;
- private ExecutionStartingProcessor executionStartingProcessor;
- private ExecutionEndingProcessor executionEndingProcessor;
- private SpecExecutionStartingProcessor specExecutionStartingProcessor;
- private SpecExecutionEndingProcessor specExecutionEndingProcessor;
- private ScenarioExecutionStartingProcessor scenarioExecutionStartingProcessor;
- private ScenarioExecutionEndingProcessor scenarioExecutionEndingProcessor;
- private StepExecutionStartingProcessor stepExecutionStartingProcessor;
- private StepExecutionEndingProcessor stepExecutionEndingProcessor;
- private ConceptExecutionStartingProcessor conceptExecutionStartingProcessor;
- private ConceptExecutionEndingProcessor conceptExecutionEndingProcessor;
- private ExecuteStepProcessor executeStepProcessor;
- private ScenarioDataStoreInitProcessor scenarioDataStoreInitProcessor;
- private SpecDataStoreInitProcessor specDataStoreInitProcessor;
- private SuiteDataStoreInitProcessor suiteDataStoreInitProcessor;
- public ExecutableRunnerServiceHandler(IActivatorWrapper activationWrapper, IReflectionWrapper reflectionWrapper,
- IAssemblyLoader assemblyLoader, IStaticLoader loader, ExecutorPool pool, IHostApplicationLifetime lifetime)
- : base(loader, pool, lifetime)
- {
- this._activatorWrapper = activationWrapper;
- this._reflectionWrapper = reflectionWrapper;
- this._assemblyLoader = assemblyLoader;
- _stepRegistry = assemblyLoader.GetStepRegistry();
- InitializeExecutionMessageHandlers();
- }
- public override Task InitializeSuiteDataStore(SuiteDataStoreInitRequest request, ServerCallContext context)
- {
- return _pool.Execute(getStream(request.Stream), () => this.suiteDataStoreInitProcessor.Process());
- }
+ private readonly IConfiguration _config;
- public override Task ExecuteStep(ExecuteStepRequest request, ServerCallContext context)
- {
- return _pool.Execute(getStream(request.Stream), () => this.executeStepProcessor.Process(request));
- }
+ public IAssemblyLoader AssemblyLoader { get; private set; }
- public override Task FinishExecution(ExecutionEndingRequest request, ServerCallContext context)
- {
- return _pool.Execute(getStream(request.Stream), () => this.executionEndingProcessor.Process(request));
- }
+ public ExecutableRunnerServiceHandler(IExecutor executor, IAssemblyLoader assemblyLoader, IHostApplicationLifetime lifetime, IStepRegistry stepRegistry,
+ IConfiguration config, ILogger logger)
+ : base(executor, lifetime, stepRegistry, logger)
+ {
+ _config = config;
+ AssemblyLoader = assemblyLoader;
+ }
+ public override Task InitializeSuiteDataStore(SuiteDataStoreInitRequest request, ServerCallContext context)
+ {
+ request.Stream = GetStream(request.Stream);
+ return Executor.Execute(request.Stream, request);
+ }
- public override Task FinishScenarioExecution(ScenarioExecutionEndingRequest request, ServerCallContext context)
- {
- return _pool.Execute(getStream(request.Stream), () => this.scenarioExecutionEndingProcessor.Process(request));
- }
+ public override Task ExecuteStep(ExecuteStepRequest request, ServerCallContext context)
+ {
+ request.Stream = GetStream(request.Stream);
+ return Executor.Execute(request.Stream, request);
+ }
- public override Task FinishSpecExecution(SpecExecutionEndingRequest request, ServerCallContext context)
- {
- return _pool.Execute(getStream(request.Stream), () => this.specExecutionEndingProcessor.Process(request));
- }
+ public override Task FinishExecution(ExecutionEndingRequest request, ServerCallContext context)
+ {
+ request.Stream = GetStream(request.Stream);
+ return Executor.Execute(request.Stream, request);
+ }
- public override Task FinishStepExecution(StepExecutionEndingRequest request, ServerCallContext context)
- {
- return _pool.Execute(getStream(request.Stream), () => this.stepExecutionEndingProcessor.Process(request));
- }
+ public override Task FinishScenarioExecution(ScenarioExecutionEndingRequest request, ServerCallContext context)
+ {
+ request.Stream = GetStream(request.Stream);
+ return Executor.Execute(request.Stream, request);
+ }
- public override Task InitializeScenarioDataStore(ScenarioDataStoreInitRequest request, ServerCallContext context)
- {
- return _pool.Execute(getStream(request.Stream), () => this.scenarioDataStoreInitProcessor.Process());
- }
+ public override Task FinishSpecExecution(SpecExecutionEndingRequest request, ServerCallContext context)
+ {
+ request.Stream = GetStream(request.Stream);
+ return Executor.Execute(request.Stream, request);
+ }
- public override Task InitializeSpecDataStore(SpecDataStoreInitRequest request, ServerCallContext context)
- {
- try
- {
- return _pool.Execute(getStream(request.Stream), () => this.specDataStoreInitProcessor.Process());
- }
- catch (System.Exception e)
- {
- Console.WriteLine(e);
- Environment.Exit(1);
- }
- return null;
- }
+ public override Task FinishStepExecution(StepExecutionEndingRequest request, ServerCallContext context)
+ {
+ request.Stream = GetStream(request.Stream);
+ return Executor.Execute(request.Stream, request);
+ }
- public override Task StartExecution(ExecutionStartingRequest request, ServerCallContext context)
- {
- return _pool.Execute(getStream(request.Stream), () => this.executionStartingProcessor.Process(request));
- }
+ public override Task InitializeScenarioDataStore(ScenarioDataStoreInitRequest request, ServerCallContext context)
+ {
+ request.Stream = GetStream(request.Stream);
+ return Executor.Execute(request.Stream, request);
+ }
- public override Task StartScenarioExecution(ScenarioExecutionStartingRequest request, ServerCallContext context)
- {
- return _pool.Execute(getStream(request.Stream), () => this.scenarioExecutionStartingProcessor.Process(request));
- }
+ public override Task InitializeSpecDataStore(SpecDataStoreInitRequest request, ServerCallContext context)
+ {
+ request.Stream = GetStream(request.Stream);
+ return Executor.Execute(request.Stream, request);
+ }
- public override Task StartSpecExecution(SpecExecutionStartingRequest request, ServerCallContext context)
- {
- return _pool.Execute(getStream(request.Stream), () => this.specExecutionStartingProcessor.Process(request));
- }
+ public override Task StartExecution(ExecutionStartingRequest request, ServerCallContext context)
+ {
+ request.Stream = GetStream(request.Stream);
+ return Executor.Execute(request.Stream, request);
+ }
- public override Task StartStepExecution(StepExecutionStartingRequest request, ServerCallContext context)
- {
- return _pool.Execute(getStream(request.Stream), () => this.stepExecutionStartingProcessor.Process(request));
- }
+ public override Task StartScenarioExecution(ScenarioExecutionStartingRequest request, ServerCallContext context)
+ {
+ request.Stream = GetStream(request.Stream);
+ return Executor.Execute(request.Stream, request);
+ }
- public override Task NotifyConceptExecutionStarting(ConceptExecutionStartingRequest request, ServerCallContext context)
- {
- return _pool.Execute(getStream(request.Stream), () => this.conceptExecutionStartingProcessor.Process(request));
- }
+ public override Task StartSpecExecution(SpecExecutionStartingRequest request, ServerCallContext context)
+ {
+ request.Stream = GetStream(request.Stream);
+ return Executor.Execute(request.Stream, request);
+ }
- public override Task NotifyConceptExecutionEnding(ConceptExecutionEndingRequest request, ServerCallContext context)
- {
- return _pool.Execute(getStream(request.Stream), () => this.conceptExecutionEndingProcessor.Process(request));
- }
+ public override Task StartStepExecution(StepExecutionStartingRequest request, ServerCallContext context)
+ {
+ request.Stream = GetStream(request.Stream);
+ return Executor.Execute(request.Stream, request);
+ }
+ public override Task NotifyConceptExecutionStarting(ConceptExecutionStartingRequest request, ServerCallContext context)
+ {
+ request.Stream = GetStream(request.Stream);
+ return Executor.Execute(request.Stream, request);
+ }
- private void InitializeExecutionMessageHandlers()
- {
- var tableFormatter = new TableFormatter(this._assemblyLoader, this._activatorWrapper);
- var classInstanceManager = new ThreadLocal(() =>
- {
- return this._assemblyLoader.GetClassInstanceManager();
- });
- var executionInfoMapper = new ExecutionInfoMapper(this._assemblyLoader, this._activatorWrapper);
- var executionOrchestrator = new ExecutionOrchestrator(this._reflectionWrapper, this._assemblyLoader,
- classInstanceManager.Value,
- new HookExecutor(this._assemblyLoader, this._reflectionWrapper, classInstanceManager.Value, executionInfoMapper),
- new StepExecutor(this._assemblyLoader, this._reflectionWrapper, classInstanceManager.Value));
-
- this.executionStartingProcessor = new ExecutionStartingProcessor(executionOrchestrator);
- this.executionEndingProcessor = new ExecutionEndingProcessor(executionOrchestrator);
- this.specExecutionStartingProcessor = new SpecExecutionStartingProcessor(executionOrchestrator);
- this.specExecutionEndingProcessor = new SpecExecutionEndingProcessor(executionOrchestrator);
- this.scenarioExecutionStartingProcessor = new ScenarioExecutionStartingProcessor(executionOrchestrator);
- this.scenarioExecutionEndingProcessor = new ScenarioExecutionEndingProcessor(executionOrchestrator);
- this.stepExecutionStartingProcessor = new StepExecutionStartingProcessor(executionOrchestrator);
- this.stepExecutionEndingProcessor = new StepExecutionEndingProcessor(executionOrchestrator);
- this.conceptExecutionStartingProcessor = new ConceptExecutionStartingProcessor(executionOrchestrator);
- this.conceptExecutionEndingProcessor = new ConceptExecutionEndingProcessor(executionOrchestrator);
- this.executeStepProcessor = new ExecuteStepProcessor(_stepRegistry, executionOrchestrator, tableFormatter);
- this.scenarioDataStoreInitProcessor = new ScenarioDataStoreInitProcessor(this._assemblyLoader);
- this.specDataStoreInitProcessor = new SpecDataStoreInitProcessor(this._assemblyLoader);
- this.suiteDataStoreInitProcessor = new SuiteDataStoreInitProcessor(this._assemblyLoader);
- }
+ public override Task NotifyConceptExecutionEnding(ConceptExecutionEndingRequest request, ServerCallContext context)
+ {
+ request.Stream = GetStream(request.Stream);
+ return Executor.Execute(request.Stream, request);
+ }
- private int getStream(int stream)
+ private int GetStream(int stream)
+ {
+ if (!_config.IsMultithreading())
{
- if (!_pool.IsMultithreading)
- {
- return 1;
- }
- return Math.Max(stream, 1);
+ return 1;
}
+ return Math.Max(stream, 1);
}
}
\ No newline at end of file
diff --git a/src/ExecutionInfoMapper.cs b/src/ExecutionInfoMapper.cs
deleted file mode 100644
index a8a519e..0000000
--- a/src/ExecutionInfoMapper.cs
+++ /dev/null
@@ -1,96 +0,0 @@
-/*----------------------------------------------------------------
- * Copyright (c) ThoughtWorks, Inc.
- * Licensed under the Apache License, Version 2.0
- * See LICENSE.txt in the project root for license information.
- *----------------------------------------------------------------*/
-
-
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using Gauge.Dotnet.Wrappers;
-using Gauge.Messages;
-using Gauge.CSharp.Lib;
-using Gauge.Dotnet.Processors;
-
-namespace Gauge.Dotnet
-{
- public class ExecutionInfoMapper : IExecutionInfoMapper
- {
- private Type _executionContextType;
- private readonly IActivatorWrapper activatorWrapper;
- private readonly ITableFormatter tableFormatter;
-
- public ExecutionInfoMapper(IAssemblyLoader assemblyLoader, IActivatorWrapper activatorWrapper)
- {
- _executionContextType = assemblyLoader.GetLibType(LibType.ExecutionContext);
- this.activatorWrapper = activatorWrapper;
- tableFormatter = new TableFormatter(assemblyLoader, activatorWrapper);
- }
-
- public dynamic ExecutionContextFrom(ExecutionInfo currentExecutionInfo)
- {
- if (currentExecutionInfo == null)
- return activatorWrapper.CreateInstance(_executionContextType);
-
- return activatorWrapper.CreateInstance(_executionContextType, SpecificationFrom(currentExecutionInfo.CurrentSpec),
- ScenarioFrom(currentExecutionInfo.CurrentScenario),
- StepFrom(currentExecutionInfo.CurrentStep));
- }
-
- private dynamic SpecificationFrom(SpecInfo currentSpec)
- {
- var executionContextSpecType = _executionContextType.GetNestedType("Specification");
- return currentSpec != null
- ? activatorWrapper.CreateInstance(executionContextSpecType, currentSpec.Name, currentSpec.FileName, currentSpec.IsFailed,
- currentSpec.Tags.ToArray())
- : activatorWrapper.CreateInstance(executionContextSpecType);
- }
-
- private dynamic ScenarioFrom(ScenarioInfo currentScenario)
- {
- var executionContextScenarioType = _executionContextType.GetNestedType("Scenario");
- if (currentScenario != null && currentScenario.Retries == null)
- {
- currentScenario.Retries = new ScenarioRetriesInfo{MaxRetries=0, CurrentRetry=0};
- }
- return currentScenario != null
- ? activatorWrapper.CreateInstance(executionContextScenarioType, currentScenario.Name, currentScenario.IsFailed,
- currentScenario.Tags.ToArray(), currentScenario.Retries.MaxRetries, currentScenario.Retries.CurrentRetry)
- : activatorWrapper.CreateInstance(executionContextScenarioType);
- }
-
- private dynamic StepFrom(StepInfo currentStep)
- {
- var executionContextStepType = _executionContextType.GetNestedType("StepDetails"); ;
- if (currentStep == null || currentStep.Step == null)
- return activatorWrapper.CreateInstance(executionContextStepType);
-
- var parameters = new List>();
- foreach (var parameter in currentStep.Step.Parameters) {
- if (parameter.ParameterType == Parameter.Types.ParameterType.Static) {
- parameters.Add(new List { "Static", parameter.Name, parameter.Value });
- }
- else if (parameter.ParameterType == Parameter.Types.ParameterType.Dynamic) {
- parameters.Add(new List { "Dynamic", parameter.Name, parameter.Value });
- }
- else if (parameter.ParameterType == Parameter.Types.ParameterType.SpecialString) {
- parameters.Add(new List { "Special", parameter.Name, parameter.Value });
- }
- else if (parameter.ParameterType == Parameter.Types.ParameterType.SpecialTable ||
- parameter.ParameterType == Parameter.Types.ParameterType.Table) {
- var asJSon = tableFormatter.GetJSON(parameter.Table);
- parameters.Add(new List { "Table", parameter.Name, asJSon });
- }
- }
-
- var inst = activatorWrapper.CreateInstance(
- executionContextStepType,
- currentStep.Step.ActualStepText, currentStep.IsFailed,
- currentStep.StackTrace, currentStep.ErrorMessage,
- parameters);
-
- return inst;
- }
- }
-}
\ No newline at end of file
diff --git a/src/ExecutionOrchestrator.cs b/src/ExecutionOrchestrator.cs
deleted file mode 100644
index 0c8e3f9..0000000
--- a/src/ExecutionOrchestrator.cs
+++ /dev/null
@@ -1,152 +0,0 @@
-/*----------------------------------------------------------------
- * Copyright (c) ThoughtWorks, Inc.
- * Licensed under the Apache License, Version 2.0
- * See LICENSE.txt in the project root for license information.
- *----------------------------------------------------------------*/
-
-
-using System.Collections.Generic;
-using System.Diagnostics;
-using System.Linq;
-using System.Reflection;
-using Gauge.CSharp.Core;
-using Gauge.Dotnet.Models;
-using Gauge.Dotnet.Strategy;
-using Gauge.Dotnet.Wrappers;
-using Gauge.Messages;
-
-namespace Gauge.Dotnet
-{
- public class ExecutionOrchestrator : IExecutionOrchestrator
- {
- private readonly IAssemblyLoader _assemblyLoader;
- private readonly object _classInstanceManager;
- private readonly IHookExecutor _hookExecutor;
- private readonly IReflectionWrapper _reflectionWrapper;
- private readonly IStepExecutor _stepExecutor;
-
- public ExecutionOrchestrator(IReflectionWrapper reflectionWrapper, IAssemblyLoader assemblyLoader,
- object classInstanceManager, IHookExecutor hookExecutor,
- IStepExecutor stepExecutor)
- {
- _reflectionWrapper = reflectionWrapper;
- _assemblyLoader = assemblyLoader;
- _classInstanceManager = classInstanceManager;
- _hookExecutor = hookExecutor;
- _stepExecutor = stepExecutor;
- }
-
-
- [DebuggerHidden]
- public ProtoExecutionResult ExecuteStep(GaugeMethod method, params string[] args)
- {
- var stopwatch = Stopwatch.StartNew();
-
- var executionResult = _stepExecutor.Execute(method, args);
- return BuildResult(stopwatch, executionResult);
- }
-
- public void ClearCache()
- {
- _reflectionWrapper.InvokeMethod(_assemblyLoader.ClassInstanceManagerType, _classInstanceManager,
- "ClearCache");
- }
-
- public void StartExecutionScope(string tag)
- {
- _reflectionWrapper.InvokeMethod(_assemblyLoader.ClassInstanceManagerType, _classInstanceManager,
- "StartScope", tag);
- }
-
- public void CloseExecutionScope()
- {
- _reflectionWrapper.InvokeMethod(_assemblyLoader.ClassInstanceManagerType, _classInstanceManager,
- "CloseScope");
- }
-
- public IEnumerable GetAllPendingMessages()
- {
- var messageCollectorType = _assemblyLoader.GetLibType(LibType.MessageCollector);
- return _reflectionWrapper.InvokeMethod(messageCollectorType, null, "GetAllPendingMessages",
- BindingFlags.Static | BindingFlags.Public) as IEnumerable;
- }
-
- public IEnumerable GetAllPendingScreenshotFiles()
- {
- var messageCollectorType = _assemblyLoader.GetLibType(LibType.ScreenshotFilesCollector);
- return _reflectionWrapper.InvokeMethod(messageCollectorType, null, "GetAllPendingScreenshotFiles",
- BindingFlags.Static | BindingFlags.Public) as IEnumerable;
- }
-
- [DebuggerHidden]
- public ProtoExecutionResult ExecuteHooks(string hookType, HooksStrategy strategy, IList applicableTags,
- ExecutionInfo info)
- {
- var stopwatch = Stopwatch.StartNew();
- var executionResult = _hookExecutor.Execute(hookType, strategy, applicableTags, info);
- return BuildResult(stopwatch, executionResult);
- }
-
- private ProtoExecutionResult BuildResult(Stopwatch stopwatch, ExecutionResult executionResult)
- {
- var result = new ProtoExecutionResult
- {
- Failed = false,
- ExecutionTime = stopwatch.ElapsedMilliseconds,
- SkipScenario = executionResult.SkipScenario
- };
- var allPendingMessages = GetAllPendingMessages().Where(m => m != null);
- result.Message.AddRange(allPendingMessages);
- var allPendingScreenShotFiles = GetAllPendingScreenshotFiles().Where(s => s != null);
- result.ScreenshotFiles.AddRange(allPendingScreenShotFiles);
-
- // If runtime skipped scenario return Error message and stack info
- if (!string.IsNullOrEmpty(executionResult.ExceptionMessage))
- {
- result.ErrorMessage = executionResult.ExceptionMessage;
- }
- if (!string.IsNullOrEmpty(executionResult.StackTrace))
- {
- result.StackTrace = executionResult.StackTrace;
- }
- if (executionResult.Success) return result;
-
- var elapsedMilliseconds = stopwatch.ElapsedMilliseconds;
- result.Failed = true;
- var isScreenShotEnabled = Utils.TryReadEnvValue("SCREENSHOT_ON_FAILURE");
- if (isScreenShotEnabled == null || isScreenShotEnabled.ToLower() != "false")
- {
- var screenshotFile = TryScreenCapture();
- if(!string.IsNullOrEmpty(screenshotFile)){
- result.FailureScreenshotFile = screenshotFile;
- }
- }
-
- result.RecoverableError = executionResult.Recoverable;
- result.ExecutionTime = elapsedMilliseconds;
- return result;
- }
-
- private string TryScreenCapture()
- {
- try
- {
- InvokeScreenshotCapture();
- }
- catch (System.Exception ex)
- {
- Logger.Warning($"Unable to capture screenshot, CustomScreenshotWriter is probably not set.({ex.Message})\n{ex.StackTrace}");
- return null;
- }
- var messageCollectorType = _assemblyLoader.GetLibType(LibType.ScreenshotFilesCollector);
- return (_reflectionWrapper.InvokeMethod(messageCollectorType, null, "GetAllPendingScreenshotFiles",
- BindingFlags.Static | BindingFlags.Public) as IEnumerable).FirstOrDefault();
- }
-
- private void InvokeScreenshotCapture() {
- var gaugeScreenshotsType = _assemblyLoader.GetLibType(LibType.GaugeScreenshots);
- _reflectionWrapper.InvokeMethod(gaugeScreenshotsType, null, "Capture",
- BindingFlags.Static | BindingFlags.Public);
- }
- }
-}
\ No newline at end of file
diff --git a/src/Executor/CustomTaskScheduler.cs b/src/Executor/CustomTaskScheduler.cs
deleted file mode 100644
index b409f76..0000000
--- a/src/Executor/CustomTaskScheduler.cs
+++ /dev/null
@@ -1,58 +0,0 @@
-/*----------------------------------------------------------------
- * Copyright (c) ThoughtWorks, Inc.
- * Licensed under the Apache License, Version 2.0
- * See LICENSE.txt in the project root for license information.
- *----------------------------------------------------------------*/
-
-using System;
-using System.Collections.Concurrent;
-using System.Collections.Generic;
-using System.Threading;
-using System.Threading.Tasks;
-
-namespace Gauge.Dotnet.Executor
-{
- public sealed class CustomTaskScheduler : TaskScheduler, IDisposable
- {
- private BlockingCollection tasksCollection = new BlockingCollection();
-
- private readonly Thread thread = null;
-
- public CustomTaskScheduler()
- {
- thread = new Thread(new ThreadStart(Execute));
- if (!thread.IsAlive)
- {
- thread.Start();
- }
- }
-
- private void Execute()
- {
- foreach (var task in tasksCollection.GetConsumingEnumerable())
- {
- TryExecuteTask(task);
- }
- }
- protected override IEnumerable GetScheduledTasks()
- {
- return tasksCollection.ToArray();
- }
- protected override void QueueTask(Task task)
- {
- if (task != null)
- tasksCollection.Add(task);
- }
- protected override bool TryExecuteTaskInline(Task task, bool taskWasPreviouslyQueued)
- {
- return false;
- }
-
- public void Dispose()
- {
- tasksCollection.CompleteAdding();
- thread.Join();
- tasksCollection.Dispose();
- }
- }
-}
\ No newline at end of file
diff --git a/src/Executor/ExecutorPool.cs b/src/Executor/ExecutorPool.cs
deleted file mode 100644
index df7751b..0000000
--- a/src/Executor/ExecutorPool.cs
+++ /dev/null
@@ -1,57 +0,0 @@
-/*----------------------------------------------------------------
- * Copyright (c) ThoughtWorks, Inc.
- * Licensed under the Apache License, Version 2.0
- * See LICENSE.txt in the project root for license information.
- *----------------------------------------------------------------*/
-
-using System;
-using System.Collections.Concurrent;
-using System.Threading;
-using System.Threading.Tasks;
-
-namespace Gauge.Dotnet.Executor
-{
- public class ExecutorPool : IDisposable
- {
- public bool IsMultithreading { get; internal set; }
- private ConcurrentDictionary _workers = new ConcurrentDictionary();
-
- public ExecutorPool(int size, bool isMultithreading)
- {
- for (int i = 1; i <= size; i++)
- {
- bool added = _workers.TryAdd(GetName(i), new CustomTaskScheduler());
- if (!added)
- {
- Logger.Fatal("Failed to add Wroker for stream " + i);
- }
- }
-
- IsMultithreading = isMultithreading;
- }
-
- public void Dispose()
- {
- foreach (var w in _workers)
- {
- w.Value.Dispose();
- }
- }
-
- public Task