diff --git a/.editorconfig b/.editorconfig index 1984a92e..8d00bf49 100644 --- a/.editorconfig +++ b/.editorconfig @@ -11,45 +11,17 @@ insert_final_newline = true indent_style = space indent_size = 4 trim_trailing_whitespace = true +spelling_exclusion_path = ./exclusion.dic + +[*.md] +indent_size = 2 + +[*.json] +indent_size = 2 # Generated code -[*{_AssemblyInfo.cs,.notsupported.cs,AsmOffsets.cs}] +[*{_AssemblyInfo.cs,.notsupported.cs,*/obj/*/External/**/*,*/obj/dotnet-new.IntegrationTests/*/TemplatePackagesPaths.cs}] generated_code = true -dotnet_style_operator_placement_when_wrapping = beginning_of_line -tab_width = 4 -end_of_line = crlf -dotnet_style_coalesce_expression = true:warning -dotnet_style_null_propagation = true:warning -dotnet_style_prefer_is_null_check_over_reference_equality_method = true:warning -dotnet_style_prefer_auto_properties = true:warning -dotnet_style_object_initializer = true:warning -dotnet_style_collection_initializer = true:warning -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:warning -dotnet_style_prefer_inferred_tuple_names = true:warning -dotnet_style_prefer_inferred_anonymous_type_member_names = true:warning -dotnet_style_prefer_compound_assignment = true:suggestion -dotnet_style_prefer_simplified_interpolation = true:suggestion -dotnet_style_namespace_match_folder = true:suggestion -dotnet_diagnostic.CA1000.severity = warning -dotnet_diagnostic.CA1047.severity = warning -dotnet_style_readonly_field = true:warning -dotnet_style_predefined_type_for_locals_parameters_members = true:warning -dotnet_style_predefined_type_for_member_access = true:warning -dotnet_style_require_accessibility_modifiers = for_non_interface_members:silent -dotnet_style_allow_multiple_blank_lines_experimental = true:silent -dotnet_style_allow_statement_immediately_after_block_experimental = true:silent -dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity:silent -dotnet_code_quality_unused_parameters = all:suggestion -dotnet_style_parentheses_in_other_binary_operators = always_for_clarity:silent -dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity:silent -dotnet_style_parentheses_in_other_operators = never_if_unnecessary:silent -dotnet_style_qualification_for_property = false:warning -dotnet_style_qualification_for_field = false:warning -dotnet_style_qualification_for_event = false:warning -dotnet_style_qualification_for_method = true:warning # C# files [*.cs] @@ -71,33 +43,33 @@ csharp_indent_switch_labels = true csharp_indent_labels = one_less_than_current # Modifier preferences -csharp_preferred_modifier_order = public,private,protected,internal,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,volatile,async:warning +csharp_preferred_modifier_order = public,private,protected,internal,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,volatile,async:suggestion # avoid this. unless absolutely necessary -dotnet_style_qualification_for_field = false:warning -dotnet_style_qualification_for_property = false:warning -dotnet_style_qualification_for_method = false:warning -dotnet_style_qualification_for_event = false:warning +dotnet_style_qualification_for_field = false:suggestion +dotnet_style_qualification_for_property = false:suggestion +dotnet_style_qualification_for_method = false:suggestion +dotnet_style_qualification_for_event = false:suggestion # Types: use keywords instead of BCL types, and permit var only when the type is clear -csharp_style_var_for_built_in_types = false:warning +csharp_style_var_for_built_in_types = false:none csharp_style_var_when_type_is_apparent = false:none -csharp_style_var_elsewhere = false:warning -dotnet_style_predefined_type_for_locals_parameters_members = true:warning -dotnet_style_predefined_type_for_member_access = true:warning +csharp_style_var_elsewhere = false:none +dotnet_style_predefined_type_for_locals_parameters_members = true:suggestion +dotnet_style_predefined_type_for_member_access = true:suggestion # name all constant fields using PascalCase -dotnet_naming_rule.constant_fields_should_be_pascal_case.severity = warning +dotnet_naming_rule.constant_fields_should_be_pascal_case.severity = suggestion dotnet_naming_rule.constant_fields_should_be_pascal_case.symbols = constant_fields -dotnet_naming_rule.constant_fields_should_be_pascal_case.style = pascal_case_style +dotnet_naming_rule.constant_fields_should_be_pascal_case.style = pascal_case_style dotnet_naming_symbols.constant_fields.applicable_kinds = field dotnet_naming_symbols.constant_fields.required_modifiers = const dotnet_naming_style.pascal_case_style.capitalization = pascal_case # static fields should have s_ prefix -dotnet_naming_rule.static_fields_should_have_prefix.severity = warning +dotnet_naming_rule.static_fields_should_have_prefix.severity = suggestion dotnet_naming_rule.static_fields_should_have_prefix.symbols = static_fields -dotnet_naming_rule.static_fields_should_have_prefix.style = static_prefix_style +dotnet_naming_rule.static_fields_should_have_prefix.style = static_prefix_style dotnet_naming_symbols.static_fields.applicable_kinds = field dotnet_naming_symbols.static_fields.required_modifiers = static dotnet_naming_symbols.static_fields.applicable_accessibilities = private, internal, private_protected @@ -105,38 +77,41 @@ dotnet_naming_style.static_prefix_style.required_prefix = s_ dotnet_naming_style.static_prefix_style.capitalization = camel_case # internal and private fields should be _camelCase -dotnet_naming_rule.camel_case_for_private_internal_fields.severity = warning +dotnet_naming_rule.camel_case_for_private_internal_fields.severity = suggestion dotnet_naming_rule.camel_case_for_private_internal_fields.symbols = private_internal_fields -dotnet_naming_rule.camel_case_for_private_internal_fields.style = camel_case_underscore_style +dotnet_naming_rule.camel_case_for_private_internal_fields.style = camel_case_underscore_style dotnet_naming_symbols.private_internal_fields.applicable_kinds = field dotnet_naming_symbols.private_internal_fields.applicable_accessibilities = private, internal dotnet_naming_style.camel_case_underscore_style.required_prefix = _ dotnet_naming_style.camel_case_underscore_style.capitalization = camel_case # Code style defaults -csharp_using_directive_placement = outside_namespace:warning +csharp_using_directive_placement = outside_namespace:suggestion dotnet_sort_system_directives_first = true csharp_prefer_braces = true:silent csharp_preserve_single_line_blocks = true:none csharp_preserve_single_line_statements = false:none -csharp_prefer_static_local_function = true:warning +csharp_prefer_static_local_function = true:suggestion csharp_prefer_simple_using_statement = false:none -csharp_style_prefer_switch_expression = true:warning -dotnet_style_readonly_field = true:warning +csharp_style_prefer_switch_expression = true:suggestion + +# Code quality +dotnet_style_readonly_field = true:suggestion +dotnet_code_quality_unused_parameters = non_public:suggestion # Expression-level preferences -dotnet_style_object_initializer = true:warning -dotnet_style_collection_initializer = true:warning -dotnet_style_explicit_tuple_names = true:warning -dotnet_style_coalesce_expression = true:warning -dotnet_style_null_propagation = true:warning -dotnet_style_prefer_is_null_check_over_reference_equality_method = true:warning -dotnet_style_prefer_inferred_tuple_names = true:warning -dotnet_style_prefer_inferred_anonymous_type_member_names = true:warning -dotnet_style_prefer_auto_properties = true:warning +dotnet_style_object_initializer = true:suggestion +dotnet_style_collection_initializer = true:suggestion +dotnet_style_explicit_tuple_names = true:suggestion +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_inferred_tuple_names = true:suggestion +dotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion +dotnet_style_prefer_auto_properties = true:suggestion dotnet_style_prefer_conditional_expression_over_assignment = true:silent dotnet_style_prefer_conditional_expression_over_return = true:silent -csharp_prefer_simple_default_expression = true:warning +csharp_prefer_simple_default_expression = true:suggestion # Expression-bodied members csharp_style_expression_bodied_methods = true:silent @@ -149,13 +124,13 @@ csharp_style_expression_bodied_lambdas = true:silent csharp_style_expression_bodied_local_functions = true:silent # Pattern matching -csharp_style_pattern_matching_over_is_with_cast_check = true:warning -csharp_style_pattern_matching_over_as_with_null_check = true:warning -csharp_style_inlined_variable_declaration = true:warning +csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion +csharp_style_pattern_matching_over_as_with_null_check = true:suggestion +csharp_style_inlined_variable_declaration = true:suggestion # Null checking preferences -csharp_style_throw_expression = true:warning -csharp_style_conditional_delegate_call = true:warning +csharp_style_throw_expression = true:suggestion +csharp_style_conditional_delegate_call = true:suggestion # Other features csharp_style_prefer_index_operator = false:none @@ -186,25 +161,324 @@ csharp_space_between_method_declaration_parameter_list_parentheses = false csharp_space_between_parentheses = false csharp_space_between_square_brackets = false +# Default analyzed API surface = 'all' (public APIs + non-public APIs) +dotnet_code_quality.api_surface = all + # License header -file_header_template = Licensed to the projects contributors.\nThe license conditions are provided in the LICENSE file located in the project root -csharp_style_namespace_declarations = block_scoped:suggestion -csharp_style_prefer_method_group_conversion = true:silent -csharp_style_prefer_top_level_statements = true:silent -csharp_style_prefer_null_check_over_type_check = true:suggestion -csharp_style_prefer_local_over_anonymous_function = true:suggestion -csharp_style_implicit_object_creation_when_type_is_apparent = true:suggestion -csharp_style_prefer_utf8_string_literals = true:suggestion -csharp_style_prefer_tuple_swap = true:suggestion -csharp_style_deconstructed_variable_declaration = true:suggestion -csharp_style_unused_value_assignment_preference = discard_variable:suggestion -csharp_style_unused_value_expression_statement_preference = discard_variable:silent -csharp_style_allow_embedded_statements_on_same_line_experimental = true:silent -csharp_style_allow_blank_lines_between_consecutive_braces_experimental = true:silent -csharp_style_allow_blank_line_after_colon_in_constructor_initializer_experimental = true:silent -csharp_style_prefer_pattern_matching = true:silent -csharp_style_prefer_not_pattern = true:suggestion -csharp_style_prefer_extended_property_pattern = true:suggestion +file_header_template = Licensed to the project contributors.\nThe license conditions are provided in the LICENSE file located in the project root + +# Code files +[*.{cs,vb}] +# Analyzers +dotnet_code_quality.ca1802.api_surface = private, internal +dotnet_code_quality.ca1822.api_surface = private, internal +dotnet_code_quality.ca2208.api_surface = public +dotnet_public_api_analyzer.require_api_files = true +# Mark attributes with AttributeUsageAttribute +dotnet_diagnostic.CA1018.severity = warning +# Properties should not be write only +dotnet_diagnostic.CA1044.severity = warning +# Do not declare protected member in sealed type +dotnet_diagnostic.CA1047.severity = warning +# Declare types in namespaces +dotnet_diagnostic.CA1050.severity = warning +# Avoid using cref tags with a prefix +dotnet_diagnostic.CA1200.severity = suggestion +# P/Invokes should not be visible +dotnet_diagnostic.CA1401.severity = warning +# Parameter names should match base declaration +dotnet_diagnostic.CA1725.severity = suggestion +# Remove empty Finalizers +dotnet_diagnostic.CA1821.severity = warning +# Mark assemblies with NeutralResourcesLanguageAttribute +dotnet_diagnostic.CA1824.severity = warning +# Do not use CountAsync() or LongCountAsync() when AnyAsync() can be used +dotnet_diagnostic.CA1828.severity = warning +# Prefer strongly-typed Append and Insert method overloads on StringBuilder. +dotnet_diagnostic.CA1830.severity = warning +# Use AsSpan or AsMemory instead of Range-based indexers when appropriate +dotnet_diagnostic.CA1832.severity = warning +# Use AsSpan or AsMemory instead of Range-based indexers when appropriate +dotnet_diagnostic.CA1833.severity = warning +# Prefer IsEmpty over Count +dotnet_diagnostic.CA1836.severity = warning +# Use 'Environment.ProcessPath' +dotnet_diagnostic.CA1839.severity = warning +# Do not call ToImmutableCollection on an ImmutableCollection value +# Temporarily disable to avoid regression in preview 1, revert back to warning when start using preview 2 +dotnet_diagnostic.CA2009.severity = none +# Avoid infinite recursion +dotnet_diagnostic.CA2011.severity = warning +# Initialize value type static fields inline +dotnet_diagnostic.CA2207.severity = warning +# Implement serialization constructors +dotnet_diagnostic.CA2229.severity = warning +# Provide correct arguments to formatting methods +dotnet_diagnostic.CA2241.severity = warning +# Test for NaN correctly +dotnet_diagnostic.CA2242.severity = warning +# Do not assign a property to itself. +dotnet_diagnostic.CA2245.severity = warning +# Provide correct 'enum' argument to 'Enum.HasFlag' +dotnet_diagnostic.CA2248.severity = warning +# Do Not Add Schema By URL +dotnet_diagnostic.CA3061.severity = warning +# Insecure DTD processing in XML +dotnet_diagnostic.CA3075.severity = warning +# Insecure XSLT script processing. +dotnet_diagnostic.CA3076.severity = warning +# Insecure Processing in API Design, XmlDocument and XmlTextReader +dotnet_diagnostic.CA3077.severity = warning +# Mark Verb Handlers With Validate Antiforgery Token +dotnet_diagnostic.CA3147.severity = warning +# Do Not Use Broken Cryptographic Algorithms +dotnet_diagnostic.CA5351.severity = warning +# Do Not Disable Certificate Validation +dotnet_diagnostic.CA5359.severity = warning +# Do Not Call Dangerous Methods In Deserialization +dotnet_diagnostic.CA5360.severity = warning +# Do Not Disable SChannel Use of Strong Crypto +dotnet_diagnostic.CA5361.severity = warning +# Do Not Disable Request Validation +dotnet_diagnostic.CA5363.severity = warning +# Do Not Use Deprecated Security Protocols +dotnet_diagnostic.CA5364.severity = warning +# Do Not Disable HTTP Header Checking +dotnet_diagnostic.CA5365.severity = warning +# Set ViewStateUserKey For Classes Derived From Page +dotnet_diagnostic.CA5368.severity = warning +# Use XmlReader For Validating Reader +dotnet_diagnostic.CA5370.severity = warning +# Do not use obsolete key derivation function +dotnet_diagnostic.CA5373.severity = warning +# Do Not Use XslTransform +dotnet_diagnostic.CA5374.severity = warning +# Use SharedAccessProtocol HttpsOnly +dotnet_diagnostic.CA5376.severity = warning +# Use Container Level Access Policy +dotnet_diagnostic.CA5377.severity = warning +# Do not disable ServicePointManagerSecurityProtocols +dotnet_diagnostic.CA5378.severity = warning +# Do Not Use Weak Key Derivation Function Algorithm +dotnet_diagnostic.CA5379.severity = warning +# Do Not Add Certificates To Root Store +dotnet_diagnostic.CA5380.severity = warning +# Ensure Certificates Are Not Added To Root Store +dotnet_diagnostic.CA5381.severity = warning +# Do Not Use Digital Signature Algorithm (DSA) +dotnet_diagnostic.CA5384.severity = warning +# Use Rivest–Shamir–Adleman (RSA) Algorithm With Sufficient Key Size +dotnet_diagnostic.CA5385.severity = warning +# Parameter has no matching param tag in the XML comment +dotnet_diagnostic.CS1573.severity = suggestion +dotnet_diagnostic.CS1591.severity = suggestion +# UseIsNullCheck +dotnet_diagnostic.IDE0041.severity = warning +# ValidateFormatString +dotnet_diagnostic.IDE0043.severity = warning +# MakeLocalFunctionStatic +dotnet_diagnostic.IDE0062.severity = warning +# FileHeaderMismatch +dotnet_diagnostic.IDE0073.severity = warning +# ConvertTypeOfToNameOf +dotnet_diagnostic.IDE0082.severity = warning +# Remove unnecessary lambda expression +dotnet_diagnostic.IDE0200.severity = none +# Remove redundant nullable directive +dotnet_diagnostic.IDE0240.severity = warning + +# Additional rules for template engine source code + +# Default severity for analyzer diagnostics with category 'StyleCop.CSharp.SpacingRules' +dotnet_analyzer_diagnostic.category-StyleCop.CSharp.SpacingRules.severity = none + +[{src,test}/**{Microsoft.TemplateEngine.*,dotnet-new?*}/**.cs] +# Default analyzed API surface = 'public' (public APIs) +dotnet_code_quality.api_surface = public +# Provide ObsoleteAttribute message +dotnet_diagnostic.CA1041.severity = warning +# Static holder types should be Static or NotInheritable +dotnet_diagnostic.CA1052.severity = warning +# Use nameof to express symbol names +dotnet_diagnostic.CA1507.severity = warning +# Use literals where appropriate +dotnet_diagnostic.CA1802.severity = warning +# Do not initialize unnecessarily +dotnet_diagnostic.CA1805.severity = warning +# Initialize reference type static fields inline +dotnet_diagnostic.CA1810.severity = warning +# Avoid unused private fields +dotnet_diagnostic.CA1823.severity = warning +# Avoid zero-length array allocations. +dotnet_diagnostic.CA1825.severity = warning +# Do not use Enumerable methods on indexable collections. Instead use the collection directly +dotnet_diagnostic.CA1826.severity = warning +# Do not use Count() or LongCount() when Any() can be used +dotnet_diagnostic.CA1827.severity = warning +# Use Length/Count property instead of Count() when available +dotnet_diagnostic.CA1829.severity = warning +# Consider using 'StringBuilder.Append(char)' when applicable. +dotnet_diagnostic.CA1834.severity = warning +# Prefer the 'Memory'-based overloads for 'ReadAsync' and 'WriteAsync' +dotnet_diagnostic.CA1835.severity = warning +# Use 'Environment.ProcessId' +dotnet_diagnostic.CA1837.severity = warning +# Avoid 'StringBuilder' parameters for P/Invokes +dotnet_diagnostic.CA1838.severity = warning +# Use 'Environment.CurrentManagedThreadId' +dotnet_diagnostic.CA1840.severity = warning +# Consider calling ConfigureAwait on the awaited task +dotnet_diagnostic.CA2007.severity = none +# Do not create tasks without passing a TaskScheduler +dotnet_diagnostic.CA2008.severity = warning +# Use ValueTasks correctly +dotnet_diagnostic.CA2012.severity = warning +# Forward the 'CancellationToken' parameter to methods that take one +dotnet_diagnostic.CA2016.severity = warning +# Instantiate argument exceptions correctly +dotnet_diagnostic.CA2208.severity = warning +# Consider using 'string.Contains' instead of 'string.IndexOf' +dotnet_diagnostic.CA2249.severity = warning +# Do Not Use Weak Cryptographic Algorithms +dotnet_diagnostic.CA5350.severity = warning +# Do not use insecure randomness +dotnet_diagnostic.CA5394.severity = warning +# Remove unnecessary using directives +dotnet_diagnostic.IDE0005.severity = warning +# Fix formating +dotnet_diagnostic.IDE0055.severity = warning +# Single line comment should begin with a space +dotnet_diagnostic.SA1005.severity = none +# Opening parenthesis should not be preceded by a space +dotnet_diagnostic.SA1008.severity = none +# Closing parenthesis should not be followed by a space +dotnet_diagnostic.SA1009.severity = none +# Prefix local calls with this +dotnet_diagnostic.SA1101.severity = none +# Block statements should not contain embedded comments +dotnet_diagnostic.SA1108.severity = none +# Closing parenthesis should be on line of last parameter +dotnet_diagnostic.SA1111.severity = none +# Parameter should not span multiple lines +dotnet_diagnostic.SA1118.severity = none +# Statement should not use unnecessary parenthesis +dotnet_diagnostic.SA1119.severity = none +# Comments should contain text +dotnet_diagnostic.SA1120.severity = none +# Use string.Empty for empty strings +dotnet_diagnostic.SA1122.severity = none +# Region should not be located within a code element +dotnet_diagnostic.SA1123.severity = none +# Do not use regions +dotnet_diagnostic.SA1124.severity = none +# Generic type constraints should be on their own line +dotnet_diagnostic.SA1127.severity = none +# Put constructor initializers on their own line +dotnet_diagnostic.SA1128.severity = none +# Constant values should appear on the right-hand side of comparisons +dotnet_diagnostic.SA1131.severity = none +# Elements should have the same indentation +dotnet_diagnostic.SA1137.severity = none +# Use literal suffix notation instead of casting +dotnet_diagnostic.SA1139.severity = none +# Use tuple syntax +dotnet_diagnostic.SA1141.severity = warning +# Refer to tuple elements by name +dotnet_diagnostic.SA1142.severity = warning +# Using directive should appear within a namespace declaration +dotnet_diagnostic.SA1200.severity = none +# Field names should not begin with underscore +dotnet_diagnostic.SA1309.severity = none +# Type parameter names should begin with T +dotnet_diagnostic.SA1314.severity = none +# Tuple element names should use correct casing +dotnet_diagnostic.SA1316.severity = warning +# File may only contain a single type +dotnet_diagnostic.SA1402.severity = none +# Debug.Assert should provide message text +dotnet_diagnostic.SA1405.severity = none +# Arithmetic expressions should declare precedence +dotnet_diagnostic.SA1407.severity = none +# Conditional expressions should declare precedence +dotnet_diagnostic.SA1408.severity = none +# Use trailing comma in multi-line initializers +dotnet_diagnostic.SA1413.severity = none +# Tuple types in signatures should have element names +dotnet_diagnostic.SA1414.severity = none +# Statement should not be on a single line +dotnet_diagnostic.SA1501.severity = none +# Element should not be on a single line +dotnet_diagnostic.SA1502.severity = none +# All accessors should be single-line or multi-line +dotnet_diagnostic.SA1504.severity = none +# A closing brace should not be preceded by a blank line +dotnet_diagnostic.SA1508.severity = none +# Opening braces should not be preceded by blank line +dotnet_diagnostic.SA1509.severity = none +# Single-line comments should not be followed by blank line +dotnet_diagnostic.SA1512.severity = none +# Closing brace should be followed by blank line +dotnet_diagnostic.SA1513.severity = none +# Single-line comment should be preceded by blank line +dotnet_diagnostic.SA1515.severity = none +# Code should not contain blank lines at the end of the file +dotnet_diagnostic.SA1518.severity = none +# Elements should be documented +dotnet_diagnostic.SA1600.severity = none +# Partial elements should be documented +dotnet_diagnostic.SA1601.severity = none +# Enumeration items should be documented +dotnet_diagnostic.SA1602.severity = none +# The documentation for parameter 'message' is missing +dotnet_diagnostic.SA1611.severity = none +# Element parameter documentation should have text +dotnet_diagnostic.SA1614.severity = none +# Element return value should be documented +dotnet_diagnostic.SA1615.severity = none +# Element return value documentation should have text +dotnet_diagnostic.SA1616.severity = none +# The documentation for type parameter is missing +dotnet_diagnostic.SA1618.severity = none +# Generic type parameter documentation should have text +dotnet_diagnostic.SA1622.severity = none +# Property documentation text +dotnet_diagnostic.SA1623.severity = none +# Element documentation should not be copied and pasted +dotnet_diagnostic.SA1625.severity = none +# The documentation text within the \'exception\' tag should not be empty +dotnet_diagnostic.SA1627.severity = none +# File should have header +dotnet_diagnostic.SA1633.severity = none +# Constructor summary documentation should begin with standard text +dotnet_diagnostic.SA1642.severity = none +# File name should match first type name +dotnet_diagnostic.SA1649.severity = none + +# Disable some StyleCop rules for test common Program.cs that is linked to test project of template engine +[test/Common/Program.cs] +# Declare types in namespaces +dotnet_diagnostic.CA1050.severity = none +# Elements should be documented +dotnet_diagnostic.SA1600.severity = none +# Partial elements should be documented +dotnet_diagnostic.SA1601.severity = none +# File should have header: The file header XML is invalid. +dotnet_diagnostic.SA1633.severity = none + +# Additional rules for test source code for template engine +[test/{Microsoft.TemplateEngine.*,dotnet-new.IntegrationTests}/**.cs] +# Test methods should not be skipped +dotnet_diagnostic.xUnit1004.severity = warning +# Elements should appear in the correct order +dotnet_diagnostic.SA1201.severity = none +# Elements should be ordered by access +dotnet_diagnostic.SA1202.severity = none +# Static elements should appear before instance elements +dotnet_diagnostic.SA1204.severity = none + +# Generated build output +[artifacts/**.cs] +dotnet_diagnostic.IDE0073.severity = none # C++ Files [*.{cpp,h,in}] @@ -215,8 +489,12 @@ indent_brace_style = Allman [*.{csproj,vbproj,vcxproj,vcxproj.filters,proj,nativeproj,locproj}] indent_size = 2 +# WiX files +[*.{wixproj,wxs,wxi,wxl,thm}] +indent_size = 2 + [*.{csproj,vbproj,proj,nativeproj,locproj}] -charset = utf-8 +charset = utf-8-bom # Xml build files [*.builds] @@ -237,5 +515,24 @@ indent_size = 2 # Shell scripts [*.sh] end_of_line = lf -[*.{cmd,bat}] +[*.{cmd, bat}] end_of_line = crlf + +# IDE0040: Add accessibility modifiers +dotnet_diagnostic.IDE0040.severity = warning + +[*.txt] +insert_final_newline = false + +[*.sarif] +insert_final_newline = false + +# Verify settings +[*.{received,verified}.{txt,xml,json,sh,zsh,nu,fish,ps1}] +charset = "utf-8-bom" +end_of_line = lf +indent_size = unset +indent_style = unset +insert_final_newline = false +tab_width = unset +trim_trailing_whitespace = false diff --git a/.github/workflows/action.yml b/.github/workflows/action.yml index 760efc89..90188211 100644 --- a/.github/workflows/action.yml +++ b/.github/workflows/action.yml @@ -39,10 +39,10 @@ jobs: 10.0.x - name: restore - run: dotnet restore + run: dotnet restore NuGetUtility.slnx - name: build - run: dotnet build --configuration Release --no-restore + run: dotnet build --configuration Release --no-restore NuGetUtility.slnx - name: test (NuGetUtility.Test.dll) run: dotnet test --project ./tests/NuGetUtility.Test/NuGetUtility.Test.csproj --configuration Release -f ${{ matrix.framework }} --no-restore --no-build @@ -65,7 +65,7 @@ jobs: 10.0.x - name: restore - run: dotnet restore + run: dotnet restore NuGetUtility.slnx - name: test run: dotnet test --project ./tests/FileLicenseMatcher.Test/FileLicenseMatcher.Test.csproj --configuration Release --no-restore @@ -84,7 +84,7 @@ jobs: - uses: browser-actions/setup-chrome@v2.1.1 - name: restore - run: dotnet restore + run: dotnet restore NuGetUtility.slnx - name: test run: dotnet test --project ./tests/NuGetUtility.UrlToLicenseMapping.Test/NuGetUtility.UrlToLicenseMapping.Test.csproj --configuration Release --no-restore @@ -109,14 +109,18 @@ jobs: uses: microsoft/setup-msbuild@v3 - name: build - run: msbuild -t:rebuild -restore -p:RestorePackagesConfig=true -property:Configuration=TestWindows + run: msbuild -t:rebuild -restore -p:RestorePackagesConfig=true -property:Configuration=TestWindows NuGetUtility.slnx - name: test - uses: josepho0918/vstest-action@15c7e288a18f04395431c4940afe15013a12098e - with: - testAssembly: "NuGet*.Test.dll" - searchFolder: "tests/*/bin/TestWindows/${{ matrix.framework }}/" - runInParallel: true + shell: pwsh + run: | + $failed = $false + Get-ChildItem "tests\*\bin\TestWindows\${{ matrix.framework }}\NuGet*.Test.exe" | ForEach-Object { + Write-Host "Running: $_" + & "$_" + if ($LASTEXITCODE -ne 0) { $failed = $true } + } + if ($failed) { exit 1 } check_code_format: runs-on: ubuntu-latest @@ -132,10 +136,10 @@ jobs: 10.0.x - name: restore - run: dotnet restore + run: dotnet restore NuGetUtility.slnx - name: check format - run: dotnet format --verify-no-changes + run: dotnet format --verify-no-changes NuGetUtility.slnx check_licenses: runs-on: ubuntu-latest @@ -158,15 +162,16 @@ jobs: 10.0.x - name: restore - run: dotnet restore NuGetUtility.sln -p:TargetFramework=${{ matrix.framework }} + run: dotnet restore NuGetUtility.slnx -p:TargetFramework=${{ matrix.framework }} - name: build run: dotnet publish ./src/NuGetLicenseCore/NuGetLicenseCore.csproj --configuration Release -o ./release -f ${{ matrix.framework }} --no-restore - name: check + shell: bash run: | - dotnet ./release/nuget-license.dll -ji ./.github/workflows/assets/${{ matrix.project }}/projectsToCheck.json -t -a ./.github/workflows/assets/${{ matrix.project }}/allowedLicenses.json -o JsonPretty -override ./.github/workflows/assets/${{ matrix.project }}/overwritePackageInformation.json -ignore ./.github/workflows/assets/${{ matrix.project }}/ignorePackages.json -mapping ./.github/workflows/assets/${{ matrix.project }}/urlToLicenseMapping.json -d ./licenses/${{ matrix.project }}/${{ matrix.framework }} -file-mapping ./.github/workflows/assets/${{ matrix.project }}/fileToLicenseMapping.json > ./licenses-output.json - cat ./licenses-output.json + set -o pipefail + dotnet ./release/nuget-license.dll -ji ./.github/workflows/assets/${{ matrix.project }}/projectsToCheck.json -t -a ./.github/workflows/assets/${{ matrix.project }}/allowedLicenses.json -o JsonPretty -override ./.github/workflows/assets/${{ matrix.project }}/overwritePackageInformation.json -ignore ./.github/workflows/assets/${{ matrix.project }}/ignorePackages.json -mapping ./.github/workflows/assets/${{ matrix.project }}/urlToLicenseMapping.json -d ./licenses/${{ matrix.project }}/${{ matrix.framework }} -file-mapping ./.github/workflows/assets/${{ matrix.project }}/fileToLicenseMapping.json 2>&1 | tee ./licenses-output.json - name: validate downloaded licenses shell: pwsh @@ -234,7 +239,7 @@ jobs: runs-on: windows-2025-vs2026 strategy: matrix: - project: [App, Tests, ProjectWithReferenceContainingLicenseExpression, ProjectWithReferenceContainingFileLicense, ProjectWithReferenceContainingWindowsSpecificPath] + project: [App, Tests, ProjectWithReferenceContainingLicenseExpression, ProjectWithReferenceContainingFileLicense, ProjectWithReferenceContainingWindowsSpecificPath, Sln, Slnx] steps: - uses: actions/checkout@v6 @@ -251,7 +256,7 @@ jobs: - name: Add msbuild to PATH uses: microsoft/setup-msbuild@v3 - - run: msbuild -t:restore -p:RestorePackagesConfig=true NuGetUtility.sln + - run: msbuild -t:restore -p:RestorePackagesConfig=true NuGetUtility.slnx - name: fully qualify release path id: release_path @@ -265,10 +270,14 @@ jobs: run: msbuild ./src/NuGetLicenseFramework/NuGetLicenseFramework.csproj /t:Publish /p:configuration=Release /p:PublishDir=${{ steps.release_path.outputs.path }} /p:TargetFramework=net472 - name: check + shell: pwsh run: | - ${{ steps.release_path.outputs.path }}/NuGetLicenseFramework.exe -ji ./.github/workflows/assets/${{ matrix.project }}/projectsToCheck.json -t -a ./.github/workflows/assets/${{ matrix.project }}/allowedLicenses.json -o JsonPretty -override ./.github/workflows/assets/${{ matrix.project }}/overwritePackageInformation.json -ignore ./.github/workflows/assets/${{ matrix.project }}/ignorePackages.json -mapping ./.github/workflows/assets/${{ matrix.project }}/urlToLicenseMapping.json -d ./licenses/${{ matrix.project }} -file-mapping ./.github/workflows/assets/${{ matrix.project }}/fileToLicenseMapping.json > ./licenses-output.json - cat ./licenses-output.json - + & "${{ steps.release_path.outputs.path }}/NuGetLicenseFramework.exe" -ji ./.github/workflows/assets/${{ matrix.project }}/projectsToCheck.json -t -a ./.github/workflows/assets/${{ matrix.project }}/allowedLicenses.json -o JsonPretty -override ./.github/workflows/assets/${{ matrix.project }}/overwritePackageInformation.json -ignore ./.github/workflows/assets/${{ matrix.project }}/ignorePackages.json -mapping ./.github/workflows/assets/${{ matrix.project }}/urlToLicenseMapping.json -d ./licenses/${{ matrix.project }} -file-mapping ./.github/workflows/assets/${{ matrix.project }}/fileToLicenseMapping.json 2>&1 | Tee-Object -FilePath ./licenses-output.json + $exitCode = $LASTEXITCODE + if ($exitCode -ne 0) { + exit $exitCode + } + - name: validate downloaded licenses shell: pwsh run: | @@ -351,7 +360,7 @@ jobs: 10.0.x - name: restore - run: dotnet restore NuGetUtility.sln -p:TargetFramework=${{ matrix.framework }} + run: dotnet restore NuGetUtility.slnx -p:TargetFramework=${{ matrix.framework }} - uses: paulhatch/semantic-version@v6.0.2 id: version @@ -388,7 +397,7 @@ jobs: - name: Add msbuild to PATH uses: microsoft/setup-msbuild@v3 - - run: msbuild -t:restore -p:RestorePackagesConfig=true NuGetUtility.sln + - run: msbuild -t:restore -p:RestorePackagesConfig=true NuGetUtility.slnx - name: fully qualify release path id: release_path diff --git a/.github/workflows/assets/App/allowedLicenses.json b/.github/workflows/assets/App/allowedLicenses.json index 38eab79b..d9d62e7a 100644 --- a/.github/workflows/assets/App/allowedLicenses.json +++ b/.github/workflows/assets/App/allowedLicenses.json @@ -1,4 +1,4 @@ [ "MIT", "Apache-2.0" -] \ No newline at end of file +] diff --git a/.github/workflows/assets/App/ignorePackages.json b/.github/workflows/assets/App/ignorePackages.json index 2664b4f9..fe51488c 100644 --- a/.github/workflows/assets/App/ignorePackages.json +++ b/.github/workflows/assets/App/ignorePackages.json @@ -1,3 +1 @@ -[ - "NETStandard.Library" -] \ No newline at end of file +[] diff --git a/.github/workflows/assets/App/overwritePackageInformation.json b/.github/workflows/assets/App/overwritePackageInformation.json index 4d846ed9..bcb14a3e 100644 --- a/.github/workflows/assets/App/overwritePackageInformation.json +++ b/.github/workflows/assets/App/overwritePackageInformation.json @@ -7,4 +7,4 @@ "Authors": "Microsoft", "License": "MIT" } -] \ No newline at end of file +] diff --git a/.github/workflows/assets/App/projectsToCheck.json b/.github/workflows/assets/App/projectsToCheck.json index 7a247b9e..71d7f8e2 100644 --- a/.github/workflows/assets/App/projectsToCheck.json +++ b/.github/workflows/assets/App/projectsToCheck.json @@ -1,4 +1,4 @@ [ "./src/NuGetLicenseCore/NuGetLicenseCore.csproj", "./src/NuGetLicenseFramework/NuGetLicenseFramework.csproj" -] \ No newline at end of file +] diff --git a/.github/workflows/assets/App/urlToLicenseMapping.json b/.github/workflows/assets/App/urlToLicenseMapping.json index 9e26dfee..0967ef42 100644 --- a/.github/workflows/assets/App/urlToLicenseMapping.json +++ b/.github/workflows/assets/App/urlToLicenseMapping.json @@ -1 +1 @@ -{} \ No newline at end of file +{} diff --git a/.github/workflows/assets/Licenses/MSTestingLicense.txt b/.github/workflows/assets/Licenses/MSTestingLicense.txt new file mode 100644 index 00000000..c4cfaf7d --- /dev/null +++ b/.github/workflows/assets/Licenses/MSTestingLicense.txt @@ -0,0 +1,205 @@ +# MICROSOFT SOFTWARE LICENSE TERMS + +# MICROSOFT .NET LIBRARY + +These license terms are an agreement between Microsoft Corporation (or based on +where you live, one of its affiliates) and you. They apply to the software +named above. The terms also apply to any Microsoft services or updates for the +software, except to the extent those have different terms. + +IF YOU COMPLY WITH THESE LICENSE TERMS, YOU HAVE THE RIGHTS BELOW. + +1. INSTALLATION AND USE RIGHTS. +You may install and use any number of copies of the software to design, develop +and test you're applications. You may modify, copy, distribute or deploy any +.js files contained in the software as part of your applications. + +2. THIRD PARTY COMPONENTS. The software may include third party components with +separate legal notices or governed by other agreements, as may be described in +the ThirdPartyNotices file(s) accompanying the software. + +3. ADDITIONAL LICENSING REQUIREMENTS AND/OR USE RIGHTS. + a. DISTRIBUTABLE CODE. In addition to the .js files described above, the + software is comprised of Distributable Code. "Distributable Code" is + code that you are permitted to distribute in programs you develop if you + comply with the terms below. + + i. Right to Use and Distribute. + - You may copy and distribute the object code form of the software. + - Third Party Distribution. You may permit distributors of your programs + to copy and distribute the Distributable Code as part of those + programs. + + ii. Distribution Requirements. For any Distributable Code you distribute, + you must + - use the Distributable Code in your programs and not as a standalone + distribution; + - require distributors and external end users to agree to terms that + protect it at least as much as this agreement; + - display your valid copyright notice on your programs; and + - indemnify, defend, and hold harmless Microsoft from any claims, + including attorneys' fees, related to the distribution or use of + your applications, except to the extent that any claim is based solely + on the Distributable Code. + + iii. Distribution Restrictions. You may not + - alter any copyright, trademark or patent notice in the Distributable + Code; + - use Microsoft's trademarks in your programs' names or in a way that + suggests your programs come from or are endorsed by Microsoft; + - include Distributable Code in malicious, deceptive or unlawful + programs; or + - modify or distribute the source code of any Distributable Code so + that any part of it becomes subject to an Excluded License. + An Excluded License is one that requires, as a condition of use, + modification or distribution, that + - the code be disclosed or distributed in source code form; or + - others have the right to modify it. + +4. DATA. + a. Data Collection. The software may collect information about you and your + use of the software, and send that to Microsoft. Microsoft may use this + information to provide services and improve our products and services. + You may opt-out of many of these scenarios, but not all, as described in + the product documentation. There are also some features in the software + that may enable you and Microsoft to collect data from users of your + applications. If you use these features, you must comply with applicable + law, including providing appropriate notices to users of your applications + together with a copy of Microsoft's privacy statement. Our privacy + statement is located at https://go.microsoft.com/fwlink/?LinkID=824704. + You can learn more about data collection and use in the help documentation + and our privacy statement. Your use of the software operates as your + consent to these practices. + b. Processing of Personal Data. To the extent Microsoft is a processor or + subprocessor of personal data in connection with the software, Microsoft + makes the commitments in the European Union General Data Protection + Regulation Terms of the Online Services Terms to all customers effective + May 25, 2018, at http://go.microsoft.com/?linkid=9840733. + +5. SCOPE OF LICENSE. The software is licensed, not sold. This agreement only + gives you some rights to use the software. Microsoft reserves all other + rights. Unless applicable law gives you more rights despite this limitation, + you may use the software only as expressly permitted in this agreement. + In doing so, you must comply with any technical limitations in the software + that only allow you to use it in certain ways. You may not + - work around any technical limitations in the software; + - reverse engineer, decompile or disassemble the software, or otherwise + attempt to derive the source code for the software, except and to the + extent required by third party licensing terms governing use of certain + open source components that may be included in the software; + - remove, minimize, block or modify any notices of Microsoft or its suppliers + in the software; + - use the software in any way that is against the law; or + - share, publish, rent or lease the software, provide the software as a + stand-alone offering for others to use, or transfer the software or this + agreement to any third party. + +6. EXPORT RESTRICTIONS. You must comply with all domestic and international + export laws and regulations that apply to the software, which include + restrictions on destinations, end users, and end use. For further + information on export restrictions, visit www.microsoft.com/exporting. + +7. SUPPORT SERVICES. Because this software is "as is," we may not provide + support services for it. + +8. ENTIRE AGREEMENT. This agreement, and the terms for supplements, updates, + Internet-based services and support services that you use, are the entire + agreement for the software and support services. + +9. APPLICABLE LAW. If you acquired the software in the United States, + Washington law applies to interpretation of and claims for breach of this + agreement, and the laws of the state where you live apply to all other + claims. If you acquired the software in any other country, its laws apply. + +10. CONSUMER RIGHTS; REGIONAL VARIATIONS. This agreement describes certain legal + rights. You may have other rights, including consumer rights, under + the laws of your state or country. Separate and apart from your relationship + with Microsoft, you may also have rights with respect to the party from + which you acquired the software. This agreement does not change those other + rights if the laws of your state or country do not permit it to do so. + For example, if you acquired the software in one of the below regions, or + mandatory country law applies, then the following provisions apply to you: + a) Australia. You have statutory guarantees under the Australian Consumer Law + and nothing in this agreement is intended to affect those rights. + b) Canada. If you acquired this software in Canada, you may stop receiving + updates by turning off the automatic update feature, disconnecting your + device from the Internet (if and when you re-connect to the Internet, + however, the software will resume checking for and installing updates), + or uninstalling the software. The product documentation, if any, may also + specify how to turn off updates for your specific device or software. + c) Germany and Austria. + (i) Warranty. The software will perform substantially as described in any + Microsoft materials that accompany it. However, Microsoft gives no + contractual guarantee in relation to the software. + (ii) Limitation of Liability. In case of intentional conduct, gross + negligence, claims based on the Product Liability Act, as well as in + case of death or personal or physical injury, Microsoft is liable + according to the statutory law. + + Subject to the foregoing clause (ii), Microsoft will only be liable for slight + negligence if Microsoft is in breach of such material contractual obligations, + the fulfillment of which facilitate the due performance of this agreement, the + breach of which would endanger the purpose of this agreement and the + compliance with which a party may constantly trust in (so-called + "cardinal obligations"). In other cases of slight negligence, Microsoft will + not be liable for slight negligence + +11. DISCLAIMER OF WARRANTY. THE SOFTWARE IS LICENSED "AS-IS." YOU BEAR THE RISK + OF USING IT. MICROSOFT GIVES NO EXPRESS WARRANTIES, GUARANTEES OR CONDITIONS. + TO THE EXTENT PERMITTED UNDER YOUR LOCAL LAWS, MICROSOFT EXCLUDES THE + IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NON-INFRINGEMENT. + +12. LIMITATION ON AND EXCLUSION OF REMEDIES AND DAMAGES. YOU CAN RECOVER FROM + MICROSOFT AND ITS SUPPLIERS ONLY DIRECT DAMAGES UP TO U.S. $5.00. YOU CANNOT + RECOVER ANY OTHER DAMAGES, INCLUDING CONSEQUENTIAL, LOST PROFITS, SPECIAL, + INDIRECT OR INCIDENTAL DAMAGES. + +This limitation applies to (a) anything related to the software, services, +content (including code) on third party Internet sites, or third party +applications; and (b) claims for breach of contract, breach of warranty, +guarantee or condition, strict liability, negligence, or other tort to the +extent permitted by applicable law. + +It also applies even if Microsoft knew or should have known about the possibility +of the damages. The above limitation or exclusion may not apply to you because +your state or country may not allow the exclusion or limitation of incidental, +consequential or other damages. +Please note: As this software is distributed in Quebec, Canada, some of the +clauses in this agreement are provided below in French. + +Remarque : Ce logiciel étant distribué au Québec, Canada, certaines des clauses +dans ce contrat sont fournies ci-dessous en français. + +EXONÉRATION DE GARANTIE. Le logiciel visé par une licence est offert «tel quel». +Toute utilisation de ce logiciel est à votre seule risque et péril. Microsoft +n'accorde aucune autre garantie expresse. Vous pouvez bénéficier de droits +additionnels en vertu du droit local sur la protection des consommateurs, +que ce contrat ne peut modifier. La ou elles sont permises par le droit locale, +les garanties implicites de qualité marchande, d'adéquation à un usage +particulier et d'absence de contrefaçon sont exclues. + +LIMITATION DES DOMMAGES-INTÉRÊTS ET EXCLUSION DE RESPONSABILITÉ POUR LES +DOMMAGES. Vous pouvez obtenir de Microsoft et de ses fournisseurs une +indemnisation en cas de dommages directs uniquement à hauteur de 5,00 $ US. +Vous ne pouvez prétendre à aucune indemnisation pour les autres dommages, +y compris les dommages spéciaux, indirects ou accessoires et pertes de +bénéfices. + +Cette limitation concerne: +- tout ce qui est relié au logiciel, aux services ou au contenu (y compris le + code) figurant sur des sites Internet tiers ou dans des programmes tiers; et +- les réclamations au titre de violation de contrat ou de garantie, ou au titre + de responsabilité stricte, de négligence ou d'une autre faute dans la limite + autorisée par la loi en vigueur. + +Elle s'applique également, même si Microsoft connaissait ou devrait connaître +l'éventualité d'un tel dommage. Si votre pays n'autorise pas l'exclusion ou +la limitation de responsabilité pour les dommages indirects, accessoires ou +de quelque nature que ce soit, il se peut que la limitation ou l'exclusion +ci-dessus ne s'appliquera pas à votre égard. + +EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous +pourriez avoir d'autres droits prévus par les lois de votre pays. Le présent +contrat ne modifie pas les droits que vous confèrent les lois de votre pays si +celles-ci ne le permettent pas. \ No newline at end of file diff --git a/.github/workflows/assets/ProjectWithReferenceContainingWindowsSpecificPath/Licenses/Sonar-Source-Available.txt b/.github/workflows/assets/Licenses/SonarSourceAvailable.txt similarity index 100% rename from .github/workflows/assets/ProjectWithReferenceContainingWindowsSpecificPath/Licenses/Sonar-Source-Available.txt rename to .github/workflows/assets/Licenses/SonarSourceAvailable.txt diff --git a/.github/workflows/assets/ProjectWithReferenceContainingFileLicense/allowedLicenses.json b/.github/workflows/assets/ProjectWithReferenceContainingFileLicense/allowedLicenses.json index c914924b..344b4896 100644 --- a/.github/workflows/assets/ProjectWithReferenceContainingFileLicense/allowedLicenses.json +++ b/.github/workflows/assets/ProjectWithReferenceContainingFileLicense/allowedLicenses.json @@ -1,3 +1,3 @@ [ "MIT" -] \ No newline at end of file +] diff --git a/.github/workflows/assets/ProjectWithReferenceContainingFileLicense/ignorePackages.json b/.github/workflows/assets/ProjectWithReferenceContainingFileLicense/ignorePackages.json index 0637a088..fe51488c 100644 --- a/.github/workflows/assets/ProjectWithReferenceContainingFileLicense/ignorePackages.json +++ b/.github/workflows/assets/ProjectWithReferenceContainingFileLicense/ignorePackages.json @@ -1 +1 @@ -[] \ No newline at end of file +[] diff --git a/.github/workflows/assets/ProjectWithReferenceContainingFileLicense/overwritePackageInformation.json b/.github/workflows/assets/ProjectWithReferenceContainingFileLicense/overwritePackageInformation.json index 0637a088..fe51488c 100644 --- a/.github/workflows/assets/ProjectWithReferenceContainingFileLicense/overwritePackageInformation.json +++ b/.github/workflows/assets/ProjectWithReferenceContainingFileLicense/overwritePackageInformation.json @@ -1 +1 @@ -[] \ No newline at end of file +[] diff --git a/.github/workflows/assets/ProjectWithReferenceContainingFileLicense/projectsToCheck.json b/.github/workflows/assets/ProjectWithReferenceContainingFileLicense/projectsToCheck.json index e231a5ef..f4ed0235 100644 --- a/.github/workflows/assets/ProjectWithReferenceContainingFileLicense/projectsToCheck.json +++ b/.github/workflows/assets/ProjectWithReferenceContainingFileLicense/projectsToCheck.json @@ -1,3 +1,3 @@ [ "./integration/ProjectWithReferenceContainingFileLicense/ProjectWithReferenceContainingFileLicense.csproj" -] \ No newline at end of file +] diff --git a/.github/workflows/assets/ProjectWithReferenceContainingFileLicense/urlToLicenseMapping.json b/.github/workflows/assets/ProjectWithReferenceContainingFileLicense/urlToLicenseMapping.json index 9e26dfee..0967ef42 100644 --- a/.github/workflows/assets/ProjectWithReferenceContainingFileLicense/urlToLicenseMapping.json +++ b/.github/workflows/assets/ProjectWithReferenceContainingFileLicense/urlToLicenseMapping.json @@ -1 +1 @@ -{} \ No newline at end of file +{} diff --git a/.github/workflows/assets/ProjectWithReferenceContainingLicenseExpression/allowedLicenses.json b/.github/workflows/assets/ProjectWithReferenceContainingLicenseExpression/allowedLicenses.json index 38eab79b..d9d62e7a 100644 --- a/.github/workflows/assets/ProjectWithReferenceContainingLicenseExpression/allowedLicenses.json +++ b/.github/workflows/assets/ProjectWithReferenceContainingLicenseExpression/allowedLicenses.json @@ -1,4 +1,4 @@ [ "MIT", "Apache-2.0" -] \ No newline at end of file +] diff --git a/.github/workflows/assets/ProjectWithReferenceContainingLicenseExpression/ignorePackages.json b/.github/workflows/assets/ProjectWithReferenceContainingLicenseExpression/ignorePackages.json index 2664b4f9..fe51488c 100644 --- a/.github/workflows/assets/ProjectWithReferenceContainingLicenseExpression/ignorePackages.json +++ b/.github/workflows/assets/ProjectWithReferenceContainingLicenseExpression/ignorePackages.json @@ -1,3 +1 @@ -[ - "NETStandard.Library" -] \ No newline at end of file +[] diff --git a/.github/workflows/assets/ProjectWithReferenceContainingLicenseExpression/overwritePackageInformation.json b/.github/workflows/assets/ProjectWithReferenceContainingLicenseExpression/overwritePackageInformation.json index 0637a088..fe51488c 100644 --- a/.github/workflows/assets/ProjectWithReferenceContainingLicenseExpression/overwritePackageInformation.json +++ b/.github/workflows/assets/ProjectWithReferenceContainingLicenseExpression/overwritePackageInformation.json @@ -1 +1 @@ -[] \ No newline at end of file +[] diff --git a/.github/workflows/assets/ProjectWithReferenceContainingLicenseExpression/projectsToCheck.json b/.github/workflows/assets/ProjectWithReferenceContainingLicenseExpression/projectsToCheck.json index e6ed060f..076d2dba 100644 --- a/.github/workflows/assets/ProjectWithReferenceContainingLicenseExpression/projectsToCheck.json +++ b/.github/workflows/assets/ProjectWithReferenceContainingLicenseExpression/projectsToCheck.json @@ -1,3 +1,3 @@ [ "./integration/ProjectWithReferenceContainingLicenseExpression/ProjectWithReferenceContainingLicenseExpression.csproj" -] \ No newline at end of file +] diff --git a/.github/workflows/assets/ProjectWithReferenceContainingLicenseExpression/urlToLicenseMapping.json b/.github/workflows/assets/ProjectWithReferenceContainingLicenseExpression/urlToLicenseMapping.json index 9e26dfee..0967ef42 100644 --- a/.github/workflows/assets/ProjectWithReferenceContainingLicenseExpression/urlToLicenseMapping.json +++ b/.github/workflows/assets/ProjectWithReferenceContainingLicenseExpression/urlToLicenseMapping.json @@ -1 +1 @@ -{} \ No newline at end of file +{} diff --git a/.github/workflows/assets/ProjectWithReferenceContainingWindowsSpecificPath/allowedLicenses.json b/.github/workflows/assets/ProjectWithReferenceContainingWindowsSpecificPath/allowedLicenses.json index 8b9d92a9..bbbc8719 100644 --- a/.github/workflows/assets/ProjectWithReferenceContainingWindowsSpecificPath/allowedLicenses.json +++ b/.github/workflows/assets/ProjectWithReferenceContainingWindowsSpecificPath/allowedLicenses.json @@ -1,3 +1,3 @@ [ - "SSA-1.0" -] \ No newline at end of file + "SonarSourceAvailable-1.0" +] diff --git a/.github/workflows/assets/ProjectWithReferenceContainingWindowsSpecificPath/fileToLicenseMapping.json b/.github/workflows/assets/ProjectWithReferenceContainingWindowsSpecificPath/fileToLicenseMapping.json index 6e369e9b..a766ee5d 100644 --- a/.github/workflows/assets/ProjectWithReferenceContainingWindowsSpecificPath/fileToLicenseMapping.json +++ b/.github/workflows/assets/ProjectWithReferenceContainingWindowsSpecificPath/fileToLicenseMapping.json @@ -1,3 +1,3 @@ { - "Licenses/Sonar-Source-Available.txt": "SSA-1.0" + "../Licenses/SonarSourceAvailable.txt": "SonarSourceAvailable-1.0" } diff --git a/.github/workflows/assets/ProjectWithReferenceContainingWindowsSpecificPath/ignorePackages.json b/.github/workflows/assets/ProjectWithReferenceContainingWindowsSpecificPath/ignorePackages.json index 2664b4f9..fe51488c 100644 --- a/.github/workflows/assets/ProjectWithReferenceContainingWindowsSpecificPath/ignorePackages.json +++ b/.github/workflows/assets/ProjectWithReferenceContainingWindowsSpecificPath/ignorePackages.json @@ -1,3 +1 @@ -[ - "NETStandard.Library" -] \ No newline at end of file +[] diff --git a/.github/workflows/assets/ProjectWithReferenceContainingWindowsSpecificPath/overwritePackageInformation.json b/.github/workflows/assets/ProjectWithReferenceContainingWindowsSpecificPath/overwritePackageInformation.json index 0637a088..fe51488c 100644 --- a/.github/workflows/assets/ProjectWithReferenceContainingWindowsSpecificPath/overwritePackageInformation.json +++ b/.github/workflows/assets/ProjectWithReferenceContainingWindowsSpecificPath/overwritePackageInformation.json @@ -1 +1 @@ -[] \ No newline at end of file +[] diff --git a/.github/workflows/assets/ProjectWithReferenceContainingWindowsSpecificPath/projectsToCheck.json b/.github/workflows/assets/ProjectWithReferenceContainingWindowsSpecificPath/projectsToCheck.json index 225c2384..e54a88a2 100644 --- a/.github/workflows/assets/ProjectWithReferenceContainingWindowsSpecificPath/projectsToCheck.json +++ b/.github/workflows/assets/ProjectWithReferenceContainingWindowsSpecificPath/projectsToCheck.json @@ -1,3 +1,3 @@ [ "./integration/ProjectWithReferenceContainingWindowsSpecificPath/ProjectWithReferenceContainingWindowsSpecificPath.csproj" -] \ No newline at end of file +] diff --git a/.github/workflows/assets/ProjectWithReferenceContainingWindowsSpecificPath/urlToLicenseMapping.json b/.github/workflows/assets/ProjectWithReferenceContainingWindowsSpecificPath/urlToLicenseMapping.json index 9e26dfee..0967ef42 100644 --- a/.github/workflows/assets/ProjectWithReferenceContainingWindowsSpecificPath/urlToLicenseMapping.json +++ b/.github/workflows/assets/ProjectWithReferenceContainingWindowsSpecificPath/urlToLicenseMapping.json @@ -1 +1 @@ -{} \ No newline at end of file +{} diff --git a/.github/workflows/assets/Sln/allowedLicenses.json b/.github/workflows/assets/Sln/allowedLicenses.json new file mode 100644 index 00000000..adae5e71 --- /dev/null +++ b/.github/workflows/assets/Sln/allowedLicenses.json @@ -0,0 +1,8 @@ +[ + "MIT", + "Apache-2.0", + "BSD-3-Clause", + "BSD-2-Clause", + "SonarSourceAvailable-1.0", + "MSTestingLicenseTerms" +] diff --git a/.github/workflows/assets/Sln/fileToLicenseMapping.json b/.github/workflows/assets/Sln/fileToLicenseMapping.json new file mode 100644 index 00000000..03087ae0 --- /dev/null +++ b/.github/workflows/assets/Sln/fileToLicenseMapping.json @@ -0,0 +1,4 @@ +{ + "../Licenses/SonarSourceAvailable.txt": "SonarSourceAvailable-1.0", + "../Licenses/MSTestingLicense.txt": "MSTestingLicenseTerms" +} diff --git a/.github/workflows/assets/Sln/ignorePackages.json b/.github/workflows/assets/Sln/ignorePackages.json new file mode 100644 index 00000000..fe51488c --- /dev/null +++ b/.github/workflows/assets/Sln/ignorePackages.json @@ -0,0 +1 @@ +[] diff --git a/.github/workflows/assets/Sln/overwritePackageInformation.json b/.github/workflows/assets/Sln/overwritePackageInformation.json new file mode 100644 index 00000000..98bd4c69 --- /dev/null +++ b/.github/workflows/assets/Sln/overwritePackageInformation.json @@ -0,0 +1,523 @@ +[{ + "Id": "Fare", + "Version": "2.2.1", + "ProjectUrl": "https://github.com/moodmosaic/Fare", + "Copyright": "Copyright \u00A9 Nikos Baxevanis 2016", + "Authors": "Nikos Baxevanis", + "License": "MIT", + "LicenseUrl": "https://github.com/moodmosaic/Fare/blob/master/LICENSE" + }, + { + "Id": "Microsoft.NETCore.Platforms", + "Version": "1.1.1", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "Microsoft.NETCore.Targets", + "Version": "1.1.3", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl", + "Version": "4.3.2", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl", + "Version": "4.3.2", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl", + "Version": "4.3.2", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "runtime.native.System", + "Version": "4.3.0", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "runtime.native.System.Net.Http", + "Version": "4.3.0", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "runtime.native.System.Security.Cryptography.Apple", + "Version": "4.3.0", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "runtime.native.System.Security.Cryptography.OpenSsl", + "Version": "4.3.2", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl", + "Version": "4.3.2", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl", + "Version": "4.3.2", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple", + "Version": "4.3.0", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl", + "Version": "4.3.2", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl", + "Version": "4.3.2", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl", + "Version": "4.3.2", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl", + "Version": "4.3.2", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl", + "Version": "4.3.2", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "System.Collections", + "Version": "4.3.0", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "System.Collections.Concurrent", + "Version": "4.3.0", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "System.Diagnostics.Debug", + "Version": "4.3.0", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "System.Diagnostics.DiagnosticSource", + "Version": "4.3.0", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "System.Diagnostics.Tracing", + "Version": "4.3.0", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "System.Globalization", + "Version": "4.3.0", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "System.Globalization.Calendars", + "Version": "4.3.0", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "System.Globalization.Extensions", + "Version": "4.3.0", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "System.IO", + "Version": "4.3.0", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "System.IO.FileSystem", + "Version": "4.3.0", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "System.IO.FileSystem.Primitives", + "Version": "4.3.0", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "System.Linq", + "Version": "4.3.0", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "System.Net.Http", + "Version": "4.3.4", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "System.Net.Primitives", + "Version": "4.3.0", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "System.Reflection", + "Version": "4.3.0", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "System.Reflection.Primitives", + "Version": "4.3.0", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "System.Resources.ResourceManager", + "Version": "4.3.0", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "System.Runtime", + "Version": "4.3.0", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "System.Runtime", + "Version": "4.3.1", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "System.Runtime.Extensions", + "Version": "4.3.0", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "System.Runtime.Handles", + "Version": "4.3.0", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "System.Runtime.InteropServices", + "Version": "4.3.0", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "System.Runtime.Numerics", + "Version": "4.3.0", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "System.Security.Cryptography.Algorithms", + "Version": "4.3.0", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "System.Security.Cryptography.Cng", + "Version": "4.3.0", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "System.Security.Cryptography.Csp", + "Version": "4.3.0", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "System.Security.Cryptography.Encoding", + "Version": "4.3.0", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "System.Security.Cryptography.OpenSsl", + "Version": "4.3.0", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "System.Security.Cryptography.Primitives", + "Version": "4.3.0", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "System.Security.Cryptography.X509Certificates", + "Version": "4.3.0", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "System.Security.Cryptography.X509Certificates", + "Version": "4.3.2", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "System.Text.Encoding", + "Version": "4.3.0", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "System.Text.RegularExpressions", + "Version": "4.3.1", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "System.Threading", + "Version": "4.3.0", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "System.Threading.Tasks", + "Version": "4.3.0", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "System.Runtime.InteropServices.RuntimeInformation", + "Version": "4.3.0", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "NetArchTest.Rules", + "Version": "1.3.2", + "ProjectUrl": "https://www.ben-morris.com/writing-archunit-style-tests-for-net-and-c-for-self-testing-architectures/", + "Copyright": "Copyright (c) 2021 Ben Morris", + "Authors": "Ben Morris", + "License": "MIT" + }, + { + "Id": "Bogus", + "Version": "35.6.3", + "ProjectUrl": "https://github.com/bchavez/Bogus", + "Authors": "Brian Chavez", + "License": "MIT AND BSD-3-Clause" + },{ + "Id": "googletest", + "Version": "1.8.3", + "ProjectUrl": "https://github.com/google/googletest", + "Copyright": "Copyright 2016 Google Inc. All rights reserved.", + "Authors": "mheule@google.com (Markus Heule)", + "Description": "Google\u0027s C\u002B\u002B test framework for Visual Studio 2015 (v140) \u0026 2017 (v141)\n Note: NuGet package version is not corresponding with GoogleTest releases!", + "Summary": "Google\u0027s C\u002B\u002B test framework", + "License": "BSD-2-Clause", + "LicenseUrl": "https://opensource.org/licenses/bsd-license.php" + }, + { + "Id": "googletest.redist", + "Version": "1.8.3", + "ProjectUrl": "https://github.com/google/googletest", + "Copyright": "Copyright 2016 Google Inc. All rights reserved.", + "Authors": "mheule@google.com (Markus Heule)", + "Description": "Redistributable components for package \u0027googletest\u0027. This package should only be installed as a dependency. \n(This is not the package you are looking for).", + "Summary": "Redistributable components for for package \u0027googletest\u0027", + "License": "BSD-2-Clause", + "LicenseUrl": "https://opensource.org/licenses/bsd-license.php" + } +] \ No newline at end of file diff --git a/.github/workflows/assets/Sln/projectsToCheck.json b/.github/workflows/assets/Sln/projectsToCheck.json new file mode 100644 index 00000000..ab579d7e --- /dev/null +++ b/.github/workflows/assets/Sln/projectsToCheck.json @@ -0,0 +1,3 @@ +[ + "./NuGetUtility.sln" +] diff --git a/.github/workflows/assets/Sln/urlToLicenseMapping.json b/.github/workflows/assets/Sln/urlToLicenseMapping.json new file mode 100644 index 00000000..0967ef42 --- /dev/null +++ b/.github/workflows/assets/Sln/urlToLicenseMapping.json @@ -0,0 +1 @@ +{} diff --git a/.github/workflows/assets/Slnx/allowedLicenses.json b/.github/workflows/assets/Slnx/allowedLicenses.json new file mode 100644 index 00000000..adae5e71 --- /dev/null +++ b/.github/workflows/assets/Slnx/allowedLicenses.json @@ -0,0 +1,8 @@ +[ + "MIT", + "Apache-2.0", + "BSD-3-Clause", + "BSD-2-Clause", + "SonarSourceAvailable-1.0", + "MSTestingLicenseTerms" +] diff --git a/.github/workflows/assets/Slnx/fileToLicenseMapping.json b/.github/workflows/assets/Slnx/fileToLicenseMapping.json new file mode 100644 index 00000000..03087ae0 --- /dev/null +++ b/.github/workflows/assets/Slnx/fileToLicenseMapping.json @@ -0,0 +1,4 @@ +{ + "../Licenses/SonarSourceAvailable.txt": "SonarSourceAvailable-1.0", + "../Licenses/MSTestingLicense.txt": "MSTestingLicenseTerms" +} diff --git a/.github/workflows/assets/Slnx/ignorePackages.json b/.github/workflows/assets/Slnx/ignorePackages.json new file mode 100644 index 00000000..fe51488c --- /dev/null +++ b/.github/workflows/assets/Slnx/ignorePackages.json @@ -0,0 +1 @@ +[] diff --git a/.github/workflows/assets/Slnx/overwritePackageInformation.json b/.github/workflows/assets/Slnx/overwritePackageInformation.json new file mode 100644 index 00000000..98bd4c69 --- /dev/null +++ b/.github/workflows/assets/Slnx/overwritePackageInformation.json @@ -0,0 +1,523 @@ +[{ + "Id": "Fare", + "Version": "2.2.1", + "ProjectUrl": "https://github.com/moodmosaic/Fare", + "Copyright": "Copyright \u00A9 Nikos Baxevanis 2016", + "Authors": "Nikos Baxevanis", + "License": "MIT", + "LicenseUrl": "https://github.com/moodmosaic/Fare/blob/master/LICENSE" + }, + { + "Id": "Microsoft.NETCore.Platforms", + "Version": "1.1.1", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "Microsoft.NETCore.Targets", + "Version": "1.1.3", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl", + "Version": "4.3.2", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl", + "Version": "4.3.2", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl", + "Version": "4.3.2", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "runtime.native.System", + "Version": "4.3.0", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "runtime.native.System.Net.Http", + "Version": "4.3.0", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "runtime.native.System.Security.Cryptography.Apple", + "Version": "4.3.0", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "runtime.native.System.Security.Cryptography.OpenSsl", + "Version": "4.3.2", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl", + "Version": "4.3.2", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl", + "Version": "4.3.2", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple", + "Version": "4.3.0", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl", + "Version": "4.3.2", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl", + "Version": "4.3.2", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl", + "Version": "4.3.2", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl", + "Version": "4.3.2", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl", + "Version": "4.3.2", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "System.Collections", + "Version": "4.3.0", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "System.Collections.Concurrent", + "Version": "4.3.0", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "System.Diagnostics.Debug", + "Version": "4.3.0", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "System.Diagnostics.DiagnosticSource", + "Version": "4.3.0", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "System.Diagnostics.Tracing", + "Version": "4.3.0", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "System.Globalization", + "Version": "4.3.0", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "System.Globalization.Calendars", + "Version": "4.3.0", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "System.Globalization.Extensions", + "Version": "4.3.0", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "System.IO", + "Version": "4.3.0", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "System.IO.FileSystem", + "Version": "4.3.0", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "System.IO.FileSystem.Primitives", + "Version": "4.3.0", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "System.Linq", + "Version": "4.3.0", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "System.Net.Http", + "Version": "4.3.4", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "System.Net.Primitives", + "Version": "4.3.0", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "System.Reflection", + "Version": "4.3.0", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "System.Reflection.Primitives", + "Version": "4.3.0", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "System.Resources.ResourceManager", + "Version": "4.3.0", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "System.Runtime", + "Version": "4.3.0", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "System.Runtime", + "Version": "4.3.1", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "System.Runtime.Extensions", + "Version": "4.3.0", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "System.Runtime.Handles", + "Version": "4.3.0", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "System.Runtime.InteropServices", + "Version": "4.3.0", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "System.Runtime.Numerics", + "Version": "4.3.0", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "System.Security.Cryptography.Algorithms", + "Version": "4.3.0", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "System.Security.Cryptography.Cng", + "Version": "4.3.0", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "System.Security.Cryptography.Csp", + "Version": "4.3.0", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "System.Security.Cryptography.Encoding", + "Version": "4.3.0", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "System.Security.Cryptography.OpenSsl", + "Version": "4.3.0", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "System.Security.Cryptography.Primitives", + "Version": "4.3.0", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "System.Security.Cryptography.X509Certificates", + "Version": "4.3.0", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "System.Security.Cryptography.X509Certificates", + "Version": "4.3.2", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "System.Text.Encoding", + "Version": "4.3.0", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "System.Text.RegularExpressions", + "Version": "4.3.1", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "System.Threading", + "Version": "4.3.0", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "System.Threading.Tasks", + "Version": "4.3.0", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "System.Runtime.InteropServices.RuntimeInformation", + "Version": "4.3.0", + "ProjectUrl": "https://dot.net/", + "Copyright": "\u00A9 Microsoft Corporation. All rights reserved.", + "Authors": "Microsoft", + "License": "MIT", + "LicenseUrl": "http://go.microsoft.com/fwlink/?LinkId=329770" + }, + { + "Id": "NetArchTest.Rules", + "Version": "1.3.2", + "ProjectUrl": "https://www.ben-morris.com/writing-archunit-style-tests-for-net-and-c-for-self-testing-architectures/", + "Copyright": "Copyright (c) 2021 Ben Morris", + "Authors": "Ben Morris", + "License": "MIT" + }, + { + "Id": "Bogus", + "Version": "35.6.3", + "ProjectUrl": "https://github.com/bchavez/Bogus", + "Authors": "Brian Chavez", + "License": "MIT AND BSD-3-Clause" + },{ + "Id": "googletest", + "Version": "1.8.3", + "ProjectUrl": "https://github.com/google/googletest", + "Copyright": "Copyright 2016 Google Inc. All rights reserved.", + "Authors": "mheule@google.com (Markus Heule)", + "Description": "Google\u0027s C\u002B\u002B test framework for Visual Studio 2015 (v140) \u0026 2017 (v141)\n Note: NuGet package version is not corresponding with GoogleTest releases!", + "Summary": "Google\u0027s C\u002B\u002B test framework", + "License": "BSD-2-Clause", + "LicenseUrl": "https://opensource.org/licenses/bsd-license.php" + }, + { + "Id": "googletest.redist", + "Version": "1.8.3", + "ProjectUrl": "https://github.com/google/googletest", + "Copyright": "Copyright 2016 Google Inc. All rights reserved.", + "Authors": "mheule@google.com (Markus Heule)", + "Description": "Redistributable components for package \u0027googletest\u0027. This package should only be installed as a dependency. \n(This is not the package you are looking for).", + "Summary": "Redistributable components for for package \u0027googletest\u0027", + "License": "BSD-2-Clause", + "LicenseUrl": "https://opensource.org/licenses/bsd-license.php" + } +] \ No newline at end of file diff --git a/.github/workflows/assets/Slnx/projectsToCheck.json b/.github/workflows/assets/Slnx/projectsToCheck.json new file mode 100644 index 00000000..dda3c0c4 --- /dev/null +++ b/.github/workflows/assets/Slnx/projectsToCheck.json @@ -0,0 +1,3 @@ +[ + "./NuGetUtility.slnx" +] diff --git a/.github/workflows/assets/Slnx/urlToLicenseMapping.json b/.github/workflows/assets/Slnx/urlToLicenseMapping.json new file mode 100644 index 00000000..0967ef42 --- /dev/null +++ b/.github/workflows/assets/Slnx/urlToLicenseMapping.json @@ -0,0 +1 @@ +{} diff --git a/.github/workflows/assets/Tests/allowedLicenses.json b/.github/workflows/assets/Tests/allowedLicenses.json index e1e79159..89dbcbbb 100644 --- a/.github/workflows/assets/Tests/allowedLicenses.json +++ b/.github/workflows/assets/Tests/allowedLicenses.json @@ -1,5 +1,6 @@ [ "MIT", "Apache-2.0", - "BSD-3-Clause" -] \ No newline at end of file + "BSD-3-Clause", + "MSTestingLicenseTerms" +] diff --git a/.github/workflows/assets/Tests/fileToLicenseMapping.json b/.github/workflows/assets/Tests/fileToLicenseMapping.json index 0967ef42..39469caf 100644 --- a/.github/workflows/assets/Tests/fileToLicenseMapping.json +++ b/.github/workflows/assets/Tests/fileToLicenseMapping.json @@ -1 +1,3 @@ -{} +{ + "../Licenses/MSTestingLicense.txt": "MSTestingLicenseTerms" +} diff --git a/.github/workflows/assets/Tests/ignorePackages.json b/.github/workflows/assets/Tests/ignorePackages.json index 2664b4f9..fe51488c 100644 --- a/.github/workflows/assets/Tests/ignorePackages.json +++ b/.github/workflows/assets/Tests/ignorePackages.json @@ -1,3 +1 @@ -[ - "NETStandard.Library" -] \ No newline at end of file +[] diff --git a/.github/workflows/assets/Tests/overwritePackageInformation.json b/.github/workflows/assets/Tests/overwritePackageInformation.json index 6359b854..f54008ed 100644 --- a/.github/workflows/assets/Tests/overwritePackageInformation.json +++ b/.github/workflows/assets/Tests/overwritePackageInformation.json @@ -499,4 +499,4 @@ "Authors": "Brian Chavez", "License": "MIT AND BSD-3-Clause" } -] +] \ No newline at end of file diff --git a/.github/workflows/assets/Tests/projectsToCheck.json b/.github/workflows/assets/Tests/projectsToCheck.json index 0a1c5342..0330c4ff 100644 --- a/.github/workflows/assets/Tests/projectsToCheck.json +++ b/.github/workflows/assets/Tests/projectsToCheck.json @@ -1,3 +1,6 @@ [ - "./tests/NuGetUtility.Test/NuGetUtility.Test.csproj" -] \ No newline at end of file + "./tests/NuGetUtility.Test/NuGetUtility.Test.csproj", + "./tests/NuGetLicense.Test/NuGetLicense.Test.csproj", + "./tests/FileLicenseMatcher.Test/FileLicenseMatcher.Test.csproj", + "./tests/NuGetUtility.UrlToLicenseMapping.Test/NuGetUtility.UrlToLicenseMapping.Test.csproj" +] diff --git a/.github/workflows/assets/Tests/urlToLicenseMapping.json b/.github/workflows/assets/Tests/urlToLicenseMapping.json index 9e26dfee..0967ef42 100644 --- a/.github/workflows/assets/Tests/urlToLicenseMapping.json +++ b/.github/workflows/assets/Tests/urlToLicenseMapping.json @@ -1 +1 @@ -{} \ No newline at end of file +{} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 7bab9a15..cbdc6a2c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -30,13 +30,13 @@ jobs: - uses: browser-actions/setup-chrome@v2.1.1 - name: build - run: msbuild -t:rebuild -restore -p:RestorePackagesConfig=true -property:Configuration=Release + run: msbuild -t:rebuild -restore -p:RestorePackagesConfig=true -property:Configuration=Release NuGetUtility.slnx - name: test uses: josepho0918/vstest-action@15c7e288a18f04395431c4940afe15013a12098e with: testAssembly: "NuGet*.Test.dll" - searchFolder: "tests/*/bin/Release/net9.0/" + searchFolder: "tests/*/bin/Release/net10.0/" runInParallel: true - name: fully qualify artifacts path diff --git a/NuGetUtility.sln b/NuGetUtility.sln index 4cc1d884..20e19aa3 100644 --- a/NuGetUtility.sln +++ b/NuGetUtility.sln @@ -1,29 +1,17 @@  Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 18 -VisualStudioVersion = 18.0.11222.15 +VisualStudioVersion = 18.4.11626.88 stable MinimumVisualStudioVersion = 10.0.40219.1 -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NuGetUtility", "src\NuGetUtility\NuGetUtility.csproj", "{E9F108AD-CE14-4BDD-B674-A1CDDE8B27EC}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "integration", "integration", "{823D4020-332D-2C13-F261-6F510F11A57E}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NuGetUtility.Test", "tests\NuGetUtility.Test\NuGetUtility.Test.csproj", "{1EBC8E4A-7677-4AF9-9C37-0CF81A9A689E}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProjectWithReferenceContainingFileLicense", "integration\ProjectWithReferenceContainingFileLicense\ProjectWithReferenceContainingFileLicense.csproj", "{9004D472-6B17-255F-9BBE-3315532D92B4}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{D2AB2D00-1F48-487D-BFE0-99FDB4E071CC}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProjectWithReferenceContainingLicenseExpression", "integration\ProjectWithReferenceContainingLicenseExpression\ProjectWithReferenceContainingLicenseExpression.csproj", "{6B439AB8-DF75-4C55-A61C-E9D6A39AA744}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{C00E0699-ACCD-44CD-91A7-243A30504DB9}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "targets", "targets", "{FA92392F-D895-4D1E-A5ED-E6DC3C08223E}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PackageReferenceProject", "tests\targets\PackageReferenceProject\PackageReferenceProject.csproj", "{80E2DA74-CA6D-45EC-9272-00C93A574997}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ProjectWithoutNugetReferences", "tests\targets\ProjectWithoutNugetReferences\ProjectWithoutNugetReferences.csproj", "{FD8ECE33-D357-4611-A909-D9EE9415FB26}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PackagesConfigProject", "tests\targets\PackagesConfigProject\PackagesConfigProject.csproj", "{BBB24A05-8A1F-4840-8C70-BEFE3F0B8F5D}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ProjectWithTransitiveReferences", "tests\targets\ProjectWithTransitiveReferences\ProjectWithTransitiveReferences.csproj", "{3DDEC6CB-4FDA-49D1-A358-06BE9200C174}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ProjectWithTransitiveNuget", "tests\targets\ProjectWithTransitiveNuget\ProjectWithTransitiveNuget.csproj", "{3150479E-4370-408D-8A93-7C0CDC281CC3}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProjectWithReferenceContainingWindowsSpecificPath", "integration\ProjectWithReferenceContainingWindowsSpecificPath\ProjectWithReferenceContainingWindowsSpecificPath.csproj", "{70DA7262-B953-F20A-B58A-FA9EB7AF849B}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{5771A2C3-38B3-41CA-B76B-9C002D3C2873}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{089100B1-113F-4E66-888A-E83F3999EAFD}" ProjectSection(SolutionItems) = preProject .editorconfig = .editorconfig .globalconfig = .globalconfig @@ -31,471 +19,210 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution README.md = README.md EndProjectSection EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SimpleCppProject", "tests\targets\SimpleCppProject\SimpleCppProject.vcxproj", "{380FBD90-2CF0-4F83-A58E-EB98CE2EAE15}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{827E0CD3-B72D-47B6-A68D-7590B98EB39B}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NuGetLicenseCore", "src\NuGetLicenseCore\NuGetLicenseCore.csproj", "{FBA6622A-C9E3-4250-AB79-35F02CAD2419}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FileLicenseMatcher", "src\FileLicenseMatcher\FileLicenseMatcher.csproj", "{8F1DD9CC-60FE-9363-1191-381423A51517}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NuGetLicenseFramework", "src\NuGetLicenseFramework\NuGetLicenseFramework.csproj", "{DE079B9C-B6BA-4D53-8B83-03D3CBD4027F}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NuGetLicense", "src\NuGetLicense\NuGetLicense.csproj", "{FF734A3F-B1D2-D1FD-6B2E-88E23893CC8A}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "integration", "integration", "{FFB2826C-17A3-4C18-8FFE-A34AB51592F7}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NuGetLicenseCore", "src\NuGetLicenseCore\NuGetLicenseCore.csproj", "{AB5996CA-7552-666C-E440-B6261EED9A89}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ProjectWithReferenceContainingLicenseExpression", "integration\ProjectWithReferenceContainingLicenseExpression\ProjectWithReferenceContainingLicenseExpression.csproj", "{01704839-219A-4CE2-93F4-DB3CB8773DCE}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NuGetLicenseFramework", "src\NuGetLicenseFramework\NuGetLicenseFramework.csproj", "{909D242D-BF2E-BAF6-C034-DDB704A65D46}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "EmptyCppProject", "tests\targets\EmptyCppProject\EmptyCppProject.vcxproj", "{9B107A91-87F9-420C-ADF8-732C77DAFB93}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NuGetUtility", "src\NuGetUtility\NuGetUtility.csproj", "{A277004A-4E9D-4E7A-8270-5DF72B44A426}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "VersionRangesProject", "tests\targets\VersionRangesProject\VersionRangesProject.csproj", "{6C96D10E-6CB6-4387-922F-C7C97C037495}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{0AB3BF05-4346-4AA6-1389-037BE0695223}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MultiTargetProjectWithDifferentDependencies", "tests\targets\MultiTargetProjectWithDifferentDependencies\MultiTargetProjectWithDifferentDependencies.csproj", "{A19BF89A-8B1F-4612-A923-08F52B53DC84}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FileLicenseMatcher.Test", "tests\FileLicenseMatcher.Test\FileLicenseMatcher.Test.csproj", "{A0E0D347-8BEE-0177-815B-4045469F442C}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NuGetUtility.UrlToLicenseMapping.Test", "tests\NuGetUtility.UrlToLicenseMapping.Test\NuGetUtility.UrlToLicenseMapping.Test.csproj", "{A77F9673-8296-4680-A713-8AC26B7DE41C}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NuGetLicense.Test", "tests\NuGetLicense.Test\NuGetLicense.Test.csproj", "{8A851E79-B8B9-BBA9-EA1D-6B231163093B}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NuGetLicense", "src\NuGetLicense\NuGetLicense.csproj", "{AC47BC03-4D94-4E35-880A-83B7F00CCD39}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NuGetUtility.Test.Extensions", "tests\NuGetUtility.Test.Extensions\NuGetUtility.Test.Extensions.csproj", "{9980365E-926C-51CE-070A-FF18B33CD9F7}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NuGetLicense.Test", "tests\NuGetLicense.Test\NuGetLicense.Test.csproj", "{D002257A-FEC7-4E79-AE66-4FD13392F592}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NuGetUtility.Test", "tests\NuGetUtility.Test\NuGetUtility.Test.csproj", "{A76426B6-73B7-1983-06CF-E05E79341A1D}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NuGetUtility.Test.Extensions", "tests\NuGetUtility.Test.Extensions\NuGetUtility.Test.Extensions.csproj", "{B713053E-699F-4565-A90F-0A6A7BD84385}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NuGetUtility.UrlToLicenseMapping.Test", "tests\NuGetUtility.UrlToLicenseMapping.Test\NuGetUtility.UrlToLicenseMapping.Test.csproj", "{B6E9C64B-6AE3-A70C-5910-817FCEC7F962}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProjectWithReferenceContainingFileLicense", "integration\ProjectWithReferenceContainingFileLicense\ProjectWithReferenceContainingFileLicense.csproj", "{291E000A-2484-44FE-A175-D1F586071FCC}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "targets", "targets", "{B4C66CBD-571F-0685-D8EF-97E576F878C9}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProjectWithReferenceContainingWindowsSpecificPath", "integration\ProjectWithReferenceContainingWindowsSpecificPath\ProjectWithReferenceContainingWindowsSpecificPath.csproj", "{70DA7262-B953-F20A-B58A-FA9EB7AF849B}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "EmptyCppProject", "tests\targets\EmptyCppProject\EmptyCppProject.vcxproj", "{9B107A91-87F9-420C-ADF8-732C77DAFB93}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FileLicenseMatcher", "src\FileLicenseMatcher\FileLicenseMatcher.csproj", "{8F1DD9CC-60FE-9363-1191-381423A51517}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MultiTargetProjectWithDifferentDependencies", "tests\targets\MultiTargetProjectWithDifferentDependencies\MultiTargetProjectWithDifferentDependencies.csproj", "{104B0802-1CCC-BF84-9CE0-3C91D99555A7}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FileLicenseMatcher.Test", "tests\FileLicenseMatcher.Test\FileLicenseMatcher.Test.csproj", "{A0E0D347-8BEE-0177-815B-4045469F442C}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PackageReferenceProject", "tests\targets\PackageReferenceProject\PackageReferenceProject.csproj", "{F6A594E4-7929-2823-C907-C31439197DB4}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PackagesConfigProject", "tests\targets\PackagesConfigProject\PackagesConfigProject.csproj", "{BBB24A05-8A1F-4840-8C70-BEFE3F0B8F5D}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProjectWithoutNugetReferences", "tests\targets\ProjectWithoutNugetReferences\ProjectWithoutNugetReferences.csproj", "{665F6812-BD66-D32D-2F22-B1EC6C5D1F75}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProjectWithTransitiveNuget", "tests\targets\ProjectWithTransitiveNuget\ProjectWithTransitiveNuget.csproj", "{2FABC52B-5F4E-F5B9-3E23-442FD0712103}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProjectWithTransitiveReferences", "tests\targets\ProjectWithTransitiveReferences\ProjectWithTransitiveReferences.csproj", "{21A22820-62B5-C46F-D3F6-3C63D0304C8B}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SimpleCppProject", "tests\targets\SimpleCppProject\SimpleCppProject.vcxproj", "{380FBD90-2CF0-4F83-A58E-EB98CE2EAE15}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VersionRangesProject", "tests\targets\VersionRangesProject\VersionRangesProject.csproj", "{FCE3A417-4316-7F84-E4CD-52B61EF13BA0}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU - Debug|x64 = Debug|x64 - Debug|x86 = Debug|x86 Release|Any CPU = Release|Any CPU - Release|x64 = Release|x64 - Release|x86 = Release|x86 TestWindows|Any CPU = TestWindows|Any CPU - TestWindows|x64 = TestWindows|x64 - TestWindows|x86 = TestWindows|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {E9F108AD-CE14-4BDD-B674-A1CDDE8B27EC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E9F108AD-CE14-4BDD-B674-A1CDDE8B27EC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E9F108AD-CE14-4BDD-B674-A1CDDE8B27EC}.Debug|x64.ActiveCfg = Debug|Any CPU - {E9F108AD-CE14-4BDD-B674-A1CDDE8B27EC}.Debug|x64.Build.0 = Debug|Any CPU - {E9F108AD-CE14-4BDD-B674-A1CDDE8B27EC}.Debug|x86.ActiveCfg = Debug|Any CPU - {E9F108AD-CE14-4BDD-B674-A1CDDE8B27EC}.Debug|x86.Build.0 = Debug|Any CPU - {E9F108AD-CE14-4BDD-B674-A1CDDE8B27EC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E9F108AD-CE14-4BDD-B674-A1CDDE8B27EC}.Release|Any CPU.Build.0 = Release|Any CPU - {E9F108AD-CE14-4BDD-B674-A1CDDE8B27EC}.Release|x64.ActiveCfg = Release|Any CPU - {E9F108AD-CE14-4BDD-B674-A1CDDE8B27EC}.Release|x64.Build.0 = Release|Any CPU - {E9F108AD-CE14-4BDD-B674-A1CDDE8B27EC}.Release|x86.ActiveCfg = Release|Any CPU - {E9F108AD-CE14-4BDD-B674-A1CDDE8B27EC}.Release|x86.Build.0 = Release|Any CPU - {E9F108AD-CE14-4BDD-B674-A1CDDE8B27EC}.TestWindows|Any CPU.ActiveCfg = TestWindows|Any CPU - {E9F108AD-CE14-4BDD-B674-A1CDDE8B27EC}.TestWindows|Any CPU.Build.0 = TestWindows|Any CPU - {E9F108AD-CE14-4BDD-B674-A1CDDE8B27EC}.TestWindows|x64.ActiveCfg = TestWindows|Any CPU - {E9F108AD-CE14-4BDD-B674-A1CDDE8B27EC}.TestWindows|x64.Build.0 = TestWindows|Any CPU - {E9F108AD-CE14-4BDD-B674-A1CDDE8B27EC}.TestWindows|x86.ActiveCfg = TestWindows|Any CPU - {E9F108AD-CE14-4BDD-B674-A1CDDE8B27EC}.TestWindows|x86.Build.0 = TestWindows|Any CPU - {1EBC8E4A-7677-4AF9-9C37-0CF81A9A689E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1EBC8E4A-7677-4AF9-9C37-0CF81A9A689E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1EBC8E4A-7677-4AF9-9C37-0CF81A9A689E}.Debug|x64.ActiveCfg = Debug|Any CPU - {1EBC8E4A-7677-4AF9-9C37-0CF81A9A689E}.Debug|x64.Build.0 = Debug|Any CPU - {1EBC8E4A-7677-4AF9-9C37-0CF81A9A689E}.Debug|x86.ActiveCfg = Debug|Any CPU - {1EBC8E4A-7677-4AF9-9C37-0CF81A9A689E}.Debug|x86.Build.0 = Debug|Any CPU - {1EBC8E4A-7677-4AF9-9C37-0CF81A9A689E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1EBC8E4A-7677-4AF9-9C37-0CF81A9A689E}.Release|Any CPU.Build.0 = Release|Any CPU - {1EBC8E4A-7677-4AF9-9C37-0CF81A9A689E}.Release|x64.ActiveCfg = Release|Any CPU - {1EBC8E4A-7677-4AF9-9C37-0CF81A9A689E}.Release|x64.Build.0 = Release|Any CPU - {1EBC8E4A-7677-4AF9-9C37-0CF81A9A689E}.Release|x86.ActiveCfg = Release|Any CPU - {1EBC8E4A-7677-4AF9-9C37-0CF81A9A689E}.Release|x86.Build.0 = Release|Any CPU - {1EBC8E4A-7677-4AF9-9C37-0CF81A9A689E}.TestWindows|Any CPU.ActiveCfg = TestWindows|Any CPU - {1EBC8E4A-7677-4AF9-9C37-0CF81A9A689E}.TestWindows|Any CPU.Build.0 = TestWindows|Any CPU - {1EBC8E4A-7677-4AF9-9C37-0CF81A9A689E}.TestWindows|x64.ActiveCfg = TestWindows|Any CPU - {1EBC8E4A-7677-4AF9-9C37-0CF81A9A689E}.TestWindows|x64.Build.0 = TestWindows|Any CPU - {1EBC8E4A-7677-4AF9-9C37-0CF81A9A689E}.TestWindows|x86.ActiveCfg = TestWindows|Any CPU - {1EBC8E4A-7677-4AF9-9C37-0CF81A9A689E}.TestWindows|x86.Build.0 = TestWindows|Any CPU - {80E2DA74-CA6D-45EC-9272-00C93A574997}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {80E2DA74-CA6D-45EC-9272-00C93A574997}.Debug|Any CPU.Build.0 = Debug|Any CPU - {80E2DA74-CA6D-45EC-9272-00C93A574997}.Debug|x64.ActiveCfg = Debug|Any CPU - {80E2DA74-CA6D-45EC-9272-00C93A574997}.Debug|x64.Build.0 = Debug|Any CPU - {80E2DA74-CA6D-45EC-9272-00C93A574997}.Debug|x86.ActiveCfg = Debug|Any CPU - {80E2DA74-CA6D-45EC-9272-00C93A574997}.Debug|x86.Build.0 = Debug|Any CPU - {80E2DA74-CA6D-45EC-9272-00C93A574997}.Release|Any CPU.ActiveCfg = Release|Any CPU - {80E2DA74-CA6D-45EC-9272-00C93A574997}.Release|Any CPU.Build.0 = Release|Any CPU - {80E2DA74-CA6D-45EC-9272-00C93A574997}.Release|x64.ActiveCfg = Release|Any CPU - {80E2DA74-CA6D-45EC-9272-00C93A574997}.Release|x64.Build.0 = Release|Any CPU - {80E2DA74-CA6D-45EC-9272-00C93A574997}.Release|x86.ActiveCfg = Release|Any CPU - {80E2DA74-CA6D-45EC-9272-00C93A574997}.Release|x86.Build.0 = Release|Any CPU - {80E2DA74-CA6D-45EC-9272-00C93A574997}.TestWindows|Any CPU.ActiveCfg = TestWindows|Any CPU - {80E2DA74-CA6D-45EC-9272-00C93A574997}.TestWindows|Any CPU.Build.0 = TestWindows|Any CPU - {80E2DA74-CA6D-45EC-9272-00C93A574997}.TestWindows|x64.ActiveCfg = TestWindows|Any CPU - {80E2DA74-CA6D-45EC-9272-00C93A574997}.TestWindows|x64.Build.0 = TestWindows|Any CPU - {80E2DA74-CA6D-45EC-9272-00C93A574997}.TestWindows|x86.ActiveCfg = TestWindows|Any CPU - {80E2DA74-CA6D-45EC-9272-00C93A574997}.TestWindows|x86.Build.0 = TestWindows|Any CPU - {FD8ECE33-D357-4611-A909-D9EE9415FB26}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FD8ECE33-D357-4611-A909-D9EE9415FB26}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FD8ECE33-D357-4611-A909-D9EE9415FB26}.Debug|x64.ActiveCfg = Debug|Any CPU - {FD8ECE33-D357-4611-A909-D9EE9415FB26}.Debug|x64.Build.0 = Debug|Any CPU - {FD8ECE33-D357-4611-A909-D9EE9415FB26}.Debug|x86.ActiveCfg = Debug|Any CPU - {FD8ECE33-D357-4611-A909-D9EE9415FB26}.Debug|x86.Build.0 = Debug|Any CPU - {FD8ECE33-D357-4611-A909-D9EE9415FB26}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FD8ECE33-D357-4611-A909-D9EE9415FB26}.Release|Any CPU.Build.0 = Release|Any CPU - {FD8ECE33-D357-4611-A909-D9EE9415FB26}.Release|x64.ActiveCfg = Release|Any CPU - {FD8ECE33-D357-4611-A909-D9EE9415FB26}.Release|x64.Build.0 = Release|Any CPU - {FD8ECE33-D357-4611-A909-D9EE9415FB26}.Release|x86.ActiveCfg = Release|Any CPU - {FD8ECE33-D357-4611-A909-D9EE9415FB26}.Release|x86.Build.0 = Release|Any CPU - {FD8ECE33-D357-4611-A909-D9EE9415FB26}.TestWindows|Any CPU.ActiveCfg = TestWindows|Any CPU - {FD8ECE33-D357-4611-A909-D9EE9415FB26}.TestWindows|Any CPU.Build.0 = TestWindows|Any CPU - {FD8ECE33-D357-4611-A909-D9EE9415FB26}.TestWindows|x64.ActiveCfg = TestWindows|Any CPU - {FD8ECE33-D357-4611-A909-D9EE9415FB26}.TestWindows|x64.Build.0 = TestWindows|Any CPU - {FD8ECE33-D357-4611-A909-D9EE9415FB26}.TestWindows|x86.ActiveCfg = TestWindows|Any CPU - {FD8ECE33-D357-4611-A909-D9EE9415FB26}.TestWindows|x86.Build.0 = TestWindows|Any CPU - {BBB24A05-8A1F-4840-8C70-BEFE3F0B8F5D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {BBB24A05-8A1F-4840-8C70-BEFE3F0B8F5D}.Debug|x64.ActiveCfg = Debug|Any CPU - {BBB24A05-8A1F-4840-8C70-BEFE3F0B8F5D}.Debug|x64.Build.0 = Debug|Any CPU - {BBB24A05-8A1F-4840-8C70-BEFE3F0B8F5D}.Debug|x86.ActiveCfg = Debug|Any CPU - {BBB24A05-8A1F-4840-8C70-BEFE3F0B8F5D}.Debug|x86.Build.0 = Debug|Any CPU - {BBB24A05-8A1F-4840-8C70-BEFE3F0B8F5D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {BBB24A05-8A1F-4840-8C70-BEFE3F0B8F5D}.Release|x64.ActiveCfg = Release|Any CPU - {BBB24A05-8A1F-4840-8C70-BEFE3F0B8F5D}.Release|x64.Build.0 = Release|Any CPU - {BBB24A05-8A1F-4840-8C70-BEFE3F0B8F5D}.Release|x86.ActiveCfg = Release|Any CPU - {BBB24A05-8A1F-4840-8C70-BEFE3F0B8F5D}.Release|x86.Build.0 = Release|Any CPU - {BBB24A05-8A1F-4840-8C70-BEFE3F0B8F5D}.TestWindows|Any CPU.ActiveCfg = TestWindows|Any CPU - {BBB24A05-8A1F-4840-8C70-BEFE3F0B8F5D}.TestWindows|Any CPU.Build.0 = TestWindows|Any CPU - {BBB24A05-8A1F-4840-8C70-BEFE3F0B8F5D}.TestWindows|x64.ActiveCfg = TestWindows|Any CPU - {BBB24A05-8A1F-4840-8C70-BEFE3F0B8F5D}.TestWindows|x64.Build.0 = TestWindows|Any CPU - {BBB24A05-8A1F-4840-8C70-BEFE3F0B8F5D}.TestWindows|x86.ActiveCfg = TestWindows|Any CPU - {BBB24A05-8A1F-4840-8C70-BEFE3F0B8F5D}.TestWindows|x86.Build.0 = TestWindows|Any CPU - {3DDEC6CB-4FDA-49D1-A358-06BE9200C174}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {3DDEC6CB-4FDA-49D1-A358-06BE9200C174}.Debug|Any CPU.Build.0 = Debug|Any CPU - {3DDEC6CB-4FDA-49D1-A358-06BE9200C174}.Debug|x64.ActiveCfg = Debug|Any CPU - {3DDEC6CB-4FDA-49D1-A358-06BE9200C174}.Debug|x64.Build.0 = Debug|Any CPU - {3DDEC6CB-4FDA-49D1-A358-06BE9200C174}.Debug|x86.ActiveCfg = Debug|Any CPU - {3DDEC6CB-4FDA-49D1-A358-06BE9200C174}.Debug|x86.Build.0 = Debug|Any CPU - {3DDEC6CB-4FDA-49D1-A358-06BE9200C174}.Release|Any CPU.ActiveCfg = Release|Any CPU - {3DDEC6CB-4FDA-49D1-A358-06BE9200C174}.Release|Any CPU.Build.0 = Release|Any CPU - {3DDEC6CB-4FDA-49D1-A358-06BE9200C174}.Release|x64.ActiveCfg = Release|Any CPU - {3DDEC6CB-4FDA-49D1-A358-06BE9200C174}.Release|x64.Build.0 = Release|Any CPU - {3DDEC6CB-4FDA-49D1-A358-06BE9200C174}.Release|x86.ActiveCfg = Release|Any CPU - {3DDEC6CB-4FDA-49D1-A358-06BE9200C174}.Release|x86.Build.0 = Release|Any CPU - {3DDEC6CB-4FDA-49D1-A358-06BE9200C174}.TestWindows|Any CPU.ActiveCfg = TestWindows|Any CPU - {3DDEC6CB-4FDA-49D1-A358-06BE9200C174}.TestWindows|Any CPU.Build.0 = TestWindows|Any CPU - {3DDEC6CB-4FDA-49D1-A358-06BE9200C174}.TestWindows|x64.ActiveCfg = TestWindows|Any CPU - {3DDEC6CB-4FDA-49D1-A358-06BE9200C174}.TestWindows|x64.Build.0 = TestWindows|Any CPU - {3DDEC6CB-4FDA-49D1-A358-06BE9200C174}.TestWindows|x86.ActiveCfg = TestWindows|Any CPU - {3DDEC6CB-4FDA-49D1-A358-06BE9200C174}.TestWindows|x86.Build.0 = TestWindows|Any CPU - {3150479E-4370-408D-8A93-7C0CDC281CC3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {3150479E-4370-408D-8A93-7C0CDC281CC3}.Debug|Any CPU.Build.0 = Debug|Any CPU - {3150479E-4370-408D-8A93-7C0CDC281CC3}.Debug|x64.ActiveCfg = Debug|Any CPU - {3150479E-4370-408D-8A93-7C0CDC281CC3}.Debug|x64.Build.0 = Debug|Any CPU - {3150479E-4370-408D-8A93-7C0CDC281CC3}.Debug|x86.ActiveCfg = Debug|Any CPU - {3150479E-4370-408D-8A93-7C0CDC281CC3}.Debug|x86.Build.0 = Debug|Any CPU - {3150479E-4370-408D-8A93-7C0CDC281CC3}.Release|Any CPU.ActiveCfg = Release|Any CPU - {3150479E-4370-408D-8A93-7C0CDC281CC3}.Release|Any CPU.Build.0 = Release|Any CPU - {3150479E-4370-408D-8A93-7C0CDC281CC3}.Release|x64.ActiveCfg = Release|Any CPU - {3150479E-4370-408D-8A93-7C0CDC281CC3}.Release|x64.Build.0 = Release|Any CPU - {3150479E-4370-408D-8A93-7C0CDC281CC3}.Release|x86.ActiveCfg = Release|Any CPU - {3150479E-4370-408D-8A93-7C0CDC281CC3}.Release|x86.Build.0 = Release|Any CPU - {3150479E-4370-408D-8A93-7C0CDC281CC3}.TestWindows|Any CPU.ActiveCfg = TestWindows|Any CPU - {3150479E-4370-408D-8A93-7C0CDC281CC3}.TestWindows|Any CPU.Build.0 = TestWindows|Any CPU - {3150479E-4370-408D-8A93-7C0CDC281CC3}.TestWindows|x64.ActiveCfg = TestWindows|Any CPU - {3150479E-4370-408D-8A93-7C0CDC281CC3}.TestWindows|x64.Build.0 = TestWindows|Any CPU - {3150479E-4370-408D-8A93-7C0CDC281CC3}.TestWindows|x86.ActiveCfg = TestWindows|Any CPU - {3150479E-4370-408D-8A93-7C0CDC281CC3}.TestWindows|x86.Build.0 = TestWindows|Any CPU - {380FBD90-2CF0-4F83-A58E-EB98CE2EAE15}.Debug|Any CPU.ActiveCfg = Debug|x64 - {380FBD90-2CF0-4F83-A58E-EB98CE2EAE15}.Debug|x64.ActiveCfg = Debug|x64 - {380FBD90-2CF0-4F83-A58E-EB98CE2EAE15}.Debug|x64.Build.0 = Debug|x64 - {380FBD90-2CF0-4F83-A58E-EB98CE2EAE15}.Debug|x86.ActiveCfg = Debug|Win32 - {380FBD90-2CF0-4F83-A58E-EB98CE2EAE15}.Debug|x86.Build.0 = Debug|Win32 - {380FBD90-2CF0-4F83-A58E-EB98CE2EAE15}.Release|Any CPU.ActiveCfg = Release|x64 - {380FBD90-2CF0-4F83-A58E-EB98CE2EAE15}.Release|x64.ActiveCfg = Release|x64 - {380FBD90-2CF0-4F83-A58E-EB98CE2EAE15}.Release|x64.Build.0 = Release|x64 - {380FBD90-2CF0-4F83-A58E-EB98CE2EAE15}.Release|x86.ActiveCfg = Release|Win32 - {380FBD90-2CF0-4F83-A58E-EB98CE2EAE15}.Release|x86.Build.0 = Release|Win32 - {380FBD90-2CF0-4F83-A58E-EB98CE2EAE15}.TestWindows|Any CPU.ActiveCfg = Debug|x64 - {380FBD90-2CF0-4F83-A58E-EB98CE2EAE15}.TestWindows|Any CPU.Build.0 = Debug|x64 - {380FBD90-2CF0-4F83-A58E-EB98CE2EAE15}.TestWindows|x64.ActiveCfg = Debug|x64 - {380FBD90-2CF0-4F83-A58E-EB98CE2EAE15}.TestWindows|x64.Build.0 = Debug|x64 - {380FBD90-2CF0-4F83-A58E-EB98CE2EAE15}.TestWindows|x86.ActiveCfg = Debug|Win32 - {380FBD90-2CF0-4F83-A58E-EB98CE2EAE15}.TestWindows|x86.Build.0 = Debug|Win32 - {FBA6622A-C9E3-4250-AB79-35F02CAD2419}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FBA6622A-C9E3-4250-AB79-35F02CAD2419}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FBA6622A-C9E3-4250-AB79-35F02CAD2419}.Debug|x64.ActiveCfg = Debug|Any CPU - {FBA6622A-C9E3-4250-AB79-35F02CAD2419}.Debug|x64.Build.0 = Debug|Any CPU - {FBA6622A-C9E3-4250-AB79-35F02CAD2419}.Debug|x86.ActiveCfg = Debug|Any CPU - {FBA6622A-C9E3-4250-AB79-35F02CAD2419}.Debug|x86.Build.0 = Debug|Any CPU - {FBA6622A-C9E3-4250-AB79-35F02CAD2419}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FBA6622A-C9E3-4250-AB79-35F02CAD2419}.Release|Any CPU.Build.0 = Release|Any CPU - {FBA6622A-C9E3-4250-AB79-35F02CAD2419}.Release|x64.ActiveCfg = Release|Any CPU - {FBA6622A-C9E3-4250-AB79-35F02CAD2419}.Release|x64.Build.0 = Release|Any CPU - {FBA6622A-C9E3-4250-AB79-35F02CAD2419}.Release|x86.ActiveCfg = Release|Any CPU - {FBA6622A-C9E3-4250-AB79-35F02CAD2419}.Release|x86.Build.0 = Release|Any CPU - {FBA6622A-C9E3-4250-AB79-35F02CAD2419}.TestWindows|Any CPU.ActiveCfg = TestWindows|Any CPU - {FBA6622A-C9E3-4250-AB79-35F02CAD2419}.TestWindows|Any CPU.Build.0 = TestWindows|Any CPU - {FBA6622A-C9E3-4250-AB79-35F02CAD2419}.TestWindows|x64.ActiveCfg = Debug|Any CPU - {FBA6622A-C9E3-4250-AB79-35F02CAD2419}.TestWindows|x64.Build.0 = Debug|Any CPU - {FBA6622A-C9E3-4250-AB79-35F02CAD2419}.TestWindows|x86.ActiveCfg = Debug|Any CPU - {FBA6622A-C9E3-4250-AB79-35F02CAD2419}.TestWindows|x86.Build.0 = Debug|Any CPU - {DE079B9C-B6BA-4D53-8B83-03D3CBD4027F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {DE079B9C-B6BA-4D53-8B83-03D3CBD4027F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {DE079B9C-B6BA-4D53-8B83-03D3CBD4027F}.Debug|x64.ActiveCfg = Debug|Any CPU - {DE079B9C-B6BA-4D53-8B83-03D3CBD4027F}.Debug|x64.Build.0 = Debug|Any CPU - {DE079B9C-B6BA-4D53-8B83-03D3CBD4027F}.Debug|x86.ActiveCfg = Debug|Any CPU - {DE079B9C-B6BA-4D53-8B83-03D3CBD4027F}.Debug|x86.Build.0 = Debug|Any CPU - {DE079B9C-B6BA-4D53-8B83-03D3CBD4027F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {DE079B9C-B6BA-4D53-8B83-03D3CBD4027F}.Release|Any CPU.Build.0 = Release|Any CPU - {DE079B9C-B6BA-4D53-8B83-03D3CBD4027F}.Release|x64.ActiveCfg = Release|Any CPU - {DE079B9C-B6BA-4D53-8B83-03D3CBD4027F}.Release|x64.Build.0 = Release|Any CPU - {DE079B9C-B6BA-4D53-8B83-03D3CBD4027F}.Release|x86.ActiveCfg = Release|Any CPU - {DE079B9C-B6BA-4D53-8B83-03D3CBD4027F}.Release|x86.Build.0 = Release|Any CPU - {DE079B9C-B6BA-4D53-8B83-03D3CBD4027F}.TestWindows|Any CPU.ActiveCfg = TestWindows|Any CPU - {DE079B9C-B6BA-4D53-8B83-03D3CBD4027F}.TestWindows|Any CPU.Build.0 = TestWindows|Any CPU - {DE079B9C-B6BA-4D53-8B83-03D3CBD4027F}.TestWindows|x64.ActiveCfg = Debug|Any CPU - {DE079B9C-B6BA-4D53-8B83-03D3CBD4027F}.TestWindows|x64.Build.0 = Debug|Any CPU - {DE079B9C-B6BA-4D53-8B83-03D3CBD4027F}.TestWindows|x86.ActiveCfg = Debug|Any CPU - {DE079B9C-B6BA-4D53-8B83-03D3CBD4027F}.TestWindows|x86.Build.0 = Debug|Any CPU - {01704839-219A-4CE2-93F4-DB3CB8773DCE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {01704839-219A-4CE2-93F4-DB3CB8773DCE}.Debug|Any CPU.Build.0 = Debug|Any CPU - {01704839-219A-4CE2-93F4-DB3CB8773DCE}.Debug|x64.ActiveCfg = Debug|Any CPU - {01704839-219A-4CE2-93F4-DB3CB8773DCE}.Debug|x64.Build.0 = Debug|Any CPU - {01704839-219A-4CE2-93F4-DB3CB8773DCE}.Debug|x86.ActiveCfg = Debug|Any CPU - {01704839-219A-4CE2-93F4-DB3CB8773DCE}.Debug|x86.Build.0 = Debug|Any CPU - {01704839-219A-4CE2-93F4-DB3CB8773DCE}.Release|Any CPU.ActiveCfg = Release|Any CPU - {01704839-219A-4CE2-93F4-DB3CB8773DCE}.Release|Any CPU.Build.0 = Release|Any CPU - {01704839-219A-4CE2-93F4-DB3CB8773DCE}.Release|x64.ActiveCfg = Release|Any CPU - {01704839-219A-4CE2-93F4-DB3CB8773DCE}.Release|x64.Build.0 = Release|Any CPU - {01704839-219A-4CE2-93F4-DB3CB8773DCE}.Release|x86.ActiveCfg = Release|Any CPU - {01704839-219A-4CE2-93F4-DB3CB8773DCE}.Release|x86.Build.0 = Release|Any CPU - {01704839-219A-4CE2-93F4-DB3CB8773DCE}.TestWindows|Any CPU.ActiveCfg = TestWindows|Any CPU - {01704839-219A-4CE2-93F4-DB3CB8773DCE}.TestWindows|Any CPU.Build.0 = TestWindows|Any CPU - {01704839-219A-4CE2-93F4-DB3CB8773DCE}.TestWindows|x64.ActiveCfg = TestWindows|Any CPU - {01704839-219A-4CE2-93F4-DB3CB8773DCE}.TestWindows|x64.Build.0 = TestWindows|Any CPU - {01704839-219A-4CE2-93F4-DB3CB8773DCE}.TestWindows|x86.ActiveCfg = TestWindows|Any CPU - {01704839-219A-4CE2-93F4-DB3CB8773DCE}.TestWindows|x86.Build.0 = TestWindows|Any CPU - {9B107A91-87F9-420C-ADF8-732C77DAFB93}.Debug|Any CPU.ActiveCfg = Debug|x64 - {9B107A91-87F9-420C-ADF8-732C77DAFB93}.Debug|x64.ActiveCfg = Debug|x64 - {9B107A91-87F9-420C-ADF8-732C77DAFB93}.Debug|x64.Build.0 = Debug|x64 - {9B107A91-87F9-420C-ADF8-732C77DAFB93}.Debug|x86.ActiveCfg = Debug|Win32 - {9B107A91-87F9-420C-ADF8-732C77DAFB93}.Debug|x86.Build.0 = Debug|Win32 - {9B107A91-87F9-420C-ADF8-732C77DAFB93}.Release|Any CPU.ActiveCfg = Release|x64 - {9B107A91-87F9-420C-ADF8-732C77DAFB93}.Release|x64.ActiveCfg = Release|x64 - {9B107A91-87F9-420C-ADF8-732C77DAFB93}.Release|x64.Build.0 = Release|x64 - {9B107A91-87F9-420C-ADF8-732C77DAFB93}.Release|x86.ActiveCfg = Release|Win32 - {9B107A91-87F9-420C-ADF8-732C77DAFB93}.Release|x86.Build.0 = Release|Win32 - {9B107A91-87F9-420C-ADF8-732C77DAFB93}.TestWindows|Any CPU.ActiveCfg = Release|x64 - {9B107A91-87F9-420C-ADF8-732C77DAFB93}.TestWindows|Any CPU.Build.0 = Release|x64 - {9B107A91-87F9-420C-ADF8-732C77DAFB93}.TestWindows|x64.ActiveCfg = Debug|x64 - {9B107A91-87F9-420C-ADF8-732C77DAFB93}.TestWindows|x64.Build.0 = Debug|x64 - {9B107A91-87F9-420C-ADF8-732C77DAFB93}.TestWindows|x86.ActiveCfg = Debug|Win32 - {9B107A91-87F9-420C-ADF8-732C77DAFB93}.TestWindows|x86.Build.0 = Debug|Win32 - {6C96D10E-6CB6-4387-922F-C7C97C037495}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {6C96D10E-6CB6-4387-922F-C7C97C037495}.Debug|Any CPU.Build.0 = Debug|Any CPU - {6C96D10E-6CB6-4387-922F-C7C97C037495}.Debug|x64.ActiveCfg = Debug|Any CPU - {6C96D10E-6CB6-4387-922F-C7C97C037495}.Debug|x64.Build.0 = Debug|Any CPU - {6C96D10E-6CB6-4387-922F-C7C97C037495}.Debug|x86.ActiveCfg = Debug|Any CPU - {6C96D10E-6CB6-4387-922F-C7C97C037495}.Debug|x86.Build.0 = Debug|Any CPU - {6C96D10E-6CB6-4387-922F-C7C97C037495}.Release|Any CPU.ActiveCfg = Release|Any CPU - {6C96D10E-6CB6-4387-922F-C7C97C037495}.Release|Any CPU.Build.0 = Release|Any CPU - {6C96D10E-6CB6-4387-922F-C7C97C037495}.Release|x64.ActiveCfg = Release|Any CPU - {6C96D10E-6CB6-4387-922F-C7C97C037495}.Release|x64.Build.0 = Release|Any CPU - {6C96D10E-6CB6-4387-922F-C7C97C037495}.Release|x86.ActiveCfg = Release|Any CPU - {6C96D10E-6CB6-4387-922F-C7C97C037495}.Release|x86.Build.0 = Release|Any CPU - {6C96D10E-6CB6-4387-922F-C7C97C037495}.TestWindows|Any CPU.ActiveCfg = Debug|Any CPU - {6C96D10E-6CB6-4387-922F-C7C97C037495}.TestWindows|Any CPU.Build.0 = Debug|Any CPU - {6C96D10E-6CB6-4387-922F-C7C97C037495}.TestWindows|x64.ActiveCfg = Debug|Any CPU - {6C96D10E-6CB6-4387-922F-C7C97C037495}.TestWindows|x64.Build.0 = Debug|Any CPU - {6C96D10E-6CB6-4387-922F-C7C97C037495}.TestWindows|x86.ActiveCfg = Debug|Any CPU - {6C96D10E-6CB6-4387-922F-C7C97C037495}.TestWindows|x86.Build.0 = Debug|Any CPU - {A19BF89A-8B1F-4612-A923-08F52B53DC84}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A19BF89A-8B1F-4612-A923-08F52B53DC84}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A19BF89A-8B1F-4612-A923-08F52B53DC84}.Debug|x64.ActiveCfg = Debug|Any CPU - {A19BF89A-8B1F-4612-A923-08F52B53DC84}.Debug|x64.Build.0 = Debug|Any CPU - {A19BF89A-8B1F-4612-A923-08F52B53DC84}.Debug|x86.ActiveCfg = Debug|Any CPU - {A19BF89A-8B1F-4612-A923-08F52B53DC84}.Debug|x86.Build.0 = Debug|Any CPU - {A19BF89A-8B1F-4612-A923-08F52B53DC84}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A19BF89A-8B1F-4612-A923-08F52B53DC84}.Release|Any CPU.Build.0 = Release|Any CPU - {A19BF89A-8B1F-4612-A923-08F52B53DC84}.Release|x64.ActiveCfg = Release|Any CPU - {A19BF89A-8B1F-4612-A923-08F52B53DC84}.Release|x64.Build.0 = Release|Any CPU - {A19BF89A-8B1F-4612-A923-08F52B53DC84}.Release|x86.ActiveCfg = Release|Any CPU - {A19BF89A-8B1F-4612-A923-08F52B53DC84}.Release|x86.Build.0 = Release|Any CPU - {A19BF89A-8B1F-4612-A923-08F52B53DC84}.TestWindows|Any CPU.ActiveCfg = Release|Any CPU - {A19BF89A-8B1F-4612-A923-08F52B53DC84}.TestWindows|Any CPU.Build.0 = Release|Any CPU - {A19BF89A-8B1F-4612-A923-08F52B53DC84}.TestWindows|x64.ActiveCfg = Debug|Any CPU - {A19BF89A-8B1F-4612-A923-08F52B53DC84}.TestWindows|x64.Build.0 = Debug|Any CPU - {A19BF89A-8B1F-4612-A923-08F52B53DC84}.TestWindows|x86.ActiveCfg = Debug|Any CPU - {A19BF89A-8B1F-4612-A923-08F52B53DC84}.TestWindows|x86.Build.0 = Debug|Any CPU - {A77F9673-8296-4680-A713-8AC26B7DE41C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A77F9673-8296-4680-A713-8AC26B7DE41C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A77F9673-8296-4680-A713-8AC26B7DE41C}.Debug|x64.ActiveCfg = Debug|Any CPU - {A77F9673-8296-4680-A713-8AC26B7DE41C}.Debug|x64.Build.0 = Debug|Any CPU - {A77F9673-8296-4680-A713-8AC26B7DE41C}.Debug|x86.ActiveCfg = Debug|Any CPU - {A77F9673-8296-4680-A713-8AC26B7DE41C}.Debug|x86.Build.0 = Debug|Any CPU - {A77F9673-8296-4680-A713-8AC26B7DE41C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A77F9673-8296-4680-A713-8AC26B7DE41C}.Release|Any CPU.Build.0 = Release|Any CPU - {A77F9673-8296-4680-A713-8AC26B7DE41C}.Release|x64.ActiveCfg = Release|Any CPU - {A77F9673-8296-4680-A713-8AC26B7DE41C}.Release|x64.Build.0 = Release|Any CPU - {A77F9673-8296-4680-A713-8AC26B7DE41C}.Release|x86.ActiveCfg = Release|Any CPU - {A77F9673-8296-4680-A713-8AC26B7DE41C}.Release|x86.Build.0 = Release|Any CPU - {A77F9673-8296-4680-A713-8AC26B7DE41C}.TestWindows|Any CPU.ActiveCfg = TestWindows|Any CPU - {A77F9673-8296-4680-A713-8AC26B7DE41C}.TestWindows|Any CPU.Build.0 = TestWindows|Any CPU - {A77F9673-8296-4680-A713-8AC26B7DE41C}.TestWindows|x64.ActiveCfg = TestWindows|Any CPU - {A77F9673-8296-4680-A713-8AC26B7DE41C}.TestWindows|x64.Build.0 = TestWindows|Any CPU - {A77F9673-8296-4680-A713-8AC26B7DE41C}.TestWindows|x86.ActiveCfg = TestWindows|Any CPU - {A77F9673-8296-4680-A713-8AC26B7DE41C}.TestWindows|x86.Build.0 = TestWindows|Any CPU - {AC47BC03-4D94-4E35-880A-83B7F00CCD39}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {AC47BC03-4D94-4E35-880A-83B7F00CCD39}.Debug|Any CPU.Build.0 = Debug|Any CPU - {AC47BC03-4D94-4E35-880A-83B7F00CCD39}.Debug|x64.ActiveCfg = Debug|Any CPU - {AC47BC03-4D94-4E35-880A-83B7F00CCD39}.Debug|x64.Build.0 = Debug|Any CPU - {AC47BC03-4D94-4E35-880A-83B7F00CCD39}.Debug|x86.ActiveCfg = Debug|Any CPU - {AC47BC03-4D94-4E35-880A-83B7F00CCD39}.Debug|x86.Build.0 = Debug|Any CPU - {AC47BC03-4D94-4E35-880A-83B7F00CCD39}.Release|Any CPU.ActiveCfg = Release|Any CPU - {AC47BC03-4D94-4E35-880A-83B7F00CCD39}.Release|Any CPU.Build.0 = Release|Any CPU - {AC47BC03-4D94-4E35-880A-83B7F00CCD39}.Release|x64.ActiveCfg = Release|Any CPU - {AC47BC03-4D94-4E35-880A-83B7F00CCD39}.Release|x64.Build.0 = Release|Any CPU - {AC47BC03-4D94-4E35-880A-83B7F00CCD39}.Release|x86.ActiveCfg = Release|Any CPU - {AC47BC03-4D94-4E35-880A-83B7F00CCD39}.Release|x86.Build.0 = Release|Any CPU - {AC47BC03-4D94-4E35-880A-83B7F00CCD39}.TestWindows|Any CPU.ActiveCfg = TestWindows|Any CPU - {AC47BC03-4D94-4E35-880A-83B7F00CCD39}.TestWindows|Any CPU.Build.0 = TestWindows|Any CPU - {AC47BC03-4D94-4E35-880A-83B7F00CCD39}.TestWindows|x64.ActiveCfg = Debug|Any CPU - {AC47BC03-4D94-4E35-880A-83B7F00CCD39}.TestWindows|x64.Build.0 = Debug|Any CPU - {AC47BC03-4D94-4E35-880A-83B7F00CCD39}.TestWindows|x86.ActiveCfg = Debug|Any CPU - {AC47BC03-4D94-4E35-880A-83B7F00CCD39}.TestWindows|x86.Build.0 = Debug|Any CPU - {D002257A-FEC7-4E79-AE66-4FD13392F592}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {D002257A-FEC7-4E79-AE66-4FD13392F592}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D002257A-FEC7-4E79-AE66-4FD13392F592}.Debug|x64.ActiveCfg = Debug|Any CPU - {D002257A-FEC7-4E79-AE66-4FD13392F592}.Debug|x64.Build.0 = Debug|Any CPU - {D002257A-FEC7-4E79-AE66-4FD13392F592}.Debug|x86.ActiveCfg = Debug|Any CPU - {D002257A-FEC7-4E79-AE66-4FD13392F592}.Debug|x86.Build.0 = Debug|Any CPU - {D002257A-FEC7-4E79-AE66-4FD13392F592}.Release|Any CPU.ActiveCfg = Release|Any CPU - {D002257A-FEC7-4E79-AE66-4FD13392F592}.Release|Any CPU.Build.0 = Release|Any CPU - {D002257A-FEC7-4E79-AE66-4FD13392F592}.Release|x64.ActiveCfg = Release|Any CPU - {D002257A-FEC7-4E79-AE66-4FD13392F592}.Release|x64.Build.0 = Release|Any CPU - {D002257A-FEC7-4E79-AE66-4FD13392F592}.Release|x86.ActiveCfg = Release|Any CPU - {D002257A-FEC7-4E79-AE66-4FD13392F592}.Release|x86.Build.0 = Release|Any CPU - {D002257A-FEC7-4E79-AE66-4FD13392F592}.TestWindows|Any CPU.ActiveCfg = TestWindows|Any CPU - {D002257A-FEC7-4E79-AE66-4FD13392F592}.TestWindows|Any CPU.Build.0 = TestWindows|Any CPU - {D002257A-FEC7-4E79-AE66-4FD13392F592}.TestWindows|x64.ActiveCfg = Debug|Any CPU - {D002257A-FEC7-4E79-AE66-4FD13392F592}.TestWindows|x64.Build.0 = Debug|Any CPU - {D002257A-FEC7-4E79-AE66-4FD13392F592}.TestWindows|x86.ActiveCfg = Debug|Any CPU - {D002257A-FEC7-4E79-AE66-4FD13392F592}.TestWindows|x86.Build.0 = Debug|Any CPU - {B713053E-699F-4565-A90F-0A6A7BD84385}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B713053E-699F-4565-A90F-0A6A7BD84385}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B713053E-699F-4565-A90F-0A6A7BD84385}.Debug|x64.ActiveCfg = Debug|Any CPU - {B713053E-699F-4565-A90F-0A6A7BD84385}.Debug|x64.Build.0 = Debug|Any CPU - {B713053E-699F-4565-A90F-0A6A7BD84385}.Debug|x86.ActiveCfg = Debug|Any CPU - {B713053E-699F-4565-A90F-0A6A7BD84385}.Debug|x86.Build.0 = Debug|Any CPU - {B713053E-699F-4565-A90F-0A6A7BD84385}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B713053E-699F-4565-A90F-0A6A7BD84385}.Release|Any CPU.Build.0 = Release|Any CPU - {B713053E-699F-4565-A90F-0A6A7BD84385}.Release|x64.ActiveCfg = Release|Any CPU - {B713053E-699F-4565-A90F-0A6A7BD84385}.Release|x64.Build.0 = Release|Any CPU - {B713053E-699F-4565-A90F-0A6A7BD84385}.Release|x86.ActiveCfg = Release|Any CPU - {B713053E-699F-4565-A90F-0A6A7BD84385}.Release|x86.Build.0 = Release|Any CPU - {B713053E-699F-4565-A90F-0A6A7BD84385}.TestWindows|Any CPU.ActiveCfg = TestWindows|Any CPU - {B713053E-699F-4565-A90F-0A6A7BD84385}.TestWindows|Any CPU.Build.0 = TestWindows|Any CPU - {B713053E-699F-4565-A90F-0A6A7BD84385}.TestWindows|x64.ActiveCfg = Debug|Any CPU - {B713053E-699F-4565-A90F-0A6A7BD84385}.TestWindows|x64.Build.0 = Debug|Any CPU - {B713053E-699F-4565-A90F-0A6A7BD84385}.TestWindows|x86.ActiveCfg = Debug|Any CPU - {B713053E-699F-4565-A90F-0A6A7BD84385}.TestWindows|x86.Build.0 = Debug|Any CPU - {291E000A-2484-44FE-A175-D1F586071FCC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {291E000A-2484-44FE-A175-D1F586071FCC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {291E000A-2484-44FE-A175-D1F586071FCC}.Debug|x64.ActiveCfg = Debug|Any CPU - {291E000A-2484-44FE-A175-D1F586071FCC}.Debug|x64.Build.0 = Debug|Any CPU - {291E000A-2484-44FE-A175-D1F586071FCC}.Debug|x86.ActiveCfg = Debug|Any CPU - {291E000A-2484-44FE-A175-D1F586071FCC}.Debug|x86.Build.0 = Debug|Any CPU - {291E000A-2484-44FE-A175-D1F586071FCC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {291E000A-2484-44FE-A175-D1F586071FCC}.Release|Any CPU.Build.0 = Release|Any CPU - {291E000A-2484-44FE-A175-D1F586071FCC}.Release|x64.ActiveCfg = Release|Any CPU - {291E000A-2484-44FE-A175-D1F586071FCC}.Release|x64.Build.0 = Release|Any CPU - {291E000A-2484-44FE-A175-D1F586071FCC}.Release|x86.ActiveCfg = Release|Any CPU - {291E000A-2484-44FE-A175-D1F586071FCC}.Release|x86.Build.0 = Release|Any CPU - {291E000A-2484-44FE-A175-D1F586071FCC}.TestWindows|Any CPU.ActiveCfg = Debug|Any CPU - {291E000A-2484-44FE-A175-D1F586071FCC}.TestWindows|Any CPU.Build.0 = Debug|Any CPU - {291E000A-2484-44FE-A175-D1F586071FCC}.TestWindows|x64.ActiveCfg = Debug|Any CPU - {291E000A-2484-44FE-A175-D1F586071FCC}.TestWindows|x64.Build.0 = Debug|Any CPU - {291E000A-2484-44FE-A175-D1F586071FCC}.TestWindows|x86.ActiveCfg = Debug|Any CPU - {291E000A-2484-44FE-A175-D1F586071FCC}.TestWindows|x86.Build.0 = Debug|Any CPU + {9004D472-6B17-255F-9BBE-3315532D92B4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9004D472-6B17-255F-9BBE-3315532D92B4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9004D472-6B17-255F-9BBE-3315532D92B4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9004D472-6B17-255F-9BBE-3315532D92B4}.Release|Any CPU.Build.0 = Release|Any CPU + {9004D472-6B17-255F-9BBE-3315532D92B4}.TestWindows|Any CPU.ActiveCfg = Release|Any CPU + {9004D472-6B17-255F-9BBE-3315532D92B4}.TestWindows|Any CPU.Build.0 = Release|Any CPU + {6B439AB8-DF75-4C55-A61C-E9D6A39AA744}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6B439AB8-DF75-4C55-A61C-E9D6A39AA744}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6B439AB8-DF75-4C55-A61C-E9D6A39AA744}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6B439AB8-DF75-4C55-A61C-E9D6A39AA744}.Release|Any CPU.Build.0 = Release|Any CPU + {6B439AB8-DF75-4C55-A61C-E9D6A39AA744}.TestWindows|Any CPU.ActiveCfg = TestWindows|Any CPU + {6B439AB8-DF75-4C55-A61C-E9D6A39AA744}.TestWindows|Any CPU.Build.0 = TestWindows|Any CPU {70DA7262-B953-F20A-B58A-FA9EB7AF849B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {70DA7262-B953-F20A-B58A-FA9EB7AF849B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {70DA7262-B953-F20A-B58A-FA9EB7AF849B}.Debug|x64.ActiveCfg = Debug|Any CPU - {70DA7262-B953-F20A-B58A-FA9EB7AF849B}.Debug|x64.Build.0 = Debug|Any CPU - {70DA7262-B953-F20A-B58A-FA9EB7AF849B}.Debug|x86.ActiveCfg = Debug|Any CPU - {70DA7262-B953-F20A-B58A-FA9EB7AF849B}.Debug|x86.Build.0 = Debug|Any CPU {70DA7262-B953-F20A-B58A-FA9EB7AF849B}.Release|Any CPU.ActiveCfg = Release|Any CPU {70DA7262-B953-F20A-B58A-FA9EB7AF849B}.Release|Any CPU.Build.0 = Release|Any CPU - {70DA7262-B953-F20A-B58A-FA9EB7AF849B}.Release|x64.ActiveCfg = Release|Any CPU - {70DA7262-B953-F20A-B58A-FA9EB7AF849B}.Release|x64.Build.0 = Release|Any CPU - {70DA7262-B953-F20A-B58A-FA9EB7AF849B}.Release|x86.ActiveCfg = Release|Any CPU - {70DA7262-B953-F20A-B58A-FA9EB7AF849B}.Release|x86.Build.0 = Release|Any CPU - {70DA7262-B953-F20A-B58A-FA9EB7AF849B}.TestWindows|Any CPU.ActiveCfg = Debug|Any CPU - {70DA7262-B953-F20A-B58A-FA9EB7AF849B}.TestWindows|Any CPU.Build.0 = Debug|Any CPU - {70DA7262-B953-F20A-B58A-FA9EB7AF849B}.TestWindows|x64.ActiveCfg = Debug|Any CPU - {70DA7262-B953-F20A-B58A-FA9EB7AF849B}.TestWindows|x64.Build.0 = Debug|Any CPU - {70DA7262-B953-F20A-B58A-FA9EB7AF849B}.TestWindows|x86.ActiveCfg = Debug|Any CPU - {70DA7262-B953-F20A-B58A-FA9EB7AF849B}.TestWindows|x86.Build.0 = Debug|Any CPU + {70DA7262-B953-F20A-B58A-FA9EB7AF849B}.TestWindows|Any CPU.ActiveCfg = Release|Any CPU + {70DA7262-B953-F20A-B58A-FA9EB7AF849B}.TestWindows|Any CPU.Build.0 = Release|Any CPU {8F1DD9CC-60FE-9363-1191-381423A51517}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {8F1DD9CC-60FE-9363-1191-381423A51517}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8F1DD9CC-60FE-9363-1191-381423A51517}.Debug|x64.ActiveCfg = Debug|Any CPU - {8F1DD9CC-60FE-9363-1191-381423A51517}.Debug|x64.Build.0 = Debug|Any CPU - {8F1DD9CC-60FE-9363-1191-381423A51517}.Debug|x86.ActiveCfg = Debug|Any CPU - {8F1DD9CC-60FE-9363-1191-381423A51517}.Debug|x86.Build.0 = Debug|Any CPU {8F1DD9CC-60FE-9363-1191-381423A51517}.Release|Any CPU.ActiveCfg = Release|Any CPU {8F1DD9CC-60FE-9363-1191-381423A51517}.Release|Any CPU.Build.0 = Release|Any CPU - {8F1DD9CC-60FE-9363-1191-381423A51517}.Release|x64.ActiveCfg = Release|Any CPU - {8F1DD9CC-60FE-9363-1191-381423A51517}.Release|x64.Build.0 = Release|Any CPU - {8F1DD9CC-60FE-9363-1191-381423A51517}.Release|x86.ActiveCfg = Release|Any CPU - {8F1DD9CC-60FE-9363-1191-381423A51517}.Release|x86.Build.0 = Release|Any CPU {8F1DD9CC-60FE-9363-1191-381423A51517}.TestWindows|Any CPU.ActiveCfg = TestWindows|Any CPU {8F1DD9CC-60FE-9363-1191-381423A51517}.TestWindows|Any CPU.Build.0 = TestWindows|Any CPU - {8F1DD9CC-60FE-9363-1191-381423A51517}.TestWindows|x64.ActiveCfg = TestWindows|Any CPU - {8F1DD9CC-60FE-9363-1191-381423A51517}.TestWindows|x64.Build.0 = TestWindows|Any CPU - {8F1DD9CC-60FE-9363-1191-381423A51517}.TestWindows|x86.ActiveCfg = TestWindows|Any CPU - {8F1DD9CC-60FE-9363-1191-381423A51517}.TestWindows|x86.Build.0 = TestWindows|Any CPU + {FF734A3F-B1D2-D1FD-6B2E-88E23893CC8A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FF734A3F-B1D2-D1FD-6B2E-88E23893CC8A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FF734A3F-B1D2-D1FD-6B2E-88E23893CC8A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FF734A3F-B1D2-D1FD-6B2E-88E23893CC8A}.Release|Any CPU.Build.0 = Release|Any CPU + {FF734A3F-B1D2-D1FD-6B2E-88E23893CC8A}.TestWindows|Any CPU.ActiveCfg = Release|Any CPU + {FF734A3F-B1D2-D1FD-6B2E-88E23893CC8A}.TestWindows|Any CPU.Build.0 = Release|Any CPU + {AB5996CA-7552-666C-E440-B6261EED9A89}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AB5996CA-7552-666C-E440-B6261EED9A89}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AB5996CA-7552-666C-E440-B6261EED9A89}.Release|Any CPU.ActiveCfg = Release|Any CPU + {AB5996CA-7552-666C-E440-B6261EED9A89}.Release|Any CPU.Build.0 = Release|Any CPU + {AB5996CA-7552-666C-E440-B6261EED9A89}.TestWindows|Any CPU.ActiveCfg = Release|Any CPU + {AB5996CA-7552-666C-E440-B6261EED9A89}.TestWindows|Any CPU.Build.0 = Release|Any CPU + {909D242D-BF2E-BAF6-C034-DDB704A65D46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {909D242D-BF2E-BAF6-C034-DDB704A65D46}.Debug|Any CPU.Build.0 = Debug|Any CPU + {909D242D-BF2E-BAF6-C034-DDB704A65D46}.Release|Any CPU.ActiveCfg = Release|Any CPU + {909D242D-BF2E-BAF6-C034-DDB704A65D46}.Release|Any CPU.Build.0 = Release|Any CPU + {909D242D-BF2E-BAF6-C034-DDB704A65D46}.TestWindows|Any CPU.ActiveCfg = Release|Any CPU + {909D242D-BF2E-BAF6-C034-DDB704A65D46}.TestWindows|Any CPU.Build.0 = Release|Any CPU + {A277004A-4E9D-4E7A-8270-5DF72B44A426}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A277004A-4E9D-4E7A-8270-5DF72B44A426}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A277004A-4E9D-4E7A-8270-5DF72B44A426}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A277004A-4E9D-4E7A-8270-5DF72B44A426}.Release|Any CPU.Build.0 = Release|Any CPU + {A277004A-4E9D-4E7A-8270-5DF72B44A426}.TestWindows|Any CPU.ActiveCfg = TestWindows|Any CPU + {A277004A-4E9D-4E7A-8270-5DF72B44A426}.TestWindows|Any CPU.Build.0 = TestWindows|Any CPU {A0E0D347-8BEE-0177-815B-4045469F442C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {A0E0D347-8BEE-0177-815B-4045469F442C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A0E0D347-8BEE-0177-815B-4045469F442C}.Debug|x64.ActiveCfg = Debug|Any CPU - {A0E0D347-8BEE-0177-815B-4045469F442C}.Debug|x64.Build.0 = Debug|Any CPU - {A0E0D347-8BEE-0177-815B-4045469F442C}.Debug|x86.ActiveCfg = Debug|Any CPU - {A0E0D347-8BEE-0177-815B-4045469F442C}.Debug|x86.Build.0 = Debug|Any CPU {A0E0D347-8BEE-0177-815B-4045469F442C}.Release|Any CPU.ActiveCfg = Release|Any CPU {A0E0D347-8BEE-0177-815B-4045469F442C}.Release|Any CPU.Build.0 = Release|Any CPU - {A0E0D347-8BEE-0177-815B-4045469F442C}.Release|x64.ActiveCfg = Release|Any CPU - {A0E0D347-8BEE-0177-815B-4045469F442C}.Release|x64.Build.0 = Release|Any CPU - {A0E0D347-8BEE-0177-815B-4045469F442C}.Release|x86.ActiveCfg = Release|Any CPU - {A0E0D347-8BEE-0177-815B-4045469F442C}.Release|x86.Build.0 = Release|Any CPU {A0E0D347-8BEE-0177-815B-4045469F442C}.TestWindows|Any CPU.ActiveCfg = TestWindows|Any CPU {A0E0D347-8BEE-0177-815B-4045469F442C}.TestWindows|Any CPU.Build.0 = TestWindows|Any CPU - {A0E0D347-8BEE-0177-815B-4045469F442C}.TestWindows|x64.ActiveCfg = TestWindows|Any CPU - {A0E0D347-8BEE-0177-815B-4045469F442C}.TestWindows|x64.Build.0 = TestWindows|Any CPU - {A0E0D347-8BEE-0177-815B-4045469F442C}.TestWindows|x86.ActiveCfg = TestWindows|Any CPU - {A0E0D347-8BEE-0177-815B-4045469F442C}.TestWindows|x86.Build.0 = TestWindows|Any CPU + {8A851E79-B8B9-BBA9-EA1D-6B231163093B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8A851E79-B8B9-BBA9-EA1D-6B231163093B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8A851E79-B8B9-BBA9-EA1D-6B231163093B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8A851E79-B8B9-BBA9-EA1D-6B231163093B}.Release|Any CPU.Build.0 = Release|Any CPU + {8A851E79-B8B9-BBA9-EA1D-6B231163093B}.TestWindows|Any CPU.ActiveCfg = TestWindows|Any CPU + {8A851E79-B8B9-BBA9-EA1D-6B231163093B}.TestWindows|Any CPU.Build.0 = TestWindows|Any CPU + {9980365E-926C-51CE-070A-FF18B33CD9F7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9980365E-926C-51CE-070A-FF18B33CD9F7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9980365E-926C-51CE-070A-FF18B33CD9F7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9980365E-926C-51CE-070A-FF18B33CD9F7}.Release|Any CPU.Build.0 = Release|Any CPU + {9980365E-926C-51CE-070A-FF18B33CD9F7}.TestWindows|Any CPU.ActiveCfg = TestWindows|Any CPU + {9980365E-926C-51CE-070A-FF18B33CD9F7}.TestWindows|Any CPU.Build.0 = TestWindows|Any CPU + {A76426B6-73B7-1983-06CF-E05E79341A1D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A76426B6-73B7-1983-06CF-E05E79341A1D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A76426B6-73B7-1983-06CF-E05E79341A1D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A76426B6-73B7-1983-06CF-E05E79341A1D}.Release|Any CPU.Build.0 = Release|Any CPU + {A76426B6-73B7-1983-06CF-E05E79341A1D}.TestWindows|Any CPU.ActiveCfg = TestWindows|Any CPU + {A76426B6-73B7-1983-06CF-E05E79341A1D}.TestWindows|Any CPU.Build.0 = TestWindows|Any CPU + {B6E9C64B-6AE3-A70C-5910-817FCEC7F962}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B6E9C64B-6AE3-A70C-5910-817FCEC7F962}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B6E9C64B-6AE3-A70C-5910-817FCEC7F962}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B6E9C64B-6AE3-A70C-5910-817FCEC7F962}.Release|Any CPU.Build.0 = Release|Any CPU + {B6E9C64B-6AE3-A70C-5910-817FCEC7F962}.TestWindows|Any CPU.ActiveCfg = TestWindows|Any CPU + {B6E9C64B-6AE3-A70C-5910-817FCEC7F962}.TestWindows|Any CPU.Build.0 = TestWindows|Any CPU + {9B107A91-87F9-420C-ADF8-732C77DAFB93}.Debug|Any CPU.ActiveCfg = Debug|x64 + {9B107A91-87F9-420C-ADF8-732C77DAFB93}.Release|Any CPU.ActiveCfg = Release|x64 + {9B107A91-87F9-420C-ADF8-732C77DAFB93}.TestWindows|Any CPU.ActiveCfg = Release|x64 + {9B107A91-87F9-420C-ADF8-732C77DAFB93}.TestWindows|Any CPU.Build.0 = Release|x64 + {104B0802-1CCC-BF84-9CE0-3C91D99555A7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {104B0802-1CCC-BF84-9CE0-3C91D99555A7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {104B0802-1CCC-BF84-9CE0-3C91D99555A7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {104B0802-1CCC-BF84-9CE0-3C91D99555A7}.Release|Any CPU.Build.0 = Release|Any CPU + {104B0802-1CCC-BF84-9CE0-3C91D99555A7}.TestWindows|Any CPU.ActiveCfg = Release|Any CPU + {104B0802-1CCC-BF84-9CE0-3C91D99555A7}.TestWindows|Any CPU.Build.0 = Release|Any CPU + {F6A594E4-7929-2823-C907-C31439197DB4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F6A594E4-7929-2823-C907-C31439197DB4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F6A594E4-7929-2823-C907-C31439197DB4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F6A594E4-7929-2823-C907-C31439197DB4}.Release|Any CPU.Build.0 = Release|Any CPU + {F6A594E4-7929-2823-C907-C31439197DB4}.TestWindows|Any CPU.ActiveCfg = TestWindows|Any CPU + {F6A594E4-7929-2823-C907-C31439197DB4}.TestWindows|Any CPU.Build.0 = TestWindows|Any CPU + {BBB24A05-8A1F-4840-8C70-BEFE3F0B8F5D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BBB24A05-8A1F-4840-8C70-BEFE3F0B8F5D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BBB24A05-8A1F-4840-8C70-BEFE3F0B8F5D}.TestWindows|Any CPU.ActiveCfg = TestWindows|Any CPU + {BBB24A05-8A1F-4840-8C70-BEFE3F0B8F5D}.TestWindows|Any CPU.Build.0 = TestWindows|Any CPU + {665F6812-BD66-D32D-2F22-B1EC6C5D1F75}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {665F6812-BD66-D32D-2F22-B1EC6C5D1F75}.Debug|Any CPU.Build.0 = Debug|Any CPU + {665F6812-BD66-D32D-2F22-B1EC6C5D1F75}.Release|Any CPU.ActiveCfg = Release|Any CPU + {665F6812-BD66-D32D-2F22-B1EC6C5D1F75}.Release|Any CPU.Build.0 = Release|Any CPU + {665F6812-BD66-D32D-2F22-B1EC6C5D1F75}.TestWindows|Any CPU.ActiveCfg = TestWindows|Any CPU + {665F6812-BD66-D32D-2F22-B1EC6C5D1F75}.TestWindows|Any CPU.Build.0 = TestWindows|Any CPU + {2FABC52B-5F4E-F5B9-3E23-442FD0712103}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2FABC52B-5F4E-F5B9-3E23-442FD0712103}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2FABC52B-5F4E-F5B9-3E23-442FD0712103}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2FABC52B-5F4E-F5B9-3E23-442FD0712103}.Release|Any CPU.Build.0 = Release|Any CPU + {2FABC52B-5F4E-F5B9-3E23-442FD0712103}.TestWindows|Any CPU.ActiveCfg = TestWindows|Any CPU + {2FABC52B-5F4E-F5B9-3E23-442FD0712103}.TestWindows|Any CPU.Build.0 = TestWindows|Any CPU + {21A22820-62B5-C46F-D3F6-3C63D0304C8B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {21A22820-62B5-C46F-D3F6-3C63D0304C8B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {21A22820-62B5-C46F-D3F6-3C63D0304C8B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {21A22820-62B5-C46F-D3F6-3C63D0304C8B}.Release|Any CPU.Build.0 = Release|Any CPU + {21A22820-62B5-C46F-D3F6-3C63D0304C8B}.TestWindows|Any CPU.ActiveCfg = TestWindows|Any CPU + {21A22820-62B5-C46F-D3F6-3C63D0304C8B}.TestWindows|Any CPU.Build.0 = TestWindows|Any CPU + {380FBD90-2CF0-4F83-A58E-EB98CE2EAE15}.Debug|Any CPU.ActiveCfg = Debug|x64 + {380FBD90-2CF0-4F83-A58E-EB98CE2EAE15}.Release|Any CPU.ActiveCfg = Release|x64 + {380FBD90-2CF0-4F83-A58E-EB98CE2EAE15}.TestWindows|Any CPU.ActiveCfg = Release|x64 + {380FBD90-2CF0-4F83-A58E-EB98CE2EAE15}.TestWindows|Any CPU.Build.0 = Release|x64 + {FCE3A417-4316-7F84-E4CD-52B61EF13BA0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FCE3A417-4316-7F84-E4CD-52B61EF13BA0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FCE3A417-4316-7F84-E4CD-52B61EF13BA0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FCE3A417-4316-7F84-E4CD-52B61EF13BA0}.Release|Any CPU.Build.0 = Release|Any CPU + {FCE3A417-4316-7F84-E4CD-52B61EF13BA0}.TestWindows|Any CPU.ActiveCfg = Debug|Any CPU + {FCE3A417-4316-7F84-E4CD-52B61EF13BA0}.TestWindows|Any CPU.Build.0 = Debug|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection GlobalSection(NestedProjects) = preSolution - {E9F108AD-CE14-4BDD-B674-A1CDDE8B27EC} = {D2AB2D00-1F48-487D-BFE0-99FDB4E071CC} - {1EBC8E4A-7677-4AF9-9C37-0CF81A9A689E} = {C00E0699-ACCD-44CD-91A7-243A30504DB9} - {FA92392F-D895-4D1E-A5ED-E6DC3C08223E} = {C00E0699-ACCD-44CD-91A7-243A30504DB9} - {80E2DA74-CA6D-45EC-9272-00C93A574997} = {FA92392F-D895-4D1E-A5ED-E6DC3C08223E} - {FD8ECE33-D357-4611-A909-D9EE9415FB26} = {FA92392F-D895-4D1E-A5ED-E6DC3C08223E} - {BBB24A05-8A1F-4840-8C70-BEFE3F0B8F5D} = {FA92392F-D895-4D1E-A5ED-E6DC3C08223E} - {3DDEC6CB-4FDA-49D1-A358-06BE9200C174} = {FA92392F-D895-4D1E-A5ED-E6DC3C08223E} - {3150479E-4370-408D-8A93-7C0CDC281CC3} = {FA92392F-D895-4D1E-A5ED-E6DC3C08223E} - {380FBD90-2CF0-4F83-A58E-EB98CE2EAE15} = {FA92392F-D895-4D1E-A5ED-E6DC3C08223E} - {FBA6622A-C9E3-4250-AB79-35F02CAD2419} = {D2AB2D00-1F48-487D-BFE0-99FDB4E071CC} - {DE079B9C-B6BA-4D53-8B83-03D3CBD4027F} = {D2AB2D00-1F48-487D-BFE0-99FDB4E071CC} - {01704839-219A-4CE2-93F4-DB3CB8773DCE} = {FFB2826C-17A3-4C18-8FFE-A34AB51592F7} - {9B107A91-87F9-420C-ADF8-732C77DAFB93} = {FA92392F-D895-4D1E-A5ED-E6DC3C08223E} - {6C96D10E-6CB6-4387-922F-C7C97C037495} = {FA92392F-D895-4D1E-A5ED-E6DC3C08223E} - {A19BF89A-8B1F-4612-A923-08F52B53DC84} = {FA92392F-D895-4D1E-A5ED-E6DC3C08223E} - {A77F9673-8296-4680-A713-8AC26B7DE41C} = {C00E0699-ACCD-44CD-91A7-243A30504DB9} - {AC47BC03-4D94-4E35-880A-83B7F00CCD39} = {D2AB2D00-1F48-487D-BFE0-99FDB4E071CC} - {D002257A-FEC7-4E79-AE66-4FD13392F592} = {C00E0699-ACCD-44CD-91A7-243A30504DB9} - {B713053E-699F-4565-A90F-0A6A7BD84385} = {C00E0699-ACCD-44CD-91A7-243A30504DB9} - {291E000A-2484-44FE-A175-D1F586071FCC} = {FFB2826C-17A3-4C18-8FFE-A34AB51592F7} - {70DA7262-B953-F20A-B58A-FA9EB7AF849B} = {FFB2826C-17A3-4C18-8FFE-A34AB51592F7} - {8F1DD9CC-60FE-9363-1191-381423A51517} = {D2AB2D00-1F48-487D-BFE0-99FDB4E071CC} - {A0E0D347-8BEE-0177-815B-4045469F442C} = {C00E0699-ACCD-44CD-91A7-243A30504DB9} - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {70887D40-0182-4C32-BFA1-B5A02E405F11} + {9004D472-6B17-255F-9BBE-3315532D92B4} = {823D4020-332D-2C13-F261-6F510F11A57E} + {6B439AB8-DF75-4C55-A61C-E9D6A39AA744} = {823D4020-332D-2C13-F261-6F510F11A57E} + {70DA7262-B953-F20A-B58A-FA9EB7AF849B} = {823D4020-332D-2C13-F261-6F510F11A57E} + {8F1DD9CC-60FE-9363-1191-381423A51517} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B} + {FF734A3F-B1D2-D1FD-6B2E-88E23893CC8A} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B} + {AB5996CA-7552-666C-E440-B6261EED9A89} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B} + {909D242D-BF2E-BAF6-C034-DDB704A65D46} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B} + {A277004A-4E9D-4E7A-8270-5DF72B44A426} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B} + {A0E0D347-8BEE-0177-815B-4045469F442C} = {0AB3BF05-4346-4AA6-1389-037BE0695223} + {8A851E79-B8B9-BBA9-EA1D-6B231163093B} = {0AB3BF05-4346-4AA6-1389-037BE0695223} + {9980365E-926C-51CE-070A-FF18B33CD9F7} = {0AB3BF05-4346-4AA6-1389-037BE0695223} + {A76426B6-73B7-1983-06CF-E05E79341A1D} = {0AB3BF05-4346-4AA6-1389-037BE0695223} + {B6E9C64B-6AE3-A70C-5910-817FCEC7F962} = {0AB3BF05-4346-4AA6-1389-037BE0695223} + {B4C66CBD-571F-0685-D8EF-97E576F878C9} = {0AB3BF05-4346-4AA6-1389-037BE0695223} + {9B107A91-87F9-420C-ADF8-732C77DAFB93} = {B4C66CBD-571F-0685-D8EF-97E576F878C9} + {104B0802-1CCC-BF84-9CE0-3C91D99555A7} = {B4C66CBD-571F-0685-D8EF-97E576F878C9} + {F6A594E4-7929-2823-C907-C31439197DB4} = {B4C66CBD-571F-0685-D8EF-97E576F878C9} + {BBB24A05-8A1F-4840-8C70-BEFE3F0B8F5D} = {B4C66CBD-571F-0685-D8EF-97E576F878C9} + {665F6812-BD66-D32D-2F22-B1EC6C5D1F75} = {B4C66CBD-571F-0685-D8EF-97E576F878C9} + {2FABC52B-5F4E-F5B9-3E23-442FD0712103} = {B4C66CBD-571F-0685-D8EF-97E576F878C9} + {21A22820-62B5-C46F-D3F6-3C63D0304C8B} = {B4C66CBD-571F-0685-D8EF-97E576F878C9} + {380FBD90-2CF0-4F83-A58E-EB98CE2EAE15} = {B4C66CBD-571F-0685-D8EF-97E576F878C9} + {FCE3A417-4316-7F84-E4CD-52B61EF13BA0} = {B4C66CBD-571F-0685-D8EF-97E576F878C9} EndGlobalSection EndGlobal diff --git a/NuGetUtility.slnx b/NuGetUtility.slnx new file mode 100644 index 00000000..f7666617 --- /dev/null +++ b/NuGetUtility.slnx @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/FileLicenseMatcher/Combine/LicenseMatcher.cs b/src/FileLicenseMatcher/Combine/LicenseMatcher.cs index 9967f3db..d4496393 100644 --- a/src/FileLicenseMatcher/Combine/LicenseMatcher.cs +++ b/src/FileLicenseMatcher/Combine/LicenseMatcher.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using System.Collections.Generic; diff --git a/src/FileLicenseMatcher/Compare/LicenseMatcher.cs b/src/FileLicenseMatcher/Compare/LicenseMatcher.cs index 03e45808..9428de5d 100644 --- a/src/FileLicenseMatcher/Compare/LicenseMatcher.cs +++ b/src/FileLicenseMatcher/Compare/LicenseMatcher.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using System; diff --git a/src/FileLicenseMatcher/IFileLicenseMatcher.cs b/src/FileLicenseMatcher/IFileLicenseMatcher.cs index 105f7799..5d09fe17 100644 --- a/src/FileLicenseMatcher/IFileLicenseMatcher.cs +++ b/src/FileLicenseMatcher/IFileLicenseMatcher.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root namespace FileLicenseMatcher diff --git a/src/FileLicenseMatcher/SPDX/FastLicenseMatcher.cs b/src/FileLicenseMatcher/SPDX/FastLicenseMatcher.cs index 6c657fb2..dcd91099 100644 --- a/src/FileLicenseMatcher/SPDX/FastLicenseMatcher.cs +++ b/src/FileLicenseMatcher/SPDX/FastLicenseMatcher.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using System.Collections.Generic; diff --git a/src/FileLicenseMatcher/SPDX/JavaCore/ILicenseTemplateOutputHandler.cs b/src/FileLicenseMatcher/SPDX/JavaCore/ILicenseTemplateOutputHandler.cs index 5275c80a..d891fb6b 100644 --- a/src/FileLicenseMatcher/SPDX/JavaCore/ILicenseTemplateOutputHandler.cs +++ b/src/FileLicenseMatcher/SPDX/JavaCore/ILicenseTemplateOutputHandler.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root /** diff --git a/src/FileLicenseMatcher/SPDX/JavaCore/InvalidSPDXAnalysisException.cs b/src/FileLicenseMatcher/SPDX/JavaCore/InvalidSPDXAnalysisException.cs index 919feb13..a044da0e 100644 --- a/src/FileLicenseMatcher/SPDX/JavaCore/InvalidSPDXAnalysisException.cs +++ b/src/FileLicenseMatcher/SPDX/JavaCore/InvalidSPDXAnalysisException.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using System; diff --git a/src/FileLicenseMatcher/SPDX/JavaCore/LicenseParserException.cs b/src/FileLicenseMatcher/SPDX/JavaCore/LicenseParserException.cs index b942131e..b7bbec1d 100644 --- a/src/FileLicenseMatcher/SPDX/JavaCore/LicenseParserException.cs +++ b/src/FileLicenseMatcher/SPDX/JavaCore/LicenseParserException.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using System; diff --git a/src/FileLicenseMatcher/SPDX/JavaCore/LicenseTemplateRule.cs b/src/FileLicenseMatcher/SPDX/JavaCore/LicenseTemplateRule.cs index ca1dcefc..d7c3a0e3 100644 --- a/src/FileLicenseMatcher/SPDX/JavaCore/LicenseTemplateRule.cs +++ b/src/FileLicenseMatcher/SPDX/JavaCore/LicenseTemplateRule.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using System.Linq; diff --git a/src/FileLicenseMatcher/SPDX/JavaCore/LicenseTemplateRuleException.cs b/src/FileLicenseMatcher/SPDX/JavaCore/LicenseTemplateRuleException.cs index 68198540..2b2a603e 100644 --- a/src/FileLicenseMatcher/SPDX/JavaCore/LicenseTemplateRuleException.cs +++ b/src/FileLicenseMatcher/SPDX/JavaCore/LicenseTemplateRuleException.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using System; diff --git a/src/FileLicenseMatcher/SPDX/JavaCore/LicenseTextHelper.cs b/src/FileLicenseMatcher/SPDX/JavaCore/LicenseTextHelper.cs index e5dd5407..cdd9a316 100644 --- a/src/FileLicenseMatcher/SPDX/JavaCore/LicenseTextHelper.cs +++ b/src/FileLicenseMatcher/SPDX/JavaCore/LicenseTextHelper.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using System.Collections.Generic; diff --git a/src/FileLicenseMatcher/SPDX/JavaCore/LineColumn.cs b/src/FileLicenseMatcher/SPDX/JavaCore/LineColumn.cs index 3e33ada2..01c4a35d 100644 --- a/src/FileLicenseMatcher/SPDX/JavaCore/LineColumn.cs +++ b/src/FileLicenseMatcher/SPDX/JavaCore/LineColumn.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root /** diff --git a/src/FileLicenseMatcher/SPDX/JavaCore/SpdxLicenseTemplateHelper.cs b/src/FileLicenseMatcher/SPDX/JavaCore/SpdxLicenseTemplateHelper.cs index fb98e274..26256845 100644 --- a/src/FileLicenseMatcher/SPDX/JavaCore/SpdxLicenseTemplateHelper.cs +++ b/src/FileLicenseMatcher/SPDX/JavaCore/SpdxLicenseTemplateHelper.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using System.Collections.Generic; diff --git a/src/FileLicenseMatcher/SPDX/JavaLibrary/CompareTemplateOutputHandler.cs b/src/FileLicenseMatcher/SPDX/JavaLibrary/CompareTemplateOutputHandler.cs index bad33b40..3363ae4b 100644 --- a/src/FileLicenseMatcher/SPDX/JavaLibrary/CompareTemplateOutputHandler.cs +++ b/src/FileLicenseMatcher/SPDX/JavaLibrary/CompareTemplateOutputHandler.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using System.Collections.Generic; diff --git a/src/FileLicenseMatcher/SPDX/JavaLibrary/DifferenceDescription.cs b/src/FileLicenseMatcher/SPDX/JavaLibrary/DifferenceDescription.cs index e4a7cbb0..cc799370 100644 --- a/src/FileLicenseMatcher/SPDX/JavaLibrary/DifferenceDescription.cs +++ b/src/FileLicenseMatcher/SPDX/JavaLibrary/DifferenceDescription.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using System.Collections.Generic; diff --git a/src/FileLicenseMatcher/SPDX/JavaLibrary/LicenseCompareHelper.cs b/src/FileLicenseMatcher/SPDX/JavaLibrary/LicenseCompareHelper.cs index 9b66f961..71d7bfdb 100644 --- a/src/FileLicenseMatcher/SPDX/JavaLibrary/LicenseCompareHelper.cs +++ b/src/FileLicenseMatcher/SPDX/JavaLibrary/LicenseCompareHelper.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using System.Collections.Generic; diff --git a/src/FileLicenseMatcher/SPDX/JavaLibrary/ParseInstruction.cs b/src/FileLicenseMatcher/SPDX/JavaLibrary/ParseInstruction.cs index 84d434d5..4dcf9ea1 100644 --- a/src/FileLicenseMatcher/SPDX/JavaLibrary/ParseInstruction.cs +++ b/src/FileLicenseMatcher/SPDX/JavaLibrary/ParseInstruction.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using System.Collections.Generic; diff --git a/src/FileLicenseMatcher/SPDX/JavaLibrary/SpdxCompareException.cs b/src/FileLicenseMatcher/SPDX/JavaLibrary/SpdxCompareException.cs index 52e7b110..cb2e26d2 100644 --- a/src/FileLicenseMatcher/SPDX/JavaLibrary/SpdxCompareException.cs +++ b/src/FileLicenseMatcher/SPDX/JavaLibrary/SpdxCompareException.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using System; diff --git a/src/NuGetLicense/CommandLineOptionsParser.cs b/src/NuGetLicense/CommandLineOptionsParser.cs index a62d29b7..5c591080 100644 --- a/src/NuGetLicense/CommandLineOptionsParser.cs +++ b/src/NuGetLicense/CommandLineOptionsParser.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using System.Collections.Immutable; diff --git a/src/NuGetLicense/ICommandLineOptions.cs b/src/NuGetLicense/ICommandLineOptions.cs index a7fa5d37..c165a8ef 100644 --- a/src/NuGetLicense/ICommandLineOptions.cs +++ b/src/NuGetLicense/ICommandLineOptions.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using NuGetUtility; diff --git a/src/NuGetLicense/ICommandLineOptionsParser.cs b/src/NuGetLicense/ICommandLineOptionsParser.cs index 64301d84..ca8ebd7d 100644 --- a/src/NuGetLicense/ICommandLineOptionsParser.cs +++ b/src/NuGetLicense/ICommandLineOptionsParser.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using System.Collections.Immutable; diff --git a/src/NuGetLicense/ILicenseValidationOrchestrator.cs b/src/NuGetLicense/ILicenseValidationOrchestrator.cs index e37e0b8b..adac14e1 100644 --- a/src/NuGetLicense/ILicenseValidationOrchestrator.cs +++ b/src/NuGetLicense/ILicenseValidationOrchestrator.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root namespace NuGetLicense diff --git a/src/NuGetLicense/LicenseValidationOrchestrator.cs b/src/NuGetLicense/LicenseValidationOrchestrator.cs index 171f3423..fd781750 100644 --- a/src/NuGetLicense/LicenseValidationOrchestrator.cs +++ b/src/NuGetLicense/LicenseValidationOrchestrator.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using System.Collections.Immutable; diff --git a/src/NuGetLicense/LicenseValidator/LicenseDownloadException.cs b/src/NuGetLicense/LicenseValidator/LicenseDownloadException.cs index 27387874..1602474c 100644 --- a/src/NuGetLicense/LicenseValidator/LicenseDownloadException.cs +++ b/src/NuGetLicense/LicenseValidator/LicenseDownloadException.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using NuGetUtility.Wrapper.NuGetWrapper.Packaging.Core; diff --git a/src/NuGetLicense/LicenseValidator/LicenseExpressions.cs b/src/NuGetLicense/LicenseValidator/LicenseExpressions.cs index d420d2aa..b145aae8 100644 --- a/src/NuGetLicense/LicenseValidator/LicenseExpressions.cs +++ b/src/NuGetLicense/LicenseValidator/LicenseExpressions.cs @@ -1,5 +1,6 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root + namespace NuGetLicense.LicenseValidator { public static class LicenseExpressions diff --git a/src/NuGetLicense/LicenseValidator/LicenseInformationOrigin.cs b/src/NuGetLicense/LicenseValidator/LicenseInformationOrigin.cs index a1ab11d1..fac0c5be 100644 --- a/src/NuGetLicense/LicenseValidator/LicenseInformationOrigin.cs +++ b/src/NuGetLicense/LicenseValidator/LicenseInformationOrigin.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root namespace NuGetLicense.LicenseValidator diff --git a/src/NuGetLicense/LicenseValidator/LicenseValidationResult.cs b/src/NuGetLicense/LicenseValidator/LicenseValidationResult.cs index 133b0d84..2b2b19c0 100644 --- a/src/NuGetLicense/LicenseValidator/LicenseValidationResult.cs +++ b/src/NuGetLicense/LicenseValidator/LicenseValidationResult.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using NuGetUtility.Wrapper.NuGetWrapper.Versioning; diff --git a/src/NuGetLicense/LicenseValidator/LicenseValidator.cs b/src/NuGetLicense/LicenseValidator/LicenseValidator.cs index 9bd2d0ac..39729d05 100644 --- a/src/NuGetLicense/LicenseValidator/LicenseValidator.cs +++ b/src/NuGetLicense/LicenseValidator/LicenseValidator.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using System.Collections.Concurrent; @@ -16,6 +16,7 @@ namespace NuGetLicense.LicenseValidator { public class LicenseValidator { + private static readonly SemaphoreSlim s_spdxParserSemaphore = new SemaphoreSlim(1, 1); private readonly IEnumerable _allowedLicenses; private readonly IFileDownloader _fileDownloader; private readonly IFileLicenseMatcher _fileLicenseMatcher; @@ -141,7 +142,7 @@ private async Task ValidateLicenseByMetadataAsync(IPackageMetadata info, case LicenseType.Overwrite: { string licenseId = info.LicenseMetadata!.License; - SpdxExpression? licenseExpression = SpdxExpressionParser.Parse(licenseId, _ => true, _ => true); + SpdxExpression? licenseExpression = await ParseSpdxExpressionAsync(licenseId, token); if (IsValidLicenseExpression(licenseExpression)) { await DownloadLicenseAsync(GetLicenseUrl(licenseId), info.Identity, context, token); @@ -174,7 +175,7 @@ private async Task ValidateLicenseByMetadataAsync(IPackageMetadata info, break; } - SpdxExpression? licenseExpression = SpdxExpressionParser.Parse(matchedLicense, _ => true, _ => true); + SpdxExpression? licenseExpression = await ParseSpdxExpressionAsync(matchedLicense, token); if (IsValidLicenseExpression(licenseExpression)) { await StoreLicenseAsync(info.LicenseMetadata.License, info.Identity, token); @@ -226,7 +227,7 @@ private async Task ValidateLicenseByUrl(IPackageMetadata info, if (_licenseMapping.TryGetValue(info.LicenseUrl, out string? licenseId)) { - SpdxExpression? licenseExpression = SpdxExpressionParser.Parse(licenseId, _ => true, _ => true); + SpdxExpression? licenseExpression = await ParseSpdxExpressionAsync(licenseId, token); if (IsValidLicenseExpression(licenseExpression)) { @@ -326,6 +327,19 @@ private static Uri GetLicenseUrl(string spdxIdentifier) _ => throw new ArgumentOutOfRangeException(nameof(type), type, $"This conversion method only supports the {nameof(LicenseType.Overwrite)} and {nameof(LicenseType.Expression)} types for conversion") }; + private static async Task ParseSpdxExpressionAsync(string expression, CancellationToken token) + { + await s_spdxParserSemaphore.WaitAsync(token); + try + { + return SpdxExpressionParser.Parse(expression, _ => true, _ => true); + } + finally + { + s_spdxParserSemaphore.Release(); + } + } + private sealed record LicenseNameAndVersion(string LicenseName, INuGetVersion Version); } } diff --git a/src/NuGetLicense/LicenseValidator/UrlToLicenseMapping.cs b/src/NuGetLicense/LicenseValidator/UrlToLicenseMapping.cs index 3642c3fc..625766cc 100644 --- a/src/NuGetLicense/LicenseValidator/UrlToLicenseMapping.cs +++ b/src/NuGetLicense/LicenseValidator/UrlToLicenseMapping.cs @@ -1,5 +1,6 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root + using System.Collections.Immutable; using System.Diagnostics.CodeAnalysis; diff --git a/src/NuGetLicense/LicenseValidator/ValidationError.cs b/src/NuGetLicense/LicenseValidator/ValidationError.cs index 42b54091..b1718bb3 100644 --- a/src/NuGetLicense/LicenseValidator/ValidationError.cs +++ b/src/NuGetLicense/LicenseValidator/ValidationError.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root namespace NuGetLicense.LicenseValidator diff --git a/src/NuGetLicense/Output/Csv/CsvOutputFormatter.cs b/src/NuGetLicense/Output/Csv/CsvOutputFormatter.cs index b4545ce6..e49960ae 100644 --- a/src/NuGetLicense/Output/Csv/CsvOutputFormatter.cs +++ b/src/NuGetLicense/Output/Csv/CsvOutputFormatter.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using System.Text; diff --git a/src/NuGetLicense/Output/IOutputFormatter.cs b/src/NuGetLicense/Output/IOutputFormatter.cs index b16e48b1..39f013e5 100644 --- a/src/NuGetLicense/Output/IOutputFormatter.cs +++ b/src/NuGetLicense/Output/IOutputFormatter.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root diff --git a/src/NuGetLicense/Output/Json/JsonOutputFormatter.cs b/src/NuGetLicense/Output/Json/JsonOutputFormatter.cs index 80b5383e..a2112698 100644 --- a/src/NuGetLicense/Output/Json/JsonOutputFormatter.cs +++ b/src/NuGetLicense/Output/Json/JsonOutputFormatter.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using System.Text.Json; diff --git a/src/NuGetLicense/Output/Table/TableOutputFormatter.cs b/src/NuGetLicense/Output/Table/TableOutputFormatter.cs index a0aa6fe2..68ed8d83 100644 --- a/src/NuGetLicense/Output/Table/TableOutputFormatter.cs +++ b/src/NuGetLicense/Output/Table/TableOutputFormatter.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using NuGetLicense.LicenseValidator; diff --git a/src/NuGetLicense/Program.cs b/src/NuGetLicense/Program.cs index 16b27bc4..8e64b0aa 100644 --- a/src/NuGetLicense/Program.cs +++ b/src/NuGetLicense/Program.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using System.Reflection; diff --git a/src/NuGetLicense/Serialization/ValidatedLicenseJsonConverterWithOmittingEmptyErrorList.cs b/src/NuGetLicense/Serialization/ValidatedLicenseJsonConverterWithOmittingEmptyErrorList.cs index e46cb0ac..6df4355f 100644 --- a/src/NuGetLicense/Serialization/ValidatedLicenseJsonConverterWithOmittingEmptyErrorList.cs +++ b/src/NuGetLicense/Serialization/ValidatedLicenseJsonConverterWithOmittingEmptyErrorList.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using System.Text.Json; diff --git a/src/NuGetLicenseCore/Program.cs b/src/NuGetLicenseCore/Program.cs index 612f230a..bf28627b 100644 --- a/src/NuGetLicenseCore/Program.cs +++ b/src/NuGetLicenseCore/Program.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using McMaster.Extensions.CommandLineUtils; diff --git a/src/NuGetLicenseFramework/Program.cs b/src/NuGetLicenseFramework/Program.cs index a8b8f99a..23f55189 100644 --- a/src/NuGetLicenseFramework/Program.cs +++ b/src/NuGetLicenseFramework/Program.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using McMaster.Extensions.CommandLineUtils; diff --git a/src/NuGetUtility/AppLifetime.cs b/src/NuGetUtility/AppLifetime.cs index 6d4cb4fc..17ddad87 100644 --- a/src/NuGetUtility/AppLifetime.cs +++ b/src/NuGetUtility/AppLifetime.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root namespace NuGetUtility diff --git a/src/NuGetUtility/Extensions/AsyncEnumerableExtension.cs b/src/NuGetUtility/Extensions/AsyncEnumerableExtension.cs index 6d9f190b..adb2d6f2 100644 --- a/src/NuGetUtility/Extensions/AsyncEnumerableExtension.cs +++ b/src/NuGetUtility/Extensions/AsyncEnumerableExtension.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root namespace NuGetUtility.Extensions diff --git a/src/NuGetUtility/Extensions/HashSetExtension.cs b/src/NuGetUtility/Extensions/HashSetExtension.cs index 3e9b9512..e29e5955 100644 --- a/src/NuGetUtility/Extensions/HashSetExtension.cs +++ b/src/NuGetUtility/Extensions/HashSetExtension.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root namespace NuGetUtility.Extensions diff --git a/src/NuGetUtility/Extensions/ProjectExtensions.cs b/src/NuGetUtility/Extensions/ProjectExtensions.cs index 6904e70c..2fc8f2d3 100644 --- a/src/NuGetUtility/Extensions/ProjectExtensions.cs +++ b/src/NuGetUtility/Extensions/ProjectExtensions.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using NuGetUtility.Wrapper.MsBuildWrapper; diff --git a/src/NuGetUtility/Extensions/StringExtensions.cs b/src/NuGetUtility/Extensions/StringExtensions.cs index ea34deeb..c068bbdc 100644 --- a/src/NuGetUtility/Extensions/StringExtensions.cs +++ b/src/NuGetUtility/Extensions/StringExtensions.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using System.Text.RegularExpressions; diff --git a/src/NuGetUtility/Extensions/TaskExtensions.cs b/src/NuGetUtility/Extensions/TaskExtensions.cs index d1f899ea..f46af4c8 100644 --- a/src/NuGetUtility/Extensions/TaskExtensions.cs +++ b/src/NuGetUtility/Extensions/TaskExtensions.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root namespace NuGetUtility.Extensions diff --git a/src/NuGetUtility/Output/Table/TablePrinter.cs b/src/NuGetUtility/Output/Table/TablePrinter.cs index ca8461ca..4739c2f2 100644 --- a/src/NuGetUtility/Output/Table/TablePrinter.cs +++ b/src/NuGetUtility/Output/Table/TablePrinter.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using System.Text; diff --git a/src/NuGetUtility/Output/Table/TablePrinterExtensions.cs b/src/NuGetUtility/Output/Table/TablePrinterExtensions.cs index 7652dfaa..9a14fb46 100644 --- a/src/NuGetUtility/Output/Table/TablePrinterExtensions.cs +++ b/src/NuGetUtility/Output/Table/TablePrinterExtensions.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root namespace NuGetUtility.Output.Table diff --git a/src/NuGetUtility/OutputType.cs b/src/NuGetUtility/OutputType.cs index cd960215..e1a60d76 100644 --- a/src/NuGetUtility/OutputType.cs +++ b/src/NuGetUtility/OutputType.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root namespace NuGetUtility diff --git a/src/NuGetUtility/PackageInformationReader/CustomPackageInformation.cs b/src/NuGetUtility/PackageInformationReader/CustomPackageInformation.cs index ce8ed9d3..0ff6d0b3 100644 --- a/src/NuGetUtility/PackageInformationReader/CustomPackageInformation.cs +++ b/src/NuGetUtility/PackageInformationReader/CustomPackageInformation.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using NuGetUtility.Wrapper.NuGetWrapper.Versioning; diff --git a/src/NuGetUtility/PackageInformationReader/PackageInformationReader.cs b/src/NuGetUtility/PackageInformationReader/PackageInformationReader.cs index 201cc62c..16fbbd24 100644 --- a/src/NuGetUtility/PackageInformationReader/PackageInformationReader.cs +++ b/src/NuGetUtility/PackageInformationReader/PackageInformationReader.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using System.Runtime.CompilerServices; diff --git a/src/NuGetUtility/PackageInformationReader/PackageMetadata.cs b/src/NuGetUtility/PackageInformationReader/PackageMetadata.cs index 28090cd0..559afd1a 100644 --- a/src/NuGetUtility/PackageInformationReader/PackageMetadata.cs +++ b/src/NuGetUtility/PackageInformationReader/PackageMetadata.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using NuGetUtility.Wrapper.NuGetWrapper.Packaging; diff --git a/src/NuGetUtility/PackageInformationReader/ProjectWithReferencedPackages.cs b/src/NuGetUtility/PackageInformationReader/ProjectWithReferencedPackages.cs index 716e4f02..56bdfae7 100644 --- a/src/NuGetUtility/PackageInformationReader/ProjectWithReferencedPackages.cs +++ b/src/NuGetUtility/PackageInformationReader/ProjectWithReferencedPackages.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using NuGetUtility.Wrapper.NuGetWrapper.Packaging.Core; diff --git a/src/NuGetUtility/PackageInformationReader/ReferencedPackageWithContext.cs b/src/NuGetUtility/PackageInformationReader/ReferencedPackageWithContext.cs index c095e6a9..258660c5 100644 --- a/src/NuGetUtility/PackageInformationReader/ReferencedPackageWithContext.cs +++ b/src/NuGetUtility/PackageInformationReader/ReferencedPackageWithContext.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using NuGetUtility.Wrapper.NuGetWrapper.Packaging; diff --git a/src/NuGetUtility/ProjectFiltering/ProjectFilter.cs b/src/NuGetUtility/ProjectFiltering/ProjectFilter.cs index 76b4347e..17b5d3ce 100644 --- a/src/NuGetUtility/ProjectFiltering/ProjectFilter.cs +++ b/src/NuGetUtility/ProjectFiltering/ProjectFilter.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root namespace NuGetUtility.ProjectFiltering diff --git a/src/NuGetUtility/ReferencedPackagesReader/ProjectsCollector.cs b/src/NuGetUtility/ReferencedPackagesReader/ProjectsCollector.cs index b7d39537..f1c00a41 100644 --- a/src/NuGetUtility/ReferencedPackagesReader/ProjectsCollector.cs +++ b/src/NuGetUtility/ReferencedPackagesReader/ProjectsCollector.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using System.IO.Abstractions; diff --git a/src/NuGetUtility/ReferencedPackagesReader/ReferencedPackageReader.cs b/src/NuGetUtility/ReferencedPackagesReader/ReferencedPackageReader.cs index a1973bfe..483b3354 100644 --- a/src/NuGetUtility/ReferencedPackagesReader/ReferencedPackageReader.cs +++ b/src/NuGetUtility/ReferencedPackagesReader/ReferencedPackageReader.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using System.Diagnostics.CodeAnalysis; diff --git a/src/NuGetUtility/ReferencedPackagesReader/ReferencedPackageReaderException.cs b/src/NuGetUtility/ReferencedPackagesReader/ReferencedPackageReaderException.cs index a1805dfc..6e51b045 100644 --- a/src/NuGetUtility/ReferencedPackagesReader/ReferencedPackageReaderException.cs +++ b/src/NuGetUtility/ReferencedPackagesReader/ReferencedPackageReaderException.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root namespace NuGetUtility.ReferencedPackagesReader diff --git a/src/NuGetUtility/Serialization/NuGetVersionJsonConverter.cs b/src/NuGetUtility/Serialization/NuGetVersionJsonConverter.cs index 7c5fe8cd..62b1191c 100644 --- a/src/NuGetUtility/Serialization/NuGetVersionJsonConverter.cs +++ b/src/NuGetUtility/Serialization/NuGetVersionJsonConverter.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using System.Text.Json; diff --git a/src/NuGetUtility/Serialization/UriDictionaryJsonConverter.cs b/src/NuGetUtility/Serialization/UriDictionaryJsonConverter.cs index 0f861702..8fdd2a21 100644 --- a/src/NuGetUtility/Serialization/UriDictionaryJsonConverter.cs +++ b/src/NuGetUtility/Serialization/UriDictionaryJsonConverter.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using System.Text.Json; diff --git a/src/NuGetUtility/Wrapper/HttpClientWrapper/DownloadFailedException.cs b/src/NuGetUtility/Wrapper/HttpClientWrapper/DownloadFailedException.cs index 784bd114..73f8eccb 100644 --- a/src/NuGetUtility/Wrapper/HttpClientWrapper/DownloadFailedException.cs +++ b/src/NuGetUtility/Wrapper/HttpClientWrapper/DownloadFailedException.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root namespace NuGetUtility.Wrapper.HttpClientWrapper diff --git a/src/NuGetUtility/Wrapper/HttpClientWrapper/FileDownloader.cs b/src/NuGetUtility/Wrapper/HttpClientWrapper/FileDownloader.cs index 6c178271..f96d6343 100644 --- a/src/NuGetUtility/Wrapper/HttpClientWrapper/FileDownloader.cs +++ b/src/NuGetUtility/Wrapper/HttpClientWrapper/FileDownloader.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using System.Collections.Concurrent; diff --git a/src/NuGetUtility/Wrapper/HttpClientWrapper/IFileDownloader.cs b/src/NuGetUtility/Wrapper/HttpClientWrapper/IFileDownloader.cs index 031f57fb..881696d7 100644 --- a/src/NuGetUtility/Wrapper/HttpClientWrapper/IFileDownloader.cs +++ b/src/NuGetUtility/Wrapper/HttpClientWrapper/IFileDownloader.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root namespace NuGetUtility.Wrapper.HttpClientWrapper diff --git a/src/NuGetUtility/Wrapper/HttpClientWrapper/NopFileDownloader.cs b/src/NuGetUtility/Wrapper/HttpClientWrapper/NopFileDownloader.cs index 739dd9c6..86e6e4e1 100644 --- a/src/NuGetUtility/Wrapper/HttpClientWrapper/NopFileDownloader.cs +++ b/src/NuGetUtility/Wrapper/HttpClientWrapper/NopFileDownloader.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root namespace NuGetUtility.Wrapper.HttpClientWrapper diff --git a/src/NuGetUtility/Wrapper/MsBuildWrapper/IMsBuildAbstraction.cs b/src/NuGetUtility/Wrapper/MsBuildWrapper/IMsBuildAbstraction.cs index dea21a9e..3fae4933 100644 --- a/src/NuGetUtility/Wrapper/MsBuildWrapper/IMsBuildAbstraction.cs +++ b/src/NuGetUtility/Wrapper/MsBuildWrapper/IMsBuildAbstraction.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root namespace NuGetUtility.Wrapper.MsBuildWrapper diff --git a/src/NuGetUtility/Wrapper/MsBuildWrapper/IProject.cs b/src/NuGetUtility/Wrapper/MsBuildWrapper/IProject.cs index 56d2eee3..60fa422d 100644 --- a/src/NuGetUtility/Wrapper/MsBuildWrapper/IProject.cs +++ b/src/NuGetUtility/Wrapper/MsBuildWrapper/IProject.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using System.Diagnostics.CodeAnalysis; diff --git a/src/NuGetUtility/Wrapper/MsBuildWrapper/MsBuildAbstraction.cs b/src/NuGetUtility/Wrapper/MsBuildWrapper/MsBuildAbstraction.cs index 318613b4..83c5078e 100644 --- a/src/NuGetUtility/Wrapper/MsBuildWrapper/MsBuildAbstraction.cs +++ b/src/NuGetUtility/Wrapper/MsBuildWrapper/MsBuildAbstraction.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using Microsoft.Build.Evaluation; diff --git a/src/NuGetUtility/Wrapper/MsBuildWrapper/MsBuildAbstractionException.cs b/src/NuGetUtility/Wrapper/MsBuildWrapper/MsBuildAbstractionException.cs index 54dee559..2031a42a 100644 --- a/src/NuGetUtility/Wrapper/MsBuildWrapper/MsBuildAbstractionException.cs +++ b/src/NuGetUtility/Wrapper/MsBuildWrapper/MsBuildAbstractionException.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root namespace NuGetUtility.Wrapper.MsBuildWrapper diff --git a/src/NuGetUtility/Wrapper/MsBuildWrapper/PackageReference.cs b/src/NuGetUtility/Wrapper/MsBuildWrapper/PackageReference.cs index 68919d3e..79e7381d 100644 --- a/src/NuGetUtility/Wrapper/MsBuildWrapper/PackageReference.cs +++ b/src/NuGetUtility/Wrapper/MsBuildWrapper/PackageReference.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using NuGetUtility.Wrapper.NuGetWrapper.Versioning; diff --git a/src/NuGetUtility/Wrapper/MsBuildWrapper/PackageReferenceMetadata.cs b/src/NuGetUtility/Wrapper/MsBuildWrapper/PackageReferenceMetadata.cs index 801d4733..d7cafeaf 100644 --- a/src/NuGetUtility/Wrapper/MsBuildWrapper/PackageReferenceMetadata.cs +++ b/src/NuGetUtility/Wrapper/MsBuildWrapper/PackageReferenceMetadata.cs @@ -1,8 +1,6 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root -using System.Collections.Generic; - namespace NuGetUtility.Wrapper.MsBuildWrapper { public record PackageReferenceMetadata(string PackageName, IReadOnlyDictionary Metadata); diff --git a/src/NuGetUtility/Wrapper/MsBuildWrapper/ProjectWrapper.cs b/src/NuGetUtility/Wrapper/MsBuildWrapper/ProjectWrapper.cs index 61a13868..0c894b57 100644 --- a/src/NuGetUtility/Wrapper/MsBuildWrapper/ProjectWrapper.cs +++ b/src/NuGetUtility/Wrapper/MsBuildWrapper/ProjectWrapper.cs @@ -1,9 +1,7 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root -using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; -using System.Linq; using Microsoft.Build.Evaluation; namespace NuGetUtility.Wrapper.MsBuildWrapper diff --git a/src/NuGetUtility/Wrapper/NuGetWrapper/Frameworks/INuGetFramework.cs b/src/NuGetUtility/Wrapper/NuGetWrapper/Frameworks/INuGetFramework.cs index 9e2a5f7b..d4e5eb53 100644 --- a/src/NuGetUtility/Wrapper/NuGetWrapper/Frameworks/INuGetFramework.cs +++ b/src/NuGetUtility/Wrapper/NuGetWrapper/Frameworks/INuGetFramework.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root namespace NuGetUtility.Wrapper.NuGetWrapper.Frameworks diff --git a/src/NuGetUtility/Wrapper/NuGetWrapper/Frameworks/INuGetFrameworkUtility.cs b/src/NuGetUtility/Wrapper/NuGetWrapper/Frameworks/INuGetFrameworkUtility.cs index 7b623b14..7c6c8fc6 100644 --- a/src/NuGetUtility/Wrapper/NuGetWrapper/Frameworks/INuGetFrameworkUtility.cs +++ b/src/NuGetUtility/Wrapper/NuGetWrapper/Frameworks/INuGetFrameworkUtility.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root namespace NuGetUtility.Wrapper.NuGetWrapper.Frameworks diff --git a/src/NuGetUtility/Wrapper/NuGetWrapper/Frameworks/NuGetFrameworkUtility.cs b/src/NuGetUtility/Wrapper/NuGetWrapper/Frameworks/NuGetFrameworkUtility.cs index 186fd179..caab2aad 100644 --- a/src/NuGetUtility/Wrapper/NuGetWrapper/Frameworks/NuGetFrameworkUtility.cs +++ b/src/NuGetUtility/Wrapper/NuGetWrapper/Frameworks/NuGetFrameworkUtility.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using NuGet.Frameworks; diff --git a/src/NuGetUtility/Wrapper/NuGetWrapper/Frameworks/WrappedNuGetFramework.cs b/src/NuGetUtility/Wrapper/NuGetWrapper/Frameworks/WrappedNuGetFramework.cs index be4f5872..4e857266 100644 --- a/src/NuGetUtility/Wrapper/NuGetWrapper/Frameworks/WrappedNuGetFramework.cs +++ b/src/NuGetUtility/Wrapper/NuGetWrapper/Frameworks/WrappedNuGetFramework.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using NuGet.Frameworks; diff --git a/src/NuGetUtility/Wrapper/NuGetWrapper/NugetWrapperException.cs b/src/NuGetUtility/Wrapper/NuGetWrapper/NugetWrapperException.cs index f83d6f30..936a9b7b 100644 --- a/src/NuGetUtility/Wrapper/NuGetWrapper/NugetWrapperException.cs +++ b/src/NuGetUtility/Wrapper/NuGetWrapper/NugetWrapperException.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root namespace NuGetUtility.Wrapper.NuGetWrapper diff --git a/src/NuGetUtility/Wrapper/NuGetWrapper/Packaging/Core/FailingPackagesConfigReader.cs b/src/NuGetUtility/Wrapper/NuGetWrapper/Packaging/Core/FailingPackagesConfigReader.cs index 101cfa0f..e193ba7e 100644 --- a/src/NuGetUtility/Wrapper/NuGetWrapper/Packaging/Core/FailingPackagesConfigReader.cs +++ b/src/NuGetUtility/Wrapper/NuGetWrapper/Packaging/Core/FailingPackagesConfigReader.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using NuGetUtility.Wrapper.MsBuildWrapper; diff --git a/src/NuGetUtility/Wrapper/NuGetWrapper/Packaging/Core/IPackageDependency.cs b/src/NuGetUtility/Wrapper/NuGetWrapper/Packaging/Core/IPackageDependency.cs index 9c02aaa1..29171418 100644 --- a/src/NuGetUtility/Wrapper/NuGetWrapper/Packaging/Core/IPackageDependency.cs +++ b/src/NuGetUtility/Wrapper/NuGetWrapper/Packaging/Core/IPackageDependency.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root namespace NuGetUtility.Wrapper.NuGetWrapper.Packaging.Core diff --git a/src/NuGetUtility/Wrapper/NuGetWrapper/Packaging/Core/IPackagesConfigReader.cs b/src/NuGetUtility/Wrapper/NuGetWrapper/Packaging/Core/IPackagesConfigReader.cs index 4477c548..b00afc48 100644 --- a/src/NuGetUtility/Wrapper/NuGetWrapper/Packaging/Core/IPackagesConfigReader.cs +++ b/src/NuGetUtility/Wrapper/NuGetWrapper/Packaging/Core/IPackagesConfigReader.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using NuGetUtility.Wrapper.MsBuildWrapper; diff --git a/src/NuGetUtility/Wrapper/NuGetWrapper/Packaging/Core/PackageIdentity.cs b/src/NuGetUtility/Wrapper/NuGetWrapper/Packaging/Core/PackageIdentity.cs index ff068d5a..dca872a1 100644 --- a/src/NuGetUtility/Wrapper/NuGetWrapper/Packaging/Core/PackageIdentity.cs +++ b/src/NuGetUtility/Wrapper/NuGetWrapper/Packaging/Core/PackageIdentity.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using NuGetUtility.Wrapper.NuGetWrapper.Versioning; diff --git a/src/NuGetUtility/Wrapper/NuGetWrapper/Packaging/Core/PackagesConfigReaderException.cs b/src/NuGetUtility/Wrapper/NuGetWrapper/Packaging/Core/PackagesConfigReaderException.cs index e160ef7f..97ffaedb 100644 --- a/src/NuGetUtility/Wrapper/NuGetWrapper/Packaging/Core/PackagesConfigReaderException.cs +++ b/src/NuGetUtility/Wrapper/NuGetWrapper/Packaging/Core/PackagesConfigReaderException.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root namespace NuGetUtility.Wrapper.NuGetWrapper.Packaging.Core diff --git a/src/NuGetUtility/Wrapper/NuGetWrapper/Packaging/Core/WindowsPackagesConfigReader.cs b/src/NuGetUtility/Wrapper/NuGetWrapper/Packaging/Core/WindowsPackagesConfigReader.cs index 0d73a6ed..2b3f9743 100644 --- a/src/NuGetUtility/Wrapper/NuGetWrapper/Packaging/Core/WindowsPackagesConfigReader.cs +++ b/src/NuGetUtility/Wrapper/NuGetWrapper/Packaging/Core/WindowsPackagesConfigReader.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using System.Xml.Linq; diff --git a/src/NuGetUtility/Wrapper/NuGetWrapper/Packaging/Core/WrappedPackageDependency.cs b/src/NuGetUtility/Wrapper/NuGetWrapper/Packaging/Core/WrappedPackageDependency.cs index a67c4b73..5cf43076 100644 --- a/src/NuGetUtility/Wrapper/NuGetWrapper/Packaging/Core/WrappedPackageDependency.cs +++ b/src/NuGetUtility/Wrapper/NuGetWrapper/Packaging/Core/WrappedPackageDependency.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using NuGet.Packaging.Core; diff --git a/src/NuGetUtility/Wrapper/NuGetWrapper/Packaging/IPackageMetadata.cs b/src/NuGetUtility/Wrapper/NuGetWrapper/Packaging/IPackageMetadata.cs index 0a251d64..95523ea3 100644 --- a/src/NuGetUtility/Wrapper/NuGetWrapper/Packaging/IPackageMetadata.cs +++ b/src/NuGetUtility/Wrapper/NuGetWrapper/Packaging/IPackageMetadata.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using NuGetUtility.Wrapper.NuGetWrapper.Packaging.Core; diff --git a/src/NuGetUtility/Wrapper/NuGetWrapper/Packaging/LicenseMetadata.cs b/src/NuGetUtility/Wrapper/NuGetWrapper/Packaging/LicenseMetadata.cs index 15ca2fa4..6e71c9cc 100644 --- a/src/NuGetUtility/Wrapper/NuGetWrapper/Packaging/LicenseMetadata.cs +++ b/src/NuGetUtility/Wrapper/NuGetWrapper/Packaging/LicenseMetadata.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using System.ComponentModel; diff --git a/src/NuGetUtility/Wrapper/NuGetWrapper/Packaging/LicenseType.cs b/src/NuGetUtility/Wrapper/NuGetWrapper/Packaging/LicenseType.cs index 773c7bb5..d805695b 100644 --- a/src/NuGetUtility/Wrapper/NuGetWrapper/Packaging/LicenseType.cs +++ b/src/NuGetUtility/Wrapper/NuGetWrapper/Packaging/LicenseType.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root namespace NuGetUtility.Wrapper.NuGetWrapper.Packaging diff --git a/src/NuGetUtility/Wrapper/NuGetWrapper/ProjectModel/AssetsPackageDependencyReader.cs b/src/NuGetUtility/Wrapper/NuGetWrapper/ProjectModel/AssetsPackageDependencyReader.cs index 648aafd1..ac752ea6 100644 --- a/src/NuGetUtility/Wrapper/NuGetWrapper/ProjectModel/AssetsPackageDependencyReader.cs +++ b/src/NuGetUtility/Wrapper/NuGetWrapper/ProjectModel/AssetsPackageDependencyReader.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using System.Diagnostics; diff --git a/src/NuGetUtility/Wrapper/NuGetWrapper/ProjectModel/IAssetsPackageDependencyReader.cs b/src/NuGetUtility/Wrapper/NuGetWrapper/ProjectModel/IAssetsPackageDependencyReader.cs index 3a3c6825..2f3dba93 100644 --- a/src/NuGetUtility/Wrapper/NuGetWrapper/ProjectModel/IAssetsPackageDependencyReader.cs +++ b/src/NuGetUtility/Wrapper/NuGetWrapper/ProjectModel/IAssetsPackageDependencyReader.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root namespace NuGetUtility.Wrapper.NuGetWrapper.ProjectModel diff --git a/src/NuGetUtility/Wrapper/NuGetWrapper/ProjectModel/ILibraryDependency.cs b/src/NuGetUtility/Wrapper/NuGetWrapper/ProjectModel/ILibraryDependency.cs index 95b9daf8..ca2e0a9c 100644 --- a/src/NuGetUtility/Wrapper/NuGetWrapper/ProjectModel/ILibraryDependency.cs +++ b/src/NuGetUtility/Wrapper/NuGetWrapper/ProjectModel/ILibraryDependency.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root namespace NuGetUtility.Wrapper.NuGetWrapper.ProjectModel diff --git a/src/NuGetUtility/Wrapper/NuGetWrapper/ProjectModel/ILockFile.cs b/src/NuGetUtility/Wrapper/NuGetWrapper/ProjectModel/ILockFile.cs index 18a03797..8328703c 100644 --- a/src/NuGetUtility/Wrapper/NuGetWrapper/ProjectModel/ILockFile.cs +++ b/src/NuGetUtility/Wrapper/NuGetWrapper/ProjectModel/ILockFile.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root namespace NuGetUtility.Wrapper.NuGetWrapper.ProjectModel diff --git a/src/NuGetUtility/Wrapper/NuGetWrapper/ProjectModel/ILockFileFactory.cs b/src/NuGetUtility/Wrapper/NuGetWrapper/ProjectModel/ILockFileFactory.cs index 3a488df3..a3b488ed 100644 --- a/src/NuGetUtility/Wrapper/NuGetWrapper/ProjectModel/ILockFileFactory.cs +++ b/src/NuGetUtility/Wrapper/NuGetWrapper/ProjectModel/ILockFileFactory.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root namespace NuGetUtility.Wrapper.NuGetWrapper.ProjectModel diff --git a/src/NuGetUtility/Wrapper/NuGetWrapper/ProjectModel/ILockFileLibrary.cs b/src/NuGetUtility/Wrapper/NuGetWrapper/ProjectModel/ILockFileLibrary.cs index b54eaace..70dc301b 100644 --- a/src/NuGetUtility/Wrapper/NuGetWrapper/ProjectModel/ILockFileLibrary.cs +++ b/src/NuGetUtility/Wrapper/NuGetWrapper/ProjectModel/ILockFileLibrary.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using NuGetUtility.Wrapper.NuGetWrapper.Versioning; diff --git a/src/NuGetUtility/Wrapper/NuGetWrapper/ProjectModel/ILockFileTarget.cs b/src/NuGetUtility/Wrapper/NuGetWrapper/ProjectModel/ILockFileTarget.cs index 0c162678..d37518b6 100644 --- a/src/NuGetUtility/Wrapper/NuGetWrapper/ProjectModel/ILockFileTarget.cs +++ b/src/NuGetUtility/Wrapper/NuGetWrapper/ProjectModel/ILockFileTarget.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using NuGetUtility.Wrapper.NuGetWrapper.Frameworks; diff --git a/src/NuGetUtility/Wrapper/NuGetWrapper/ProjectModel/ILockFileTargetLibrary.cs b/src/NuGetUtility/Wrapper/NuGetWrapper/ProjectModel/ILockFileTargetLibrary.cs index 76c1f016..e7633a03 100644 --- a/src/NuGetUtility/Wrapper/NuGetWrapper/ProjectModel/ILockFileTargetLibrary.cs +++ b/src/NuGetUtility/Wrapper/NuGetWrapper/ProjectModel/ILockFileTargetLibrary.cs @@ -1,8 +1,7 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using NuGetUtility.Wrapper.NuGetWrapper.Packaging.Core; -using NuGetUtility.Wrapper.NuGetWrapper.Versioning; namespace NuGetUtility.Wrapper.NuGetWrapper.ProjectModel { diff --git a/src/NuGetUtility/Wrapper/NuGetWrapper/ProjectModel/IPackageSpec.cs b/src/NuGetUtility/Wrapper/NuGetWrapper/ProjectModel/IPackageSpec.cs index 9767157f..50c5b2f7 100644 --- a/src/NuGetUtility/Wrapper/NuGetWrapper/ProjectModel/IPackageSpec.cs +++ b/src/NuGetUtility/Wrapper/NuGetWrapper/ProjectModel/IPackageSpec.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root namespace NuGetUtility.Wrapper.NuGetWrapper.ProjectModel diff --git a/src/NuGetUtility/Wrapper/NuGetWrapper/ProjectModel/ITargetFrameworkInformation.cs b/src/NuGetUtility/Wrapper/NuGetWrapper/ProjectModel/ITargetFrameworkInformation.cs index 2d633dcf..7aff7e7c 100644 --- a/src/NuGetUtility/Wrapper/NuGetWrapper/ProjectModel/ITargetFrameworkInformation.cs +++ b/src/NuGetUtility/Wrapper/NuGetWrapper/ProjectModel/ITargetFrameworkInformation.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using NuGetUtility.Wrapper.NuGetWrapper.Frameworks; diff --git a/src/NuGetUtility/Wrapper/NuGetWrapper/ProjectModel/LockFileFactory.cs b/src/NuGetUtility/Wrapper/NuGetWrapper/ProjectModel/LockFileFactory.cs index b3296a1c..73a737ce 100644 --- a/src/NuGetUtility/Wrapper/NuGetWrapper/ProjectModel/LockFileFactory.cs +++ b/src/NuGetUtility/Wrapper/NuGetWrapper/ProjectModel/LockFileFactory.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using NuGet.ProjectModel; diff --git a/src/NuGetUtility/Wrapper/NuGetWrapper/ProjectModel/WrappedLibraryDependency.cs b/src/NuGetUtility/Wrapper/NuGetWrapper/ProjectModel/WrappedLibraryDependency.cs index d397246e..2cd2253f 100644 --- a/src/NuGetUtility/Wrapper/NuGetWrapper/ProjectModel/WrappedLibraryDependency.cs +++ b/src/NuGetUtility/Wrapper/NuGetWrapper/ProjectModel/WrappedLibraryDependency.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using NuGet.LibraryModel; diff --git a/src/NuGetUtility/Wrapper/NuGetWrapper/ProjectModel/WrappedLockFile.cs b/src/NuGetUtility/Wrapper/NuGetWrapper/ProjectModel/WrappedLockFile.cs index 6e70795c..9ef104a1 100644 --- a/src/NuGetUtility/Wrapper/NuGetWrapper/ProjectModel/WrappedLockFile.cs +++ b/src/NuGetUtility/Wrapper/NuGetWrapper/ProjectModel/WrappedLockFile.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using NuGet.ProjectModel; diff --git a/src/NuGetUtility/Wrapper/NuGetWrapper/ProjectModel/WrappedLockFileLibrary.cs b/src/NuGetUtility/Wrapper/NuGetWrapper/ProjectModel/WrappedLockFileLibrary.cs index f16c25b6..7cd0e3d8 100644 --- a/src/NuGetUtility/Wrapper/NuGetWrapper/ProjectModel/WrappedLockFileLibrary.cs +++ b/src/NuGetUtility/Wrapper/NuGetWrapper/ProjectModel/WrappedLockFileLibrary.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using NuGet.ProjectModel; diff --git a/src/NuGetUtility/Wrapper/NuGetWrapper/ProjectModel/WrappedLockFileTarget.cs b/src/NuGetUtility/Wrapper/NuGetWrapper/ProjectModel/WrappedLockFileTarget.cs index b42def18..2ffecad3 100644 --- a/src/NuGetUtility/Wrapper/NuGetWrapper/ProjectModel/WrappedLockFileTarget.cs +++ b/src/NuGetUtility/Wrapper/NuGetWrapper/ProjectModel/WrappedLockFileTarget.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using NuGet.ProjectModel; diff --git a/src/NuGetUtility/Wrapper/NuGetWrapper/ProjectModel/WrappedLockFileTargetLibrary.cs b/src/NuGetUtility/Wrapper/NuGetWrapper/ProjectModel/WrappedLockFileTargetLibrary.cs index a1043364..10296e3b 100644 --- a/src/NuGetUtility/Wrapper/NuGetWrapper/ProjectModel/WrappedLockFileTargetLibrary.cs +++ b/src/NuGetUtility/Wrapper/NuGetWrapper/ProjectModel/WrappedLockFileTargetLibrary.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using NuGet.ProjectModel; diff --git a/src/NuGetUtility/Wrapper/NuGetWrapper/ProjectModel/WrappedPackageSpec.cs b/src/NuGetUtility/Wrapper/NuGetWrapper/ProjectModel/WrappedPackageSpec.cs index 6b31dd74..b7591aae 100644 --- a/src/NuGetUtility/Wrapper/NuGetWrapper/ProjectModel/WrappedPackageSpec.cs +++ b/src/NuGetUtility/Wrapper/NuGetWrapper/ProjectModel/WrappedPackageSpec.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using NuGet.ProjectModel; diff --git a/src/NuGetUtility/Wrapper/NuGetWrapper/ProjectModel/WrappedTargetFrameworkInformation.cs b/src/NuGetUtility/Wrapper/NuGetWrapper/ProjectModel/WrappedTargetFrameworkInformation.cs index 8946016e..31a33823 100644 --- a/src/NuGetUtility/Wrapper/NuGetWrapper/ProjectModel/WrappedTargetFrameworkInformation.cs +++ b/src/NuGetUtility/Wrapper/NuGetWrapper/ProjectModel/WrappedTargetFrameworkInformation.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using NuGet.ProjectModel; diff --git a/src/NuGetUtility/Wrapper/NuGetWrapper/Protocol/Core/Types/CachingDisposableSourceRepository.cs b/src/NuGetUtility/Wrapper/NuGetWrapper/Protocol/Core/Types/CachingDisposableSourceRepository.cs index d5d41944..47a4c307 100644 --- a/src/NuGetUtility/Wrapper/NuGetWrapper/Protocol/Core/Types/CachingDisposableSourceRepository.cs +++ b/src/NuGetUtility/Wrapper/NuGetWrapper/Protocol/Core/Types/CachingDisposableSourceRepository.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using NuGet.Protocol.Core.Types; diff --git a/src/NuGetUtility/Wrapper/NuGetWrapper/Protocol/Core/Types/CachingFindPackageByIdResource.cs b/src/NuGetUtility/Wrapper/NuGetWrapper/Protocol/Core/Types/CachingFindPackageByIdResource.cs index 318db8bf..87e416a6 100644 --- a/src/NuGetUtility/Wrapper/NuGetWrapper/Protocol/Core/Types/CachingFindPackageByIdResource.cs +++ b/src/NuGetUtility/Wrapper/NuGetWrapper/Protocol/Core/Types/CachingFindPackageByIdResource.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using NuGet.Common; diff --git a/src/NuGetUtility/Wrapper/NuGetWrapper/Protocol/Core/Types/CachingPackageMetadataResource.cs b/src/NuGetUtility/Wrapper/NuGetWrapper/Protocol/Core/Types/CachingPackageMetadataResource.cs index e80e45c5..8fab3a7a 100644 --- a/src/NuGetUtility/Wrapper/NuGetWrapper/Protocol/Core/Types/CachingPackageMetadataResource.cs +++ b/src/NuGetUtility/Wrapper/NuGetWrapper/Protocol/Core/Types/CachingPackageMetadataResource.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using NuGet.Common; diff --git a/src/NuGetUtility/Wrapper/NuGetWrapper/Protocol/Core/Types/IDisposableSourceRepository.cs b/src/NuGetUtility/Wrapper/NuGetWrapper/Protocol/Core/Types/IDisposableSourceRepository.cs index 739b2dc8..48779ef7 100644 --- a/src/NuGetUtility/Wrapper/NuGetWrapper/Protocol/Core/Types/IDisposableSourceRepository.cs +++ b/src/NuGetUtility/Wrapper/NuGetWrapper/Protocol/Core/Types/IDisposableSourceRepository.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root namespace NuGetUtility.Wrapper.NuGetWrapper.Protocol.Core.Types diff --git a/src/NuGetUtility/Wrapper/NuGetWrapper/Protocol/Core/Types/IFindPackageByIdResource.cs b/src/NuGetUtility/Wrapper/NuGetWrapper/Protocol/Core/Types/IFindPackageByIdResource.cs index 0993a33e..eb2b09ac 100644 --- a/src/NuGetUtility/Wrapper/NuGetWrapper/Protocol/Core/Types/IFindPackageByIdResource.cs +++ b/src/NuGetUtility/Wrapper/NuGetWrapper/Protocol/Core/Types/IFindPackageByIdResource.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using NuGetUtility.Wrapper.NuGetWrapper.Packaging.Core; diff --git a/src/NuGetUtility/Wrapper/NuGetWrapper/Protocol/Core/Types/IPackageDownloader.cs b/src/NuGetUtility/Wrapper/NuGetWrapper/Protocol/Core/Types/IPackageDownloader.cs index 8f3730b2..f181edf4 100644 --- a/src/NuGetUtility/Wrapper/NuGetWrapper/Protocol/Core/Types/IPackageDownloader.cs +++ b/src/NuGetUtility/Wrapper/NuGetWrapper/Protocol/Core/Types/IPackageDownloader.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root namespace NuGetUtility.Wrapper.NuGetWrapper.Protocol.Core.Types diff --git a/src/NuGetUtility/Wrapper/NuGetWrapper/Protocol/Core/Types/IPackageMetadataResource.cs b/src/NuGetUtility/Wrapper/NuGetWrapper/Protocol/Core/Types/IPackageMetadataResource.cs index 7120c16f..038f40d2 100644 --- a/src/NuGetUtility/Wrapper/NuGetWrapper/Protocol/Core/Types/IPackageMetadataResource.cs +++ b/src/NuGetUtility/Wrapper/NuGetWrapper/Protocol/Core/Types/IPackageMetadataResource.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using NuGetUtility.Wrapper.NuGetWrapper.Packaging; diff --git a/src/NuGetUtility/Wrapper/NuGetWrapper/Protocol/Core/Types/ISourceRepository.cs b/src/NuGetUtility/Wrapper/NuGetWrapper/Protocol/Core/Types/ISourceRepository.cs index 8dcdaab5..690feb0a 100644 --- a/src/NuGetUtility/Wrapper/NuGetWrapper/Protocol/Core/Types/ISourceRepository.cs +++ b/src/NuGetUtility/Wrapper/NuGetWrapper/Protocol/Core/Types/ISourceRepository.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root namespace NuGetUtility.Wrapper.NuGetWrapper.Protocol.Core.Types diff --git a/src/NuGetUtility/Wrapper/NuGetWrapper/Protocol/Core/Types/IWrappedSourceRepositoryProvider.cs b/src/NuGetUtility/Wrapper/NuGetWrapper/Protocol/Core/Types/IWrappedSourceRepositoryProvider.cs index 9298dad8..8ad63f6c 100644 --- a/src/NuGetUtility/Wrapper/NuGetWrapper/Protocol/Core/Types/IWrappedSourceRepositoryProvider.cs +++ b/src/NuGetUtility/Wrapper/NuGetWrapper/Protocol/Core/Types/IWrappedSourceRepositoryProvider.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root namespace NuGetUtility.Wrapper.NuGetWrapper.Protocol.Core.Types diff --git a/src/NuGetUtility/Wrapper/NuGetWrapper/Protocol/Core/Types/WrappedPackageDownloader.cs b/src/NuGetUtility/Wrapper/NuGetWrapper/Protocol/Core/Types/WrappedPackageDownloader.cs index 216435cd..ee44a325 100644 --- a/src/NuGetUtility/Wrapper/NuGetWrapper/Protocol/Core/Types/WrappedPackageDownloader.cs +++ b/src/NuGetUtility/Wrapper/NuGetWrapper/Protocol/Core/Types/WrappedPackageDownloader.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root namespace NuGetUtility.Wrapper.NuGetWrapper.Protocol.Core.Types diff --git a/src/NuGetUtility/Wrapper/NuGetWrapper/Protocol/Core/Types/WrappedSourceRepositoryProvider.cs b/src/NuGetUtility/Wrapper/NuGetWrapper/Protocol/Core/Types/WrappedSourceRepositoryProvider.cs index 28f1cd95..9e7200bc 100644 --- a/src/NuGetUtility/Wrapper/NuGetWrapper/Protocol/Core/Types/WrappedSourceRepositoryProvider.cs +++ b/src/NuGetUtility/Wrapper/NuGetWrapper/Protocol/Core/Types/WrappedSourceRepositoryProvider.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using NuGet.Protocol.Core.Types; diff --git a/src/NuGetUtility/Wrapper/NuGetWrapper/Protocol/GlobalPackagesFolderUtility.cs b/src/NuGetUtility/Wrapper/NuGetWrapper/Protocol/GlobalPackagesFolderUtility.cs index f2d4a267..c593b23a 100644 --- a/src/NuGetUtility/Wrapper/NuGetWrapper/Protocol/GlobalPackagesFolderUtility.cs +++ b/src/NuGetUtility/Wrapper/NuGetWrapper/Protocol/GlobalPackagesFolderUtility.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using NuGet.Configuration; diff --git a/src/NuGetUtility/Wrapper/NuGetWrapper/Protocol/IGlobalPackagesFolderUtility.cs b/src/NuGetUtility/Wrapper/NuGetWrapper/Protocol/IGlobalPackagesFolderUtility.cs index 99601d6e..12c8751e 100644 --- a/src/NuGetUtility/Wrapper/NuGetWrapper/Protocol/IGlobalPackagesFolderUtility.cs +++ b/src/NuGetUtility/Wrapper/NuGetWrapper/Protocol/IGlobalPackagesFolderUtility.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using NuGetUtility.Wrapper.NuGetWrapper.Packaging; diff --git a/src/NuGetUtility/Wrapper/NuGetWrapper/Protocol/LicenseAugmentedPackageMetadata.cs b/src/NuGetUtility/Wrapper/NuGetWrapper/Protocol/LicenseAugmentedPackageMetadata.cs index e77eb948..e21dd1cd 100644 --- a/src/NuGetUtility/Wrapper/NuGetWrapper/Protocol/LicenseAugmentedPackageMetadata.cs +++ b/src/NuGetUtility/Wrapper/NuGetWrapper/Protocol/LicenseAugmentedPackageMetadata.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using NuGetUtility.Wrapper.NuGetWrapper.Packaging.Core; diff --git a/src/NuGetUtility/Wrapper/NuGetWrapper/Protocol/WrappedPackageMetadata.cs b/src/NuGetUtility/Wrapper/NuGetWrapper/Protocol/WrappedPackageMetadata.cs index eabd69c0..e7b2660c 100644 --- a/src/NuGetUtility/Wrapper/NuGetWrapper/Protocol/WrappedPackageMetadata.cs +++ b/src/NuGetUtility/Wrapper/NuGetWrapper/Protocol/WrappedPackageMetadata.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using NuGet.Packaging; diff --git a/src/NuGetUtility/Wrapper/NuGetWrapper/Versioning/INuGetVersion.cs b/src/NuGetUtility/Wrapper/NuGetWrapper/Versioning/INuGetVersion.cs index 9ef64c4e..03e2db84 100644 --- a/src/NuGetUtility/Wrapper/NuGetWrapper/Versioning/INuGetVersion.cs +++ b/src/NuGetUtility/Wrapper/NuGetWrapper/Versioning/INuGetVersion.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root namespace NuGetUtility.Wrapper.NuGetWrapper.Versioning diff --git a/src/NuGetUtility/Wrapper/NuGetWrapper/Versioning/WrappedNuGetVersion.cs b/src/NuGetUtility/Wrapper/NuGetWrapper/Versioning/WrappedNuGetVersion.cs index aaa572c9..9d2d89f9 100644 --- a/src/NuGetUtility/Wrapper/NuGetWrapper/Versioning/WrappedNuGetVersion.cs +++ b/src/NuGetUtility/Wrapper/NuGetWrapper/Versioning/WrappedNuGetVersion.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using NuGet.Versioning; diff --git a/src/NuGetUtility/Wrapper/SolutionPersistenceWrapper/ISolutionPersistanceWrapper.cs b/src/NuGetUtility/Wrapper/SolutionPersistenceWrapper/ISolutionPersistanceWrapper.cs index b8ea1512..26c88fb8 100644 --- a/src/NuGetUtility/Wrapper/SolutionPersistenceWrapper/ISolutionPersistanceWrapper.cs +++ b/src/NuGetUtility/Wrapper/SolutionPersistenceWrapper/ISolutionPersistanceWrapper.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root namespace NuGetUtility.Wrapper.SolutionPersistenceWrapper diff --git a/src/NuGetUtility/Wrapper/SolutionPersistenceWrapper/SolutionPersistanceException.cs b/src/NuGetUtility/Wrapper/SolutionPersistenceWrapper/SolutionPersistanceException.cs index 429d6632..54a0352b 100644 --- a/src/NuGetUtility/Wrapper/SolutionPersistenceWrapper/SolutionPersistanceException.cs +++ b/src/NuGetUtility/Wrapper/SolutionPersistenceWrapper/SolutionPersistanceException.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root namespace NuGetUtility.Wrapper.SolutionPersistenceWrapper diff --git a/src/NuGetUtility/Wrapper/SolutionPersistenceWrapper/SolutionPersistanceWrapper.cs b/src/NuGetUtility/Wrapper/SolutionPersistenceWrapper/SolutionPersistanceWrapper.cs index 11cc8802..b9483060 100644 --- a/src/NuGetUtility/Wrapper/SolutionPersistenceWrapper/SolutionPersistanceWrapper.cs +++ b/src/NuGetUtility/Wrapper/SolutionPersistenceWrapper/SolutionPersistanceWrapper.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using Microsoft.VisualStudio.SolutionPersistence; diff --git a/tests/FileLicenseMatcher.Test/Combine/LicenseMatcherTest.cs b/tests/FileLicenseMatcher.Test/Combine/LicenseMatcherTest.cs index 5f5fc918..90d1d2ad 100644 --- a/tests/FileLicenseMatcher.Test/Combine/LicenseMatcherTest.cs +++ b/tests/FileLicenseMatcher.Test/Combine/LicenseMatcherTest.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using FileLicenseMatcher.Combine; diff --git a/tests/FileLicenseMatcher.Test/Compare/LicenseMatcherTest.cs b/tests/FileLicenseMatcher.Test/Compare/LicenseMatcherTest.cs index 35764625..9e0946c1 100644 --- a/tests/FileLicenseMatcher.Test/Compare/LicenseMatcherTest.cs +++ b/tests/FileLicenseMatcher.Test/Compare/LicenseMatcherTest.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using System.IO.Abstractions; diff --git a/tests/FileLicenseMatcher.Test/FileLicenseMatcher.Test.csproj b/tests/FileLicenseMatcher.Test/FileLicenseMatcher.Test.csproj index 3b4e4746..2d227374 100644 --- a/tests/FileLicenseMatcher.Test/FileLicenseMatcher.Test.csproj +++ b/tests/FileLicenseMatcher.Test/FileLicenseMatcher.Test.csproj @@ -14,14 +14,14 @@ - + - + all runtime; build; native; contentfiles; analyzers; buildtransitive - + diff --git a/tests/FileLicenseMatcher.Test/SPDX/LicenseMatcherTest.cs b/tests/FileLicenseMatcher.Test/SPDX/LicenseMatcherTest.cs index f8e66a5f..840decff 100644 --- a/tests/FileLicenseMatcher.Test/SPDX/LicenseMatcherTest.cs +++ b/tests/FileLicenseMatcher.Test/SPDX/LicenseMatcherTest.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using FileLicenseMatcher.SPDX; diff --git a/tests/NuGetLicense.Test/CommandLineOptionsParserTest.cs b/tests/NuGetLicense.Test/CommandLineOptionsParserTest.cs index a295e4e2..3de5bedb 100644 --- a/tests/NuGetLicense.Test/CommandLineOptionsParserTest.cs +++ b/tests/NuGetLicense.Test/CommandLineOptionsParserTest.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using System.Collections.Immutable; @@ -16,16 +16,14 @@ namespace NuGetLicense.Test { - [TestFixture] - internal class CommandLineOptionsParserTest + public class CommandLineOptionsParserTest { - private MockFileSystem _fileSystem = null!; - private MockHttpMessageHandler _mockHttp = null!; - private HttpClient _httpClient = null!; - private CommandLineOptionsParser _parser = null!; + private readonly MockFileSystem _fileSystem; + private readonly MockHttpMessageHandler _mockHttp; + private readonly HttpClient _httpClient; + private readonly CommandLineOptionsParser _parser; - [SetUp] - public void SetUp() + protected CommandLineOptionsParserTest() { _fileSystem = new MockFileSystem(); _mockHttp = new MockHttpMessageHandler(); @@ -33,18 +31,17 @@ public void SetUp() _parser = new CommandLineOptionsParser(_fileSystem, _httpClient); } - [TearDown] + [After(HookType.Test)] public void TearDown() { - _httpClient?.Dispose(); - _mockHttp?.Dispose(); + _httpClient.Dispose(); + _mockHttp.Dispose(); } - [TestFixture] - internal class GetInputFilesTests : CommandLineOptionsParserTest + public class GetInputFilesTests : CommandLineOptionsParserTest { [Test] - public void GetInputFiles_WithInputFile_ReturnsFileInArray() + public async Task GetInputFiles_WithInputFile_ReturnsFileInArray() { // Arrange string inputFile = "/test/project.csproj"; @@ -53,12 +50,12 @@ public void GetInputFiles_WithInputFile_ReturnsFileInArray() string[] result = _parser.GetInputFiles(inputFile, null); // Assert - Assert.That(result, Has.Length.EqualTo(1)); - Assert.That(result[0], Is.EqualTo(inputFile)); + await Assert.That(result).HasAtLeast(1); + await Assert.That(result[0]).IsEqualTo(inputFile); } [Test] - public void GetInputFiles_WithInputJsonFile_ReadsAndDeserializesFile() + public async Task GetInputFiles_WithInputJsonFile_ReadsAndDeserializesFile() { // Arrange string jsonFile = "/test/input.json"; @@ -69,20 +66,20 @@ public void GetInputFiles_WithInputJsonFile_ReadsAndDeserializesFile() string[] result = _parser.GetInputFiles(null, jsonFile); // Assert - Assert.That(result, Is.EqualTo(expectedFiles)); + await Assert.That(result).IsEquivalentTo(expectedFiles); } [Test] - public void GetInputFiles_WithNeitherOption_ThrowsArgumentException() + public async Task GetInputFiles_WithNeitherOption_ThrowsArgumentException() { // Act & Assert - ArgumentException? ex = Assert.Throws(() => - _parser.GetInputFiles(null, null)); - Assert.That(ex!.Message, Does.Contain("Please provide an input file using --input or --json-input")); + ArgumentException? ex = await Assert.That(() => + _parser.GetInputFiles(null, null)).Throws(); + await Assert.That(ex!.Message).Contains("Please provide an input file using --input or --json-input"); } [Test] - public void GetInputFiles_WithBothOptions_PrefersInputFile() + public async Task GetInputFiles_WithBothOptions_PrefersInputFile() { // Arrange string inputFile = "/test/project.csproj"; @@ -93,26 +90,25 @@ public void GetInputFiles_WithBothOptions_PrefersInputFile() string[] result = _parser.GetInputFiles(inputFile, jsonFile); // Assert - Assert.That(result, Has.Length.EqualTo(1)); - Assert.That(result[0], Is.EqualTo(inputFile)); + await Assert.That(result).Count().IsEqualTo(1); + await Assert.That(result[0]).IsEqualTo(inputFile); } } - [TestFixture] - internal class GetAllowedLicensesTests : CommandLineOptionsParserTest + public class GetAllowedLicensesTests : CommandLineOptionsParserTest { [Test] - public void GetAllowedLicenses_WithNull_ReturnsEmptyArray() + public async Task GetAllowedLicenses_WithNull_ReturnsEmptyArray() { // Act string[] result = _parser.GetAllowedLicenses(null); // Assert - Assert.That(result, Is.Empty); + await Assert.That(result).IsEmpty(); } [Test] - public void GetAllowedLicenses_WithInlineList_ReturnsParsedArray() + public async Task GetAllowedLicenses_WithInlineList_ReturnsParsedArray() { // Arrange string allowedLicenses = "MIT;Apache-2.0;BSD-3-Clause"; @@ -121,11 +117,11 @@ public void GetAllowedLicenses_WithInlineList_ReturnsParsedArray() string[] result = _parser.GetAllowedLicenses(allowedLicenses); // Assert - Assert.That(result, Is.EqualTo(["MIT", "Apache-2.0", "BSD-3-Clause"])); + await Assert.That(result).IsEquivalentTo(["MIT", "Apache-2.0", "BSD-3-Clause"]); } [Test] - public void GetAllowedLicenses_WithFile_ReadsAndDeserializesFile() + public async Task GetAllowedLicenses_WithFile_ReadsAndDeserializesFile() { // Arrange string licenseFile = "/test/allowed.json"; @@ -136,11 +132,11 @@ public void GetAllowedLicenses_WithFile_ReadsAndDeserializesFile() string[] result = _parser.GetAllowedLicenses(licenseFile); // Assert - Assert.That(result, Is.EqualTo(expectedLicenses)); + await Assert.That(result).IsEquivalentTo(expectedLicenses); } [Test] - public void GetAllowedLicenses_WithWhitespace_TrimsValues() + public async Task GetAllowedLicenses_WithWhitespace_TrimsValues() { // Arrange string allowedLicenses = " MIT ; Apache-2.0 ; BSD-3-Clause "; @@ -149,38 +145,37 @@ public void GetAllowedLicenses_WithWhitespace_TrimsValues() string[] result = _parser.GetAllowedLicenses(allowedLicenses); // Assert - Assert.That(result, Is.EqualTo(["MIT", "Apache-2.0", "BSD-3-Clause"])); + await Assert.That(result).IsEquivalentTo(["MIT", "Apache-2.0", "BSD-3-Clause"]); } [Test] - public void GetAllowedLicenses_WithInvalidJsonFile_ThrowsArgumentException() + public async Task GetAllowedLicenses_WithInvalidJsonFile_ThrowsArgumentException() { // Arrange string licenseFile = "/test/allowed.json"; _fileSystem.AddFile(licenseFile, new MockFileData("invalid json")); // Act & Assert - ArgumentException? ex = Assert.Throws(() => - _parser.GetAllowedLicenses(licenseFile)); - Assert.That(ex!.Message, Does.Contain("Failed to parse JSON file")); + ArgumentException? ex = await Assert.That(() => + _parser.GetAllowedLicenses(licenseFile)).Throws(); + await Assert.That(ex!.Message).Contains("Failed to parse JSON file"); } } - [TestFixture] - internal class GetIgnoredPackagesTests : CommandLineOptionsParserTest + public class GetIgnoredPackagesTests : CommandLineOptionsParserTest { [Test] - public void GetIgnoredPackages_WithNull_ReturnsEmptyArray() + public async Task GetIgnoredPackages_WithNull_ReturnsEmptyArray() { // Act string[] result = _parser.GetIgnoredPackages(null); // Assert - Assert.That(result, Is.Empty); + await Assert.That(result).IsEmpty(); } [Test] - public void GetIgnoredPackages_WithInlineList_ReturnsParsedArray() + public async Task GetIgnoredPackages_WithInlineList_ReturnsParsedArray() { // Arrange string ignoredPackages = "Package1;Package2;Package3"; @@ -189,11 +184,11 @@ public void GetIgnoredPackages_WithInlineList_ReturnsParsedArray() string[] result = _parser.GetIgnoredPackages(ignoredPackages); // Assert - Assert.That(result, Is.EqualTo(["Package1", "Package2", "Package3"])); + await Assert.That(result).IsEquivalentTo(["Package1", "Package2", "Package3"]); } [Test] - public void GetIgnoredPackages_WithFile_ReadsAndDeserializesFile() + public async Task GetIgnoredPackages_WithFile_ReadsAndDeserializesFile() { // Arrange string packageFile = "/test/ignored.json"; @@ -204,25 +199,24 @@ public void GetIgnoredPackages_WithFile_ReadsAndDeserializesFile() string[] result = _parser.GetIgnoredPackages(packageFile); // Assert - Assert.That(result, Is.EqualTo(expectedPackages)); + await Assert.That(result).IsEquivalentTo(expectedPackages); } } - [TestFixture] - internal class GetExcludedProjectsTests : CommandLineOptionsParserTest + public class GetExcludedProjectsTests : CommandLineOptionsParserTest { [Test] - public void GetExcludedProjects_WithNull_ReturnsEmptyArray() + public async Task GetExcludedProjects_WithNull_ReturnsEmptyArray() { // Act string[] result = _parser.GetExcludedProjects(null); // Assert - Assert.That(result, Is.Empty); + await Assert.That(result).IsEmpty(); } [Test] - public void GetExcludedProjects_WithInlineList_ReturnsParsedArray() + public async Task GetExcludedProjects_WithInlineList_ReturnsParsedArray() { // Arrange string excludedProjects = "*Test*;*.Test;Legacy*"; @@ -231,11 +225,11 @@ public void GetExcludedProjects_WithInlineList_ReturnsParsedArray() string[] result = _parser.GetExcludedProjects(excludedProjects); // Assert - Assert.That(result, Is.EqualTo(["*Test*", "*.Test", "Legacy*"])); + await Assert.That(result).IsEquivalentTo(["*Test*", "*.Test", "Legacy*"]); } [Test] - public void GetExcludedProjects_WithFile_ReadsAndDeserializesFile() + public async Task GetExcludedProjects_WithFile_ReadsAndDeserializesFile() { // Arrange string projectFile = "/test/excluded.json"; @@ -246,26 +240,25 @@ public void GetExcludedProjects_WithFile_ReadsAndDeserializesFile() string[] result = _parser.GetExcludedProjects(projectFile); // Assert - Assert.That(result, Is.EqualTo(expectedProjects)); + await Assert.That(result).IsEquivalentTo(expectedProjects); } } - [TestFixture] - internal class GetLicenseMappingsTests : CommandLineOptionsParserTest + public class GetLicenseMappingsTests : CommandLineOptionsParserTest { [Test] - public void GetLicenseMappings_WithNull_ReturnsDefaultMapping() + public async Task GetLicenseMappings_WithNull_ReturnsDefaultMapping() { // Act IImmutableDictionary result = _parser.GetLicenseMappings(null); // Assert - Assert.That(result, Is.Not.Null); - Assert.That(result.Count, Is.GreaterThan(0)); // Should contain default mappings + await Assert.That(result).IsNotNull(); + await Assert.That(result.Count).IsGreaterThan(0); // Should contain default mappings } [Test] - public void GetLicenseMappings_WithFile_MergesWithDefaultMappings() + public async Task GetLicenseMappings_WithFile_MergesWithDefaultMappings() { // Arrange string mappingFile = "/test/mappings.json"; @@ -277,26 +270,25 @@ public void GetLicenseMappings_WithFile_MergesWithDefaultMappings() IImmutableDictionary result = _parser.GetLicenseMappings(mappingFile); // Assert - Assert.That(result.ContainsKey(customUrl), Is.True); - Assert.That(result[customUrl], Is.EqualTo(customLicense)); + await Assert.That(result.ContainsKey(customUrl)).IsTrue(); + await Assert.That(result[customUrl]).IsEqualTo(customLicense); } } - [TestFixture] - internal class GetOverridePackageInformationTests : CommandLineOptionsParserTest + public class GetOverridePackageInformationTests : CommandLineOptionsParserTest { [Test] - public void GetOverridePackageInformation_WithNull_ReturnsEmptyArray() + public async Task GetOverridePackageInformation_WithNull_ReturnsEmptyArray() { // Act CustomPackageInformation[] result = _parser.GetOverridePackageInformation(null); // Assert - Assert.That(result, Is.Empty); + await Assert.That(result).IsEmpty(); } [Test] - public void GetOverridePackageInformation_WithFile_ReadsAndDeserializesFile() + public async Task GetOverridePackageInformation_WithFile_ReadsAndDeserializesFile() { // Arrange string overrideFile = "/test/override.json"; @@ -306,28 +298,27 @@ public void GetOverridePackageInformation_WithFile_ReadsAndDeserializesFile() CustomPackageInformation[] result = _parser.GetOverridePackageInformation(overrideFile); // Assert - Assert.That(result, Has.Length.EqualTo(1)); - Assert.That(result[0].Id, Is.EqualTo("TestPackage")); - Assert.That(result[0].License, Is.EqualTo("MIT")); + await Assert.That(result).Count().IsEqualTo(1); + await Assert.That(result[0].Id).IsEqualTo("TestPackage"); + await Assert.That(result[0].License).IsEqualTo("MIT"); } } - [TestFixture] - internal class GetLicenseMatcherTests : CommandLineOptionsParserTest + public class GetLicenseMatcherTests : CommandLineOptionsParserTest { [Test] - public void GetLicenseMatcher_WithNull_ReturnsSpdxMatcher() + public async Task GetLicenseMatcher_WithNull_ReturnsSpdxMatcher() { // Act IFileLicenseMatcher result = _parser.GetLicenseMatcher(null); // Assert - Assert.That(result, Is.Not.Null); - Assert.That(result, Is.InstanceOf()); + await Assert.That(result).IsNotNull(); + await Assert.That(result).IsTypeOf(); } [Test] - public void GetLicenseMatcher_WithFile_ReturnsCombinedMatcher() + public async Task GetLicenseMatcher_WithFile_ReturnsCombinedMatcher() { // Arrange string mappingFile = "/test/dir/license-mappings.json"; @@ -339,26 +330,25 @@ public void GetLicenseMatcher_WithFile_ReturnsCombinedMatcher() IFileLicenseMatcher result = _parser.GetLicenseMatcher(mappingFile); // Assert - Assert.That(result, Is.Not.Null); - Assert.That(result, Is.InstanceOf()); + await Assert.That(result).IsNotNull(); + await Assert.That(result).IsTypeOf(); } } - [TestFixture] - internal class GetFileDownloaderTests : CommandLineOptionsParserTest + public class GetFileDownloaderTests : CommandLineOptionsParserTest { [Test] - public void GetFileDownloader_WithNull_ReturnsNopDownloader() + public async Task GetFileDownloader_WithNull_ReturnsNopDownloader() { // Act IFileDownloader result = _parser.GetFileDownloader(null); // Assert - Assert.That(result, Is.InstanceOf()); + await Assert.That(result).IsTypeOf(); } [Test] - public void GetFileDownloader_WithDirectory_CreatesDirectoryAndReturnsFileDownloader() + public async Task GetFileDownloader_WithDirectory_CreatesDirectoryAndReturnsFileDownloader() { // Arrange string downloadDir = "/test/downloads"; @@ -367,12 +357,12 @@ public void GetFileDownloader_WithDirectory_CreatesDirectoryAndReturnsFileDownlo IFileDownloader result = _parser.GetFileDownloader(downloadDir); // Assert - Assert.That(result, Is.InstanceOf()); - Assert.That(_fileSystem.Directory.Exists(downloadDir), Is.True); + await Assert.That(result).IsTypeOf(); + await Assert.That(_fileSystem.Directory.Exists(downloadDir)).IsTrue(); } [Test] - public void GetFileDownloader_WithExistingDirectory_ReturnsFileDownloader() + public async Task GetFileDownloader_WithExistingDirectory_ReturnsFileDownloader() { // Arrange string downloadDir = "/test/downloads"; @@ -382,59 +372,58 @@ public void GetFileDownloader_WithExistingDirectory_ReturnsFileDownloader() IFileDownloader result = _parser.GetFileDownloader(downloadDir); // Assert - Assert.That(result, Is.InstanceOf()); + await Assert.That(result).IsTypeOf(); } } - [TestFixture] - internal class GetOutputFormatterTests : CommandLineOptionsParserTest + public class GetOutputFormatterTests : CommandLineOptionsParserTest { [Test] - public void GetOutputFormatter_WithTable_ReturnsTableFormatter() + public async Task GetOutputFormatter_WithTable_ReturnsTableFormatter() { // Act LicenseOutput.IOutputFormatter result = _parser.GetOutputFormatter(OutputType.Table, false, false); // Assert - Assert.That(result, Is.InstanceOf()); + await Assert.That(result).IsTypeOf(); } [Test] - public void GetOutputFormatter_WithMarkdown_ReturnsTableFormatter() + public async Task GetOutputFormatter_WithMarkdown_ReturnsTableFormatter() { // Act LicenseOutput.IOutputFormatter result = _parser.GetOutputFormatter(OutputType.Markdown, false, false); // Assert - Assert.That(result, Is.InstanceOf()); + await Assert.That(result).IsTypeOf(); } [Test] - public void GetOutputFormatter_WithJson_ReturnsJsonFormatter() + public async Task GetOutputFormatter_WithJson_ReturnsJsonFormatter() { // Act LicenseOutput.IOutputFormatter result = _parser.GetOutputFormatter(OutputType.Json, false, false); // Assert - Assert.That(result, Is.InstanceOf()); + await Assert.That(result).IsTypeOf(); } [Test] - public void GetOutputFormatter_WithJsonPretty_ReturnsJsonFormatter() + public async Task GetOutputFormatter_WithJsonPretty_ReturnsJsonFormatter() { // Act LicenseOutput.IOutputFormatter result = _parser.GetOutputFormatter(OutputType.JsonPretty, false, false); // Assert - Assert.That(result, Is.InstanceOf()); + await Assert.That(result).IsTypeOf(); } [Test] - public void GetOutputFormatter_WithInvalidType_ThrowsArgumentOutOfRangeException() + public async Task GetOutputFormatter_WithInvalidType_ThrowsArgumentOutOfRangeException() { // Act & Assert - Assert.Throws(() => - _parser.GetOutputFormatter((OutputType)999, false, false)); + await Assert.That(() => + _parser.GetOutputFormatter((OutputType)999, false, false)).Throws(); } } } diff --git a/tests/NuGetLicense.Test/LicenseValidationOrchestratorTest.cs b/tests/NuGetLicense.Test/LicenseValidationOrchestratorTest.cs index 41ac7338..ec626e80 100644 --- a/tests/NuGetLicense.Test/LicenseValidationOrchestratorTest.cs +++ b/tests/NuGetLicense.Test/LicenseValidationOrchestratorTest.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using System.Collections.Immutable; @@ -15,26 +15,22 @@ namespace NuGetLicense.Test { - [TestFixture] - internal class LicenseValidationOrchestratorTest + public class LicenseValidationOrchestratorTest { - private MockFileSystem _fileSystem = null!; - private ISolutionPersistanceWrapper _solutionPersistance = null!; - private IMsBuildAbstraction _msBuild = null!; - private IPackagesConfigReader _packagesConfigReader = null!; - private ICommandLineOptionsParser _optionsParser = null!; - private MemoryStream _outputStream = null!; - private MemoryStream _errorStream = null!; - private ICommandLineOptions _options = null!; - private LicenseValidationOrchestrator _orchestrator = null!; - - [SetUp] - public void SetUp() + private readonly MockFileSystem _fileSystem; + private readonly ISolutionPersistanceWrapper _solutionPersistance; + private readonly ICommandLineOptionsParser _optionsParser; + private readonly MemoryStream _outputStream; + private readonly MemoryStream _errorStream; + private readonly ICommandLineOptions _options; + private readonly LicenseValidationOrchestrator _orchestrator; + + public LicenseValidationOrchestratorTest() { _fileSystem = new MockFileSystem(); _solutionPersistance = Substitute.For(); - _msBuild = Substitute.For(); - _packagesConfigReader = Substitute.For(); + IMsBuildAbstraction msBuild = Substitute.For(); + IPackagesConfigReader packagesConfigReader = Substitute.For(); _optionsParser = Substitute.For(); _outputStream = new MemoryStream(); _errorStream = new MemoryStream(); @@ -45,18 +41,18 @@ public void SetUp() _orchestrator = new LicenseValidationOrchestrator( _fileSystem, _solutionPersistance, - _msBuild, - _packagesConfigReader, + msBuild, + packagesConfigReader, _optionsParser, _outputStream, _errorStream); } - [TearDown] + [After(HookType.Test)] public void TearDown() { - _outputStream?.Dispose(); - _errorStream?.Dispose(); + _outputStream.Dispose(); + _errorStream.Dispose(); } [Test] @@ -103,7 +99,7 @@ public async Task ValidateAsync_WithNoProjects_ReturnsZero() int result = await _orchestrator.ValidateAsync(_options); // Assert - Assert.That(result, Is.EqualTo(0)); + await Assert.That(result).IsEqualTo(0); } [Test] @@ -122,8 +118,8 @@ public async Task ValidateAsync_WithDestinationFile_WritesToFile() int result = await _orchestrator.ValidateAsync(_options); // Assert - Assert.That(result, Is.EqualTo(0)); - Assert.That(_fileSystem.File.Exists(destinationFile), Is.True); + await Assert.That(result).IsEqualTo(0); + await Assert.That(_fileSystem.File.Exists(destinationFile)).IsTrue(); } [Test] @@ -139,8 +135,8 @@ public async Task ValidateAsync_WithoutDestinationFile_WritesToOutputStream() int result = await _orchestrator.ValidateAsync(_options); // Assert - Assert.That(result, Is.EqualTo(0)); - Assert.That(_outputStream.Length, Is.GreaterThan(0)); + await Assert.That(result).IsEqualTo(0); + await Assert.That(_outputStream.Length).IsGreaterThan(0); } [Test] @@ -161,12 +157,12 @@ public async Task ValidateAsync_WithExceptionInOutputFormatter_ReturnsMinusOne() int result = await _orchestrator.ValidateAsync(_options); // Assert - Assert.That(result, Is.EqualTo(-1)); - Assert.That(_errorStream.Length, Is.GreaterThan(0)); + await Assert.That(result).IsEqualTo(-1); + await Assert.That(_errorStream.Length).IsGreaterThan(0); } [Test] - public void ValidateAsync_WithCancellationToken_CanBeCancelled() + public async Task ValidateAsync_WithCancellationToken_CanBeCancelled() { // Arrange _options.InputFile.Returns("/test/project.csproj"); @@ -175,9 +171,13 @@ public void ValidateAsync_WithCancellationToken_CanBeCancelled() _solutionPersistance.GetProjectsFromSolutionAsync(Arg.Any()).Returns(Task.FromResult>(Array.Empty())); using var cancellationTokenSource = new CancellationTokenSource(); +#if NETFRAMEWORK cancellationTokenSource.Cancel(); +#else + await cancellationTokenSource.CancelAsync(); +#endif - Assert.That(_orchestrator.ValidateAsync(_options, cancellationTokenSource.Token).Wait(2000), Is.True); + await Assert.That(_orchestrator.ValidateAsync(_options, cancellationTokenSource.Token).Wait(2000)).IsTrue(); } [Test] diff --git a/tests/NuGetLicense.Test/LicenseValidator/LicenseValidationResultValueEqualityComparer.cs b/tests/NuGetLicense.Test/LicenseValidator/LicenseValidationResultValueEqualityComparer.cs index 2faaeb16..ba7acdf3 100644 --- a/tests/NuGetLicense.Test/LicenseValidator/LicenseValidationResultValueEqualityComparer.cs +++ b/tests/NuGetLicense.Test/LicenseValidator/LicenseValidationResultValueEqualityComparer.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using NuGetLicense.LicenseValidator; @@ -26,14 +26,14 @@ public int GetHashCode(LicenseValidationResult obj) obj.PackageVersion, obj.PackageProjectUrl); } - private static HashCode GetHashCode(List validationErrors) + private static int GetHashCode(List validationErrors) { var code = new HashCode(); foreach (ValidationError error in validationErrors) { code.Add(error); } - return code; + return code.ToHashCode(); } } } diff --git a/tests/NuGetLicense.Test/LicenseValidator/LicenseValidatorTest.cs b/tests/NuGetLicense.Test/LicenseValidator/LicenseValidatorTest.cs index e2fe6484..d68887c8 100644 --- a/tests/NuGetLicense.Test/LicenseValidator/LicenseValidatorTest.cs +++ b/tests/NuGetLicense.Test/LicenseValidator/LicenseValidatorTest.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using System.Collections.Immutable; @@ -17,20 +17,19 @@ namespace NuGetLicense.Test.LicenseValidator { - [TestFixture] - internal class LicenseValidatorTest + public class LicenseValidatorTest { - [SetUp] - public void SetUp() + public LicenseValidatorTest() { - var fixture = new Fixture(); + _fixture = new Fixture(); + _fixture.Customizations.Add(new NuGetVersionBuilder()); _fileDownloader = Substitute.For(); _licenseMatcher = Substitute.For(); - _licenseMapping = ImmutableDictionary.CreateRange(fixture.Create>()); - _allowedLicenses = fixture.CreateMany(); - _context = fixture.Create(); - _projectUrl = fixture.Create(); - _ignoredLicenses = fixture.Create(); + _licenseMapping = ImmutableDictionary.CreateRange(_fixture.Create>()); + _allowedLicenses = _fixture.CreateMany(); + _context = _fixture.Create(); + _projectUrl = _fixture.Create(); + _ignoredLicenses = _fixture.Create(); _token = new CancellationTokenSource(); _uut = new NuGetLicense.LicenseValidator.LicenseValidator(_licenseMapping, @@ -40,28 +39,29 @@ public void SetUp() _ignoredLicenses); } - [TearDown] + [After(HookType.Test)] public void TearDown() { _token.Dispose(); } - private NuGetLicense.LicenseValidator.LicenseValidator _uut = null!; - private IImmutableDictionary _licenseMapping = null!; - private IEnumerable _allowedLicenses = null!; - private string _context = null!; - private IFileDownloader _fileDownloader = null!; - private Uri _projectUrl = null!; - private string[] _ignoredLicenses = null!; - private CancellationTokenSource _token = null!; - private IFileLicenseMatcher _licenseMatcher = null!; + private readonly NuGetLicense.LicenseValidator.LicenseValidator _uut; + private readonly IImmutableDictionary _licenseMapping; + private readonly IEnumerable _allowedLicenses; + private readonly string _context; + private readonly IFileDownloader _fileDownloader; + private readonly Uri _projectUrl; + private readonly string[] _ignoredLicenses; + private readonly CancellationTokenSource _token; + private readonly IFileLicenseMatcher _licenseMatcher; + private readonly IFixture _fixture; [Test] public async Task ValidatingEmptyList_Should_ReturnEmptyValidatedLicenses() { IAsyncEnumerable emptyListToValidate = Enumerable.Empty().AsAsyncEnumerable(); IEnumerable results = await _uut.Validate(emptyListToValidate, _token.Token); - Assert.That(results, Is.Empty); + await Assert.That(results).IsEmpty(); } private IPackageMetadata SetupPackage(string packageId, INuGetVersion packageVersion) @@ -119,23 +119,22 @@ private static IAsyncEnumerable CreateInput(IPacka } [Test] - [ExtendedAutoData(typeof(NuGetVersionBuilder))] - public async Task ValidatingLicenses_Should_IgnorePackage_If_PackageNameMatchesExactly( - string packageId, - INuGetVersion packageVersion) + public async Task ValidatingLicenses_Should_IgnorePackage_If_PackageNameMatchesExactly() { - _uut = new NuGetLicense.LicenseValidator.LicenseValidator(_licenseMapping, - Array.Empty(), + string packageId = _fixture.Create(); + INuGetVersion packageVersion = _fixture.Create(); + + var uut = new NuGetLicense.LicenseValidator.LicenseValidator(_licenseMapping, + [], _fileDownloader, _licenseMatcher, _ignoredLicenses.Append(packageId).ToArray()); IPackageMetadata package = SetupPackage(packageId, packageVersion); - IEnumerable result = await _uut.Validate(CreateInput(package, _context), _token.Token); + IEnumerable result = await uut.Validate(CreateInput(package, _context), _token.Token); - Assert.That(result, - Is.EquivalentTo( + await Assert.That(result).IsEquivalentTo( [ new LicenseValidationResult(packageId, packageVersion, @@ -147,29 +146,27 @@ public async Task ValidatingLicenses_Should_IgnorePackage_If_PackageNameMatchesE null, null, LicenseInformationOrigin.Ignored) - ]) - .Using(new LicenseValidationResultValueEqualityComparer())); + ]).Using(new LicenseValidationResultValueEqualityComparer()); } [Test] - [ExtendedAutoData(typeof(NuGetVersionBuilder))] - public async Task ValidatingLicenses_Should_NotIgnorePackage_If_PackageNameDoesNotMatchExactly( - string packageId, - INuGetVersion packageVersion, - string license) + public async Task ValidatingLicenses_Should_NotIgnorePackage_If_PackageNameDoesNotMatchExactly() { - _uut = new NuGetLicense.LicenseValidator.LicenseValidator(_licenseMapping, - Array.Empty(), + string packageId = _fixture.Create(); + INuGetVersion packageVersion = _fixture.Create(); + string license = _fixture.Create(); + + var uut = new NuGetLicense.LicenseValidator.LicenseValidator(_licenseMapping, + [], _fileDownloader, _licenseMatcher, _ignoredLicenses.Append(packageId.Substring(1)).ToArray()); IPackageMetadata package = SetupPackageWithExpressionLicenseInformation(packageId, packageVersion, license); - IEnumerable result = await _uut.Validate(CreateInput(package, _context), _token.Token); + IEnumerable result = await uut.Validate(CreateInput(package, _context), _token.Token); - Assert.That(result, - Is.EquivalentTo( + await Assert.That(result).IsEquivalentTo( [ new LicenseValidationResult(packageId, packageVersion, @@ -181,31 +178,30 @@ public async Task ValidatingLicenses_Should_NotIgnorePackage_If_PackageNameDoesN null, null, LicenseInformationOrigin.Expression) - ]) - .Using(new LicenseValidationResultValueEqualityComparer())); + ]).Using(new LicenseValidationResultValueEqualityComparer()); } [Test] - [ExtendedInlineAutoData(typeof(NuGetVersionBuilder), 1)] - [ExtendedInlineAutoData(typeof(NuGetVersionBuilder), 5)] - [ExtendedInlineAutoData(typeof(NuGetVersionBuilder), int.MaxValue)] + [Arguments(1)] + [Arguments(5)] + [Arguments(int.MaxValue)] public async Task ValidatingLicenses_Should_IgnorePackage_If_IgnoreWildcardMatches_If_WildcardMatchesStart( - int matchedCharacters, - string packageId, - INuGetVersion packageVersion) + int matchedCharacters) { - _uut = new NuGetLicense.LicenseValidator.LicenseValidator(_licenseMapping, - Array.Empty(), + string packageId = _fixture.Create(); + INuGetVersion packageVersion = _fixture.Create(); + + var uut = new NuGetLicense.LicenseValidator.LicenseValidator(_licenseMapping, + [], _fileDownloader, _licenseMatcher, _ignoredLicenses.Append($"*{packageId.Substring(Math.Min(matchedCharacters, packageId.Length))}").ToArray()); IPackageMetadata package = SetupPackage(packageId, packageVersion); - IEnumerable result = await _uut.Validate(CreateInput(package, _context), _token.Token); + IEnumerable result = await uut.Validate(CreateInput(package, _context), _token.Token); - Assert.That(result, - Is.EquivalentTo( + await Assert.That(result).IsEquivalentTo( [ new LicenseValidationResult(packageId, packageVersion, @@ -217,31 +213,30 @@ public async Task ValidatingLicenses_Should_IgnorePackage_If_IgnoreWildcardMatch null, null, LicenseInformationOrigin.Ignored) - ]) - .Using(new LicenseValidationResultValueEqualityComparer())); + ]).Using(new LicenseValidationResultValueEqualityComparer()); } [Test] - [ExtendedInlineAutoData(typeof(NuGetVersionBuilder), 0)] - [ExtendedInlineAutoData(typeof(NuGetVersionBuilder), 1)] - [ExtendedInlineAutoData(typeof(NuGetVersionBuilder), 5)] + [Arguments(0)] + [Arguments(1)] + [Arguments(5)] public async Task ValidatingLicenses_Should_IgnorePackage_If_IgnoreWildcardMatches_If_WildcardMatchesEnd( - int remainingCharacters, - string packageId, - INuGetVersion packageVersion) + int remainingCharacters) { - _uut = new NuGetLicense.LicenseValidator.LicenseValidator(_licenseMapping, - Array.Empty(), + string packageId = _fixture.Create(); + INuGetVersion packageVersion = _fixture.Create(); + + var uut = new NuGetLicense.LicenseValidator.LicenseValidator(_licenseMapping, + [], _fileDownloader, _licenseMatcher, _ignoredLicenses.Append($"{packageId.Substring(0, remainingCharacters)}*").ToArray()); IPackageMetadata package = SetupPackage(packageId, packageVersion); - IEnumerable result = await _uut.Validate(CreateInput(package, _context), _token.Token); + IEnumerable result = await uut.Validate(CreateInput(package, _context), _token.Token); - Assert.That(result, - Is.EquivalentTo( + await Assert.That(result).IsEquivalentTo( [ new LicenseValidationResult(packageId, packageVersion, @@ -253,32 +248,31 @@ public async Task ValidatingLicenses_Should_IgnorePackage_If_IgnoreWildcardMatch null, null, LicenseInformationOrigin.Ignored) - ]) - .Using(new LicenseValidationResultValueEqualityComparer())); + ]).Using(new LicenseValidationResultValueEqualityComparer()); } [Test] - [ExtendedInlineAutoData(typeof(NuGetVersionBuilder), 1, 2)] - [ExtendedInlineAutoData(typeof(NuGetVersionBuilder), 1, 5)] - [ExtendedInlineAutoData(typeof(NuGetVersionBuilder), 5, 10)] + [Arguments(1, 2)] + [Arguments(1, 5)] + [Arguments(5, 10)] public async Task ValidatingLicenses_Should_IgnorePackage_If_IgnoreWildcardMatches_If_WildcardMatchesMiddle( int wildcardMatchStartIndex, - int wildcardMatchEndIndex, - string packageId, - INuGetVersion packageVersion) + int wildcardMatchEndIndex) { - _uut = new NuGetLicense.LicenseValidator.LicenseValidator(_licenseMapping, - Array.Empty(), + string packageId = _fixture.Create(); + INuGetVersion packageVersion = _fixture.Create(); + + var uut = new NuGetLicense.LicenseValidator.LicenseValidator(_licenseMapping, + [], _fileDownloader, _licenseMatcher, _ignoredLicenses.Append($"{packageId.Substring(0, wildcardMatchStartIndex)}*{packageId.Substring(wildcardMatchEndIndex)}").ToArray()); IPackageMetadata package = SetupPackage(packageId, packageVersion); - IEnumerable result = await _uut.Validate(CreateInput(package, _context), _token.Token); + IEnumerable result = await uut.Validate(CreateInput(package, _context), _token.Token); - Assert.That(result, - Is.EquivalentTo( + await Assert.That(result).IsEquivalentTo( [ new LicenseValidationResult(packageId, packageVersion, @@ -290,28 +284,26 @@ public async Task ValidatingLicenses_Should_IgnorePackage_If_IgnoreWildcardMatch null, null, LicenseInformationOrigin.Ignored) - ]) - .Using(new LicenseValidationResultValueEqualityComparer())); + ]).Using(new LicenseValidationResultValueEqualityComparer()); } [Test] - [ExtendedAutoData(typeof(NuGetVersionBuilder))] - public async Task ValidatingLicenses_Should_IgnorePackage_If_IgnoreWildcardMatches_If_MultipleWildcards( - string packageId, - INuGetVersion packageVersion) + public async Task ValidatingLicenses_Should_IgnorePackage_If_IgnoreWildcardMatches_If_MultipleWildcards() { - _uut = new NuGetLicense.LicenseValidator.LicenseValidator(_licenseMapping, - Array.Empty(), + string packageId = _fixture.Create(); + INuGetVersion packageVersion = _fixture.Create(); + + var uut = new NuGetLicense.LicenseValidator.LicenseValidator(_licenseMapping, + [], _fileDownloader, _licenseMatcher, _ignoredLicenses.Append($"*{packageId.Substring(2, 5)}*{packageId.Substring(10, 2)}*").ToArray()); IPackageMetadata package = SetupPackage(packageId, packageVersion); - IEnumerable result = await _uut.Validate(CreateInput(package, _context), _token.Token); + IEnumerable result = await uut.Validate(CreateInput(package, _context), _token.Token); - Assert.That(result, - Is.EquivalentTo( + await Assert.That(result).IsEquivalentTo( [ new LicenseValidationResult(packageId, packageVersion, @@ -323,29 +315,27 @@ public async Task ValidatingLicenses_Should_IgnorePackage_If_IgnoreWildcardMatch null, null, LicenseInformationOrigin.Ignored) - ]) - .Using(new LicenseValidationResultValueEqualityComparer())); + ]).Using(new LicenseValidationResultValueEqualityComparer()); } [Test] - [ExtendedAutoData(typeof(NuGetVersionBuilder))] - public async Task ValidatingLicensesWithExpressionLicenseInformation_Should_GiveCorrectValidatedLicenseList( - string packageId, - INuGetVersion packageVersion, - string license) + public async Task ValidatingLicensesWithExpressionLicenseInformation_Should_GiveCorrectValidatedLicenseList() { - _uut = new NuGetLicense.LicenseValidator.LicenseValidator(_licenseMapping, - Array.Empty(), + string packageId = _fixture.Create(); + INuGetVersion packageVersion = _fixture.Create(); + string license = _fixture.Create(); + + var uut = new NuGetLicense.LicenseValidator.LicenseValidator(_licenseMapping, + [], _fileDownloader, _licenseMatcher, _ignoredLicenses); IPackageMetadata package = SetupPackageWithExpressionLicenseInformation(packageId, packageVersion, license); - IEnumerable result = await _uut.Validate(CreateInput(package, _context), _token.Token); + IEnumerable result = await uut.Validate(CreateInput(package, _context), _token.Token); - Assert.That(result, - Is.EquivalentTo( + await Assert.That(result).IsEquivalentTo( [ new LicenseValidationResult(packageId, packageVersion, @@ -357,20 +347,18 @@ public async Task ValidatingLicensesWithExpressionLicenseInformation_Should_Give null, null, LicenseInformationOrigin.Expression) - ]) - .Using(new LicenseValidationResultValueEqualityComparer())); + ]).Using(new LicenseValidationResultValueEqualityComparer()); } [Test] - [ExtendedAutoData(typeof(NuGetVersionBuilder))] - public async Task ValidatingLicensesWithExpressionLicenseInformation_Should_GiveCorrectValidatedLicenseList_When_Or_Expression( - string packageId, - INuGetVersion packageVersion, - string license1, - string license2) + public async Task ValidatingLicensesWithExpressionLicenseInformation_Should_GiveCorrectValidatedLicenseList_When_Or_Expression() { - _uut = new NuGetLicense.LicenseValidator.LicenseValidator(_licenseMapping, - Array.Empty(), + string packageId = _fixture.Create(); + INuGetVersion packageVersion = _fixture.Create(); + string license1 = _fixture.Create(); + string license2 = _fixture.Create(); + var uut = new NuGetLicense.LicenseValidator.LicenseValidator(_licenseMapping, + [], _fileDownloader, _licenseMatcher, _ignoredLicenses); @@ -379,9 +367,8 @@ public async Task ValidatingLicensesWithExpressionLicenseInformation_Should_Give IPackageMetadata package = SetupPackageWithExpressionLicenseInformation(packageId, packageVersion, expression); - IEnumerable result = await _uut.Validate(CreateInput(package, _context), _token.Token); - Assert.That(result, - Is.EquivalentTo( + IEnumerable result = await uut.Validate(CreateInput(package, _context), _token.Token); + await Assert.That(result).IsEquivalentTo( [ new LicenseValidationResult(packageId, packageVersion, @@ -393,20 +380,19 @@ public async Task ValidatingLicensesWithExpressionLicenseInformation_Should_Give null, null, LicenseInformationOrigin.Expression) - ]) - .Using(new LicenseValidationResultValueEqualityComparer())); + ]).Using(new LicenseValidationResultValueEqualityComparer()); } [Test] - [ExtendedAutoData(typeof(NuGetVersionBuilder))] - public async Task ValidatingLicensesWithExpressionLicenseInformation_Should_GiveCorrectValidatedLicenseList_When_And_Expression( - string packageId, - INuGetVersion packageVersion, - string license1, - string license2) + public async Task ValidatingLicensesWithExpressionLicenseInformation_Should_GiveCorrectValidatedLicenseList_When_And_Expression() { - _uut = new NuGetLicense.LicenseValidator.LicenseValidator(_licenseMapping, - Array.Empty(), + string packageId = _fixture.Create(); + INuGetVersion packageVersion = _fixture.Create(); + string license1 = _fixture.Create(); + string license2 = _fixture.Create(); + + var uut = new NuGetLicense.LicenseValidator.LicenseValidator(_licenseMapping, + [], _fileDownloader, _licenseMatcher, _ignoredLicenses); @@ -415,9 +401,8 @@ public async Task ValidatingLicensesWithExpressionLicenseInformation_Should_Give IPackageMetadata package = SetupPackageWithExpressionLicenseInformation(packageId, packageVersion, expression); - IEnumerable result = await _uut.Validate(CreateInput(package, _context), _token.Token); - Assert.That(result, - Is.EquivalentTo( + IEnumerable result = await uut.Validate(CreateInput(package, _context), _token.Token); + await Assert.That(result).IsEquivalentTo( [ new LicenseValidationResult(packageId, packageVersion, @@ -429,20 +414,18 @@ public async Task ValidatingLicensesWithExpressionLicenseInformation_Should_Give null, null, LicenseInformationOrigin.Expression) - ]) - .Using(new LicenseValidationResultValueEqualityComparer())); + ]).Using(new LicenseValidationResultValueEqualityComparer()); } [Test] - [ExtendedAutoData(typeof(NuGetVersionBuilder))] - public async Task ValidatingLicensesWithExpression_Should_StartDownloadingSaidLicense( - string packageId, - INuGetVersion packageVersion, - string license1, - string license2) + public async Task ValidatingLicensesWithExpression_Should_StartDownloadingSaidLicense() { - _uut = new NuGetLicense.LicenseValidator.LicenseValidator(_licenseMapping, - Array.Empty(), + string packageId = _fixture.Create(); + INuGetVersion packageVersion = _fixture.Create(); + string license1 = _fixture.Create(); + string license2 = _fixture.Create(); + var uut = new NuGetLicense.LicenseValidator.LicenseValidator(_licenseMapping, + [], _fileDownloader, _licenseMatcher, _ignoredLicenses); @@ -451,7 +434,7 @@ public async Task ValidatingLicensesWithExpression_Should_StartDownloadingSaidLi IPackageMetadata package = SetupPackageWithExpressionLicenseInformation(packageId, packageVersion, expression); - _ = await _uut.Validate(CreateInput(package, _context), _token.Token); + _ = await uut.Validate(CreateInput(package, _context), _token.Token); await _fileDownloader.Received(1).DownloadFile(new Uri($"https://licenses.nuget.org/({expression})"), $"{package.Identity.Id}__{package.Identity.Version}", @@ -459,24 +442,22 @@ await _fileDownloader.Received(1).DownloadFile(new Uri($"https://licenses.nuget. } [Test] - [ExtendedAutoData(typeof(NuGetVersionBuilder))] - public async Task ValidatingLicensesWithOverwriteLicenseInformation_Should_GiveCorrectValidatedLicenseList( - string packageId, - INuGetVersion packageVersion, - string license) + public async Task ValidatingLicensesWithOverwriteLicenseInformation_Should_GiveCorrectValidatedLicenseList() { - _uut = new NuGetLicense.LicenseValidator.LicenseValidator(_licenseMapping, - Array.Empty(), + string packageId = _fixture.Create(); + INuGetVersion packageVersion = _fixture.Create(); + string license = _fixture.Create(); + var uut = new NuGetLicense.LicenseValidator.LicenseValidator(_licenseMapping, + [], _fileDownloader, _licenseMatcher, _ignoredLicenses); IPackageMetadata package = SetupPackageWithOverwriteLicenseInformation(packageId, packageVersion, license); - IEnumerable result = await _uut.Validate(CreateInput(package, _context), _token.Token); + IEnumerable result = await uut.Validate(CreateInput(package, _context), _token.Token); - Assert.That(result, - Is.EquivalentTo( + await Assert.That(result).IsEquivalentTo( [ new LicenseValidationResult(packageId, packageVersion, @@ -488,8 +469,7 @@ public async Task ValidatingLicensesWithOverwriteLicenseInformation_Should_GiveC null, null, LicenseInformationOrigin.Overwrite) - ]) - .Using(new LicenseValidationResultValueEqualityComparer())); + ]).Using(new LicenseValidationResultValueEqualityComparer()); } private IPackageMetadata SetupPackageWithLicenseUrl(string packageId, @@ -502,13 +482,12 @@ private IPackageMetadata SetupPackageWithLicenseUrl(string packageId, } [Test] - [ExtendedAutoData(typeof(NuGetVersionBuilder))] - public async Task ValidatingLicensesWithMatchingLicenseUrl_Should_GiveCorrectValidatedLicenseList( - string packageId, - INuGetVersion packageVersion) + public async Task ValidatingLicensesWithMatchingLicenseUrl_Should_GiveCorrectValidatedLicenseList_WhenMatchingId() { - _uut = new NuGetLicense.LicenseValidator.LicenseValidator(_licenseMapping, - Array.Empty(), + string packageId = _fixture.Create(); + INuGetVersion packageVersion = _fixture.Create(); + var uut = new NuGetLicense.LicenseValidator.LicenseValidator(_licenseMapping, + [], _fileDownloader, _licenseMatcher, _ignoredLicenses); @@ -516,10 +495,9 @@ public async Task ValidatingLicensesWithMatchingLicenseUrl_Should_GiveCorrectVal KeyValuePair mappingLicense = _licenseMapping.Shuffle(34561).First(); IPackageMetadata package = SetupPackageWithLicenseUrl(packageId, packageVersion, mappingLicense.Key); - IEnumerable result = await _uut.Validate(CreateInput(package, _context), _token.Token); + IEnumerable result = await uut.Validate(CreateInput(package, _context), _token.Token); - Assert.That(result, - Is.EquivalentTo( + await Assert.That(result).IsEquivalentTo( [ new LicenseValidationResult(packageId, packageVersion, @@ -531,29 +509,26 @@ public async Task ValidatingLicensesWithMatchingLicenseUrl_Should_GiveCorrectVal null, null, LicenseInformationOrigin.Url) - ]) - .Using(new LicenseValidationResultValueEqualityComparer())); + ]).Using(new LicenseValidationResultValueEqualityComparer()); } [Test] - [ExtendedAutoData(typeof(NuGetVersionBuilder))] - public async Task ValidatingLicensesWithMatchingLicenseUrl_Should_GiveCorrectValidatedLicenseList( - string packageId, - INuGetVersion packageVersion, - Uri licenseUrl) + public async Task ValidatingLicensesWithMatchingLicenseUrl_Should_GiveCorrectValidatedLicenseList_When_MatchingUrl() { - _uut = new NuGetLicense.LicenseValidator.LicenseValidator(_licenseMapping, - Array.Empty(), + string packageId = _fixture.Create(); + INuGetVersion packageVersion = _fixture.Create(); + Uri licenseUrl = _fixture.Create(); + var uut = new NuGetLicense.LicenseValidator.LicenseValidator(_licenseMapping, + [], _fileDownloader, _licenseMatcher, _ignoredLicenses); IPackageMetadata package = SetupPackageWithLicenseUrl(packageId, packageVersion, licenseUrl); - IEnumerable result = await _uut.Validate(CreateInput(package, _context), _token.Token); + IEnumerable result = await uut.Validate(CreateInput(package, _context), _token.Token); - Assert.That(result, - Is.EquivalentTo( + await Assert.That(result).IsEquivalentTo( [ new LicenseValidationResult(packageId, packageVersion, @@ -565,33 +540,29 @@ public async Task ValidatingLicensesWithMatchingLicenseUrl_Should_GiveCorrectVal null, null, LicenseInformationOrigin.Url) - ]) - .Using(new LicenseValidationResultValueEqualityComparer())); + ]).Using(new LicenseValidationResultValueEqualityComparer()); } [Test] public async Task ValidatingLicensesWithFileLicenseMetadata_Should_GiveCorrectResult_When_Matched() { - var fixture = new Fixture(); - fixture.Customizations.Add(new NuGetVersionBuilder()); - string packageId = fixture.Create(); - INuGetVersion packageVersion = fixture.Create(); - string license = fixture.Create(); + string packageId = _fixture.Create(); + INuGetVersion packageVersion = _fixture.Create(); + string license = _fixture.Create(); - _uut = new NuGetLicense.LicenseValidator.LicenseValidator(_licenseMapping, - Array.Empty(), + var uut = new NuGetLicense.LicenseValidator.LicenseValidator(_licenseMapping, + [], _fileDownloader, _licenseMatcher, _ignoredLicenses); - string licenseId = fixture.Create(); + string licenseId = _fixture.Create(); IPackageMetadata package = SetupPackageWithLicenseInformationOfType(packageId, packageVersion, license, LicenseType.File); _licenseMatcher.Match(license).Returns(licenseId); - IEnumerable result = await _uut.Validate(CreateInput(package, _context), _token.Token); + IEnumerable result = await uut.Validate(CreateInput(package, _context), _token.Token); - Assert.That(result, - Is.EquivalentTo( + await Assert.That(result).IsEquivalentTo( [ new LicenseValidationResult(packageId, packageVersion, @@ -604,21 +575,18 @@ public async Task ValidatingLicensesWithFileLicenseMetadata_Should_GiveCorrectRe null, LicenseInformationOrigin.File, []) - ]) - .Using(new LicenseValidationResultValueEqualityComparer())); + ]).Using(new LicenseValidationResultValueEqualityComparer()); } [Test] public async Task ValidatingLicensesWithFileLicenseMetadata_Should_GiveCorrectResult_When_Not_Matched() { - var fixture = new Fixture(); - fixture.Customizations.Add(new NuGetVersionBuilder()); - string packageId = fixture.Create(); - INuGetVersion packageVersion = fixture.Create(); - string license = fixture.Create(); + string packageId = _fixture.Create(); + INuGetVersion packageVersion = _fixture.Create(); + string license = _fixture.Create(); - _uut = new NuGetLicense.LicenseValidator.LicenseValidator(_licenseMapping, - Array.Empty(), + var uut = new NuGetLicense.LicenseValidator.LicenseValidator(_licenseMapping, + [], _fileDownloader, _licenseMatcher, _ignoredLicenses); @@ -626,10 +594,9 @@ public async Task ValidatingLicensesWithFileLicenseMetadata_Should_GiveCorrectRe IPackageMetadata package = SetupPackageWithLicenseInformationOfType(packageId, packageVersion, license, LicenseType.File); _licenseMatcher.Match(license).Returns(string.Empty); - IEnumerable result = await _uut.Validate(CreateInput(package, _context), _token.Token); + IEnumerable result = await uut.Validate(CreateInput(package, _context), _token.Token); - Assert.That(result, - Is.EquivalentTo( + await Assert.That(result).IsEquivalentTo( [ new LicenseValidationResult(packageId, packageVersion, @@ -644,28 +611,25 @@ public async Task ValidatingLicensesWithFileLicenseMetadata_Should_GiveCorrectRe [ new ValidationError("Unable to determine license from the given license file", _context) ]) - ]) - .Using(new LicenseValidationResultValueEqualityComparer())); + ]).Using(new LicenseValidationResultValueEqualityComparer()); } [Test] - [ExtendedAutoData(typeof(NuGetVersionBuilder))] - public async Task ValidatingLicensesWithoutLicenseInformation_Should_GiveCorrectResult( - string packageId, - INuGetVersion packageVersion) + public async Task ValidatingLicensesWithoutLicenseInformation_Should_GiveCorrectResult() { - _uut = new NuGetLicense.LicenseValidator.LicenseValidator(_licenseMapping, - Array.Empty(), + string packageId = _fixture.Create(); + INuGetVersion packageVersion = _fixture.Create(); + var uut = new NuGetLicense.LicenseValidator.LicenseValidator(_licenseMapping, + [], _fileDownloader, _licenseMatcher, _ignoredLicenses); IPackageMetadata package = SetupPackage(packageId, packageVersion); - IEnumerable result = await _uut.Validate(CreateInput(package, _context), _token.Token); + IEnumerable result = await uut.Validate(CreateInput(package, _context), _token.Token); - Assert.That(result, - Is.EquivalentTo( + await Assert.That(result).IsEquivalentTo( [ new LicenseValidationResult(packageId, packageVersion, @@ -677,28 +641,24 @@ public async Task ValidatingLicensesWithoutLicenseInformation_Should_GiveCorrect null, null, LicenseInformationOrigin.Unknown, - new List - { + [ new ValidationError("No license information found", _context) - }) - ]) - .Using(new LicenseValidationResultValueEqualityComparer())); + ]) + ]).Using(new LicenseValidationResultValueEqualityComparer()); } [Test] - [ExtendedAutoData(typeof(NuGetVersionBuilder))] - public async Task ValidatingLicensesWithExpressionLicenseInformation_Should_GiveCorrectResult_If_NotAllowed( - string packageId, - INuGetVersion packageVersion, - string license) + public async Task ValidatingLicensesWithExpressionLicenseInformation_Should_GiveCorrectResult_If_NotAllowed() { + string packageId = _fixture.Create(); + INuGetVersion packageVersion = _fixture.Create(); + string license = _fixture.Create(); IPackageMetadata package = SetupPackageWithExpressionLicenseInformation(packageId, packageVersion, license); IEnumerable result = await _uut.Validate(CreateInput(package, _context), _token.Token); - Assert.That(result, - Is.EquivalentTo( + await Assert.That(result).IsEquivalentTo( [ new LicenseValidationResult(packageId, packageVersion, @@ -710,22 +670,19 @@ public async Task ValidatingLicensesWithExpressionLicenseInformation_Should_Give null, null, LicenseInformationOrigin.Expression, - new List - { + [ new ValidationError($"License \"{license}\" not found in list of supported licenses", _context) - }) - ]) - .Using(new LicenseValidationResultValueEqualityComparer())); + ]) + ]).Using(new LicenseValidationResultValueEqualityComparer()); } [Test] - [ExtendedAutoData(typeof(NuGetVersionBuilder))] - public async Task ValidatingLicensesWithExpressionLicenseInformation_Should_GiveCorrectResult_WithOrExpression_If_NoneAllowed( - string packageId, - INuGetVersion packageVersion, - string[] licenses) + public async Task ValidatingLicensesWithExpressionLicenseInformation_Should_GiveCorrectResult_WithOrExpression_If_NoneAllowed() { + string packageId = _fixture.Create(); + INuGetVersion packageVersion = _fixture.Create(); + string[] licenses = _fixture.Create(); string expression = licenses.Length switch { 0 => string.Empty, @@ -737,8 +694,7 @@ public async Task ValidatingLicensesWithExpressionLicenseInformation_Should_Give IPackageMetadata package = SetupPackageWithExpressionLicenseInformation(packageId, packageVersion, expression); IEnumerable result = await _uut.Validate(CreateInput(package, _context), _token.Token); - Assert.That(result, - Is.EquivalentTo( + await Assert.That(result).IsEquivalentTo( [ new LicenseValidationResult(packageId, packageVersion, @@ -750,22 +706,19 @@ public async Task ValidatingLicensesWithExpressionLicenseInformation_Should_Give null, null, LicenseInformationOrigin.Expression, - new List - { + [ new ValidationError($"License \"{expression}\" not found in list of supported licenses", _context) - }) - ]) - .Using(new LicenseValidationResultValueEqualityComparer())); + ]) + ]).Using(new LicenseValidationResultValueEqualityComparer()); } [Test] - [ExtendedAutoData(typeof(NuGetVersionBuilder))] - public async Task ValidatingLicensesWithExpressionLicenseInformation_Should_GiveCorrectResult_WithAndExpression_If_OneNotAllowed( - string packageId, - INuGetVersion packageVersion, - string unallowedLicense) + public async Task ValidatingLicensesWithExpressionLicenseInformation_Should_GiveCorrectResult_WithAndExpression_If_OneNotAllowed() { + string packageId = _fixture.Create(); + INuGetVersion packageVersion = _fixture.Create(); + string unallowedLicense = _fixture.Create(); string[] licenses = _allowedLicenses.Shuffle(135643).Append(unallowedLicense).ToArray(); string expression = licenses.Length switch @@ -779,8 +732,7 @@ public async Task ValidatingLicensesWithExpressionLicenseInformation_Should_Give IPackageMetadata package = SetupPackageWithExpressionLicenseInformation(packageId, packageVersion, expression); IEnumerable result = await _uut.Validate(CreateInput(package, _context), _token.Token); - Assert.That(result, - Is.EquivalentTo( + await Assert.That(result).IsEquivalentTo( [ new LicenseValidationResult(packageId, packageVersion, @@ -792,28 +744,24 @@ public async Task ValidatingLicensesWithExpressionLicenseInformation_Should_Give null, null, LicenseInformationOrigin.Expression, - new List - { + [ new ValidationError($"License \"{expression}\" not found in list of supported licenses", _context) - }) - ]) - .Using(new LicenseValidationResultValueEqualityComparer())); + ]) + ]).Using(new LicenseValidationResultValueEqualityComparer()); } [Test] - [ExtendedAutoData(typeof(NuGetVersionBuilder))] - public async Task ValidatingLicensesWithOverwriteLicenseInformation_Should_GiveCorrectResult_If_NotAllowed( - string packageId, - INuGetVersion packageVersion, - string license) + public async Task ValidatingLicensesWithOverwriteLicenseInformation_Should_GiveCorrectResult_If_NotAllowed() { + string packageId = _fixture.Create(); + INuGetVersion packageVersion = _fixture.Create(); + string license = _fixture.Create(); IPackageMetadata package = SetupPackageWithOverwriteLicenseInformation(packageId, packageVersion, license); IEnumerable result = await _uut.Validate(CreateInput(package, _context), _token.Token); - Assert.That(result, - Is.EquivalentTo( + await Assert.That(result).IsEquivalentTo( [ new LicenseValidationResult(packageId, packageVersion, @@ -825,28 +773,24 @@ public async Task ValidatingLicensesWithOverwriteLicenseInformation_Should_GiveC null, null, LicenseInformationOrigin.Overwrite, - new List - { + [ new ValidationError($"License \"{license}\" not found in list of supported licenses", _context) - }) - ]) - .Using(new LicenseValidationResultValueEqualityComparer())); + ]) + ]).Using(new LicenseValidationResultValueEqualityComparer()); } [Test] - [ExtendedAutoData(typeof(NuGetVersionBuilder))] - public async Task ValidatingLicensesWithExpressionLicenseInformation_Should_GiveCorrectResult_If_Allowed( - string packageId, - INuGetVersion packageVersion) + public async Task ValidatingLicensesWithExpressionLicenseInformation_Should_GiveCorrectResult_If_Allowed() { + string packageId = _fixture.Create(); + INuGetVersion packageVersion = _fixture.Create(); string validLicense = _allowedLicenses.Shuffle(135643).First(); IPackageMetadata package = SetupPackageWithExpressionLicenseInformation(packageId, packageVersion, validLicense); IEnumerable result = await _uut.Validate(CreateInput(package, _context), _token.Token); - Assert.That(result, - Is.EquivalentTo( + await Assert.That(result).IsEquivalentTo( [ new LicenseValidationResult(packageId, packageVersion, @@ -858,24 +802,21 @@ public async Task ValidatingLicensesWithExpressionLicenseInformation_Should_Give null, null, LicenseInformationOrigin.Expression) - ]) - .Using(new LicenseValidationResultValueEqualityComparer())); + ]).Using(new LicenseValidationResultValueEqualityComparer()); } [Test] - [ExtendedAutoData(typeof(NuGetVersionBuilder))] - public async Task ValidatingLicensesWithExpressionLicenseInformation_Should_GiveCorrectResult_WithOrExpression_If_OneAllowed( - string packageId, - INuGetVersion packageVersion, - string unallowedLicense) + public async Task ValidatingLicensesWithExpressionLicenseInformation_Should_GiveCorrectResult_WithOrExpression_If_OneAllowed() { + string packageId = _fixture.Create(); + INuGetVersion packageVersion = _fixture.Create(); + string unallowedLicense = _fixture.Create(); string expression = $"{_allowedLicenses.Shuffle(13563).First()} OR {unallowedLicense}"; IPackageMetadata package = SetupPackageWithExpressionLicenseInformation(packageId, packageVersion, expression); IEnumerable result = await _uut.Validate(CreateInput(package, _context), _token.Token); - Assert.That(result, - Is.EquivalentTo( + await Assert.That(result).IsEquivalentTo( [ new LicenseValidationResult(packageId, packageVersion, @@ -887,16 +828,14 @@ public async Task ValidatingLicensesWithExpressionLicenseInformation_Should_Give null, null, LicenseInformationOrigin.Expression) - ]) - .Using(new LicenseValidationResultValueEqualityComparer())); + ]).Using(new LicenseValidationResultValueEqualityComparer()); } [Test] - [ExtendedAutoData(typeof(NuGetVersionBuilder))] - public async Task ValidatingLicensesWithExpressionLicenseInformation_Should_GiveCorrectResult_WithAndExpression_If_AllAllowed( - string packageId, - INuGetVersion packageVersion) + public async Task ValidatingLicensesWithExpressionLicenseInformation_Should_GiveCorrectResult_WithAndExpression_If_AllAllowed() { + string packageId = _fixture.Create(); + INuGetVersion packageVersion = _fixture.Create(); string[] licenses = _allowedLicenses.Shuffle(135643).Take(2).ToArray(); string expression = $"{licenses[0]} AND {licenses[1]}"; @@ -904,8 +843,7 @@ public async Task ValidatingLicensesWithExpressionLicenseInformation_Should_Give IPackageMetadata package = SetupPackageWithExpressionLicenseInformation(packageId, packageVersion, expression); IEnumerable result = await _uut.Validate(CreateInput(package, _context), _token.Token); - Assert.That(result, - Is.EquivalentTo( + await Assert.That(result).IsEquivalentTo( [ new LicenseValidationResult(packageId, packageVersion, @@ -917,23 +855,20 @@ public async Task ValidatingLicensesWithExpressionLicenseInformation_Should_Give null, null, LicenseInformationOrigin.Expression) - ]) - .Using(new LicenseValidationResultValueEqualityComparer())); + ]).Using(new LicenseValidationResultValueEqualityComparer()); } [Test] - [ExtendedAutoData(typeof(NuGetVersionBuilder))] - public async Task ValidatingLicensesWithOverwriteLicenseInformation_Should_GiveCorrectResult_If_Allowed( - string packageId, - INuGetVersion packageVersion) + public async Task ValidatingLicensesWithOverwriteLicenseInformation_Should_GiveCorrectResult_If_Allowed() { + string packageId = _fixture.Create(); + INuGetVersion packageVersion = _fixture.Create(); string validLicense = _allowedLicenses.Shuffle(135643).First(); IPackageMetadata package = SetupPackageWithOverwriteLicenseInformation(packageId, packageVersion, validLicense); IEnumerable result = await _uut.Validate(CreateInput(package, _context), _token.Token); - Assert.That(result, - Is.EquivalentTo( + await Assert.That(result).IsEquivalentTo( [ new LicenseValidationResult(packageId, packageVersion, @@ -945,23 +880,20 @@ public async Task ValidatingLicensesWithOverwriteLicenseInformation_Should_GiveC null, null, LicenseInformationOrigin.Overwrite) - ]) - .Using(new LicenseValidationResultValueEqualityComparer())); + ]).Using(new LicenseValidationResultValueEqualityComparer()); } [Test] - [ExtendedAutoData(typeof(NuGetVersionBuilder))] - public async Task ValidatingLicensesWithMatchingUrlInformation_Should_GiveCorrectResult_If_NotAllowed( - string packageId, - INuGetVersion packageVersion) + public async Task ValidatingLicensesWithMatchingUrlInformation_Should_GiveCorrectResult_If_NotAllowed() { + string packageId = _fixture.Create(); + INuGetVersion packageVersion = _fixture.Create(); KeyValuePair urlMatch = _licenseMapping.Shuffle(765).First(); IPackageMetadata package = SetupPackageWithLicenseUrl(packageId, packageVersion, urlMatch.Key); IEnumerable result = await _uut.Validate(CreateInput(package, _context), _token.Token); - Assert.That(result, - Is.EquivalentTo( + await Assert.That(result).IsEquivalentTo( [ new LicenseValidationResult(packageId, packageVersion, @@ -973,21 +905,19 @@ public async Task ValidatingLicensesWithMatchingUrlInformation_Should_GiveCorrec null, null, LicenseInformationOrigin.Url, - new List - { - new ValidationError($"License \"{urlMatch.Value}\" not found in list of supported licenses", + [ + new ValidationError( + $"License \"{urlMatch.Value}\" not found in list of supported licenses", _context) - }) - ]) - .Using(new LicenseValidationResultValueEqualityComparer())); + ]) + ]).Using(new LicenseValidationResultValueEqualityComparer()); } [Test] - [ExtendedAutoData(typeof(NuGetVersionBuilder))] - public async Task ValidatingLicensesWithUrlInformation_Should_StartDownloadingSaidLicense( - string packageId, - INuGetVersion packageVersion) + public async Task ValidatingLicensesWithUrlInformation_Should_StartDownloadingSaidLicense() { + string packageId = _fixture.Create(); + INuGetVersion packageVersion = _fixture.Create(); KeyValuePair urlMatch = _licenseMapping.Shuffle(4567).First(); IPackageMetadata package = SetupPackageWithLicenseUrl(packageId, packageVersion, urlMatch.Key); @@ -999,11 +929,10 @@ await _fileDownloader.Received(1).DownloadFile(package.LicenseUrl!, } [Test] - [ExtendedAutoData(typeof(NuGetVersionBuilder))] - public async Task ValidatingLicensesWithGithubWebUiUrl_Should_StartDownloadingLicenseAsRaw( - string packageId, - INuGetVersion packageVersion) + public async Task ValidatingLicensesWithGithubWebUiUrl_Should_StartDownloadingLicenseAsRaw() { + string packageId = _fixture.Create(); + INuGetVersion packageVersion = _fixture.Create(); string ghUrl = "https://github.com/dotnet/corefx/blob/master/LICENSE.TXT"; IPackageMetadata package = SetupPackageWithLicenseUrl(packageId, packageVersion, new Uri(ghUrl)); @@ -1015,41 +944,37 @@ await _fileDownloader.Received(1).DownloadFile(new Uri(ghUrl + "?raw=true"), } [Test] - [ExtendedAutoData(typeof(NuGetVersionBuilder))] - public void ValidatingLicensesWithUrlInformation_Should_ThrowLicenseDownloadInformation_If_DownloadThrows( - string packageId, - INuGetVersion packageVersion) + public async Task ValidatingLicensesWithUrlInformation_Should_ThrowLicenseDownloadInformation_If_DownloadThrows() { + string packageId = _fixture.Create(); + INuGetVersion packageVersion = _fixture.Create(); KeyValuePair urlMatch = _licenseMapping.Shuffle(12345).First(); IPackageMetadata package = SetupPackageWithLicenseUrl(packageId, packageVersion, urlMatch.Key); _fileDownloader.When(m => m.DownloadFile(package.LicenseUrl!, Arg.Any(), Arg.Any())) .Do(_ => throw new Exception()); - LicenseDownloadException? exception = - Assert.ThrowsAsync(() => _uut.Validate(CreateInput(package, _context), _token.Token)); - Assert.That(exception!.InnerException, Is.InstanceOf()); - Assert.That(exception.Message, - Is.EqualTo($"Failed to download license for package {packageId} ({packageVersion}) from url: {urlMatch.Key}.\nContext: {_context}")); + LicenseDownloadException? exception = await Assert.That(async () => await _uut.Validate(CreateInput(package, _context), _token.Token)) + .ThrowsExactly(); + await Assert.That(exception!.InnerException).IsTypeOf(); + await Assert.That(exception.Message).IsEqualTo($"Failed to download license for package {packageId} ({packageVersion}) from url: {urlMatch.Key}.\nContext: {_context}"); } [Test] - [ExtendedAutoData(typeof(NuGetVersionBuilder))] - public async Task ValidatingLicensesWithMatchingUrlInformation_Should_GiveCorrectResult_If_Allowed( - string packageId, - INuGetVersion packageVersion) + public async Task ValidatingLicensesWithMatchingUrlInformation_Should_GiveCorrectResult_If_Allowed() { + string packageId = _fixture.Create(); + INuGetVersion packageVersion = _fixture.Create(); KeyValuePair urlMatch = _licenseMapping.Shuffle(43562).First(); - _uut = new NuGetLicense.LicenseValidator.LicenseValidator(_licenseMapping, + var uut = new NuGetLicense.LicenseValidator.LicenseValidator(_licenseMapping, _allowedLicenses.Append(urlMatch.Value), _fileDownloader, _licenseMatcher, _ignoredLicenses); IPackageMetadata package = SetupPackageWithLicenseUrl(packageId, packageVersion, urlMatch.Key); - IEnumerable result = await _uut.Validate(CreateInput(package, _context), _token.Token); + IEnumerable result = await uut.Validate(CreateInput(package, _context), _token.Token); - Assert.That(result, - Is.EquivalentTo( + await Assert.That(result).IsEquivalentTo( [ new LicenseValidationResult(packageId, packageVersion, @@ -1061,23 +986,20 @@ public async Task ValidatingLicensesWithMatchingUrlInformation_Should_GiveCorrec null, null, LicenseInformationOrigin.Url) - ]) - .Using(new LicenseValidationResultValueEqualityComparer())); + ]).Using(new LicenseValidationResultValueEqualityComparer()); } [Test] - [ExtendedAutoData(typeof(NuGetVersionBuilder))] - public async Task ValidatingLicensesWithNotMatchingUrlInformation_Should_GiveCorrectResult_If_NotAllowed( - string packageId, - INuGetVersion packageVersion, - Uri licenseUrl) + public async Task ValidatingLicensesWithNotMatchingUrlInformation_Should_GiveCorrectResult_If_NotAllowed() { + string packageId = _fixture.Create(); + INuGetVersion packageVersion = _fixture.Create(); + Uri licenseUrl = _fixture.Create(); IPackageMetadata package = SetupPackageWithLicenseUrl(packageId, packageVersion, licenseUrl); IEnumerable result = await _uut.Validate(CreateInput(package, _context), _token.Token); - Assert.That(result, - Is.EquivalentTo( + await Assert.That(result).IsEquivalentTo( [ new LicenseValidationResult(packageId, packageVersion, @@ -1089,36 +1011,32 @@ public async Task ValidatingLicensesWithNotMatchingUrlInformation_Should_GiveCor null, null, LicenseInformationOrigin.Url, - new List - { + [ new ValidationError($"Cannot determine License type for url {licenseUrl}", _context) - }) - ]) - .Using(new LicenseValidationResultValueEqualityComparer())); + ]) + ]).Using(new LicenseValidationResultValueEqualityComparer()); } [Test] - [ExtendedAutoData(typeof(NuGetVersionBuilder))] - public async Task ValidatingLicensesWithMatchingUrlInformation_Should_GiveCorrectResult_WithOrExpression_If_OneAllowed( - string packageId, - INuGetVersion packageVersion, - Uri orLicenseUri, - string firstLicense, - string secondLicense) + public async Task ValidatingLicensesWithMatchingUrlInformation_Should_GiveCorrectResult_WithOrExpression_If_OneAllowed() { + string packageId = _fixture.Create(); + INuGetVersion packageVersion = _fixture.Create(); + Uri orLicenseUri = _fixture.Create(); + string firstLicense = _fixture.Create(); + string secondLicense = _fixture.Create(); string licenseExpression = $"{firstLicense} OR {secondLicense}"; - _uut = new NuGetLicense.LicenseValidator.LicenseValidator(_licenseMapping.Add(orLicenseUri, licenseExpression), + var uut = new NuGetLicense.LicenseValidator.LicenseValidator(_licenseMapping.Add(orLicenseUri, licenseExpression), _allowedLicenses.Append(firstLicense), _fileDownloader, _licenseMatcher, _ignoredLicenses); IPackageMetadata package = SetupPackageWithLicenseUrl(packageId, packageVersion, orLicenseUri); - IEnumerable result = await _uut.Validate(CreateInput(package, _context), _token.Token); + IEnumerable result = await uut.Validate(CreateInput(package, _context), _token.Token); - Assert.That(result, - Is.EquivalentTo( + await Assert.That(result).IsEquivalentTo( [ new LicenseValidationResult(packageId, packageVersion, @@ -1130,31 +1048,28 @@ public async Task ValidatingLicensesWithMatchingUrlInformation_Should_GiveCorrec null, null, LicenseInformationOrigin.Url) - ]) - .Using(new LicenseValidationResultValueEqualityComparer())); + ]).Using(new LicenseValidationResultValueEqualityComparer()); } [Test] - [ExtendedAutoData(typeof(NuGetVersionBuilder))] - public async Task ValidatingLicensesWithMatchingUrlInformation_Should_GiveCorrectResult_WithAndExpression_If_AllAllowed( - string packageId, - INuGetVersion packageVersion, - Uri orLicenseUri, - string firstLicense, - string secondLicense) + public async Task ValidatingLicensesWithMatchingUrlInformation_Should_GiveCorrectResult_WithAndExpression_If_AllAllowed() { + string packageId = _fixture.Create(); + INuGetVersion packageVersion = _fixture.Create(); + Uri orLicenseUri = _fixture.Create(); + string firstLicense = _fixture.Create(); + string secondLicense = _fixture.Create(); string licenseExpression = $"{firstLicense} AND {secondLicense}"; - _uut = new NuGetLicense.LicenseValidator.LicenseValidator(_licenseMapping.Add(orLicenseUri, licenseExpression), + var uut = new NuGetLicense.LicenseValidator.LicenseValidator(_licenseMapping.Add(orLicenseUri, licenseExpression), _allowedLicenses.Append(firstLicense).Append(secondLicense), _fileDownloader, _licenseMatcher, _ignoredLicenses); IPackageMetadata package = SetupPackageWithLicenseUrl(packageId, packageVersion, orLicenseUri); - IEnumerable result = await _uut.Validate(CreateInput(package, _context), _token.Token); + IEnumerable result = await uut.Validate(CreateInput(package, _context), _token.Token); - Assert.That(result, - Is.EquivalentTo( + await Assert.That(result).IsEquivalentTo( [ new LicenseValidationResult(packageId, packageVersion, @@ -1166,30 +1081,27 @@ public async Task ValidatingLicensesWithMatchingUrlInformation_Should_GiveCorrec null, null, LicenseInformationOrigin.Url) - ]) - .Using(new LicenseValidationResultValueEqualityComparer())); + ]).Using(new LicenseValidationResultValueEqualityComparer()); } [Test] - [ExtendedAutoData(typeof(NuGetVersionBuilder))] - public async Task ValidatingLicensesWithMatchingUrlInformation_Should_Create_ValidationError_If_None_Is_Not_Supported( - string packageId, - INuGetVersion packageVersion, - Uri orLicenseUri, - string firstLicense, - string secondLicense) + public async Task ValidatingLicensesWithMatchingUrlInformation_Should_Create_ValidationError_If_None_Is_Not_Supported() { + string packageId = _fixture.Create(); + INuGetVersion packageVersion = _fixture.Create(); + Uri orLicenseUri = _fixture.Create(); + string firstLicense = _fixture.Create(); + string secondLicense = _fixture.Create(); string licenseExpression = $"{firstLicense} OR {secondLicense}"; - _uut = new NuGetLicense.LicenseValidator.LicenseValidator(_licenseMapping.Add(orLicenseUri, licenseExpression), + var uut = new NuGetLicense.LicenseValidator.LicenseValidator(_licenseMapping.Add(orLicenseUri, licenseExpression), _allowedLicenses, _fileDownloader, _licenseMatcher, _ignoredLicenses); IPackageMetadata package = SetupPackageWithLicenseUrl(packageId, packageVersion, orLicenseUri); - IEnumerable result = await _uut.Validate(CreateInput(package, _context), _token.Token); + IEnumerable result = await uut.Validate(CreateInput(package, _context), _token.Token); - Assert.That(result, - Is.EquivalentTo( + await Assert.That(result).IsEquivalentTo( [ new LicenseValidationResult(packageId, packageVersion, @@ -1201,36 +1113,33 @@ public async Task ValidatingLicensesWithMatchingUrlInformation_Should_Create_Val null, null, LicenseInformationOrigin.Url, - new List - { - new ValidationError($"License \"{licenseExpression}\" not found in list of supported licenses", + [ + new ValidationError( + $"License \"{licenseExpression}\" not found in list of supported licenses", _context) - }) - ]) - .Using(new LicenseValidationResultValueEqualityComparer())); + ]) + ]).Using(new LicenseValidationResultValueEqualityComparer()); } [Test] - [ExtendedAutoData(typeof(NuGetVersionBuilder))] - public async Task ValidatingLicensesWithMatchingUrlInformation_Should_Create_ValidationError_If_Second_Is_Not_Supported( - string packageId, - INuGetVersion packageVersion, - Uri orLicenseUri, - string firstLicense, - string secondLicense) + public async Task ValidatingLicensesWithMatchingUrlInformation_Should_Create_ValidationError_If_Second_Is_Not_Supported() { + string packageId = _fixture.Create(); + INuGetVersion packageVersion = _fixture.Create(); + Uri orLicenseUri = _fixture.Create(); + string firstLicense = _fixture.Create(); + string secondLicense = _fixture.Create(); string licenseExpression = $"{firstLicense} AND {secondLicense}"; - _uut = new NuGetLicense.LicenseValidator.LicenseValidator(_licenseMapping.Add(orLicenseUri, licenseExpression), + var uut = new NuGetLicense.LicenseValidator.LicenseValidator(_licenseMapping.Add(orLicenseUri, licenseExpression), _allowedLicenses.Append(firstLicense), _fileDownloader, _licenseMatcher, _ignoredLicenses); IPackageMetadata package = SetupPackageWithLicenseUrl(packageId, packageVersion, orLicenseUri); - IEnumerable result = await _uut.Validate(CreateInput(package, _context), _token.Token); + IEnumerable result = await uut.Validate(CreateInput(package, _context), _token.Token); - Assert.That(result, - Is.EquivalentTo( + await Assert.That(result).IsEquivalentTo( [ new LicenseValidationResult(packageId, packageVersion, @@ -1242,36 +1151,33 @@ public async Task ValidatingLicensesWithMatchingUrlInformation_Should_Create_Val null, null, LicenseInformationOrigin.Url, - new List - { - new ValidationError($"License \"{licenseExpression}\" not found in list of supported licenses", + [ + new ValidationError( + $"License \"{licenseExpression}\" not found in list of supported licenses", _context) - }) - ]) - .Using(new LicenseValidationResultValueEqualityComparer())); + ]) + ]).Using(new LicenseValidationResultValueEqualityComparer()); } [Test] - [ExtendedAutoData(typeof(NuGetVersionBuilder))] - public async Task ValidatingLicensesWithMatchingUrlInformation_Should_Create_ValidationError_If_First_Is_Not_Supported( - string packageId, - INuGetVersion packageVersion, - Uri orLicenseUri, - string firstLicense, - string secondLicense) + public async Task ValidatingLicensesWithMatchingUrlInformation_Should_Create_ValidationError_If_First_Is_Not_Supported() { + string packageId = _fixture.Create(); + INuGetVersion packageVersion = _fixture.Create(); + Uri orLicenseUri = _fixture.Create(); + string firstLicense = _fixture.Create(); + string secondLicense = _fixture.Create(); string licenseExpression = $"{firstLicense} AND {secondLicense}"; - _uut = new NuGetLicense.LicenseValidator.LicenseValidator(_licenseMapping.Add(orLicenseUri, licenseExpression), + var uut = new NuGetLicense.LicenseValidator.LicenseValidator(_licenseMapping.Add(orLicenseUri, licenseExpression), _allowedLicenses.Append(secondLicense), _fileDownloader, _licenseMatcher, _ignoredLicenses); IPackageMetadata package = SetupPackageWithLicenseUrl(packageId, packageVersion, orLicenseUri); - IEnumerable result = await _uut.Validate(CreateInput(package, _context), _token.Token); + IEnumerable result = await uut.Validate(CreateInput(package, _context), _token.Token); - Assert.That(result, - Is.EquivalentTo( + await Assert.That(result).IsEquivalentTo( [ new LicenseValidationResult(packageId, packageVersion, @@ -1283,34 +1189,31 @@ public async Task ValidatingLicensesWithMatchingUrlInformation_Should_Create_Val null, null, LicenseInformationOrigin.Url, - new List - { - new ValidationError($"License \"{licenseExpression}\" not found in list of supported licenses", + [ + new ValidationError( + $"License \"{licenseExpression}\" not found in list of supported licenses", _context) - }) - ]) - .Using(new LicenseValidationResultValueEqualityComparer())); + ]) + ]).Using(new LicenseValidationResultValueEqualityComparer()); } [Test] - [ExtendedAutoData(typeof(NuGetVersionBuilder))] - public async Task ValidatingLicenses_ShouldContainCopyright( - string packageId, - INuGetVersion packageVersion, - string copyright) + public async Task ValidatingLicenses_ShouldContainCopyright() { - _uut = new NuGetLicense.LicenseValidator.LicenseValidator(_licenseMapping, - Array.Empty(), + string packageId = _fixture.Create(); + INuGetVersion packageVersion = _fixture.Create(); + string copyright = _fixture.Create(); + var uut = new NuGetLicense.LicenseValidator.LicenseValidator(_licenseMapping, + [], _fileDownloader, _licenseMatcher, _ignoredLicenses.Append(packageId).ToArray()); IPackageMetadata package = SetupPackageWithCopyright(packageId, packageVersion, copyright); - IEnumerable result = await _uut.Validate(CreateInput(package, _context), _token.Token); + IEnumerable result = await uut.Validate(CreateInput(package, _context), _token.Token); - Assert.That(result, - Is.EquivalentTo( + await Assert.That(result).IsEquivalentTo( [ new LicenseValidationResult(packageId, packageVersion, @@ -1322,29 +1225,26 @@ public async Task ValidatingLicenses_ShouldContainCopyright( null, null, LicenseInformationOrigin.Ignored) - ]) - .Using(new LicenseValidationResultValueEqualityComparer())); + ]).Using(new LicenseValidationResultValueEqualityComparer()); } [Test] - [ExtendedAutoData(typeof(NuGetVersionBuilder))] - public async Task ValidatingLicenses_ShouldContainAuthors( - string packageId, - INuGetVersion packageVersion, - string authors) + public async Task ValidatingLicenses_ShouldContainAuthors() { - _uut = new NuGetLicense.LicenseValidator.LicenseValidator(_licenseMapping, - Array.Empty(), + string packageId = _fixture.Create(); + INuGetVersion packageVersion = _fixture.Create(); + string authors = _fixture.Create(); + var uut = new NuGetLicense.LicenseValidator.LicenseValidator(_licenseMapping, + [], _fileDownloader, _licenseMatcher, _ignoredLicenses.Append(packageId).ToArray()); IPackageMetadata package = SetupPackageWithAuthors(packageId, packageVersion, authors); - IEnumerable result = await _uut.Validate(CreateInput(package, _context), _token.Token); + IEnumerable result = await uut.Validate(CreateInput(package, _context), _token.Token); - Assert.That(result, - Is.EquivalentTo( + await Assert.That(result).IsEquivalentTo( [ new LicenseValidationResult(packageId, packageVersion, @@ -1356,8 +1256,7 @@ public async Task ValidatingLicenses_ShouldContainAuthors( null, null, LicenseInformationOrigin.Ignored) - ]) - .Using(new LicenseValidationResultValueEqualityComparer())); + ]).Using(new LicenseValidationResultValueEqualityComparer()); } } diff --git a/tests/NuGetLicense.Test/NuGetLicense.Test.csproj b/tests/NuGetLicense.Test/NuGetLicense.Test.csproj index 8973af65..542734d2 100644 --- a/tests/NuGetLicense.Test/NuGetLicense.Test.csproj +++ b/tests/NuGetLicense.Test/NuGetLicense.Test.csproj @@ -10,28 +10,27 @@ AnyCPU True - - true 12.0 + AnyCPU - + - all runtime; build; native; contentfiles; analyzers; buildtransitive - + + diff --git a/tests/NuGetLicense.Test/Output/Csv/CsvOutputFormatterSpecialCases.cs b/tests/NuGetLicense.Test/Output/Csv/CsvOutputFormatterSpecialCases.cs index 796c20cc..25bdeba4 100644 --- a/tests/NuGetLicense.Test/Output/Csv/CsvOutputFormatterSpecialCases.cs +++ b/tests/NuGetLicense.Test/Output/Csv/CsvOutputFormatterSpecialCases.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using System.Text; @@ -8,7 +8,6 @@ namespace NuGetLicense.Test.Output.Csv { - [TestFixture] public class CsvOutputFormatterSpecialCases { private static readonly string s_newLine = Environment.NewLine; @@ -29,7 +28,7 @@ public async Task Should_EscapeCsv_WithSpecialCharacters_Correctly() Description: null, Summary: null, LicenseInformationOrigin.Expression, - ValidationErrors: new List() + ValidationErrors: [] ), new( PackageId: "PackageIdWith\nNewline", @@ -42,7 +41,7 @@ public async Task Should_EscapeCsv_WithSpecialCharacters_Correctly() Description: null, Summary: null, LicenseInformationOrigin.Expression, - ValidationErrors: new List() + ValidationErrors: [] ) }; @@ -58,7 +57,7 @@ public async Task Should_EscapeCsv_WithSpecialCharacters_Correctly() string result = Encoding.UTF8.GetString(memoryStream.ToArray()); - Assert.That(result, Is.EqualTo(expected)); + await Assert.That(result).IsEqualTo(expected); } [Test] @@ -77,11 +76,11 @@ public async Task Should_EscapeCsv_WithErrors_Correctly() Description: null, Summary: null, LicenseInformationOrigin.Expression, - ValidationErrors: new List - { + ValidationErrors: + [ new("License not allowed", "MIT is not in the allowed list"), new("Missing copyright", "No copyright information") - } + ] ) }; @@ -96,7 +95,7 @@ public async Task Should_EscapeCsv_WithErrors_Correctly() string result = Encoding.UTF8.GetString(memoryStream.ToArray()); - Assert.That(result, Is.EqualTo(expected)); + await Assert.That(result).IsEqualTo(expected); } [Test] @@ -115,7 +114,7 @@ public async Task Should_EscapeCsv_WithSkipIgnoredFilter_Correctly() Description: null, Summary: null, LicenseInformationOrigin.Expression, - ValidationErrors: new List() + ValidationErrors: [] ), new( PackageId: "IgnoredPackage", @@ -128,7 +127,7 @@ public async Task Should_EscapeCsv_WithSkipIgnoredFilter_Correctly() Description: null, Summary: null, LicenseInformationOrigin.Ignored, - ValidationErrors: new List() + ValidationErrors: [] ) }; @@ -143,7 +142,7 @@ public async Task Should_EscapeCsv_WithSkipIgnoredFilter_Correctly() string result = Encoding.UTF8.GetString(memoryStream.ToArray()); - Assert.That(result, Is.EqualTo(expected)); + await Assert.That(result).IsEqualTo(expected); } [Test] @@ -186,7 +185,7 @@ public async Task Should_EscapeCsvCorrectly_IfPrintErrorsOnly() await csvFormatter.Write(memoryStream, licenses); string result = Encoding.UTF8.GetString(memoryStream.ToArray()); - Assert.That(result, Is.EqualTo(expected)); + await Assert.That(result).IsEqualTo(expected); } [Test] @@ -205,7 +204,7 @@ public async Task Should_ApplyBothFilters_WhenSpecialOptionsAreTrue() Description: null, Summary: null, LicenseInformationOrigin.Expression, - ValidationErrors: new List() + ValidationErrors: [] ), new( PackageId: "Package2", @@ -218,7 +217,7 @@ public async Task Should_ApplyBothFilters_WhenSpecialOptionsAreTrue() Description: null, Summary: null, LicenseInformationOrigin.Ignored, - ValidationErrors: new List { new("Test error", "Context") } + ValidationErrors: [new("Test error", "Context")] ), new( PackageId: "Package3", // should contain because _printErrorsOnly = true & _skipIgnoredPackages = true @@ -231,7 +230,7 @@ public async Task Should_ApplyBothFilters_WhenSpecialOptionsAreTrue() Description: null, Summary: null, LicenseInformationOrigin.Expression, - ValidationErrors: new List { new("Test error", "Context") } + ValidationErrors: [new("Test error", "Context")] ), new( PackageId: "Package4", @@ -244,7 +243,7 @@ public async Task Should_ApplyBothFilters_WhenSpecialOptionsAreTrue() Description: null, Summary: null, LicenseInformationOrigin.Ignored, - ValidationErrors: new List() + ValidationErrors: [] ) }; @@ -259,11 +258,11 @@ public async Task Should_ApplyBothFilters_WhenSpecialOptionsAreTrue() string result = Encoding.UTF8.GetString(memoryStream.ToArray()); - Assert.That(result, Does.Contain("Package3")); - Assert.That(result, Does.Not.Contain("Package1")); - Assert.That(result, Does.Not.Contain("Package2")); - Assert.That(result, Does.Not.Contain("Package4")); - Assert.That(result, Is.EqualTo(expected)); + await Assert.That(result).Contains("Package3"); + await Assert.That(result).DoesNotContain("Package1"); + await Assert.That(result).DoesNotContain("Package2"); + await Assert.That(result).DoesNotContain("Package4"); + await Assert.That(result).IsEqualTo(expected); } } } diff --git a/tests/NuGetLicense.Test/Output/Csv/CsvOutputFormatterTests.cs b/tests/NuGetLicense.Test/Output/Csv/CsvOutputFormatterTests.cs index 107bd8be..01002e8d 100644 --- a/tests/NuGetLicense.Test/Output/Csv/CsvOutputFormatterTests.cs +++ b/tests/NuGetLicense.Test/Output/Csv/CsvOutputFormatterTests.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using NuGetLicense.Output; @@ -6,38 +6,39 @@ namespace NuGetLicense.Test.Output.Csv { - [TestFixture(true, true, true, true, true)] - [TestFixture(true, true, true, true, false)] - [TestFixture(true, true, true, false, true)] - [TestFixture(true, true, true, false, false)] - [TestFixture(true, true, false, true, true)] - [TestFixture(true, true, false, true, false)] - [TestFixture(true, true, false, false, true)] - [TestFixture(true, true, false, false, false)] - [TestFixture(true, false, true, true, true)] - [TestFixture(true, false, true, true, false)] - [TestFixture(true, false, true, false, true)] - [TestFixture(true, false, true, false, false)] - [TestFixture(true, false, false, true, true)] - [TestFixture(true, false, false, true, false)] - [TestFixture(true, false, false, false, true)] - [TestFixture(true, false, false, false, false)] - [TestFixture(false, true, true, true, true)] - [TestFixture(false, true, true, true, false)] - [TestFixture(false, true, true, false, true)] - [TestFixture(false, true, true, false, false)] - [TestFixture(false, true, false, true, true)] - [TestFixture(false, true, false, true, false)] - [TestFixture(false, true, false, false, true)] - [TestFixture(false, true, false, false, false)] - [TestFixture(false, false, true, true, true)] - [TestFixture(false, false, true, true, false)] - [TestFixture(false, false, true, false, true)] - [TestFixture(false, false, true, false, false)] - [TestFixture(false, false, false, true, true)] - [TestFixture(false, false, false, true, false)] - [TestFixture(false, false, false, false, true)] - [TestFixture(false, false, false, false, false)] + [InheritsTests] + [Arguments(true, true, true, true, true)] + [Arguments(true, true, true, true, false)] + [Arguments(true, true, true, false, true)] + [Arguments(true, true, true, false, false)] + [Arguments(true, true, false, true, true)] + [Arguments(true, true, false, true, false)] + [Arguments(true, true, false, false, true)] + [Arguments(true, true, false, false, false)] + [Arguments(true, false, true, true, true)] + [Arguments(true, false, true, true, false)] + [Arguments(true, false, true, false, true)] + [Arguments(true, false, true, false, false)] + [Arguments(true, false, false, true, true)] + [Arguments(true, false, false, true, false)] + [Arguments(true, false, false, false, true)] + [Arguments(true, false, false, false, false)] + [Arguments(false, true, true, true, true)] + [Arguments(false, true, true, true, false)] + [Arguments(false, true, true, false, true)] + [Arguments(false, true, true, false, false)] + [Arguments(false, true, false, true, true)] + [Arguments(false, true, false, true, false)] + [Arguments(false, true, false, false, true)] + [Arguments(false, true, false, false, false)] + [Arguments(false, false, true, true, true)] + [Arguments(false, false, true, true, false)] + [Arguments(false, false, true, false, true)] + [Arguments(false, false, true, false, false)] + [Arguments(false, false, false, true, true)] + [Arguments(false, false, false, true, false)] + [Arguments(false, false, false, false, true)] + [Arguments(false, false, false, false, false)] public class CsvOutputFormatterTests : TestBase { private readonly bool _omitValidLicensesOnError; diff --git a/tests/NuGetLicense.Test/Output/Helper/NuGetVersion.cs b/tests/NuGetLicense.Test/Output/Helper/NuGetVersion.cs index 627f8438..e32a4e4c 100644 --- a/tests/NuGetLicense.Test/Output/Helper/NuGetVersion.cs +++ b/tests/NuGetLicense.Test/Output/Helper/NuGetVersion.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using NuGetUtility.Wrapper.NuGetWrapper.Versioning; diff --git a/tests/NuGetLicense.Test/Output/Json/JsonOutputFormatterTest.cs b/tests/NuGetLicense.Test/Output/Json/JsonOutputFormatterTest.cs index ae70fe8f..35228175 100644 --- a/tests/NuGetLicense.Test/Output/Json/JsonOutputFormatterTest.cs +++ b/tests/NuGetLicense.Test/Output/Json/JsonOutputFormatterTest.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using NuGetLicense.Output; @@ -6,70 +6,71 @@ namespace NuGetLicense.Test.Output.Json { - [TestFixture(true, true, true, true, true, true)] - [TestFixture(true, true, true, true, true, false)] - [TestFixture(true, true, true, true, false, true)] - [TestFixture(true, true, true, true, false, false)] - [TestFixture(true, true, true, false, true, true)] - [TestFixture(true, true, true, false, true, false)] - [TestFixture(true, true, true, false, false, true)] - [TestFixture(true, true, true, false, false, false)] - [TestFixture(true, true, false, true, true, true)] - [TestFixture(true, true, false, true, true, false)] - [TestFixture(true, true, false, true, false, true)] - [TestFixture(true, true, false, true, false, false)] - [TestFixture(true, true, false, false, true, true)] - [TestFixture(true, true, false, false, true, false)] - [TestFixture(true, true, false, false, false, true)] - [TestFixture(true, true, false, false, false, false)] - [TestFixture(true, false, true, true, true, true)] - [TestFixture(true, false, true, true, true, false)] - [TestFixture(true, false, true, true, false, true)] - [TestFixture(true, false, true, true, false, false)] - [TestFixture(true, false, true, false, true, true)] - [TestFixture(true, false, true, false, true, false)] - [TestFixture(true, false, true, false, false, true)] - [TestFixture(true, false, true, false, false, false)] - [TestFixture(true, false, false, true, true, true)] - [TestFixture(true, false, false, true, true, false)] - [TestFixture(true, false, false, true, false, true)] - [TestFixture(true, false, false, true, false, false)] - [TestFixture(true, false, false, false, true, true)] - [TestFixture(true, false, false, false, true, false)] - [TestFixture(true, false, false, false, false, true)] - [TestFixture(true, false, false, false, false, false)] - [TestFixture(false, true, true, true, true, true)] - [TestFixture(false, true, true, true, true, false)] - [TestFixture(false, true, true, true, false, true)] - [TestFixture(false, true, true, true, false, false)] - [TestFixture(false, true, true, false, true, true)] - [TestFixture(false, true, true, false, true, false)] - [TestFixture(false, true, true, false, false, true)] - [TestFixture(false, true, true, false, false, false)] - [TestFixture(false, true, false, true, true, true)] - [TestFixture(false, true, false, true, true, false)] - [TestFixture(false, true, false, true, false, true)] - [TestFixture(false, true, false, true, false, false)] - [TestFixture(false, true, false, false, true, true)] - [TestFixture(false, true, false, false, true, false)] - [TestFixture(false, true, false, false, false, true)] - [TestFixture(false, true, false, false, false, false)] - [TestFixture(false, false, true, true, true, true)] - [TestFixture(false, false, true, true, true, false)] - [TestFixture(false, false, true, true, false, true)] - [TestFixture(false, false, true, true, false, false)] - [TestFixture(false, false, true, false, true, true)] - [TestFixture(false, false, true, false, true, false)] - [TestFixture(false, false, true, false, false, true)] - [TestFixture(false, false, true, false, false, false)] - [TestFixture(false, false, false, true, true, true)] - [TestFixture(false, false, false, true, true, false)] - [TestFixture(false, false, false, true, false, true)] - [TestFixture(false, false, false, true, false, false)] - [TestFixture(false, false, false, false, true, true)] - [TestFixture(false, false, false, false, true, false)] - [TestFixture(false, false, false, false, false, true)] - [TestFixture(false, false, false, false, false, false)] + [InheritsTests] + [Arguments(true, true, true, true, true, true)] + [Arguments(true, true, true, true, true, false)] + [Arguments(true, true, true, true, false, true)] + [Arguments(true, true, true, true, false, false)] + [Arguments(true, true, true, false, true, true)] + [Arguments(true, true, true, false, true, false)] + [Arguments(true, true, true, false, false, true)] + [Arguments(true, true, true, false, false, false)] + [Arguments(true, true, false, true, true, true)] + [Arguments(true, true, false, true, true, false)] + [Arguments(true, true, false, true, false, true)] + [Arguments(true, true, false, true, false, false)] + [Arguments(true, true, false, false, true, true)] + [Arguments(true, true, false, false, true, false)] + [Arguments(true, true, false, false, false, true)] + [Arguments(true, true, false, false, false, false)] + [Arguments(true, false, true, true, true, true)] + [Arguments(true, false, true, true, true, false)] + [Arguments(true, false, true, true, false, true)] + [Arguments(true, false, true, true, false, false)] + [Arguments(true, false, true, false, true, true)] + [Arguments(true, false, true, false, true, false)] + [Arguments(true, false, true, false, false, true)] + [Arguments(true, false, true, false, false, false)] + [Arguments(true, false, false, true, true, true)] + [Arguments(true, false, false, true, true, false)] + [Arguments(true, false, false, true, false, true)] + [Arguments(true, false, false, true, false, false)] + [Arguments(true, false, false, false, true, true)] + [Arguments(true, false, false, false, true, false)] + [Arguments(true, false, false, false, false, true)] + [Arguments(true, false, false, false, false, false)] + [Arguments(false, true, true, true, true, true)] + [Arguments(false, true, true, true, true, false)] + [Arguments(false, true, true, true, false, true)] + [Arguments(false, true, true, true, false, false)] + [Arguments(false, true, true, false, true, true)] + [Arguments(false, true, true, false, true, false)] + [Arguments(false, true, true, false, false, true)] + [Arguments(false, true, true, false, false, false)] + [Arguments(false, true, false, true, true, true)] + [Arguments(false, true, false, true, true, false)] + [Arguments(false, true, false, true, false, true)] + [Arguments(false, true, false, true, false, false)] + [Arguments(false, true, false, false, true, true)] + [Arguments(false, true, false, false, true, false)] + [Arguments(false, true, false, false, false, true)] + [Arguments(false, true, false, false, false, false)] + [Arguments(false, false, true, true, true, true)] + [Arguments(false, false, true, true, true, false)] + [Arguments(false, false, true, true, false, true)] + [Arguments(false, false, true, true, false, false)] + [Arguments(false, false, true, false, true, true)] + [Arguments(false, false, true, false, true, false)] + [Arguments(false, false, true, false, false, true)] + [Arguments(false, false, true, false, false, false)] + [Arguments(false, false, false, true, true, true)] + [Arguments(false, false, false, true, true, false)] + [Arguments(false, false, false, true, false, true)] + [Arguments(false, false, false, true, false, false)] + [Arguments(false, false, false, false, true, true)] + [Arguments(false, false, false, false, true, false)] + [Arguments(false, false, false, false, false, true)] + [Arguments(false, false, false, false, false, false)] public class JsonOutputFormatterTest : TestBase { private readonly bool _prettyPrint; diff --git a/tests/NuGetLicense.Test/Output/Table/MarkdownTableOutputFormatterTest.cs b/tests/NuGetLicense.Test/Output/Table/MarkdownTableOutputFormatterTest.cs index 218c7621..af894cf4 100644 --- a/tests/NuGetLicense.Test/Output/Table/MarkdownTableOutputFormatterTest.cs +++ b/tests/NuGetLicense.Test/Output/Table/MarkdownTableOutputFormatterTest.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using NuGetLicense.Output; @@ -6,38 +6,39 @@ namespace NuGetLicense.Test.Output.Table { - [TestFixture(true, true, true, true, true)] - [TestFixture(true, true, true, true, false)] - [TestFixture(true, true, true, false, true)] - [TestFixture(true, true, true, false, false)] - [TestFixture(true, true, false, true, true)] - [TestFixture(true, true, false, true, false)] - [TestFixture(true, true, false, false, true)] - [TestFixture(true, true, false, false, false)] - [TestFixture(true, false, true, true, true)] - [TestFixture(true, false, true, true, false)] - [TestFixture(true, false, true, false, true)] - [TestFixture(true, false, true, false, false)] - [TestFixture(true, false, false, true, true)] - [TestFixture(true, false, false, true, false)] - [TestFixture(true, false, false, false, true)] - [TestFixture(true, false, false, false, false)] - [TestFixture(false, true, true, true, true)] - [TestFixture(false, true, true, true, false)] - [TestFixture(false, true, true, false, true)] - [TestFixture(false, true, true, false, false)] - [TestFixture(false, true, false, true, true)] - [TestFixture(false, true, false, true, false)] - [TestFixture(false, true, false, false, true)] - [TestFixture(false, true, false, false, false)] - [TestFixture(false, false, true, true, true)] - [TestFixture(false, false, true, true, false)] - [TestFixture(false, false, true, false, true)] - [TestFixture(false, false, true, false, false)] - [TestFixture(false, false, false, true, true)] - [TestFixture(false, false, false, true, false)] - [TestFixture(false, false, false, false, true)] - [TestFixture(false, false, false, false, false)] + [InheritsTests] + [Arguments(true, true, true, true, true)] + [Arguments(true, true, true, true, false)] + [Arguments(true, true, true, false, true)] + [Arguments(true, true, true, false, false)] + [Arguments(true, true, false, true, true)] + [Arguments(true, true, false, true, false)] + [Arguments(true, true, false, false, true)] + [Arguments(true, true, false, false, false)] + [Arguments(true, false, true, true, true)] + [Arguments(true, false, true, true, false)] + [Arguments(true, false, true, false, true)] + [Arguments(true, false, true, false, false)] + [Arguments(true, false, false, true, true)] + [Arguments(true, false, false, true, false)] + [Arguments(true, false, false, false, true)] + [Arguments(true, false, false, false, false)] + [Arguments(false, true, true, true, true)] + [Arguments(false, true, true, true, false)] + [Arguments(false, true, true, false, true)] + [Arguments(false, true, true, false, false)] + [Arguments(false, true, false, true, true)] + [Arguments(false, true, false, true, false)] + [Arguments(false, true, false, false, true)] + [Arguments(false, true, false, false, false)] + [Arguments(false, false, true, true, true)] + [Arguments(false, false, true, true, false)] + [Arguments(false, false, true, false, true)] + [Arguments(false, false, true, false, false)] + [Arguments(false, false, false, true, true)] + [Arguments(false, false, false, true, false)] + [Arguments(false, false, false, false, true)] + [Arguments(false, false, false, false, false)] public class MarkdownTableOutputFormatterTest : TestBase { private readonly bool _omitValidLicensesOnError; diff --git a/tests/NuGetLicense.Test/Output/Table/TableOutputFormatterTest.cs b/tests/NuGetLicense.Test/Output/Table/TableOutputFormatterTest.cs index 99c487d2..b58025d8 100644 --- a/tests/NuGetLicense.Test/Output/Table/TableOutputFormatterTest.cs +++ b/tests/NuGetLicense.Test/Output/Table/TableOutputFormatterTest.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using NuGetLicense.Output; @@ -6,38 +6,39 @@ namespace NuGetLicense.Test.Output.Table { - [TestFixture(true, true, true, true, true)] - [TestFixture(true, true, true, true, false)] - [TestFixture(true, true, true, false, true)] - [TestFixture(true, true, true, false, false)] - [TestFixture(true, true, false, true, true)] - [TestFixture(true, true, false, true, false)] - [TestFixture(true, true, false, false, true)] - [TestFixture(true, true, false, false, false)] - [TestFixture(true, false, true, true, true)] - [TestFixture(true, false, true, true, false)] - [TestFixture(true, false, true, false, true)] - [TestFixture(true, false, true, false, false)] - [TestFixture(true, false, false, true, true)] - [TestFixture(true, false, false, true, false)] - [TestFixture(true, false, false, false, true)] - [TestFixture(true, false, false, false, false)] - [TestFixture(false, true, true, true, true)] - [TestFixture(false, true, true, true, false)] - [TestFixture(false, true, true, false, true)] - [TestFixture(false, true, true, false, false)] - [TestFixture(false, true, false, true, true)] - [TestFixture(false, true, false, true, false)] - [TestFixture(false, true, false, false, true)] - [TestFixture(false, true, false, false, false)] - [TestFixture(false, false, true, true, true)] - [TestFixture(false, false, true, true, false)] - [TestFixture(false, false, true, false, true)] - [TestFixture(false, false, true, false, false)] - [TestFixture(false, false, false, true, true)] - [TestFixture(false, false, false, true, false)] - [TestFixture(false, false, false, false, true)] - [TestFixture(false, false, false, false, false)] + [InheritsTests] + [Arguments(true, true, true, true, true)] + [Arguments(true, true, true, true, false)] + [Arguments(true, true, true, false, true)] + [Arguments(true, true, true, false, false)] + [Arguments(true, true, false, true, true)] + [Arguments(true, true, false, true, false)] + [Arguments(true, true, false, false, true)] + [Arguments(true, true, false, false, false)] + [Arguments(true, false, true, true, true)] + [Arguments(true, false, true, true, false)] + [Arguments(true, false, true, false, true)] + [Arguments(true, false, true, false, false)] + [Arguments(true, false, false, true, true)] + [Arguments(true, false, false, true, false)] + [Arguments(true, false, false, false, true)] + [Arguments(true, false, false, false, false)] + [Arguments(false, true, true, true, true)] + [Arguments(false, true, true, true, false)] + [Arguments(false, true, true, false, true)] + [Arguments(false, true, true, false, false)] + [Arguments(false, true, false, true, true)] + [Arguments(false, true, false, true, false)] + [Arguments(false, true, false, false, true)] + [Arguments(false, true, false, false, false)] + [Arguments(false, false, true, true, true)] + [Arguments(false, false, true, true, false)] + [Arguments(false, false, true, false, true)] + [Arguments(false, false, true, false, false)] + [Arguments(false, false, false, true, true)] + [Arguments(false, false, false, true, false)] + [Arguments(false, false, false, false, true)] + [Arguments(false, false, false, false, false)] public class TableOutputFormatterTest : TestBase { private readonly bool _omitValidLicensesOnError; diff --git a/tests/NuGetLicense.Test/Output/TestBase.cs b/tests/NuGetLicense.Test/Output/TestBase.cs index 5ea74052..8152cb24 100644 --- a/tests/NuGetLicense.Test/Output/TestBase.cs +++ b/tests/NuGetLicense.Test/Output/TestBase.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using Bogus; @@ -6,7 +6,6 @@ using NuGetLicense.Output; using NuGetUtility.Test.Extensions; using NuGetUtility.Test.Extensions.Helper.ShuffelledEnumerable; - using HelperNuGetVersion = NuGetLicense.Test.Output.Helper.NuGetVersion; namespace NuGetLicense.Test.Output @@ -15,46 +14,40 @@ public abstract class TestBase { protected TestBase(bool includeCopyright, bool includeAuthors, bool includeLicenseUrl) { - _includeCopyright = includeCopyright; - _includeAuthors = includeAuthors; - _includeLicenseUrl = includeLicenseUrl; - } - - private IOutputFormatter _uut = null!; - protected Faker LicenseValidationErrorFaker = null!; - protected Faker ValidatedLicenseFaker = null!; - private readonly bool _includeCopyright; - private readonly bool _includeAuthors; - private readonly bool _includeLicenseUrl; - - [SetUp] - public void SetUp() - { - ValidatedLicenseFaker = new Faker().CustomInstantiator(f => + _validatedLicenseFaker = new Faker().CustomInstantiator(f => new LicenseValidationResult(f.Name.JobTitle(), new HelperNuGetVersion(f.System.Semver()), GetNullable(f, f.Internet.Url), GetNullable(f, f.Hacker.Phrase), - _includeLicenseUrl ? GetNullable(f, f.Hacker.Phrase) : null, - _includeCopyright ? GetNullable(f, f.Hacker.Phrase) : null, - _includeAuthors ? GetNullable(f, () => string.Join(",", Enumerable.Repeat(true, f.Random.Int(0, 10)).Select(_ => f.Person.FullName))) : null, + includeLicenseUrl ? GetNullable(f, f.Hacker.Phrase) : null, + includeCopyright ? GetNullable(f, f.Hacker.Phrase) : null, + includeAuthors ? GetNullable(f, () => string.Join(",", Enumerable.Repeat(true, f.Random.Int(0, 10)).Select(_ => f.Person.FullName))) : null, GetNullable(f, () => f.Lorem.Sentence()), GetNullable(f, () => f.Lorem.Sentence()), f.Random.Enum())) .UseSeed(8675309); - LicenseValidationErrorFaker = new Faker().CustomInstantiator(f => + _licenseValidationErrorFaker = new Faker().CustomInstantiator(f => new LicenseValidationResult(f.Name.JobTitle(), new HelperNuGetVersion(f.System.Semver()), GetNullable(f, f.Internet.Url), GetNullable(f, f.Hacker.Phrase), - _includeLicenseUrl ? GetNullable(f, f.Hacker.Phrase) : null, - _includeCopyright ? GetNullable(f, f.Hacker.Phrase) : null, - _includeAuthors ? GetNullable(f, () => string.Join(",", Enumerable.Repeat(true, f.Random.Int(0, 10)).Select(_ => f.Person.FullName))) : null, + includeLicenseUrl ? GetNullable(f, f.Hacker.Phrase) : null, + includeCopyright ? GetNullable(f, f.Hacker.Phrase) : null, + includeAuthors ? GetNullable(f, () => string.Join(",", Enumerable.Repeat(true, f.Random.Int(0, 10)).Select(_ => f.Person.FullName))) : null, GetNullable(f, () => f.Lorem.Sentence()), GetNullable(f, () => f.Lorem.Sentence()), f.Random.Enum(), GetErrorList(f).ToList())) .UseSeed(9078345); + } + + private IOutputFormatter _uut = null!; + private readonly Faker _licenseValidationErrorFaker; + private readonly Faker _validatedLicenseFaker; + + [Before(HookType.Test)] + public void SetUp() + { _uut = CreateUut(); } protected abstract IOutputFormatter CreateUut(); @@ -77,15 +70,15 @@ private static IEnumerable GetErrorList(Faker faker) } } - [Test] + [Test, MatrixDataSource] public async Task ValidatedLicensesWithErrors_Should_PrintCorrectTable( - [Values(0, 1, 5, 20, 100)] int validCount, - [Values(1, 3, 5, 20)] int errorCount) + [Matrix(0, 1, 5, 20, 100)] int validCount, + [Matrix(1, 3, 5, 20)] int errorCount) { using var stream = new MemoryStream(); - var result = LicenseValidationErrorFaker.GenerateForever() + var result = _licenseValidationErrorFaker.GenerateForever() .Take(errorCount) - .Concat(ValidatedLicenseFaker.GenerateForever().Take(validCount)) + .Concat(_validatedLicenseFaker.GenerateForever().Take(validCount)) .Shuffle(971234) .ToList(); await _uut.Write(stream, result); @@ -93,12 +86,12 @@ public async Task ValidatedLicensesWithErrors_Should_PrintCorrectTable( await Verify(stream.AsString()).HashParameters(); } - [Test] + [Test, MatrixDataSource] public async Task ValidatedLicenses_Should_PrintCorrectTable( - [Values(0, 1, 5, 20, 100)] int validatedLicenseCount) + [Matrix(0, 1, 5, 20, 100)] int validatedLicenseCount) { using var stream = new MemoryStream(); - var validated = ValidatedLicenseFaker.GenerateForever().Take(validatedLicenseCount).ToList(); + var validated = _validatedLicenseFaker.GenerateForever().Take(validatedLicenseCount).ToList(); await _uut.Write(stream, validated); await Verify(stream.AsString()).HashParameters(); diff --git a/tests/NuGetUtility.Test.Extensions/AutoFixtureExtensions.cs b/tests/NuGetUtility.Test.Extensions/AutoFixtureExtensions.cs index 2885bc2c..b9e654b5 100644 --- a/tests/NuGetUtility.Test.Extensions/AutoFixtureExtensions.cs +++ b/tests/NuGetUtility.Test.Extensions/AutoFixtureExtensions.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using AutoFixture; diff --git a/tests/NuGetUtility.Test.Extensions/Helper/AsyncEnumerableExtension/AsyncEnumerable.cs b/tests/NuGetUtility.Test.Extensions/Helper/AsyncEnumerableExtension/AsyncEnumerable.cs index 24cd295e..3bda0596 100644 --- a/tests/NuGetUtility.Test.Extensions/Helper/AsyncEnumerableExtension/AsyncEnumerable.cs +++ b/tests/NuGetUtility.Test.Extensions/Helper/AsyncEnumerableExtension/AsyncEnumerable.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root namespace NuGetUtility.Test.Extensions.Helper.AsyncEnumerableExtension diff --git a/tests/NuGetUtility.Test.Extensions/Helper/AsyncEnumerableExtension/AsyncEnumerableExtension.cs b/tests/NuGetUtility.Test.Extensions/Helper/AsyncEnumerableExtension/AsyncEnumerableExtension.cs index 7a958e95..2cc0f1bc 100644 --- a/tests/NuGetUtility.Test.Extensions/Helper/AsyncEnumerableExtension/AsyncEnumerableExtension.cs +++ b/tests/NuGetUtility.Test.Extensions/Helper/AsyncEnumerableExtension/AsyncEnumerableExtension.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root namespace NuGetUtility.Test.Extensions.Helper.AsyncEnumerableExtension diff --git a/tests/NuGetUtility.Test.Extensions/Helper/AsyncEnumerableExtension/AsyncEnumerator.cs b/tests/NuGetUtility.Test.Extensions/Helper/AsyncEnumerableExtension/AsyncEnumerator.cs index 993ddd8c..923ae36a 100644 --- a/tests/NuGetUtility.Test.Extensions/Helper/AsyncEnumerableExtension/AsyncEnumerator.cs +++ b/tests/NuGetUtility.Test.Extensions/Helper/AsyncEnumerableExtension/AsyncEnumerator.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root namespace NuGetUtility.Test.Extensions.Helper.AsyncEnumerableExtension diff --git a/tests/NuGetUtility.Test.Extensions/Helper/AutoFixture/NuGet/Versioning/CustomPackageInformationBuilderWithOptionalFileds.cs b/tests/NuGetUtility.Test.Extensions/Helper/AutoFixture/NuGet/Versioning/CustomPackageInformationBuilderWithOptionalFileds.cs index a912fcad..877af496 100644 --- a/tests/NuGetUtility.Test.Extensions/Helper/AutoFixture/NuGet/Versioning/CustomPackageInformationBuilderWithOptionalFileds.cs +++ b/tests/NuGetUtility.Test.Extensions/Helper/AutoFixture/NuGet/Versioning/CustomPackageInformationBuilderWithOptionalFileds.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using AutoFixture; diff --git a/tests/NuGetUtility.Test.Extensions/Helper/AutoFixture/NuGet/Versioning/ExtendedAutoDataAttribute.cs b/tests/NuGetUtility.Test.Extensions/Helper/AutoFixture/NuGet/Versioning/ExtendedAutoDataAttribute.cs deleted file mode 100644 index 25067d72..00000000 --- a/tests/NuGetUtility.Test.Extensions/Helper/AutoFixture/NuGet/Versioning/ExtendedAutoDataAttribute.cs +++ /dev/null @@ -1,15 +0,0 @@ -// Licensed to the projects contributors. -// The license conditions are provided in the LICENSE file located in the project root - -using AutoFixture; -using AutoFixture.NUnit4; - -namespace NuGetUtility.Test.Extensions.Helper.AutoFixture.NuGet.Versioning -{ - [AttributeUsage(AttributeTargets.Method)] - public class ExtendedAutoDataAttribute : AutoDataAttribute - { - public ExtendedAutoDataAttribute(params System.Type[] customizations) - : base(() => new Fixture().AddCustomizations(customizations)) { } - } -} diff --git a/tests/NuGetUtility.Test.Extensions/Helper/AutoFixture/NuGet/Versioning/ExtendedInlineAutoDataAttribute.cs b/tests/NuGetUtility.Test.Extensions/Helper/AutoFixture/NuGet/Versioning/ExtendedInlineAutoDataAttribute.cs deleted file mode 100644 index e9fbc441..00000000 --- a/tests/NuGetUtility.Test.Extensions/Helper/AutoFixture/NuGet/Versioning/ExtendedInlineAutoDataAttribute.cs +++ /dev/null @@ -1,17 +0,0 @@ -// Licensed to the projects contributors. -// The license conditions are provided in the LICENSE file located in the project root - -using AutoFixture; -using AutoFixture.NUnit4; - -namespace NuGetUtility.Test.Extensions.Helper.AutoFixture.NuGet.Versioning -{ - [AttributeUsage(AttributeTargets.Method, AllowMultiple = true)] - public class ExtendedInlineAutoDataAttribute : InlineAutoDataAttribute - { - public ExtendedInlineAutoDataAttribute(System.Type customization, params object[] arguments) - : base(() => new Fixture().AddCustomizations(customization), arguments) { } - public ExtendedInlineAutoDataAttribute(System.Type[] customizations, params object[] arguments) - : base(() => new Fixture().AddCustomizations(customizations), arguments) { } - } -} diff --git a/tests/NuGetUtility.Test.Extensions/Helper/AutoFixture/NuGet/Versioning/NuGetVersionBuilder.cs b/tests/NuGetUtility.Test.Extensions/Helper/AutoFixture/NuGet/Versioning/NuGetVersionBuilder.cs index 05c1a3fc..ecd59bbe 100644 --- a/tests/NuGetUtility.Test.Extensions/Helper/AutoFixture/NuGet/Versioning/NuGetVersionBuilder.cs +++ b/tests/NuGetUtility.Test.Extensions/Helper/AutoFixture/NuGet/Versioning/NuGetVersionBuilder.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using AutoFixture.Kernel; diff --git a/tests/NuGetUtility.Test.Extensions/Helper/NUnitExtension/EnumEnumerableWithException.cs b/tests/NuGetUtility.Test.Extensions/Helper/NUnitExtension/EnumEnumerableWithException.cs deleted file mode 100644 index 61f7fc1d..00000000 --- a/tests/NuGetUtility.Test.Extensions/Helper/NUnitExtension/EnumEnumerableWithException.cs +++ /dev/null @@ -1,24 +0,0 @@ -// Licensed to the projects contributors. -// The license conditions are provided in the LICENSE file located in the project root - -using System.Collections; - -namespace NuGetUtility.Test.Extensions.Helper.NUnitExtension -{ - internal class EnumEnumerableWithException : IEnumerable - { - private readonly Array _allEnumOptions; - private readonly object[] _exceptions; - - public EnumEnumerableWithException(System.Type t, object[] exceptions) - { - _exceptions = exceptions; - _allEnumOptions = Enum.GetValues(t); - } - - public IEnumerator GetEnumerator() - { - return new EnumEnumeratorWithExceptions(_allEnumOptions, _exceptions); - } - } -} diff --git a/tests/NuGetUtility.Test.Extensions/Helper/NUnitExtension/EnumEnumeratorWithExceptions.cs b/tests/NuGetUtility.Test.Extensions/Helper/NUnitExtension/EnumEnumeratorWithExceptions.cs deleted file mode 100644 index cbab4d85..00000000 --- a/tests/NuGetUtility.Test.Extensions/Helper/NUnitExtension/EnumEnumeratorWithExceptions.cs +++ /dev/null @@ -1,52 +0,0 @@ -// Licensed to the projects contributors. -// The license conditions are provided in the LICENSE file located in the project root - -using System.Collections; - -namespace NuGetUtility.Test.Extensions.Helper.NUnitExtension -{ - internal class EnumEnumeratorWithExceptions : IEnumerator - { - private readonly object[] _exceptions; - private readonly IEnumerator _internalEnumerator; - - public EnumEnumeratorWithExceptions(Array allEnumOptions, object[] exceptions) - { - _internalEnumerator = allEnumOptions.GetEnumerator(); - _exceptions = exceptions; - } - - public bool MoveNext() - { - while (_internalEnumerator.MoveNext()) - { - if (!IsException(Current)) - { - return true; - } - } - - return false; - } - - public void Reset() - { - _internalEnumerator.Reset(); - } - - public object Current => _internalEnumerator.Current!; - - private bool IsException(object current) - { - foreach (object exception in _exceptions) - { - if (exception.Equals(current)) - { - return true; - } - } - - return false; - } - } -} diff --git a/tests/NuGetUtility.Test.Extensions/Helper/NUnitExtension/EnumValuesExceptAttribute.cs b/tests/NuGetUtility.Test.Extensions/Helper/NUnitExtension/EnumValuesExceptAttribute.cs deleted file mode 100644 index a5151ca5..00000000 --- a/tests/NuGetUtility.Test.Extensions/Helper/NUnitExtension/EnumValuesExceptAttribute.cs +++ /dev/null @@ -1,25 +0,0 @@ -// Licensed to the projects contributors. -// The license conditions are provided in the LICENSE file located in the project root - -using System.Collections; -using NUnit.Framework; -using NUnit.Framework.Interfaces; - -namespace NuGetUtility.Test.Extensions.Helper.NUnitExtension -{ - [AttributeUsage(AttributeTargets.Parameter)] - public class EnumValuesExceptAttribute : NUnitAttribute, IParameterDataSource - { - private readonly object[] _exceptions; - - public EnumValuesExceptAttribute(params object[] exceptions) - { - _exceptions = exceptions; - } - - public IEnumerable GetData(IParameterInfo parameter) - { - return new EnumEnumerableWithException(parameter.ParameterType, _exceptions); - } - } -} diff --git a/tests/NuGetUtility.Test.Extensions/Helper/ShuffelledEnumerable/EnumerableExtensions.cs b/tests/NuGetUtility.Test.Extensions/Helper/ShuffelledEnumerable/EnumerableExtensions.cs index 864750ea..c75e191b 100644 --- a/tests/NuGetUtility.Test.Extensions/Helper/ShuffelledEnumerable/EnumerableExtensions.cs +++ b/tests/NuGetUtility.Test.Extensions/Helper/ShuffelledEnumerable/EnumerableExtensions.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root namespace NuGetUtility.Test.Extensions.Helper.ShuffelledEnumerable diff --git a/tests/NuGetUtility.Test.Extensions/Helper/Type/TypeExtensions.cs b/tests/NuGetUtility.Test.Extensions/Helper/Type/TypeExtensions.cs index 5f6e3b3f..2c3bfbac 100644 --- a/tests/NuGetUtility.Test.Extensions/Helper/Type/TypeExtensions.cs +++ b/tests/NuGetUtility.Test.Extensions/Helper/Type/TypeExtensions.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root namespace NuGetUtility.Test.Extensions.Helper.Type diff --git a/tests/NuGetUtility.Test.Extensions/MemoryStreamExtension.cs b/tests/NuGetUtility.Test.Extensions/MemoryStreamExtension.cs index b2cbdd0e..2042ae8c 100644 --- a/tests/NuGetUtility.Test.Extensions/MemoryStreamExtension.cs +++ b/tests/NuGetUtility.Test.Extensions/MemoryStreamExtension.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using System.Text; diff --git a/tests/NuGetUtility.Test.Extensions/NuGetUtility.Test.Extensions.csproj b/tests/NuGetUtility.Test.Extensions/NuGetUtility.Test.Extensions.csproj index 8b1d630c..fa354683 100644 --- a/tests/NuGetUtility.Test.Extensions/NuGetUtility.Test.Extensions.csproj +++ b/tests/NuGetUtility.Test.Extensions/NuGetUtility.Test.Extensions.csproj @@ -20,7 +20,6 @@ - diff --git a/tests/NuGetUtility.Test/Architecture/ArchitectureTest.cs b/tests/NuGetUtility.Test/Architecture/ArchitectureTest.cs index 1c64cc62..79ef5222 100644 --- a/tests/NuGetUtility.Test/Architecture/ArchitectureTest.cs +++ b/tests/NuGetUtility.Test/Architecture/ArchitectureTest.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using System.Reflection; @@ -12,7 +12,7 @@ public abstract class ArchitectureTest protected ArchitectureTest() { - Types = Types.InAssemblies([Assembly.Load(AssemblyNames.NuGetUtility)]); + Types = Types.InAssemblies([global::System.Reflection.Assembly.Load(AssemblyNames.NuGetUtility)]); } internal static class AssemblyNames diff --git a/tests/NuGetUtility.Test/Architecture/ConditionsExtensions.cs b/tests/NuGetUtility.Test/Architecture/ConditionsExtensions.cs index a5e8211e..042bd0cd 100644 --- a/tests/NuGetUtility.Test/Architecture/ConditionsExtensions.cs +++ b/tests/NuGetUtility.Test/Architecture/ConditionsExtensions.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using NetArchTest.Rules; @@ -7,11 +7,16 @@ namespace NuGetUtility.Test.Architecture { internal static class ConditionsExtensions { - public static void Assert(this ConditionList conditions, string message = "Architecture rule broken.") + public static Task Assert(this ConditionList conditions, string message = "Architecture rule broken.") { - TestResult ruleResult = conditions.GetResult(); + NetArchTest.Rules.TestResult ruleResult = conditions.GetResult(); + if (ruleResult.IsSuccessful) + { + return Task.CompletedTask; + } + string failingTypeNames = string.Join(Environment.NewLine, ruleResult.FailingTypeNames ?? Array.Empty()); - NUnit.Framework.Assert.That(ruleResult.IsSuccessful, Is.True, $"{message}{Environment.NewLine}Offending types:{Environment.NewLine}{failingTypeNames}"); + throw new Exception($"{message}{Environment.NewLine}Offending types:{Environment.NewLine}{failingTypeNames}"); } } } diff --git a/tests/NuGetUtility.Test/Architecture/Rules/NugetAbstractionTest.cs b/tests/NuGetUtility.Test/Architecture/Rules/NugetAbstractionTest.cs index fa65c56a..fafe0ab5 100644 --- a/tests/NuGetUtility.Test/Architecture/Rules/NugetAbstractionTest.cs +++ b/tests/NuGetUtility.Test/Architecture/Rules/NugetAbstractionTest.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root namespace NuGetUtility.Test.Architecture.Rules @@ -8,9 +8,9 @@ public class NugetAbstractionTest : ArchitectureTest public NugetAbstractionTest() : base() { } [Test] - public void TestOnlyNugetWrapperHasDependencyToNuget() + public async Task TestOnlyNugetWrapperHasDependencyToNuget() { - Types.That() + await Types.That() .DoNotResideInNamespace($"{AssemblyNames.NuGetUtility}.{nameof(Wrapper)}.{nameof(Wrapper.NuGetWrapper)}") .ShouldNot().HaveDependencyOn(nameof(NuGet)) .Assert($"Only the {nameof(Wrapper.NuGetWrapper)} should have dependencies to {nameof(NuGet)}."); diff --git a/tests/NuGetUtility.Test/Extensions/HashSetExtensionTestObject.cs b/tests/NuGetUtility.Test/Extensions/HashSetExtensionTestObject.cs index 6ddea37e..24c4a3b3 100644 --- a/tests/NuGetUtility.Test/Extensions/HashSetExtensionTestObject.cs +++ b/tests/NuGetUtility.Test/Extensions/HashSetExtensionTestObject.cs @@ -1,7 +1,7 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root namespace NuGetUtility.Test.Extensions { - internal record struct HashSetExtensionTestObject(string A, int B); + public record struct HashSetExtensionTestObject(string A, int B); } diff --git a/tests/NuGetUtility.Test/Extensions/HashSetExtensionsTest.cs b/tests/NuGetUtility.Test/Extensions/HashSetExtensionsTest.cs index 1d9cd2ca..73bebac0 100644 --- a/tests/NuGetUtility.Test/Extensions/HashSetExtensionsTest.cs +++ b/tests/NuGetUtility.Test/Extensions/HashSetExtensionsTest.cs @@ -1,55 +1,65 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using System.Collections.Immutable; using AutoFixture; -using AutoFixture.NUnit4; using NuGetUtility.Extensions; namespace NuGetUtility.Test.Extensions { - [TestFixture(typeof(string))] - [TestFixture(typeof(HashSetExtensionTestObject))] - [TestFixture(typeof(int))] - internal class HashSetExtensionsTest + public abstract class HashSetExtensionsTestBase { - [SetUp] - public void SetUp() + private readonly Fixture _fixture; + + protected HashSetExtensionsTestBase() { - _uut = new HashSet(new Fixture().CreateMany()); + _fixture = new Fixture(); } - private HashSet? _uut; - [Test] - [AutoData] - public void AddMany_Should_AddNewElementsToHashSet(T[] newElements) + public async Task AddMany_Should_AddNewElementsToHashSet() { - var initialElements = _uut!.ToImmutableList(); - _uut!.AddRange(newElements); + HashSet uut = new HashSet(_fixture.CreateMany()); + T[] newElements = _fixture.CreateMany().ToArray(); + ImmutableList initialElements = [.. uut]; - Assert.That(_uut, Is.EquivalentTo(initialElements.AddRange(newElements).Distinct())); + uut.AddRange(newElements); + + await Assert.That(uut).IsEquivalentTo(initialElements.AddRange(newElements).Distinct()); } [Test] - [AutoData] - public void AddMany_Should_OnlyAddNewItems(T[] newElements) + public async Task AddMany_Should_OnlyAddNewItems() { - var initialElements = _uut!.ToImmutableList(); - _uut!.AddRange(initialElements.AddRange(newElements)); + HashSet uut = new HashSet(_fixture.CreateMany()); + T[] newElements = _fixture.CreateMany().ToArray(); + ImmutableList initialElements = [.. uut]; + + uut.AddRange(initialElements.AddRange(newElements)); - Assert.That(_uut, Is.EquivalentTo(initialElements.AddRange(newElements).Distinct())); + await Assert.That(uut).IsEquivalentTo(initialElements.AddRange(newElements).Distinct()); } [Test] - public void AddMany_Should_KeepSameHashSetIfOnlyAddingSameElements() + public async Task AddMany_Should_KeepSameHashSetIfOnlyAddingSameElements() { - var initialElements = _uut!.ToImmutableList(); - _uut!.AddRange(initialElements); - _uut!.AddRange(initialElements); - _uut!.AddRange(initialElements); + HashSet uut = new HashSet(_fixture.CreateMany()); + ImmutableList initialElements = [.. uut]; - Assert.That(_uut, Is.EquivalentTo(initialElements)); + uut.AddRange(initialElements); + uut.AddRange(initialElements); + uut.AddRange(initialElements); + + await Assert.That(uut).IsEquivalentTo(initialElements); } } + + [InheritsTests] + public sealed class HashSetExtensionsStringTest : HashSetExtensionsTestBase; + + [InheritsTests] + public sealed class HashSetExtensionsObjectTest : HashSetExtensionsTestBase; + + [InheritsTests] + public sealed class HashSetExtensionsIntTest : HashSetExtensionsTestBase; } diff --git a/tests/NuGetUtility.Test/Extensions/ProjectExtensionsTest.cs b/tests/NuGetUtility.Test/Extensions/ProjectExtensionsTest.cs index 60f5b4d6..7359aebe 100644 --- a/tests/NuGetUtility.Test/Extensions/ProjectExtensionsTest.cs +++ b/tests/NuGetUtility.Test/Extensions/ProjectExtensionsTest.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using NSubstitute; @@ -7,41 +7,40 @@ namespace NuGetUtility.Test.Extensions { - [TestFixture] public class ProjectExtensionsTest { - [SetUp] - public void SetUp() + private readonly IProject _project; + + public ProjectExtensionsTest() { _project = Substitute.For(); } - private IProject _project = null!; - - [TestCase] - public void GetPackagesConfigPath_Should_Return_CorrectPath() + [Test] + public async Task GetPackagesConfigPath_Should_Return_CorrectPath() { string path = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString()); _project.FullPath.Returns(path); string result = _project.GetPackagesConfigPath(); - Assert.That(result, Is.EqualTo(Path.Combine(Path.GetDirectoryName(path)!, "packages.config"))); + await Assert.That(result).IsEqualTo(Path.Combine(Path.GetDirectoryName(path)!, "packages.config")); } - [TestCase(new string?[] { }, false)] - [TestCase(new string?[] { null }, false)] - [TestCase(new string?[] { null, "not-packages.config" }, false)] - [TestCase(new string?[] { "not-packages.config" }, false)] - [TestCase(new string?[] { "packages.config" }, true)] - [TestCase(new string?[] { null, "packages.config" }, true)] - [TestCase(new string?[] { "not-packages.config", "packages.config" }, true)] - [TestCase(new string?[] { null, "not-packages.config", "packages.config" }, true)] - public void HasPackagesConfigFile_Should_Return_Correct_Result(IEnumerable evaluatedIncludes, bool expectation) + [Test] + [Arguments(new string?[] { }, false)] + [Arguments(new string?[] { null }, false)] + [Arguments(new string?[] { null, "not-packages.config" }, false)] + [Arguments(new string?[] { "not-packages.config" }, false)] + [Arguments(new string?[] { "packages.config" }, true)] + [Arguments(new string?[] { null, "packages.config" }, true)] + [Arguments(new string?[] { "not-packages.config", "packages.config" }, true)] + [Arguments(new string?[] { null, "not-packages.config", "packages.config" }, true)] + public async Task HasPackagesConfigFile_Should_Return_Correct_Result(IEnumerable evaluatedIncludes, bool expectation) { _project.GetEvaluatedIncludes().Returns(evaluatedIncludes); - Assert.That(_project.HasPackagesConfigFile(), Is.EqualTo(expectation)); + await Assert.That(_project.HasPackagesConfigFile()).IsEqualTo(expectation); } } } diff --git a/tests/NuGetUtility.Test/Extensions/StringExtensionsTest.cs b/tests/NuGetUtility.Test/Extensions/StringExtensionsTest.cs index 610dc038..7d630ccf 100644 --- a/tests/NuGetUtility.Test/Extensions/StringExtensionsTest.cs +++ b/tests/NuGetUtility.Test/Extensions/StringExtensionsTest.cs @@ -1,104 +1,104 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using NuGetUtility.Extensions; namespace NuGetUtility.Test.Extensions { - [TestFixture] - internal class StringExtensionsTest + public class StringExtensionsTest { - [TestFixture] - internal class LikeTests + public class LikeTests { - [TestCase("test", "test", true)] - [TestCase("test", "TEST", true)] - [TestCase("test", "t*", true)] - [TestCase("test", "*st", true)] - [TestCase("test", "t*st", true)] - [TestCase("test", "t?st", true)] - [TestCase("test", "t??t", true)] - [TestCase("test", "????", true)] - [TestCase("test", "*", true)] - [TestCase("test", "?*", true)] - [TestCase("test", "*?", true)] - [TestCase("test", "fail", false)] - [TestCase("test", "t?t", false)] - [TestCase("test", "???", false)] - [TestCase("test", "?????", false)] - [TestCase("MyProject.csproj", "*.csproj", true)] - [TestCase("MyProject.csproj", "MyProject.*", true)] - [TestCase("MyProject.csproj", "My*.*", true)] - [TestCase("MyProject.csproj", "*.vbproj", false)] - public void Like_Should_MatchPattern(string input, string pattern, bool expected) + [Test] + [Arguments("test", "test", true)] + [Arguments("test", "TEST", true)] + [Arguments("test", "t*", true)] + [Arguments("test", "*st", true)] + [Arguments("test", "t*st", true)] + [Arguments("test", "t?st", true)] + [Arguments("test", "t??t", true)] + [Arguments("test", "????", true)] + [Arguments("test", "*", true)] + [Arguments("test", "?*", true)] + [Arguments("test", "*?", true)] + [Arguments("test", "fail", false)] + [Arguments("test", "t?t", false)] + [Arguments("test", "???", false)] + [Arguments("test", "?????", false)] + [Arguments("MyProject.csproj", "*.csproj", true)] + [Arguments("MyProject.csproj", "MyProject.*", true)] + [Arguments("MyProject.csproj", "My*.*", true)] + [Arguments("MyProject.csproj", "*.vbproj", false)] + public async Task Like_Should_MatchPattern(string input, string pattern, bool expected) { - Assert.That(input.Like(pattern), Is.EqualTo(expected)); + await Assert.That(input.Like(pattern)).IsEqualTo(expected); } } - [TestFixture] - internal class PathLikeTests + public class PathLikeTests { - [TestCase("test", "test", true)] - [TestCase("test", "TEST", true)] - [TestCase("C:\\Projects\\MyProject\\MyProject.csproj", "*.csproj", true, TestName = "PathLike_Windows_MyProject_ExtensionMatch")] - [TestCase("C:\\Projects\\MyProject\\MyProject.csproj", "MyProject.csproj", true, TestName = "PathLike_Windows_MyProject_ExactFileNameMatch")] - [TestCase("C:\\Projects\\MyProject\\MyProject.csproj", "MyProject.*", true, TestName = "PathLike_Windows_MyProject_WildcardFileNameMatch")] - [TestCase("C:\\Projects\\MyProject\\MyProject.csproj", "*MyProject.csproj", true, TestName = "PathLike_Windows_MyProject_SuffixFileNameMatch")] - [TestCase("C:\\Projects\\MyProject\\MyProject.csproj", "C:\\Projects\\*\\*.csproj", true, TestName = "PathLike_Windows_MyProject_FullPathPatternMatch")] - [TestCase("C:\\Projects\\MyProject\\MyProject.csproj", "*.vbproj", false, TestName = "PathLike_Windows_MyProject_NonMatchingExtension")] - [TestCase("C:\\Projects\\MyProject\\MyProject.csproj", "OtherProject.csproj", false, TestName = "PathLike_Windows_MyProject_NonMatchingFileName")] - [TestCase("/home/user/projects/MyProject/MyProject.csproj", "*.csproj", true)] - [TestCase("/home/user/projects/MyProject/MyProject.csproj", "MyProject.csproj", true)] - [TestCase("/home/user/projects/MyProject/MyProject.csproj", "MyProject.*", true)] - [TestCase("/home/user/projects/MyProject/MyProject.csproj", "*MyProject.csproj", true)] - [TestCase("/home/user/projects/MyProject/MyProject.csproj", "/home/user/*/MyProject/*.csproj", true)] - [TestCase("/home/user/projects/MyProject/MyProject.csproj", "*.vbproj", false)] - [TestCase("/home/user/projects/MyProject/MyProject.csproj", "OtherProject.csproj", false)] - [TestCase("C:\\Projects\\Testing\\Test.pyproj", "*.pyproj", true, TestName = "PathLike_Windows_Testing_PythonProjectExtensionMatch")] - [TestCase("C:\\Projects\\Testing\\Test.pyproj", "Test.pyproj", true, TestName = "PathLike_Windows_Testing_PythonProjectFileNameMatch")] - [TestCase("C:\\Projects\\Testing\\Test.pyproj", "*Testing*", true, TestName = "PathLike_Windows_Testing_FolderPatternMatch")] - [TestCase("C:\\Projects\\Mosaik.Testing.Something\\Project.csproj", "*Mosaik.Testing*", true, TestName = "PathLike_Windows_MosaikTesting_FolderPatternMatch")] - [TestCase("C:\\Projects\\Mosaik.Testing.Something\\Project.csproj", "Project.csproj", true, TestName = "PathLike_Windows_MosaikTesting_FileNameMatch")] - [TestCase("Project.Name.Test", "Project.Name*", true)] - [TestCase("Some\\Path\\Project.Name.Test", "Project.Name*", true, TestName = "PathLike_Windows_RelativePath_FileNamePatternMatch")] - public void PathLike_Should_MatchPattern_AgainstFullPathOrFileName(string path, string pattern, bool expected) + [Test] + [Arguments("test", "test", true)] + [Arguments("test", "TEST", true)] + [Arguments("C:\\Projects\\MyProject\\MyProject.csproj", "*.csproj", true)] + [Arguments("C:\\Projects\\MyProject\\MyProject.csproj", "MyProject.csproj", true)] + [Arguments("C:\\Projects\\MyProject\\MyProject.csproj", "MyProject.*", true)] + [Arguments("C:\\Projects\\MyProject\\MyProject.csproj", "*MyProject.csproj", true)] + [Arguments("C:\\Projects\\MyProject\\MyProject.csproj", "C:\\Projects\\*\\*.csproj", true)] + [Arguments("C:\\Projects\\MyProject\\MyProject.csproj", "*.vbproj", false)] + [Arguments("C:\\Projects\\MyProject\\MyProject.csproj", "OtherProject.csproj", false)] + [Arguments("/home/user/projects/MyProject/MyProject.csproj", "*.csproj", true)] + [Arguments("/home/user/projects/MyProject/MyProject.csproj", "MyProject.csproj", true)] + [Arguments("/home/user/projects/MyProject/MyProject.csproj", "MyProject.*", true)] + [Arguments("/home/user/projects/MyProject/MyProject.csproj", "*MyProject.csproj", true)] + [Arguments("/home/user/projects/MyProject/MyProject.csproj", "/home/user/*/MyProject/*.csproj", true)] + [Arguments("/home/user/projects/MyProject/MyProject.csproj", "*.vbproj", false)] + [Arguments("/home/user/projects/MyProject/MyProject.csproj", "OtherProject.csproj", false)] + [Arguments("C:\\Projects\\Testing\\Test.pyproj", "*.pyproj", true)] + [Arguments("C:\\Projects\\Testing\\Test.pyproj", "Test.pyproj", true)] + [Arguments("C:\\Projects\\Testing\\Test.pyproj", "*Testing*", true)] + [Arguments("C:\\Projects\\Mosaik.Testing.Something\\Project.csproj", "*Mosaik.Testing*", true)] + [Arguments("C:\\Projects\\Mosaik.Testing.Something\\Project.csproj", "Project.csproj", true)] + [Arguments("Project.Name.Test", "Project.Name*", true)] + [Arguments("Some\\Path\\Project.Name.Test", "Project.Name*", true)] + public async Task PathLike_Should_MatchPattern_AgainstFullPathOrFileName(string path, string pattern, bool expected) { - Assert.That(path.PathLike(pattern), Is.EqualTo(expected)); + await Assert.That(path.PathLike(pattern)).IsEqualTo(expected); } [Test] - public void PathLike_Should_MatchFullPath_WhenPatternMatchesFullPath() + public async Task PathLike_Should_MatchFullPath_WhenPatternMatchesFullPath() { string path = "C:\\Projects\\MyProject\\MyProject.csproj"; string pattern = "C:\\Projects\\*\\*.csproj"; - Assert.That(path.PathLike(pattern), Is.True); + await Assert.That(path.PathLike(pattern)).IsTrue(); } [Test] - public void PathLike_Should_MatchFileName_WhenPatternMatchesFileName() + public async Task PathLike_Should_MatchFileName_WhenPatternMatchesFileName() { string path = "C:\\Projects\\MyProject\\MyProject.csproj"; string pattern = "*.csproj"; - Assert.That(path.PathLike(pattern), Is.True); + await Assert.That(path.PathLike(pattern)).IsTrue(); } [Test] - public void PathLike_Should_NotMatch_WhenNeitherFullPathNorFileNameMatches() + public async Task PathLike_Should_NotMatch_WhenNeitherFullPathNorFileNameMatches() { string path = "C:\\Projects\\MyProject\\MyProject.csproj"; string pattern = "*.vbproj"; - Assert.That(path.PathLike(pattern), Is.False); + await Assert.That(path.PathLike(pattern)).IsFalse(); } - [TestCase("", "*", true)] - [TestCase("test", "", false)] - public void PathLike_Should_HandleEdgeCases(string path, string pattern, bool expected) + [Test] + [Arguments("", "*", true)] + [Arguments("test", "", false)] + public async Task PathLike_Should_HandleEdgeCases(string path, string pattern, bool expected) { - Assert.That(path.PathLike(pattern), Is.EqualTo(expected)); + await Assert.That(path.PathLike(pattern)).IsEqualTo(expected); } } } diff --git a/tests/NuGetUtility.Test/NuGetUtility.Test.csproj b/tests/NuGetUtility.Test/NuGetUtility.Test.csproj index 91ab3409..3844e453 100644 --- a/tests/NuGetUtility.Test/NuGetUtility.Test.csproj +++ b/tests/NuGetUtility.Test/NuGetUtility.Test.csproj @@ -10,31 +10,24 @@ AnyCPU True - - true 12.0 - - - - $(PkgNuGet_Frameworks)\lib\net472 - $(PkgNuGet_Frameworks)\lib\net8.0 + AnyCPU - + - - + all runtime; build; native; contentfiles; analyzers; buildtransitive - + @@ -50,8 +43,4 @@ - - - - diff --git a/tests/NuGetUtility.Test/PackageInformationReader/PackageInformationReaderTest.cs b/tests/NuGetUtility.Test/PackageInformationReader/PackageInformationReaderTest.cs index 148c7ac0..569ba7c2 100644 --- a/tests/NuGetUtility.Test/PackageInformationReader/PackageInformationReaderTest.cs +++ b/tests/NuGetUtility.Test/PackageInformationReader/PackageInformationReaderTest.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using AutoFixture; @@ -15,11 +15,9 @@ namespace NuGetUtility.Test.PackageInformationReader { - [TestFixture] internal class PackageInformationReaderTest { - [SetUp] - public void SetUp() + public PackageInformationReaderTest() { _sourceRepositoryProvider = Substitute.For(); _customPackageInformation = Enumerable.Empty().ToList(); @@ -34,7 +32,6 @@ public void SetUp() _sourceRepositoryProvider.GetRepositories() .Returns(_ => { - Assert.That(_repositories, Is.Empty); _repositories = _fixture.CreateMany().ToArray(); foreach (ISourceRepository repo in _repositories) { @@ -43,39 +40,34 @@ public void SetUp() return _repositories; }); - SetupUut(); + _uut = SetupUut(); } - [TearDown] - public void TearDown() + private NuGetUtility.PackageInformationReader.PackageInformationReader SetupUut() { - _repositories = Array.Empty(); - _uut = null!; - } - - private void SetupUut() - { - TearDown(); - _uut = new NuGetUtility.PackageInformationReader.PackageInformationReader(_sourceRepositoryProvider, _globalPackagesFolderUtility, _customPackageInformation); + return new NuGetUtility.PackageInformationReader.PackageInformationReader(_sourceRepositoryProvider, _globalPackagesFolderUtility, _customPackageInformation); } - private NuGetUtility.PackageInformationReader.PackageInformationReader _uut = null!; - private IWrappedSourceRepositoryProvider _sourceRepositoryProvider = null!; - private List _customPackageInformation = null!; - private IFixture _fixture = null!; - private ISourceRepository[] _repositories = null!; - private IGlobalPackagesFolderUtility _globalPackagesFolderUtility = null!; + private readonly NuGetUtility.PackageInformationReader.PackageInformationReader _uut; + private readonly IWrappedSourceRepositoryProvider _sourceRepositoryProvider; + private readonly List _customPackageInformation; + private readonly IFixture _fixture; + private ISourceRepository[] _repositories; + private readonly IGlobalPackagesFolderUtility _globalPackagesFolderUtility; [Test] public async Task GetPackageInfo_Should_PreferProvidedCustomInformation() { - _customPackageInformation = _fixture.CreateMany().ToList(); - SetupUut(); + List customPackageInformation = _fixture.CreateMany().ToList(); + var localUut = new NuGetUtility.PackageInformationReader.PackageInformationReader(_sourceRepositoryProvider, _globalPackagesFolderUtility, customPackageInformation); - IEnumerable searchedPackages = _customPackageInformation.Select(p => new PackageIdentity(p.Id, p.Version)); + IEnumerable searchedPackages = customPackageInformation.Select(p => new PackageIdentity(p.Id, p.Version)); + string project = _fixture.Create(); + var packageSearchRequest = new ProjectWithReferencedPackages(project, searchedPackages); + ReferencedPackageWithContext[] result = (await localUut.GetPackageInfo(packageSearchRequest, CancellationToken.None).Synchronize()) + .ToArray(); - (string project, ReferencedPackageWithContext[] result) = await PerformSearch(searchedPackages); - CheckResult(result, project, _customPackageInformation, LicenseType.Overwrite); + await CheckResult(result, project, customPackageInformation, LicenseType.Overwrite); } private async Task<(string Project, ReferencedPackageWithContext[] Result)> PerformSearch( @@ -88,25 +80,25 @@ public async Task GetPackageInfo_Should_PreferProvidedCustomInformation() return (project, result); } - private static void CheckResult(ReferencedPackageWithContext[] result, + private static async Task CheckResult(ReferencedPackageWithContext[] result, string project, IEnumerable packages, LicenseType licenseType) { - Assert.That(packages, Is.EquivalentTo(result.Select(s => new CustomPackageInformation(s.PackageInfo.Identity.Id, - s.PackageInfo.Identity.Version, - s.PackageInfo.LicenseMetadata!.License, - s.PackageInfo.Copyright, - s.PackageInfo.Authors, - s.PackageInfo.Title, - s.PackageInfo.ProjectUrl, - s.PackageInfo.Summary, - s.PackageInfo.Description, - s.PackageInfo.LicenseUrl)))); + await Assert.That(packages).IsEquivalentTo(result.Select(s => new CustomPackageInformation(s.PackageInfo.Identity.Id, + s.PackageInfo.Identity.Version, + s.PackageInfo.LicenseMetadata!.License, + s.PackageInfo.Copyright, + s.PackageInfo.Authors, + s.PackageInfo.Title, + s.PackageInfo.ProjectUrl, + s.PackageInfo.Summary, + s.PackageInfo.Description, + s.PackageInfo.LicenseUrl))); foreach (ReferencedPackageWithContext r in result) { - Assert.That(r.Context, Is.EqualTo(project)); - Assert.That(r.PackageInfo.LicenseMetadata!.Type, Is.EqualTo(licenseType)); + await Assert.That(r.Context).IsEqualTo(project); + await Assert.That(r.PackageInfo.LicenseMetadata!.Type).IsEqualTo(licenseType); } } @@ -135,7 +127,7 @@ public async Task GetPackageInfo_Should_PreferLocalPackageCacheOverRepositories( }); (string project, ReferencedPackageWithContext[] result) = await PerformSearch(searchedPackages); - CheckResult(result, project, searchedPackagesAsPackageInformation, LicenseType.Expression); + await CheckResult(result, project, searchedPackagesAsPackageInformation, LicenseType.Expression); foreach (ISourceRepository repo in _repositories) { @@ -195,7 +187,7 @@ public async Task GetPackageInfo_Should_IterateThroughRepositoriesToGetAdditiona IEnumerable searchedPackages = searchedPackagesAsPackageInformation.Select(i => new PackageIdentity(i.Id, i.Version)); (string project, ReferencedPackageWithContext[] result) = await PerformSearch(searchedPackages); - CheckResult(result, project, searchedPackagesAsPackageInformation, LicenseType.Expression); + await CheckResult(result, project, searchedPackagesAsPackageInformation, LicenseType.Expression); } [Test] @@ -206,18 +198,18 @@ public async Task GetPackageInfo_Should_ReturnDummyPackageMetadataForPackagesNot (string project, ReferencedPackageWithContext[] results) = await PerformSearch(searchedPackages); - Assert.That(results, Has.Length.EqualTo(searchedPackages.Length)); + await Assert.That(results.Length).IsEqualTo(searchedPackages.Length); for (int i = 0; i < results.Length; i++) { PackageIdentity expectation = searchedPackages[i]; ReferencedPackageWithContext result = results[i]; - Assert.That(result.Context, Is.EqualTo(project)); - Assert.That(result.PackageInfo.Identity.Id, Is.EqualTo(expectation.Id)); - Assert.That(result.PackageInfo.Identity.Version, Is.EqualTo(expectation.Version)); - Assert.That(result.PackageInfo.LicenseMetadata, Is.Null); - Assert.That(result.PackageInfo.LicenseUrl, Is.Null); - Assert.That(result.PackageInfo.Summary, Is.Null); - Assert.That(result.PackageInfo.Title, Is.Null); + await Assert.That(result.Context).IsEqualTo(project); + await Assert.That(result.PackageInfo.Identity.Id).IsEqualTo(expectation.Id); + await Assert.That(result.PackageInfo.Identity.Version).IsEqualTo(expectation.Version); + await Assert.That(result.PackageInfo.LicenseMetadata).IsNull(); + await Assert.That(result.PackageInfo.LicenseUrl).IsNull(); + await Assert.That(result.PackageInfo.Summary).IsNull(); + await Assert.That(result.PackageInfo.Title).IsNull(); } } } diff --git a/tests/NuGetUtility.Test/ProjectFiltering/ProjectFiltererTest.cs b/tests/NuGetUtility.Test/ProjectFiltering/ProjectFiltererTest.cs index a63bb6d1..d3cb5d95 100644 --- a/tests/NuGetUtility.Test/ProjectFiltering/ProjectFiltererTest.cs +++ b/tests/NuGetUtility.Test/ProjectFiltering/ProjectFiltererTest.cs @@ -1,43 +1,44 @@ -using NuGetUtility.ProjectFiltering; +// Licensed to the project contributors. +// The license conditions are provided in the LICENSE file located in the project root + +using NuGetUtility.ProjectFiltering; namespace NuGetUtility.Test.ProjectFiltering { - [TestFixture] class ProjectFiltererTest { - private ProjectFilter _filterer = null!; + private readonly ProjectFilter _filterer; - [SetUp] - public void Setup() + public ProjectFiltererTest() { _filterer = new ProjectFilter(); } [Test] - public void FilterProjects_ExcludesSharedProjects_WhenIncludeSharedProjectsIsFalse() + public async Task FilterProjects_ExcludesSharedProjects_WhenIncludeSharedProjectsIsFalse() { string[] projects = ["one.csproj", "two.shproj", "three.csproj", "four.SHPROJ"]; string[] result = _filterer.FilterProjects(projects, false).ToArray(); - Assert.That(result.Count, Is.EqualTo(2)); - Assert.That(result, Does.Contain("one.csproj")); - Assert.That(result, Does.Contain("three.csproj")); - Assert.That(result, Does.Not.Contain("two.shproj")); - Assert.That(result, Does.Not.Contain("four.SHPROJ")); + await Assert.That(result.Count).IsEqualTo(2); + await Assert.That(result.Contains("one.csproj")).IsTrue(); + await Assert.That(result.Contains("three.csproj")).IsTrue(); + await Assert.That(result.Contains("two.shproj")).IsFalse(); + await Assert.That(result.Contains("four.SHPROJ")).IsFalse(); } [Test] - public void FilterProjects_IncludesAllProjects_WhenIncludeSharedProjectsIsTrue() + public async Task FilterProjects_IncludesAllProjects_WhenIncludeSharedProjectsIsTrue() { string[] projects = ["one.csproj", "two.shproj", "three.csproj", "four.SHPROJ"]; string[] result = _filterer.FilterProjects(projects, true).ToArray(); - Assert.That(result.Count, Is.EqualTo(4)); - Assert.That(result, Does.Contain("one.csproj")); - Assert.That(result, Does.Contain("two.shproj")); - Assert.That(result, Does.Contain("three.csproj")); + await Assert.That(result.Count).IsEqualTo(4); + await Assert.That(result.Contains("one.csproj")).IsTrue(); + await Assert.That(result.Contains("two.shproj")).IsTrue(); + await Assert.That(result.Contains("three.csproj")).IsTrue(); } } } diff --git a/tests/NuGetUtility.Test/ReferencedPackagesReader/ProjectsCollectorTest.cs b/tests/NuGetUtility.Test/ReferencedPackagesReader/ProjectsCollectorTest.cs index ad20825e..d0a5b6a2 100644 --- a/tests/NuGetUtility.Test/ReferencedPackagesReader/ProjectsCollectorTest.cs +++ b/tests/NuGetUtility.Test/ReferencedPackagesReader/ProjectsCollectorTest.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using System.IO.Abstractions; @@ -11,44 +11,41 @@ namespace NuGetUtility.Test.ReferencedPackagesReader { - [TestFixture] public class ProjectsCollectorTest { public ProjectsCollectorTest() { _osPlatformSpecificVerifySettings = new(); _osPlatformSpecificVerifySettings.UniqueForOSPlatform(); - } - - [SetUp] - public void SetUp() - { _fixture = new Fixture(); _solutionPersistanceWrapper = Substitute.For(); _fileSystem = new MockFileSystem(); _uut = new ProjectsCollector(_solutionPersistanceWrapper, _fileSystem); } - private ISolutionPersistanceWrapper _solutionPersistanceWrapper = null!; - private IFileSystem _fileSystem = null!; - private ProjectsCollector _uut = null!; - private Fixture _fixture = null!; + + private readonly ISolutionPersistanceWrapper _solutionPersistanceWrapper; + private readonly IFileSystem _fileSystem; + private readonly ProjectsCollector _uut; + private readonly Fixture _fixture; private readonly VerifySettings _osPlatformSpecificVerifySettings; - [TestCase("A.csproj")] - [TestCase("B.fsproj")] - [TestCase("C.vbproj")] - [TestCase("D.dbproj")] + [Test] + [Arguments("A.csproj")] + [Arguments("B.fsproj")] + [Arguments("C.vbproj")] + [Arguments("D.dbproj")] public async Task GetProjects_Should_ReturnProjectsAsListDirectly(string projectFile) { IEnumerable result = await _uut.GetProjectsAsync(projectFile); - Assert.That(result, Is.EqualTo([_fileSystem.Path.GetFullPath(projectFile)])); + await Assert.That(result).IsEquivalentTo([_fileSystem.Path.GetFullPath(projectFile)]); await _solutionPersistanceWrapper.DidNotReceive().GetProjectsFromSolutionAsync(Arg.Any()); } - [TestCase("A.sln")] - [TestCase("B.sln")] - [TestCase("C.sln")] - [TestCase("A.slnx")] + [Test] + [Arguments("A.sln")] + [Arguments("B.sln")] + [Arguments("C.sln")] + [Arguments("A.slnx")] public async Task GetProjects_Should_QueryMsBuildToGetProjectsForSolutionFiles(string solutionFile) { _ = await _uut.GetProjectsAsync(solutionFile); @@ -56,39 +53,42 @@ public async Task GetProjects_Should_QueryMsBuildToGetProjectsForSolutionFiles(s await _solutionPersistanceWrapper.Received(1).GetProjectsFromSolutionAsync(_fileSystem.Path.GetFullPath(solutionFile)); } - [TestCase("A.sln")] - [TestCase("B.sln")] - [TestCase("C.sln")] - [TestCase("C.slnx")] + [Test] + [Arguments("A.sln")] + [Arguments("B.sln")] + [Arguments("C.sln")] + [Arguments("C.slnx")] public async Task GetProjects_Should_ReturnEmptyArray_If_SolutionContainsNoProjects(string solutionFile) { _solutionPersistanceWrapper.GetProjectsFromSolutionAsync(Arg.Any()).Returns(Task.FromResult(Enumerable.Empty())); IEnumerable result = await _uut.GetProjectsAsync(solutionFile); - Assert.That(result, Is.Empty); + await Assert.That(result).IsEmpty(); await _solutionPersistanceWrapper.Received(1).GetProjectsFromSolutionAsync(_fileSystem.Path.GetFullPath(solutionFile)); } - [TestCase("A.sln")] - [TestCase("B.sln")] - [TestCase("C.sln")] - [TestCase("B.slnx")] + [Test] + [Arguments("A.sln")] + [Arguments("B.sln")] + [Arguments("C.sln")] + [Arguments("B.slnx")] public async Task GetProjects_Should_ReturnEmptyArray_If_SolutionContainsProjectsThatDontExist(string solutionFile) { IEnumerable projects = _fixture.CreateMany(); _solutionPersistanceWrapper.GetProjectsFromSolutionAsync(Arg.Any()).Returns(Task.FromResult(projects)); IEnumerable result = await _uut.GetProjectsAsync(solutionFile); - Assert.That(result, Is.Empty); + await Assert.That(result).IsEmpty(); await _solutionPersistanceWrapper.Received(1).GetProjectsFromSolutionAsync(_fileSystem.Path.GetFullPath(solutionFile)); } - [TestCase("A.sln")] - [TestCase("B.sln")] - [TestCase("C.sln")] - [TestCase("C.slnx")] + [Test] + [Arguments("A.sln")] + [Arguments("B.sln")] + [Arguments("C.sln")] + [Arguments("C.slnx")] public async Task GetProjects_Should_ReturnArrayOfProjects_If_SolutionContainsProjectsThatDoExist(string solutionFile) { string[] projects = _fixture.CreateMany().ToArray(); @@ -96,15 +96,16 @@ public async Task GetProjects_Should_ReturnArrayOfProjects_If_SolutionContainsPr _solutionPersistanceWrapper.GetProjectsFromSolutionAsync(Arg.Any()).Returns(Task.FromResult>(projects)); IEnumerable result = await _uut.GetProjectsAsync(solutionFile); - Assert.That(result, Is.EqualTo(projects.Select(_fileSystem.Path.GetFullPath))); + await Assert.That(result).IsEquivalentTo(projects.Select(_fileSystem.Path.GetFullPath)); await _solutionPersistanceWrapper.Received(1).GetProjectsFromSolutionAsync(_fileSystem.Path.GetFullPath(solutionFile)); } - [TestCase("A.sln")] - [TestCase("B.sln")] - [TestCase("C.sln")] - [TestCase("A.slnx")] + [Test] + [Arguments("A.sln")] + [Arguments("B.sln")] + [Arguments("C.sln")] + [Arguments("A.slnx")] public async Task GetProjects_Should_ReturnOnlyExistingProjectsInSolutionFile(string solutionFile) { string[] existingProjects = _fixture.CreateMany().ToArray(); @@ -116,7 +117,7 @@ public async Task GetProjects_Should_ReturnOnlyExistingProjectsInSolutionFile(st .Returns(existingProjects.Concat(missingProjects).Shuffle(54321)); IEnumerable result = await _uut.GetProjectsAsync(solutionFile); - Assert.That(result, Is.EquivalentTo(existingProjects.Select(_fileSystem.Path.GetFullPath))); + await Assert.That(result).IsEquivalentTo(existingProjects.Select(_fileSystem.Path.GetFullPath)); await _solutionPersistanceWrapper.Received(1).GetProjectsFromSolutionAsync(_fileSystem.Path.GetFullPath(solutionFile)); } @@ -129,7 +130,7 @@ public async Task GetProjectsFromSolution_Should_ReturnProjectsInActualSolutionF string solutionFileName = "Projects.sln"; IEnumerable result = await solutionPersistance.GetProjectsFromSolutionAsync(_fileSystem.Path.Combine(solutionFolder, solutionFileName)); - Assert.That(result.Select(_fileSystem.Path.IsPathRooted), Is.All.True); + await Assert.That(result.Select(_fileSystem.Path.IsPathRooted).All(v => v)).IsTrue(); await Verify(string.Join(",", result.Select(p => GetPathRelativeTo(solutionFolder, p))), _osPlatformSpecificVerifySettings); } @@ -142,7 +143,7 @@ public async Task GetProjectsFromXmlSolution_Should_ReturnProjectsInActualSoluti string solutionFileName = "slnx.slnx"; IEnumerable result = await solutionPersistance.GetProjectsFromSolutionAsync(_fileSystem.Path.Combine(solutionFolder, solutionFileName)); - Assert.That(result.Select(_fileSystem.Path.IsPathRooted), Is.All.True); + await Assert.That(result.Select(_fileSystem.Path.IsPathRooted).All(v => v)).IsTrue(); await Verify(string.Join(",", result.Select(p => GetPathRelativeTo(solutionFolder, p))), _osPlatformSpecificVerifySettings); } diff --git a/tests/NuGetUtility.Test/ReferencedPackagesReader/ReferencedPackageReaderTest.cs b/tests/NuGetUtility.Test/ReferencedPackagesReader/ReferencedPackageReaderTest.cs index 2a75b964..c434ac01 100644 --- a/tests/NuGetUtility.Test/ReferencedPackagesReader/ReferencedPackageReaderTest.cs +++ b/tests/NuGetUtility.Test/ReferencedPackagesReader/ReferencedPackageReaderTest.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using AutoFixture; @@ -14,11 +14,9 @@ namespace NuGetUtility.Test.ReferencedPackagesReader { - [TestFixture] internal class ReferencedPackageReaderTest { - [SetUp] - public void SetUp() + public ReferencedPackageReaderTest() { _fixture = new Fixture().Customize(new AutoNSubstituteCustomization()); _msBuild = Substitute.For(); @@ -29,6 +27,16 @@ public void SetUp() _lockFileMock = Substitute.For(); _packageSpecMock = Substitute.For(); _packagesConfigReader = Substitute.For(); + _nuGetFrameworkUtility = Substitute.For(); + _nuGetFrameworkUtility.Normalize(Arg.Any()).Returns(args => NormalizeFramework(args.ArgAt(0))); + _nuGetFrameworkUtility.Normalize(Arg.Any()).Returns(args => NormalizeFramework(args.ArgAt(0).ToString() ?? string.Empty)); + _nuGetFrameworkUtility.IsEquivalent(Arg.Any(), Arg.Any()) + .Returns(callInfo => + { + string requestedFramework = NormalizeFramework(callInfo.Arg()); + string targetFramework = NormalizeFramework(callInfo.Arg().ToString() ?? string.Empty); + return string.Equals(requestedFramework, targetFramework, StringComparison.OrdinalIgnoreCase); + }); _lockFileTargets = _fixture.CreateMany(TargetFrameworkCount).ToArray(); _lockFileLibraries = _fixture.CreateMany(50).ToArray(); _packageSpecTargetFrameworks = @@ -104,32 +112,34 @@ public void SetUp() _uut = new ReferencedPackageReader( _msBuild, _lockFileFactory, - new NuGetFrameworkUtility(), - new AssetsPackageDependencyReader(new NuGetFrameworkUtility()), + _nuGetFrameworkUtility, + new AssetsPackageDependencyReader(_nuGetFrameworkUtility), _packagesConfigReader); } private const int TargetFrameworkCount = 5; - private ReferencedPackageReader _uut = null!; - private IMsBuildAbstraction _msBuild = null!; - private ILockFileFactory _lockFileFactory = null!; - private IPackagesConfigReader _packagesConfigReader = null!; - private string _projectPath = null!; - private string _assetsFilePath = null!; - private IProject _projectMock = null!; - private ILockFile _lockFileMock = null!; - private IPackageSpec _packageSpecMock = null!; - private IEnumerable _lockFileTargets = null!; - private IEnumerable _lockFileLibraries = null!; - private IEnumerable _packageSpecTargetFrameworks = null!; - private IEnumerable _targetFrameworks = null!; - private IFixture _fixture = null!; - private IDictionary _referencedPackagesForFramework = null!; - private IDictionary _directlyReferencedPackagesForFramework = null!; + private readonly ReferencedPackageReader _uut; + private readonly IMsBuildAbstraction _msBuild; + private readonly ILockFileFactory _lockFileFactory; + private readonly IPackagesConfigReader _packagesConfigReader; + private readonly INuGetFrameworkUtility _nuGetFrameworkUtility; + private readonly string _projectPath; + private readonly string _assetsFilePath; + private readonly IProject _projectMock; + private readonly ILockFile _lockFileMock; + private readonly IPackageSpec _packageSpecMock; + private readonly IEnumerable _lockFileTargets; + private readonly IEnumerable _lockFileLibraries; + private readonly IEnumerable _packageSpecTargetFrameworks; + private readonly IEnumerable _targetFrameworks; + private readonly IFixture _fixture; + private readonly IDictionary _referencedPackagesForFramework; + private readonly IDictionary _directlyReferencedPackagesForFramework; [Test] - public void GetInstalledPackages_Should_ThrowReferencedPackageReaderException_If_AssetsFileContainsErrors( - [Values] bool includeTransitive) + [Arguments(true)] + [Arguments(false)] + public async Task GetInstalledPackages_Should_ThrowReferencedPackageReaderException_If_AssetsFileContainsErrors(bool includeTransitive) { string[] errors = _fixture.CreateMany().ToArray(); _lockFileMock.TryGetErrors(out Arg.Any()).Returns(args => @@ -139,55 +149,52 @@ public void GetInstalledPackages_Should_ThrowReferencedPackageReaderException_If }); _projectMock.FullPath.Returns(_projectPath); - ReferencedPackageReaderException? exception = Assert.Throws(() => - _uut.GetInstalledPackages(_projectPath, includeTransitive)); - - Assert.That(exception!.Message, Is.EqualTo($"Project assets file for project {_projectPath} contains errors:{Environment.NewLine}{string.Join(Environment.NewLine, errors)}")); + await Assert.That(() => _uut.GetInstalledPackages(_projectPath, includeTransitive)) + .Throws() + .WithMessage($"Project assets file for project {_projectPath} contains errors:{Environment.NewLine}{string.Join(Environment.NewLine, errors)}"); } [Test] - public void GetInstalledPackages_Should_ThrowReferencedPackageReaderException_If_PackageSpecificationIsInvalid( - [Values] bool includeTransitive) + [Arguments(true)] + [Arguments(false)] + public async Task GetInstalledPackages_Should_ThrowReferencedPackageReaderException_If_PackageSpecificationIsInvalid(bool includeTransitive) { _packageSpecMock.IsValid().Returns(false); _projectMock.FullPath.Returns(_projectPath); - ReferencedPackageReaderException? exception = Assert.Throws(() => - _uut.GetInstalledPackages(_projectPath, includeTransitive)); - - Assert.That(exception!.Message, Is.EqualTo($"Failed to validate project assets for project {_projectPath}")); + await Assert.That(() => _uut.GetInstalledPackages(_projectPath, includeTransitive)) + .Throws() + .WithMessage($"Failed to validate project assets for project {_projectPath}"); } [Test] - public void - GetInstalledPackages_Should_ThrowReferencedPackageReaderException_If_TargetsArrayDoesNotContainAnyElement( - [Values] bool includeTransitive) + [Arguments(true)] + [Arguments(false)] + public async Task GetInstalledPackages_Should_ThrowReferencedPackageReaderException_If_TargetsArrayDoesNotContainAnyElement(bool includeTransitive) { _lockFileMock.Targets.Returns(Enumerable.Empty()); - ReferencedPackageReaderException? exception = Assert.Throws(() => - _uut.GetInstalledPackages(_projectPath, includeTransitive)); - - Assert.That(exception!.Message, Is.EqualTo($"Failed to validate project assets for project {_projectPath}")); + await Assert.That(() => _uut.GetInstalledPackages(_projectPath, includeTransitive)) + .Throws() + .WithMessage($"Failed to validate project assets for project {_projectPath}"); } [Test] - public void - GetInstalledPackages_Should_ThrowReferencedPackageReaderException_If_NotIncludingTransitive_And_PackageSpecFrameworkInformationGetFails() + public async Task GetInstalledPackages_Should_ThrowReferencedPackageReaderException_If_NotIncludingTransitive_And_PackageSpecFrameworkInformationGetFails() { _packageSpecMock.TargetFrameworks .Returns(Enumerable.Empty()); - ReferencedPackageReaderException? exception = Assert.Throws(() => - _uut.GetInstalledPackages(_projectPath, false)); - Assert.That(exception!.Message, Is.EqualTo($"Failed to identify the target framework information for {_lockFileTargets.First()}")); - Assert.That(exception.InnerException, Is.InstanceOf()); - Assert.That(exception!.InnerException!.Message, Is.EqualTo("Sequence contains no matching element")); + ReferencedPackageReaderException exception = (await Assert.That(() => _uut.GetInstalledPackages(_projectPath, false)) + .Throws())!; + + await Assert.That(exception.Message).IsEqualTo($"Failed to identify the target framework information for {_lockFileTargets.First()}"); + await Assert.That(exception.InnerException is InvalidOperationException).IsTrue(); + await Assert.That(exception.InnerException!.Message).IsEqualTo("Sequence contains no matching element"); } [Test] - public void - GetInstalledPackages_Should_ThrowReferencedPackageReaderException_If_Requested_FrameworkIsNotFound() + public async Task GetInstalledPackages_Should_ThrowReferencedPackageReaderException_If_Requested_FrameworkIsNotFound() { const string targetFramework = "net10.0"; @@ -203,49 +210,55 @@ public void targetNet90.TargetFramework.Returns(frameworkNet90); targetNet90.Libraries.Returns(Array.Empty()); - _lockFileMock.Targets.Returns([targetNet80, targetNet90]); - ReferencedPackageReaderException? exception = Assert.Throws(() => - _uut.GetInstalledPackages(_projectPath, false, targetFramework)); - Assert.That(exception!.Message, Is.EqualTo($"Target framework {targetFramework} not found.")); + _lockFileMock.Targets.Returns([targetNet80, targetNet90]); + + await Assert.That(() => _uut.GetInstalledPackages(_projectPath, false, targetFramework)) + .Throws() + .WithMessage($"Target framework {targetFramework} not found."); } [Test] - public void - GetInstalledPackages_Should_ReturnCorrectValues_If_TargetFrameworks_Returns_Empty_And_Requested_Transitive_Packages() + public async Task GetInstalledPackages_Should_ReturnCorrectValues_If_TargetFrameworks_Returns_Empty_And_Requested_Transitive_Packages() { _packageSpecMock.TargetFrameworks.Returns(Enumerable.Empty()); IEnumerable result = _uut.GetInstalledPackages(_projectPath, true); - Assert.That(result, Is.EquivalentTo(_referencedPackagesForFramework.SelectMany(kvp => kvp.Value).Distinct())); + await Assert.That(result).IsEquivalentTo(_referencedPackagesForFramework.SelectMany(kvp => kvp.Value).Distinct()); } [Test] - public void GetInstalledPackages_Should_GetProjectFromPath([Values] bool includeTransitive) + [Arguments(true)] + [Arguments(false)] + public Task GetInstalledPackages_Should_GetProjectFromPath(bool includeTransitive) { _uut.GetInstalledPackages(_projectPath, includeTransitive); _msBuild.Received(1).GetProject(Arg.Any()); _msBuild.Received(1).GetProject(_projectPath); + return Task.CompletedTask; } [Test] - public void GetInstalledPackages_Should_TryLoadAssetsFileFromProject([Values] bool includeTransitive) + [Arguments(true)] + [Arguments(false)] + public Task GetInstalledPackages_Should_TryLoadAssetsFileFromProject(bool includeTransitive) { _uut.GetInstalledPackages(_projectPath, includeTransitive); _projectMock.Received(1).TryGetAssetsPath(out Arg.Any()); _lockFileFactory.Received(1).GetFromFile(Arg.Any()); _lockFileFactory.Received(1).GetFromFile(_assetsFilePath); + return Task.CompletedTask; } [Test] - public void GetInstalledPackages_Should_ReturnCorrectValues_If_IncludingTransitive() + public async Task GetInstalledPackages_Should_ReturnCorrectValues_If_IncludingTransitive() { IEnumerable result = _uut.GetInstalledPackages(_projectPath, true); - Assert.That(result, Is.EquivalentTo(_referencedPackagesForFramework.SelectMany(kvp => kvp.Value).Distinct())); + await Assert.That(result).IsEquivalentTo(_referencedPackagesForFramework.SelectMany(kvp => kvp.Value).Distinct()); } [Test] - public void GetInstalledPackages_Should_OnlyReturnPackages_For_TargetFramework() + public async Task GetInstalledPackages_Should_OnlyReturnPackages_For_TargetFramework() { const string requestedTargetFramework = "net8.0"; @@ -268,12 +281,12 @@ public void GetInstalledPackages_Should_OnlyReturnPackages_For_TargetFramework() IEnumerable result = _uut.GetInstalledPackages(_projectPath, true, requestedTargetFramework); - Assert.That(result.Select(package => package.Id), Is.EquivalentTo(["PackageNet80"])); - Assert.That(result.Select(package => package.Id), Does.Not.Contain("PackageNet90")); + await Assert.That(result.Select(package => package.Id)).IsEquivalentTo(["PackageNet80"]); + await Assert.That(result.Select(package => package.Id)).DoesNotContain("PackageNet90"); } [Test] - public void GetInstalledPackages_Should_OnlyReturnPackages_For_Equivalent_TargetFramework_Representation() + public async Task GetInstalledPackages_Should_OnlyReturnPackages_For_Equivalent_TargetFramework_Representation() { const string requestedTargetFramework = "net8.0"; @@ -296,15 +309,16 @@ public void GetInstalledPackages_Should_OnlyReturnPackages_For_Equivalent_Target IEnumerable result = _uut.GetInstalledPackages(_projectPath, true, requestedTargetFramework); - Assert.That(result.Select(package => package.Id), Is.EquivalentTo(["PackageEquivalent"])); - Assert.That(result.Select(package => package.Id), Does.Not.Contain("PackageOther")); + await Assert.That(result.Select(package => package.Id)).IsEquivalentTo(["PackageEquivalent"]); + await Assert.That(result.Select(package => package.Id)).DoesNotContain("PackageOther"); } - [TestCase("net8.0")] - [TestCase("NET8.0")] - [TestCase(" .NETCoreApp,Version=v8.0 ")] - [TestCase(".NETCoreApp,Version=v8.0")] - public void GetInstalledPackages_Should_OnlyReturnPackages_For_TargetFramework_Variants(string requestedTargetFramework) + [Test] + [Arguments("net8.0")] + [Arguments("NET8.0")] + [Arguments(" .NETCoreApp,Version=v8.0 ")] + [Arguments(".NETCoreApp,Version=v8.0")] + public async Task GetInstalledPackages_Should_OnlyReturnPackages_For_TargetFramework_Variants(string requestedTargetFramework) { ILockFileTargetLibrary variantTargetLibrary = CreateLibrary("PackageVariant"); ILockFileTargetLibrary otherTargetLibrary = CreateLibrary("PackageOther"); @@ -325,12 +339,12 @@ public void GetInstalledPackages_Should_OnlyReturnPackages_For_TargetFramework_V IEnumerable result = _uut.GetInstalledPackages(_projectPath, true, requestedTargetFramework); - Assert.That(result.Select(package => package.Id), Is.EquivalentTo(["PackageVariant"])); - Assert.That(result.Select(package => package.Id), Does.Not.Contain("PackageOther")); + await Assert.That(result.Select(package => package.Id)).IsEquivalentTo(["PackageVariant"]); + await Assert.That(result.Select(package => package.Id)).DoesNotContain("PackageOther"); } [Test] - public void GetInstalledPackages_Should_ReturnCorrectValues_If_NotIncludingTransitive() + public async Task GetInstalledPackages_Should_ReturnCorrectValues_If_NotIncludingTransitive() { IEnumerable result = _uut.GetInstalledPackages(_projectPath, false); @@ -341,23 +355,23 @@ public void GetInstalledPackages_Should_ReturnCorrectValues_If_NotIncludingTrans Array.Exists(expectedReferences, e => e.Id.Equals(l.Name)) && Array.Exists(expectedReferences, e => e.Version!.Equals(l.Version))) .ToArray(); - Assert.That(result, Is.EquivalentTo(expectedResult.Select(l => new PackageIdentity(l.Name, l.Version)))); + await Assert.That(result).IsEquivalentTo(expectedResult.Select(l => new PackageIdentity(l.Name, l.Version))); } [Test] - public void - GetInstalledPackages_Should_ReturnEmptyCollection_If_Cannot_Get_Asset_File_Path_And_Has_No_Packages_Config() + public async Task GetInstalledPackages_Should_ReturnEmptyCollection_If_Cannot_Get_Asset_File_Path_And_Has_No_Packages_Config() { _projectMock.TryGetAssetsPath(out Arg.Any()).Returns(false); _projectMock.GetEvaluatedIncludes().Returns(Enumerable.Empty()); IEnumerable result = _uut.GetInstalledPackages(_projectPath, false); - Assert.That(result.Count(), Is.EqualTo(0)); + await Assert.That(result).Count().IsEqualTo(0); } [Test] - public void GetInstalledPackages_Should_Use_PackageGonfigReader_If_ProjectIsPackageConfigProject( - [Values] bool includeTransitive) + [Arguments(true)] + [Arguments(false)] + public Task GetInstalledPackages_Should_Use_PackageGonfigReader_If_ProjectIsPackageConfigProject(bool includeTransitive) { _projectMock.TryGetAssetsPath(out Arg.Any()).Returns(false); _projectMock.FullPath.Returns(_projectPath); @@ -367,11 +381,13 @@ public void GetInstalledPackages_Should_Use_PackageGonfigReader_If_ProjectIsPack _packagesConfigReader.Received(1).GetPackages(Arg.Any()); _packagesConfigReader.Received(1).GetPackages(_projectMock); + return Task.CompletedTask; } [Test] - public void GetInstalledPackages_Should_ReturnPackagesReturnedBy_PackageGonfigReader_If_ProjectIsPackageConfigProject( - [Values] bool includeTransitive) + [Arguments(true)] + [Arguments(false)] + public async Task GetInstalledPackages_Should_ReturnPackagesReturnedBy_PackageGonfigReader_If_ProjectIsPackageConfigProject(bool includeTransitive) { _projectMock.TryGetAssetsPath(out Arg.Any()).Returns(false); _projectMock.FullPath.Returns(_projectPath); @@ -381,11 +397,11 @@ public void GetInstalledPackages_Should_ReturnPackagesReturnedBy_PackageGonfigRe IEnumerable packages = _uut.GetInstalledPackages(_projectPath, includeTransitive); - Assert.That(packages, Is.EquivalentTo(expectedPackages)); + await Assert.That(packages).IsEquivalentTo(expectedPackages); } [Test] - public void GetInstalledPackages_Should_ExcludePackages_With_PublishFalse_Metadata() + public async Task GetInstalledPackages_Should_ExcludePackages_With_PublishFalse_Metadata() { string excludedPackage = _fixture.Create(); string includedPackage = _fixture.Create(); @@ -431,12 +447,12 @@ public void GetInstalledPackages_Should_ExcludePackages_With_PublishFalse_Metada IEnumerable result = _uut.GetInstalledPackages(_projectPath, true, null, true); - Assert.That(result.Select(p => p.Id), Does.Not.Contain(excludedPackage)); - Assert.That(result.Select(p => p.Id), Does.Contain(includedPackage)); + await Assert.That(result.Select(p => p.Id)).DoesNotContain(excludedPackage); + await Assert.That(result.Select(p => p.Id)).Contains(includedPackage); } [Test] - public void GetInstalledPackages_Should_Apply_PublishFalse_PerTarget_When_TargetFramework_IsNull() + public async Task GetInstalledPackages_Should_Apply_PublishFalse_PerTarget_When_TargetFramework_IsNull() { const string packageName = "PackageConditional"; @@ -490,14 +506,14 @@ public void GetInstalledPackages_Should_Apply_PublishFalse_PerTarget_When_Target IEnumerable result = _uut.GetInstalledPackages(_projectPath, true, null, true); - Assert.That(result.Select(p => p.Id), Does.Contain(packageName)); + await Assert.That(result.Select(p => p.Id).Contains(packageName)).IsTrue(); _projectMock.Received(1).GetPackageReferencesForTarget("net8.0"); _projectMock.Received(1).GetPackageReferencesForTarget("net9.0"); _projectMock.DidNotReceive().GetPackageReferences(); } [Test] - public void GetInstalledPackages_Should_Keep_SharedTransitiveDependency_If_ReachableFrom_PublishableRoot() + public async Task GetInstalledPackages_Should_Keep_SharedTransitiveDependency_If_ReachableFrom_PublishableRoot() { INuGetFramework targetFramework = Substitute.For(); targetFramework.ToString().Returns("net10.0"); @@ -542,13 +558,13 @@ public void GetInstalledPackages_Should_Keep_SharedTransitiveDependency_If_Reach IEnumerable result = _uut.GetInstalledPackages(_projectPath, true, null, true); - Assert.That(result.Select(p => p.Id), Does.Contain("PackageA")); - Assert.That(result.Select(p => p.Id), Does.Not.Contain("PackageB")); - Assert.That(result.Select(p => p.Id), Does.Contain("PackageC")); + await Assert.That(result.Select(p => p.Id)).Contains("PackageA"); + await Assert.That(result.Select(p => p.Id)).DoesNotContain("PackageB"); + await Assert.That(result.Select(p => p.Id)).Contains("PackageC"); } [Test] - public void GetInstalledPackages_Should_Exclude_TransitiveDependency_If_OnlyReachableFrom_PublishFalseRoot() + public async Task GetInstalledPackages_Should_Exclude_TransitiveDependency_If_OnlyReachableFrom_PublishFalseRoot() { INuGetFramework targetFramework = Substitute.For(); targetFramework.ToString().Returns("net10.0"); @@ -593,9 +609,9 @@ public void GetInstalledPackages_Should_Exclude_TransitiveDependency_If_OnlyReac IEnumerable result = _uut.GetInstalledPackages(_projectPath, true, null, true); - Assert.That(result.Select(p => p.Id), Does.Contain("PackageA")); - Assert.That(result.Select(p => p.Id), Does.Not.Contain("PackageB")); - Assert.That(result.Select(p => p.Id), Does.Not.Contain("PackageC")); + await Assert.That(result.Select(p => p.Id)).Contains("PackageA"); + await Assert.That(result.Select(p => p.Id)).DoesNotContain("PackageB"); + await Assert.That(result.Select(p => p.Id)).DoesNotContain("PackageC"); } private static ILibraryDependency CreateDependency(string packageName) @@ -622,5 +638,23 @@ private static IPackageDependency CreatePackageDependency(string dependencyName) packageDependency.Id.Returns(dependencyName); return packageDependency; } + + private static string NormalizeFramework(string targetFramework) + { + string trimmedFramework = targetFramework.Trim(); + int ridSeparatorIndex = trimmedFramework.IndexOf('/'); + if (ridSeparatorIndex >= 0) + { + trimmedFramework = trimmedFramework[..ridSeparatorIndex]; + } + + const string dotNetCorePrefix = ".NETCoreApp,Version=v"; + if (trimmedFramework.StartsWith(dotNetCorePrefix, StringComparison.OrdinalIgnoreCase)) + { + return $"net{trimmedFramework[dotNetCorePrefix.Length..]}".ToLowerInvariant(); + } + + return trimmedFramework.ToLowerInvariant(); + } } } diff --git a/tests/NuGetUtility.Test/ReferencedPackagesReader/ReferencedPackagesReaderIntegrationTest.cs b/tests/NuGetUtility.Test/ReferencedPackagesReader/ReferencedPackagesReaderIntegrationTest.cs index 06cecb02..aed8e40b 100644 --- a/tests/NuGetUtility.Test/ReferencedPackagesReader/ReferencedPackagesReaderIntegrationTest.cs +++ b/tests/NuGetUtility.Test/ReferencedPackagesReader/ReferencedPackagesReaderIntegrationTest.cs @@ -1,6 +1,7 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root +using System.Runtime.InteropServices; using NuGetUtility.ReferencedPackagesReader; using NuGetUtility.Wrapper.MsBuildWrapper; using NuGetUtility.Wrapper.NuGetWrapper.Frameworks; @@ -9,166 +10,243 @@ namespace NuGetUtility.Test.ReferencedPackagesReader { - [TestFixture, FixtureLifeCycle(LifeCycle.InstancePerTestCase)] public class ReferencedPackagesReaderIntegrationTest { - [SetUp] - public void SetUp() + private readonly ReferencedPackageReader? _uut; + private readonly bool _canRun; + + public ReferencedPackagesReaderIntegrationTest() { #if NETFRAMEWORK IPackagesConfigReader packagesConfigReader = new WindowsPackagesConfigReader(); #else - IPackagesConfigReader packagesConfigReader = OperatingSystem.IsWindows() ? new WindowsPackagesConfigReader() : new FailingPackagesConfigReader(); + IPackagesConfigReader packagesConfigReader = RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? new WindowsPackagesConfigReader() : new FailingPackagesConfigReader(); #endif - _uut = new ReferencedPackageReader( - new MsBuildAbstraction(), - new LockFileFactory(), - new NuGetFrameworkUtility(), - new AssetsPackageDependencyReader(new NuGetFrameworkUtility()), - packagesConfigReader); + try + { + _uut = new ReferencedPackageReader( + new MsBuildAbstraction(), + new LockFileFactory(), + new NuGetFrameworkUtility(), + new AssetsPackageDependencyReader(new NuGetFrameworkUtility()), + packagesConfigReader); + _canRun = true; + } + catch + { + _canRun = false; + } } - private ReferencedPackageReader? _uut; + private bool CannotRun() => !_canRun || _uut is null; [Test] - public void GetInstalledPackagesShould_ReturnPackagesForActualProjectCorrectly() + public async Task GetInstalledPackagesShould_ReturnPackagesForActualProjectCorrectly() { + if (CannotRun()) + { + return; + } + string path = Path.GetFullPath("../../../../targets/PackageReferenceProject/PackageReferenceProject.csproj"); IEnumerable result = _uut!.GetInstalledPackages(path, false); - Assert.That(result.Count, Is.EqualTo(1)); + await Assert.That(result.Count()).IsEqualTo(1); } [Test] - public void GetInstalledPackagesShould_ReturnTransitivePackages() + public async Task GetInstalledPackagesShould_ReturnTransitivePackages() { + if (CannotRun()) + { + return; + } + string path = Path.GetFullPath( "../../../../targets/ProjectWithTransitiveReferences/ProjectWithTransitiveReferences.csproj"); IEnumerable result = _uut!.GetInstalledPackages(path, true); - Assert.That(result.Count, Is.EqualTo(1)); + await Assert.That(result.Count()).IsEqualTo(2); } [Test] - public void GetInstalledPackagesShould_ReturnTransitiveNuGet() + public async Task GetInstalledPackagesShould_ReturnTransitiveNuGet() { + if (CannotRun()) + { + return; + } + string path = Path.GetFullPath( "../../../../targets/ProjectWithTransitiveNuget/ProjectWithTransitiveNuget.csproj"); PackageIdentity[] result = _uut!.GetInstalledPackages(path, true).ToArray(); - Assert.That(result.Count, Is.EqualTo(3)); + await Assert.That(result.Length).IsEqualTo(3); string[] titles = result.Select(metadata => metadata.Id).ToArray(); - Assert.That(titles.Contains("NSubstitute"), Is.True); - Assert.That(titles.Contains("Castle.Core"), Is.True); - Assert.That(titles.Contains("System.Diagnostics.EventLog"), Is.True); + await Assert.That(titles.Contains("NSubstitute")).IsTrue(); + await Assert.That(titles.Contains("Castle.Core")).IsTrue(); + await Assert.That(titles.Contains("System.Diagnostics.EventLog")).IsTrue(); } [Test] - public void GetInstalledPackagesShould_ReturnEmptyEnumerable_For_ProjectsWithoutPackages() + public async Task GetInstalledPackagesShould_ReturnEmptyEnumerable_For_ProjectsWithoutPackages() { + if (CannotRun()) + { + return; + } + string path = Path.GetFullPath( "../../../../targets/ProjectWithoutNugetReferences/ProjectWithoutNugetReferences.csproj"); IEnumerable result = _uut!.GetInstalledPackages(path, false); - Assert.That(result.Count, Is.EqualTo(0)); + await Assert.That(result.Count()).IsEqualTo(0); } [Test] - public void GetInstalledPackagesShould_ReturnResolvedDependency_For_ProjectWithRangedDependencies([Values] bool includeTransitive) + [Arguments(true)] + [Arguments(false)] + public async Task GetInstalledPackagesShould_ReturnResolvedDependency_For_ProjectWithRangedDependencies(bool includeTransitive) { + if (CannotRun()) + { + return; + } + string path = Path.GetFullPath( "../../../../targets/VersionRangesProject/VersionRangesProject.csproj"); IEnumerable result = _uut!.GetInstalledPackages(path, includeTransitive); - Assert.That(result.Count, Is.EqualTo(includeTransitive ? 3 : 1)); + await Assert.That(result.Count()).IsEqualTo(includeTransitive ? 3 : 1); } [Test] - [Platform(Include = "Win")] - public void GetInstalledPackagesShould_ReturnPackages_For_PackagesConfigProject() + public async Task GetInstalledPackagesShould_ReturnPackages_For_PackagesConfigProject() { + if (CannotRun() || !RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) + { + return; + } + string path = Path.GetFullPath("../../../../targets/PackagesConfigProject/PackagesConfigProject.csproj"); IEnumerable result = _uut!.GetInstalledPackages(path, false); - Assert.That(result.Count, Is.EqualTo(1)); + await Assert.That(result.Count()).IsEqualTo(1); } [Test] - [Platform(Exclude = "Win")] - public void GetInstalledPackagesShould_ThrowError_PackagesConfigProject() + public async Task GetInstalledPackagesShould_ThrowError_PackagesConfigProject() { + if (CannotRun() || RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) + { + return; + } + string path = Path.GetFullPath("../../../../targets/PackagesConfigProject/PackagesConfigProject.csproj"); - PackagesConfigReaderException? exception = Assert.Throws(() => _uut!.GetInstalledPackages(path, false)); - Assert.That(exception?.Message, Is.EqualTo($"Invalid project structure detected. Currently packages.config projects are only supported on Windows (Project: {path})")); + await Assert.That(() => _uut!.GetInstalledPackages(path, false)) + .Throws() + .WithMessage($"Invalid project structure detected. Currently packages.config projects are only supported on Windows (Project: {path})"); } #if NETFRAMEWORK - [TestCase(true)] - [TestCase(false)] - public void GetInstalledPackagesShould_ReturnPackages_For_NativeCppProject_With_References(bool includeTransitive) + [Test] + [Arguments(true)] + [Arguments(false)] + public async Task GetInstalledPackagesShould_ReturnPackages_For_NativeCppProject_With_References(bool includeTransitive) { + if (CannotRun()) + { + return; + } + string path = Path.GetFullPath("../../../../targets/SimpleCppProject/SimpleCppProject.vcxproj"); IEnumerable result = _uut!.GetInstalledPackages(path, includeTransitive); - Assert.That(result.Count, Is.EqualTo(2)); + await Assert.That(result.Count()).IsEqualTo(2); } #else - [TestCase(true)] - [TestCase(false)] - public void GetInstalledPackagesShould_ThrowError_For_PackagesForNativeCppProject_With_References(bool includeTransitive) + [Test] + [Arguments(true)] + [Arguments(false)] + public async Task GetInstalledPackagesShould_ThrowError_For_PackagesForNativeCppProject_With_References(bool includeTransitive) { + if (CannotRun()) + { + return; + } + string path = Path.GetFullPath("../../../../targets/SimpleCppProject/SimpleCppProject.vcxproj"); - MsBuildAbstractionException? exception = Assert.Throws(() => _uut!.GetInstalledPackages(path, includeTransitive)); - Assert.That(exception?.Message, Is.EqualTo($"Please use the .net Framework version to analyze c++ projects (Project: {path})")); + await Assert.That(() => _uut!.GetInstalledPackages(path, includeTransitive)) + .Throws() + .WithMessage($"Please use the .net Framework version to analyze c++ projects (Project: {path})"); } #endif #if NETFRAMEWORK - [TestCase(true)] - [TestCase(false)] - public void GetInstalledPackagesShould_ReturnPackages_For_NativeCppProject_Without_References(bool includeTransitive) + [Test] + [Arguments(true)] + [Arguments(false)] + public async Task GetInstalledPackagesShould_ReturnPackages_For_NativeCppProject_Without_References(bool includeTransitive) { + if (CannotRun()) + { + return; + } + string path = Path.GetFullPath("../../../../targets/EmptyCppProject/EmptyCppProject.vcxproj"); IEnumerable result = _uut!.GetInstalledPackages(path, includeTransitive); - Assert.That(result.Count, Is.EqualTo(0)); + await Assert.That(result.Count()).IsEqualTo(0); } #else - [TestCase(true)] - [TestCase(false)] - public void GetInstalledPackagesShould_ThrowError_For_PackagesForNativeCppProject_Without_References(bool includeTransitive) + [Test] + [Arguments(true)] + [Arguments(false)] + public async Task GetInstalledPackagesShould_ThrowError_For_PackagesForNativeCppProject_Without_References(bool includeTransitive) { + if (CannotRun()) + { + return; + } + string path = Path.GetFullPath("../../../../targets/EmptyCppProject/EmptyCppProject.vcxproj"); - MsBuildAbstractionException? exception = Assert.Throws(() => _uut!.GetInstalledPackages(path, includeTransitive)); - Assert.That(exception?.Message, Is.EqualTo($"Please use the .net Framework version to analyze c++ projects (Project: {path})")); + await Assert.That(() => _uut!.GetInstalledPackages(path, includeTransitive)) + .Throws() + .WithMessage($"Please use the .net Framework version to analyze c++ projects (Project: {path})"); } #endif - [TestCase("net9.0", false, "TinyCsvParser")] - [TestCase("net8.0", false, "Microsoft.Extensions.Logging.Abstractions")] - [TestCase("net8.0-browser", false, "Microsoft.Extensions.Logging.Abstractions")] - [TestCase("net9.0", true, "TinyCsvParser")] - [TestCase("net8.0", true, "Microsoft.Extensions.Logging.Abstractions", "Microsoft.Extensions.DependencyInjection.Abstractions", "System.Diagnostics.DiagnosticSource")] - [TestCase("net8.0-browser", true, "Microsoft.Extensions.Logging.Abstractions", "Microsoft.Extensions.DependencyInjection.Abstractions", "System.Diagnostics.DiagnosticSource")] - public void GetInstalledPackagesShould_OnlyReturn_PackagesPackagesReferencedByRequestedFramework(string framework, bool includeTransitive, params string[] packages) + [Test] + [Arguments("net9.0", false, new[] { "TinyCsvParser" })] + [Arguments("net8.0", false, new[] { "Microsoft.Extensions.Logging.Abstractions" })] + [Arguments("net8.0-browser", false, new[] { "Microsoft.Extensions.Logging.Abstractions" })] + [Arguments("net9.0", true, new[] { "System.IO.Pipelines", "TinyCsvParser" })] + [Arguments("net8.0", true, new[] { "Microsoft.Extensions.Logging.Abstractions", "Microsoft.Extensions.DependencyInjection.Abstractions", "System.Diagnostics.DiagnosticSource" })] + [Arguments("net8.0-browser", true, new[] { "Microsoft.Extensions.Logging.Abstractions", "Microsoft.Extensions.DependencyInjection.Abstractions", "System.Diagnostics.DiagnosticSource" })] + public async Task GetInstalledPackagesShould_OnlyReturn_PackagesPackagesReferencedByRequestedFramework(string framework, bool includeTransitive, string[] packages) { + if (CannotRun()) + { + return; + } + string path = Path.GetFullPath("../../../../targets/MultiTargetProjectWithDifferentDependencies/MultiTargetProjectWithDifferentDependencies.csproj"); IEnumerable result = _uut!.GetInstalledPackages(path, includeTransitive, framework); - Assert.That(result.Select(p => p.Id), Is.EquivalentTo(packages)); + await Assert.That(result.Select(p => p.Id)).IsEquivalentTo(packages); } } } diff --git a/tests/NuGetUtility.UrlToLicenseMapping.Test/NuGetUtility.UrlToLicenseMapping.Test.csproj b/tests/NuGetUtility.UrlToLicenseMapping.Test/NuGetUtility.UrlToLicenseMapping.Test.csproj index c773a260..3c38e25e 100644 --- a/tests/NuGetUtility.UrlToLicenseMapping.Test/NuGetUtility.UrlToLicenseMapping.Test.csproj +++ b/tests/NuGetUtility.UrlToLicenseMapping.Test/NuGetUtility.UrlToLicenseMapping.Test.csproj @@ -14,15 +14,15 @@ - + - + all runtime; build; native; contentfiles; analyzers; buildtransitive - + diff --git a/tests/NuGetUtility.UrlToLicenseMapping.Test/Result.cs b/tests/NuGetUtility.UrlToLicenseMapping.Test/Result.cs index e8ce18f6..90481d2f 100644 --- a/tests/NuGetUtility.UrlToLicenseMapping.Test/Result.cs +++ b/tests/NuGetUtility.UrlToLicenseMapping.Test/Result.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using System.Diagnostics.CodeAnalysis; diff --git a/tests/NuGetUtility.UrlToLicenseMapping.Test/UrlToLicenseMappingTest.cs b/tests/NuGetUtility.UrlToLicenseMapping.Test/UrlToLicenseMappingTest.cs index 432fe8b9..5c8ed54b 100644 --- a/tests/NuGetUtility.UrlToLicenseMapping.Test/UrlToLicenseMappingTest.cs +++ b/tests/NuGetUtility.UrlToLicenseMapping.Test/UrlToLicenseMappingTest.cs @@ -1,4 +1,4 @@ -// Licensed to the projects contributors. +// Licensed to the project contributors. // The license conditions are provided in the LICENSE file located in the project root using System.Collections.Concurrent; diff --git a/tests/targets/MultiTargetProjectWithDifferentDependencies/MultiTargetProjectWithDifferentDependencies.csproj b/tests/targets/MultiTargetProjectWithDifferentDependencies/MultiTargetProjectWithDifferentDependencies.csproj index d40ad81e..29cfd716 100644 --- a/tests/targets/MultiTargetProjectWithDifferentDependencies/MultiTargetProjectWithDifferentDependencies.csproj +++ b/tests/targets/MultiTargetProjectWithDifferentDependencies/MultiTargetProjectWithDifferentDependencies.csproj @@ -5,7 +5,7 @@ - + diff --git a/tests/targets/PackageReferenceProject/PackageReferenceProject.csproj b/tests/targets/PackageReferenceProject/PackageReferenceProject.csproj index 4a055a23..22c33b17 100644 --- a/tests/targets/PackageReferenceProject/PackageReferenceProject.csproj +++ b/tests/targets/PackageReferenceProject/PackageReferenceProject.csproj @@ -9,7 +9,7 @@ - + diff --git a/tests/targets/PackagesConfigProject/Properties/AssemblyInfo.cs b/tests/targets/PackagesConfigProject/Properties/AssemblyInfo.cs index f4480ea7..dbe1cbd5 100644 --- a/tests/targets/PackagesConfigProject/Properties/AssemblyInfo.cs +++ b/tests/targets/PackagesConfigProject/Properties/AssemblyInfo.cs @@ -1,4 +1,7 @@ -using System.Reflection; +// Licensed to the project contributors. +// The license conditions are provided in the LICENSE file located in the project root + +using System.Reflection; using System.Runtime.InteropServices; // General Information about an assembly is controlled through the following