From a5961541e1297cd6901acb15bcf2096fcfca2fdb Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 17 Sep 2025 20:39:55 +0000 Subject: [PATCH 1/7] Initial plan From f6a143938e718f91f87adfa5d6eaa4a53283d950 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 17 Sep 2025 20:44:57 +0000 Subject: [PATCH 2/7] Initial formatting cleanup for SonarCloud issues baseline Co-authored-by: christianhelle <710400+christianhelle@users.noreply.github.com> --- dotnet-install.sh | 1888 +++++++++++++++++ .../ApizrRegistrationGenerator.cs | 24 +- .../DependencyInjectionGenerator.cs | 14 +- src/Refitter.Core/EnumExtensions.cs | 2 +- src/Refitter.Core/FilenameConstants.cs | 4 +- src/Refitter.Core/IdentifierUtils.cs | 2 +- src/Refitter.Core/OpenApiDocumentFactory.cs | 14 +- src/Refitter.Core/OperationNameGenerator.cs | 4 +- src/Refitter.Core/ParameterExtractor.cs | 6 +- src/Refitter.Core/RefitGeneratedCode.cs | 2 +- src/Refitter.Core/RefitInterfaceGenerator.cs | 2 +- src/Refitter.Core/SchemaCleaner.cs | 2 +- .../Settings/CacheProviderType.cs | 14 +- .../Settings/MappingProviderType.cs | 8 +- .../Settings/OperationNameGeneratorTypes.cs | 2 +- .../Settings/RefitGeneratorSettings.cs | 4 +- src/Refitter.Core/StringCasingExtensions.cs | 2 +- src/Refitter.Core/WellKnownNamesspaces.cs | 2 +- src/Refitter.MSBuild/RefitterGenerateTask.cs | 6 +- .../CustomOutputFolderGeneratorTests.cs | 4 +- .../DelegatingHandlers.cs | 4 +- .../MultipleInterfaceByTagGeneratorTests.cs | 4 +- .../MultipleInterfaceGeneratorTests.cs | 2 +- .../OptionalParametersGeneratorTest.cs | 4 +- .../SingleInterfaceGeneratorTest.cs | 4 +- src/Refitter.Tests/Build/BuildHelper.cs | 4 +- .../CustomCSharpGeneratorSettingsTests.cs | 2 +- ...neratorWithMicrosoftHttpResilienceTests.cs | 4 +- ...endencyInjectionGeneratorWithPollyTests.cs | 4 +- .../Examples/AdditionalNamespacesTests.cs | 4 +- src/Refitter.Tests/Examples/ApizrTests.cs | 2 +- ...ReturnMultipleInterfacesByEndpointTests.cs | 4 +- ...yTypeReturnMultipleInterfacesByTagTests.cs | 4 +- .../Examples/ArrayTypeReturnTests.cs | 4 +- .../Examples/CaseSensitiveParametersTests.cs | 2 +- .../Examples/CollectionFormatTests.cs | 4 +- .../Examples/ColonsInPathTests.cs | 2 +- .../CustomCodeGeneratorWithDateTimeTests.cs | 4 +- .../Examples/DeprecatedEndpointTests.cs | 2 +- .../DeprecatedEndpointsSkippedTests.cs | 2 +- ...ipleInterfaceByTagEndpointsSkippedTests.cs | 2 +- ...dMultipleInterfaceEndpointsSkippedTests.cs | 2 +- .../Examples/FilterByPathTests.cs | 2 +- .../Examples/FilterByTagsTests.cs | 2 +- .../IncludeInheritanceHierarchyTests.cs | 116 +- .../Examples/KeepSchemaPatternsTests.cs | 6 +- .../Examples/NoContentApiResponseTests.cs | 2 +- .../Examples/OctetStreamBodyTests.cs | 6 +- .../Examples/OpenApiUrlTests.cs | 4 +- .../OptionalNullableParametersTests.cs | 4 +- .../Examples/PathParametersTests.cs | 2 +- .../Examples/PoorOperationIdsTests.cs | 4 +- .../Examples/SystemPropertyInContractTests.cs | 4 +- .../Examples/TrimUnusedSchemaTests.cs | 4 +- src/Refitter.Tests/IllegalSymbolsTests.cs | 4 +- .../OpenApiDocumentFactoryTests.cs | 6 +- .../PathParametersWithUrlTests.cs | 2 +- .../RefitInterfaceImportTests.cs | 6 +- .../Resources/EmbeddedResources.cs | 2 +- .../Resources/SampleOpenSpecifications.cs | 2 +- .../StringCasingExtensionTests.cs | 2 +- .../SwaggerPetstoreApizrTests.cs | 62 +- .../SwaggerPetstoreMultipleFileTests.cs | 2 +- src/Refitter.Tests/TestFile.cs | 4 +- .../XmlDocumentationGeneratorTests.cs | 11 +- src/Refitter/GenerateCommand.cs | 6 +- src/Refitter/Program.cs | 8 +- src/Refitter/Settings.cs | 2 +- src/Refitter/SettingsValidator.cs | 4 +- src/Refitter/SupportInformation.cs | 2 +- src/Refitter/SupportKeyInitializer.cs | 2 +- src/Refitter/Validation/OpenApiStats.cs | 4 +- .../Validation/OpenApiValidationException.cs | 6 +- .../Validation/OpenApiValidationResult.cs | 6 +- src/Refitter/Validation/OpenApiValidator.cs | 4 +- 75 files changed, 2138 insertions(+), 241 deletions(-) create mode 100755 dotnet-install.sh diff --git a/dotnet-install.sh b/dotnet-install.sh new file mode 100755 index 000000000..034d2dfb1 --- /dev/null +++ b/dotnet-install.sh @@ -0,0 +1,1888 @@ +#!/usr/bin/env bash +# Copyright (c) .NET Foundation and contributors. All rights reserved. +# Licensed under the MIT license. See LICENSE file in the project root for full license information. +# + +# Stop script on NZEC +set -e +# Stop script if unbound variable found (use ${var:-} if intentional) +set -u +# By default cmd1 | cmd2 returns exit code of cmd2 regardless of cmd1 success +# This is causing it to fail +set -o pipefail + +# Use in the the functions: eval $invocation +invocation='say_verbose "Calling: ${yellow:-}${FUNCNAME[0]} ${green:-}$*${normal:-}"' + +# standard output may be used as a return value in the functions +# we need a way to write text on the screen in the functions so that +# it won't interfere with the return value. +# Exposing stream 3 as a pipe to standard output of the script itself +exec 3>&1 + +# Setup some colors to use. These need to work in fairly limited shells, like the Ubuntu Docker container where there are only 8 colors. +# See if stdout is a terminal +if [ -t 1 ] && command -v tput > /dev/null; then + # see if it supports colors + ncolors=$(tput colors || echo 0) + if [ -n "$ncolors" ] && [ $ncolors -ge 8 ]; then + bold="$(tput bold || echo)" + normal="$(tput sgr0 || echo)" + black="$(tput setaf 0 || echo)" + red="$(tput setaf 1 || echo)" + green="$(tput setaf 2 || echo)" + yellow="$(tput setaf 3 || echo)" + blue="$(tput setaf 4 || echo)" + magenta="$(tput setaf 5 || echo)" + cyan="$(tput setaf 6 || echo)" + white="$(tput setaf 7 || echo)" + fi +fi + +say_warning() { + printf "%b\n" "${yellow:-}dotnet_install: Warning: $1${normal:-}" >&3 +} + +say_err() { + printf "%b\n" "${red:-}dotnet_install: Error: $1${normal:-}" >&2 +} + +say() { + # using stream 3 (defined in the beginning) to not interfere with stdout of functions + # which may be used as return value + printf "%b\n" "${cyan:-}dotnet-install:${normal:-} $1" >&3 +} + +say_verbose() { + if [ "$verbose" = true ]; then + say "$1" + fi +} + +# This platform list is finite - if the SDK/Runtime has supported Linux distribution-specific assets, +# then and only then should the Linux distribution appear in this list. +# Adding a Linux distribution to this list does not imply distribution-specific support. +get_legacy_os_name_from_platform() { + eval $invocation + + platform="$1" + case "$platform" in + "centos.7") + echo "centos" + return 0 + ;; + "debian.8") + echo "debian" + return 0 + ;; + "debian.9") + echo "debian.9" + return 0 + ;; + "fedora.23") + echo "fedora.23" + return 0 + ;; + "fedora.24") + echo "fedora.24" + return 0 + ;; + "fedora.27") + echo "fedora.27" + return 0 + ;; + "fedora.28") + echo "fedora.28" + return 0 + ;; + "opensuse.13.2") + echo "opensuse.13.2" + return 0 + ;; + "opensuse.42.1") + echo "opensuse.42.1" + return 0 + ;; + "opensuse.42.3") + echo "opensuse.42.3" + return 0 + ;; + "rhel.7"*) + echo "rhel" + return 0 + ;; + "ubuntu.14.04") + echo "ubuntu" + return 0 + ;; + "ubuntu.16.04") + echo "ubuntu.16.04" + return 0 + ;; + "ubuntu.16.10") + echo "ubuntu.16.10" + return 0 + ;; + "ubuntu.18.04") + echo "ubuntu.18.04" + return 0 + ;; + "alpine.3.4.3") + echo "alpine" + return 0 + ;; + esac + return 1 +} + +get_legacy_os_name() { + eval $invocation + + local uname=$(uname) + if [ "$uname" = "Darwin" ]; then + echo "osx" + return 0 + elif [ -n "$runtime_id" ]; then + echo $(get_legacy_os_name_from_platform "${runtime_id%-*}" || echo "${runtime_id%-*}") + return 0 + else + if [ -e /etc/os-release ]; then + . /etc/os-release + os=$(get_legacy_os_name_from_platform "$ID${VERSION_ID:+.${VERSION_ID}}" || echo "") + if [ -n "$os" ]; then + echo "$os" + return 0 + fi + fi + fi + + say_verbose "Distribution specific OS name and version could not be detected: UName = $uname" + return 1 +} + +get_linux_platform_name() { + eval $invocation + + if [ -n "$runtime_id" ]; then + echo "${runtime_id%-*}" + return 0 + else + if [ -e /etc/os-release ]; then + . /etc/os-release + echo "$ID${VERSION_ID:+.${VERSION_ID}}" + return 0 + elif [ -e /etc/redhat-release ]; then + local redhatRelease=$(&1 || true) | grep -q musl +} + +get_current_os_name() { + eval $invocation + + local uname=$(uname) + if [ "$uname" = "Darwin" ]; then + echo "osx" + return 0 + elif [ "$uname" = "FreeBSD" ]; then + echo "freebsd" + return 0 + elif [ "$uname" = "Linux" ]; then + local linux_platform_name="" + linux_platform_name="$(get_linux_platform_name)" || true + + if [ "$linux_platform_name" = "rhel.6" ]; then + echo $linux_platform_name + return 0 + elif is_musl_based_distro; then + echo "linux-musl" + return 0 + elif [ "$linux_platform_name" = "linux-musl" ]; then + echo "linux-musl" + return 0 + else + echo "linux" + return 0 + fi + fi + + say_err "OS name could not be detected: UName = $uname" + return 1 +} + +machine_has() { + eval $invocation + + command -v "$1" > /dev/null 2>&1 + return $? +} + +check_min_reqs() { + local hasMinimum=false + if machine_has "curl"; then + hasMinimum=true + elif machine_has "wget"; then + hasMinimum=true + fi + + if [ "$hasMinimum" = "false" ]; then + say_err "curl (recommended) or wget are required to download dotnet. Install missing prerequisite to proceed." + return 1 + fi + return 0 +} + +# args: +# input - $1 +to_lowercase() { + #eval $invocation + + echo "$1" | tr '[:upper:]' '[:lower:]' + return 0 +} + +# args: +# input - $1 +remove_trailing_slash() { + #eval $invocation + + local input="${1:-}" + echo "${input%/}" + return 0 +} + +# args: +# input - $1 +remove_beginning_slash() { + #eval $invocation + + local input="${1:-}" + echo "${input#/}" + return 0 +} + +# args: +# root_path - $1 +# child_path - $2 - this parameter can be empty +combine_paths() { + eval $invocation + + # TODO: Consider making it work with any number of paths. For now: + if [ ! -z "${3:-}" ]; then + say_err "combine_paths: Function takes two parameters." + return 1 + fi + + local root_path="$(remove_trailing_slash "$1")" + local child_path="$(remove_beginning_slash "${2:-}")" + say_verbose "combine_paths: root_path=$root_path" + say_verbose "combine_paths: child_path=$child_path" + echo "$root_path/$child_path" + return 0 +} + +get_machine_architecture() { + eval $invocation + + if command -v uname > /dev/null; then + CPUName=$(uname -m) + case $CPUName in + armv1*|armv2*|armv3*|armv4*|armv5*|armv6*) + echo "armv6-or-below" + return 0 + ;; + armv*l) + echo "arm" + return 0 + ;; + aarch64|arm64) + if [ "$(getconf LONG_BIT)" -lt 64 ]; then + # This is 32-bit OS running on 64-bit CPU (for example Raspberry Pi OS) + echo "arm" + return 0 + fi + echo "arm64" + return 0 + ;; + s390x) + echo "s390x" + return 0 + ;; + ppc64le) + echo "ppc64le" + return 0 + ;; + loongarch64) + echo "loongarch64" + return 0 + ;; + riscv64) + echo "riscv64" + return 0 + ;; + powerpc|ppc) + echo "ppc" + return 0 + ;; + esac + fi + + # Always default to 'x64' + echo "x64" + return 0 +} + +# args: +# architecture - $1 +get_normalized_architecture_from_architecture() { + eval $invocation + + local architecture="$(to_lowercase "$1")" + + if [[ $architecture == \ ]]; then + machine_architecture="$(get_machine_architecture)" + if [[ "$machine_architecture" == "armv6-or-below" ]]; then + say_err "Architecture \`$machine_architecture\` not supported. If you think this is a bug, report it at https://github.com/dotnet/install-scripts/issues" + return 1 + fi + + echo $machine_architecture + return 0 + fi + + case "$architecture" in + amd64|x64) + echo "x64" + return 0 + ;; + arm) + echo "arm" + return 0 + ;; + arm64) + echo "arm64" + return 0 + ;; + s390x) + echo "s390x" + return 0 + ;; + ppc64le) + echo "ppc64le" + return 0 + ;; + loongarch64) + echo "loongarch64" + return 0 + ;; + esac + + say_err "Architecture \`$architecture\` not supported. If you think this is a bug, report it at https://github.com/dotnet/install-scripts/issues" + return 1 +} + +# args: +# version - $1 +# channel - $2 +# architecture - $3 +get_normalized_architecture_for_specific_sdk_version() { + eval $invocation + + local is_version_support_arm64="$(is_arm64_supported "$1")" + local is_channel_support_arm64="$(is_arm64_supported "$2")" + local architecture="$3"; + local osname="$(get_current_os_name)" + + if [ "$osname" == "osx" ] && [ "$architecture" == "arm64" ] && { [ "$is_version_support_arm64" = false ] || [ "$is_channel_support_arm64" = false ]; }; then + #check if rosetta is installed + if [ "$(/usr/bin/pgrep oahd >/dev/null 2>&1;echo $?)" -eq 0 ]; then + say_verbose "Changing user architecture from '$architecture' to 'x64' because .NET SDKs prior to version 6.0 do not support arm64." + echo "x64" + return 0; + else + say_err "Architecture \`$architecture\` is not supported for .NET SDK version \`$version\`. Please install Rosetta to allow emulation of the \`$architecture\` .NET SDK on this platform" + return 1 + fi + fi + + echo "$architecture" + return 0 +} + +# args: +# version or channel - $1 +is_arm64_supported() { + # Extract the major version by splitting on the dot + major_version="${1%%.*}" + + # Check if the major version is a valid number and less than 6 + case "$major_version" in + [0-9]*) + if [ "$major_version" -lt 6 ]; then + echo false + return 0 + fi + ;; + esac + + echo true + return 0 +} + +# args: +# user_defined_os - $1 +get_normalized_os() { + eval $invocation + + local osname="$(to_lowercase "$1")" + if [ ! -z "$osname" ]; then + case "$osname" in + osx | freebsd | rhel.6 | linux-musl | linux) + echo "$osname" + return 0 + ;; + macos) + osname='osx' + echo "$osname" + return 0 + ;; + *) + say_err "'$user_defined_os' is not a supported value for --os option, supported values are: osx, macos, linux, linux-musl, freebsd, rhel.6. If you think this is a bug, report it at https://github.com/dotnet/install-scripts/issues." + return 1 + ;; + esac + else + osname="$(get_current_os_name)" || return 1 + fi + echo "$osname" + return 0 +} + +# args: +# quality - $1 +get_normalized_quality() { + eval $invocation + + local quality="$(to_lowercase "$1")" + if [ ! -z "$quality" ]; then + case "$quality" in + daily | preview) + echo "$quality" + return 0 + ;; + ga) + #ga quality is available without specifying quality, so normalizing it to empty + return 0 + ;; + *) + say_err "'$quality' is not a supported value for --quality option. Supported values are: daily, preview, ga. If you think this is a bug, report it at https://github.com/dotnet/install-scripts/issues." + return 1 + ;; + esac + fi + return 0 +} + +# args: +# channel - $1 +get_normalized_channel() { + eval $invocation + + local channel="$(to_lowercase "$1")" + + if [[ $channel == current ]]; then + say_warning 'Value "Current" is deprecated for -Channel option. Use "STS" instead.' + fi + + if [[ $channel == release/* ]]; then + say_warning 'Using branch name with -Channel option is no longer supported with newer releases. Use -Quality option with a channel in X.Y format instead.'; + fi + + if [ ! -z "$channel" ]; then + case "$channel" in + lts) + echo "LTS" + return 0 + ;; + sts) + echo "STS" + return 0 + ;; + current) + echo "STS" + return 0 + ;; + *) + echo "$channel" + return 0 + ;; + esac + fi + + return 0 +} + +# args: +# runtime - $1 +get_normalized_product() { + eval $invocation + + local product="" + local runtime="$(to_lowercase "$1")" + if [[ "$runtime" == "dotnet" ]]; then + product="dotnet-runtime" + elif [[ "$runtime" == "aspnetcore" ]]; then + product="aspnetcore-runtime" + elif [ -z "$runtime" ]; then + product="dotnet-sdk" + fi + echo "$product" + return 0 +} + +# The version text returned from the feeds is a 1-line or 2-line string: +# For the SDK and the dotnet runtime (2 lines): +# Line 1: # commit_hash +# Line 2: # 4-part version +# For the aspnetcore runtime (1 line): +# Line 1: # 4-part version + +# args: +# version_text - stdin +get_version_from_latestversion_file_content() { + eval $invocation + + cat | tail -n 1 | sed 's/\r$//' + return 0 +} + +# args: +# install_root - $1 +# relative_path_to_package - $2 +# specific_version - $3 +is_dotnet_package_installed() { + eval $invocation + + local install_root="$1" + local relative_path_to_package="$2" + local specific_version="${3//[$'\t\r\n']}" + + local dotnet_package_path="$(combine_paths "$(combine_paths "$install_root" "$relative_path_to_package")" "$specific_version")" + say_verbose "is_dotnet_package_installed: dotnet_package_path=$dotnet_package_path" + + if [ -d "$dotnet_package_path" ]; then + return 0 + else + return 1 + fi +} + +# args: +# downloaded file - $1 +# remote_file_size - $2 +validate_remote_local_file_sizes() +{ + eval $invocation + + local downloaded_file="$1" + local remote_file_size="$2" + local file_size='' + + if [[ "$OSTYPE" == "linux-gnu"* ]]; then + file_size="$(stat -c '%s' "$downloaded_file")" + elif [[ "$OSTYPE" == "darwin"* ]]; then + # hardcode in order to avoid conflicts with GNU stat + file_size="$(/usr/bin/stat -f '%z' "$downloaded_file")" + fi + + if [ -n "$file_size" ]; then + say "Downloaded file size is $file_size bytes." + + if [ -n "$remote_file_size" ] && [ -n "$file_size" ]; then + if [ "$remote_file_size" -ne "$file_size" ]; then + say "The remote and local file sizes are not equal. The remote file size is $remote_file_size bytes and the local size is $file_size bytes. The local package may be corrupted." + else + say "The remote and local file sizes are equal." + fi + fi + + else + say "Either downloaded or local package size can not be measured. One of them may be corrupted." + fi +} + +# args: +# azure_feed - $1 +# channel - $2 +# normalized_architecture - $3 +get_version_from_latestversion_file() { + eval $invocation + + local azure_feed="$1" + local channel="$2" + local normalized_architecture="$3" + + local version_file_url=null + if [[ "$runtime" == "dotnet" ]]; then + version_file_url="$azure_feed/Runtime/$channel/latest.version" + elif [[ "$runtime" == "aspnetcore" ]]; then + version_file_url="$azure_feed/aspnetcore/Runtime/$channel/latest.version" + elif [ -z "$runtime" ]; then + version_file_url="$azure_feed/Sdk/$channel/latest.version" + else + say_err "Invalid value for \$runtime" + return 1 + fi + say_verbose "get_version_from_latestversion_file: latest url: $version_file_url" + + download "$version_file_url" || return $? + return 0 +} + +# args: +# json_file - $1 +parse_globaljson_file_for_version() { + eval $invocation + + local json_file="$1" + if [ ! -f "$json_file" ]; then + say_err "Unable to find \`$json_file\`" + return 1 + fi + + sdk_section=$(cat $json_file | tr -d "\r" | awk '/"sdk"/,/}/') + if [ -z "$sdk_section" ]; then + say_err "Unable to parse the SDK node in \`$json_file\`" + return 1 + fi + + sdk_list=$(echo $sdk_section | awk -F"[{}]" '{print $2}') + sdk_list=${sdk_list//[\" ]/} + sdk_list=${sdk_list//,/$'\n'} + + local version_info="" + while read -r line; do + IFS=: + while read -r key value; do + if [[ "$key" == "version" ]]; then + version_info=$value + fi + done <<< "$line" + done <<< "$sdk_list" + if [ -z "$version_info" ]; then + say_err "Unable to find the SDK:version node in \`$json_file\`" + return 1 + fi + + unset IFS; + echo "$version_info" + return 0 +} + +# args: +# azure_feed - $1 +# channel - $2 +# normalized_architecture - $3 +# version - $4 +# json_file - $5 +get_specific_version_from_version() { + eval $invocation + + local azure_feed="$1" + local channel="$2" + local normalized_architecture="$3" + local version="$(to_lowercase "$4")" + local json_file="$5" + + if [ -z "$json_file" ]; then + if [[ "$version" == "latest" ]]; then + local version_info + version_info="$(get_version_from_latestversion_file "$azure_feed" "$channel" "$normalized_architecture" false)" || return 1 + say_verbose "get_specific_version_from_version: version_info=$version_info" + echo "$version_info" | get_version_from_latestversion_file_content + return 0 + else + echo "$version" + return 0 + fi + else + local version_info + version_info="$(parse_globaljson_file_for_version "$json_file")" || return 1 + echo "$version_info" + return 0 + fi +} + +# args: +# azure_feed - $1 +# channel - $2 +# normalized_architecture - $3 +# specific_version - $4 +# normalized_os - $5 +construct_download_link() { + eval $invocation + + local azure_feed="$1" + local channel="$2" + local normalized_architecture="$3" + local specific_version="${4//[$'\t\r\n']}" + local specific_product_version="$(get_specific_product_version "$1" "$4")" + local osname="$5" + + local download_link=null + if [[ "$runtime" == "dotnet" ]]; then + download_link="$azure_feed/Runtime/$specific_version/dotnet-runtime-$specific_product_version-$osname-$normalized_architecture.tar.gz" + elif [[ "$runtime" == "aspnetcore" ]]; then + download_link="$azure_feed/aspnetcore/Runtime/$specific_version/aspnetcore-runtime-$specific_product_version-$osname-$normalized_architecture.tar.gz" + elif [ -z "$runtime" ]; then + download_link="$azure_feed/Sdk/$specific_version/dotnet-sdk-$specific_product_version-$osname-$normalized_architecture.tar.gz" + else + return 1 + fi + + echo "$download_link" + return 0 +} + +# args: +# azure_feed - $1 +# specific_version - $2 +# download link - $3 (optional) +get_specific_product_version() { + # If we find a 'productVersion.txt' at the root of any folder, we'll use its contents + # to resolve the version of what's in the folder, superseding the specified version. + # if 'productVersion.txt' is missing but download link is already available, product version will be taken from download link + eval $invocation + + local azure_feed="$1" + local specific_version="${2//[$'\t\r\n']}" + local package_download_link="" + if [ $# -gt 2 ]; then + local package_download_link="$3" + fi + local specific_product_version=null + + # Try to get the version number, using the productVersion.txt file located next to the installer file. + local download_links=($(get_specific_product_version_url "$azure_feed" "$specific_version" true "$package_download_link") + $(get_specific_product_version_url "$azure_feed" "$specific_version" false "$package_download_link")) + + for download_link in "${download_links[@]}" + do + say_verbose "Checking for the existence of $download_link" + + if machine_has "curl" + then + if ! specific_product_version=$(curl -s --fail "${download_link}${feed_credential}" 2>&1); then + continue + else + echo "${specific_product_version//[$'\t\r\n']}" + return 0 + fi + + elif machine_has "wget" + then + specific_product_version=$(wget -qO- "${download_link}${feed_credential}" 2>&1) + if [ $? = 0 ]; then + echo "${specific_product_version//[$'\t\r\n']}" + return 0 + fi + fi + done + + # Getting the version number with productVersion.txt has failed. Try parsing the download link for a version number. + say_verbose "Failed to get the version using productVersion.txt file. Download link will be parsed instead." + specific_product_version="$(get_product_specific_version_from_download_link "$package_download_link" "$specific_version")" + echo "${specific_product_version//[$'\t\r\n']}" + return 0 +} + +# args: +# azure_feed - $1 +# specific_version - $2 +# is_flattened - $3 +# download link - $4 (optional) +get_specific_product_version_url() { + eval $invocation + + local azure_feed="$1" + local specific_version="$2" + local is_flattened="$3" + local package_download_link="" + if [ $# -gt 3 ]; then + local package_download_link="$4" + fi + + local pvFileName="productVersion.txt" + if [ "$is_flattened" = true ]; then + if [ -z "$runtime" ]; then + pvFileName="sdk-productVersion.txt" + elif [[ "$runtime" == "dotnet" ]]; then + pvFileName="runtime-productVersion.txt" + else + pvFileName="$runtime-productVersion.txt" + fi + fi + + local download_link=null + + if [ -z "$package_download_link" ]; then + if [[ "$runtime" == "dotnet" ]]; then + download_link="$azure_feed/Runtime/$specific_version/${pvFileName}" + elif [[ "$runtime" == "aspnetcore" ]]; then + download_link="$azure_feed/aspnetcore/Runtime/$specific_version/${pvFileName}" + elif [ -z "$runtime" ]; then + download_link="$azure_feed/Sdk/$specific_version/${pvFileName}" + else + return 1 + fi + else + download_link="${package_download_link%/*}/${pvFileName}" + fi + + say_verbose "Constructed productVersion link: $download_link" + echo "$download_link" + return 0 +} + +# args: +# download link - $1 +# specific version - $2 +get_product_specific_version_from_download_link() +{ + eval $invocation + + local download_link="$1" + local specific_version="$2" + local specific_product_version="" + + if [ -z "$download_link" ]; then + echo "$specific_version" + return 0 + fi + + #get filename + filename="${download_link##*/}" + + #product specific version follows the product name + #for filename 'dotnet-sdk-3.1.404-linux-x64.tar.gz': the product version is 3.1.404 + IFS='-' + read -ra filename_elems <<< "$filename" + count=${#filename_elems[@]} + if [[ "$count" -gt 2 ]]; then + specific_product_version="${filename_elems[2]}" + else + specific_product_version=$specific_version + fi + unset IFS; + echo "$specific_product_version" + return 0 +} + +# args: +# azure_feed - $1 +# channel - $2 +# normalized_architecture - $3 +# specific_version - $4 +construct_legacy_download_link() { + eval $invocation + + local azure_feed="$1" + local channel="$2" + local normalized_architecture="$3" + local specific_version="${4//[$'\t\r\n']}" + + local distro_specific_osname + distro_specific_osname="$(get_legacy_os_name)" || return 1 + + local legacy_download_link=null + if [[ "$runtime" == "dotnet" ]]; then + legacy_download_link="$azure_feed/Runtime/$specific_version/dotnet-$distro_specific_osname-$normalized_architecture.$specific_version.tar.gz" + elif [ -z "$runtime" ]; then + legacy_download_link="$azure_feed/Sdk/$specific_version/dotnet-dev-$distro_specific_osname-$normalized_architecture.$specific_version.tar.gz" + else + return 1 + fi + + echo "$legacy_download_link" + return 0 +} + +get_user_install_path() { + eval $invocation + + if [ ! -z "${DOTNET_INSTALL_DIR:-}" ]; then + echo "$DOTNET_INSTALL_DIR" + else + echo "$HOME/.dotnet" + fi + return 0 +} + +# args: +# install_dir - $1 +resolve_installation_path() { + eval $invocation + + local install_dir=$1 + if [ "$install_dir" = "" ]; then + local user_install_path="$(get_user_install_path)" + say_verbose "resolve_installation_path: user_install_path=$user_install_path" + echo "$user_install_path" + return 0 + fi + + echo "$install_dir" + return 0 +} + +# args: +# relative_or_absolute_path - $1 +get_absolute_path() { + eval $invocation + + local relative_or_absolute_path=$1 + echo "$(cd "$(dirname "$1")" && pwd -P)/$(basename "$1")" + return 0 +} + +# args: +# override - $1 (boolean, true or false) +get_cp_options() { + eval $invocation + + local override="$1" + local override_switch="" + + if [ "$override" = false ]; then + override_switch="-n" + + # create temporary files to check if 'cp -u' is supported + tmp_dir="$(mktemp -d)" + tmp_file="$tmp_dir/testfile" + tmp_file2="$tmp_dir/testfile2" + + touch "$tmp_file" + + # use -u instead of -n if it's available + if cp -u "$tmp_file" "$tmp_file2" 2>/dev/null; then + override_switch="-u" + fi + + # clean up + rm -f "$tmp_file" "$tmp_file2" + rm -rf "$tmp_dir" + fi + + echo "$override_switch" +} + +# args: +# input_files - stdin +# root_path - $1 +# out_path - $2 +# override - $3 +copy_files_or_dirs_from_list() { + eval $invocation + + local root_path="$(remove_trailing_slash "$1")" + local out_path="$(remove_trailing_slash "$2")" + local override="$3" + local override_switch="$(get_cp_options "$override")" + + cat | uniq | while read -r file_path; do + local path="$(remove_beginning_slash "${file_path#$root_path}")" + local target="$out_path/$path" + if [ "$override" = true ] || (! ([ -d "$target" ] || [ -e "$target" ])); then + mkdir -p "$out_path/$(dirname "$path")" + if [ -d "$target" ]; then + rm -rf "$target" + fi + cp -R $override_switch "$root_path/$path" "$target" + fi + done +} + +# args: +# zip_uri - $1 +get_remote_file_size() { + local zip_uri="$1" + + if machine_has "curl"; then + file_size=$(curl -sI "$zip_uri" | grep -i content-length | awk '{ num = $2 + 0; print num }') + elif machine_has "wget"; then + file_size=$(wget --spider --server-response -O /dev/null "$zip_uri" 2>&1 | grep -i 'Content-Length:' | awk '{ num = $2 + 0; print num }') + else + say "Neither curl nor wget is available on this system." + return + fi + + if [ -n "$file_size" ]; then + say "Remote file $zip_uri size is $file_size bytes." + echo "$file_size" + else + say_verbose "Content-Length header was not extracted for $zip_uri." + echo "" + fi +} + +# args: +# zip_path - $1 +# out_path - $2 +# remote_file_size - $3 +extract_dotnet_package() { + eval $invocation + + local zip_path="$1" + local out_path="$2" + local remote_file_size="$3" + + local temp_out_path="$(mktemp -d "$temporary_file_template")" + + local failed=false + tar -xzf "$zip_path" -C "$temp_out_path" > /dev/null || failed=true + + local folders_with_version_regex='^.*/[0-9]+\.[0-9]+[^/]+/' + find "$temp_out_path" -type f | grep -Eo "$folders_with_version_regex" | sort | copy_files_or_dirs_from_list "$temp_out_path" "$out_path" false + find "$temp_out_path" -type f | grep -Ev "$folders_with_version_regex" | copy_files_or_dirs_from_list "$temp_out_path" "$out_path" "$override_non_versioned_files" + + validate_remote_local_file_sizes "$zip_path" "$remote_file_size" + + rm -rf "$temp_out_path" + if [ -z ${keep_zip+x} ]; then + rm -f "$zip_path" && say_verbose "Temporary archive file $zip_path was removed" + fi + + if [ "$failed" = true ]; then + say_err "Extraction failed" + return 1 + fi + return 0 +} + +# args: +# remote_path - $1 +# disable_feed_credential - $2 +get_http_header() +{ + eval $invocation + local remote_path="$1" + local disable_feed_credential="$2" + + local failed=false + local response + if machine_has "curl"; then + get_http_header_curl $remote_path $disable_feed_credential || failed=true + elif machine_has "wget"; then + get_http_header_wget $remote_path $disable_feed_credential || failed=true + else + failed=true + fi + if [ "$failed" = true ]; then + say_verbose "Failed to get HTTP header: '$remote_path'." + return 1 + fi + return 0 +} + +# args: +# remote_path - $1 +# disable_feed_credential - $2 +get_http_header_curl() { + eval $invocation + local remote_path="$1" + local disable_feed_credential="$2" + + remote_path_with_credential="$remote_path" + if [ "$disable_feed_credential" = false ]; then + remote_path_with_credential+="$feed_credential" + fi + + curl_options="-I -sSL --retry 5 --retry-delay 2 --connect-timeout 15 " + curl $curl_options "$remote_path_with_credential" 2>&1 || return 1 + return 0 +} + +# args: +# remote_path - $1 +# disable_feed_credential - $2 +get_http_header_wget() { + eval $invocation + local remote_path="$1" + local disable_feed_credential="$2" + local wget_options="-q -S --spider --tries 5 " + + local wget_options_extra='' + + # Test for options that aren't supported on all wget implementations. + if [[ $(wget -h 2>&1 | grep -E 'waitretry|connect-timeout') ]]; then + wget_options_extra="--waitretry 2 --connect-timeout 15 " + else + say "wget extra options are unavailable for this environment" + fi + + remote_path_with_credential="$remote_path" + if [ "$disable_feed_credential" = false ]; then + remote_path_with_credential+="$feed_credential" + fi + + wget $wget_options $wget_options_extra "$remote_path_with_credential" 2>&1 + + return $? +} + +# args: +# remote_path - $1 +# [out_path] - $2 - stdout if not provided +download() { + eval $invocation + + local remote_path="$1" + local out_path="${2:-}" + + if [[ "$remote_path" != "http"* ]]; then + cp "$remote_path" "$out_path" + return $? + fi + + local failed=false + local attempts=0 + while [ $attempts -lt 3 ]; do + attempts=$((attempts+1)) + failed=false + if machine_has "curl"; then + downloadcurl "$remote_path" "$out_path" || failed=true + elif machine_has "wget"; then + downloadwget "$remote_path" "$out_path" || failed=true + else + say_err "Missing dependency: neither curl nor wget was found." + exit 1 + fi + + if [ "$failed" = false ] || [ $attempts -ge 3 ] || { [ ! -z $http_code ] && [ $http_code = "404" ]; }; then + break + fi + + say "Download attempt #$attempts has failed: $http_code $download_error_msg" + say "Attempt #$((attempts+1)) will start in $((attempts*10)) seconds." + sleep $((attempts*10)) + done + + if [ "$failed" = true ]; then + say_verbose "Download failed: $remote_path" + return 1 + fi + return 0 +} + +# Updates global variables $http_code and $download_error_msg +downloadcurl() { + eval $invocation + unset http_code + unset download_error_msg + local remote_path="$1" + local out_path="${2:-}" + # Append feed_credential as late as possible before calling curl to avoid logging feed_credential + # Avoid passing URI with credentials to functions: note, most of them echoing parameters of invocation in verbose output. + local remote_path_with_credential="${remote_path}${feed_credential}" + local curl_options="--retry 20 --retry-delay 2 --connect-timeout 15 -sSL -f --create-dirs " + local curl_exit_code=0; + if [ -z "$out_path" ]; then + curl_output=$(curl $curl_options "$remote_path_with_credential" 2>&1) + curl_exit_code=$? + echo "$curl_output" + else + curl_output=$(curl $curl_options -o "$out_path" "$remote_path_with_credential" 2>&1) + curl_exit_code=$? + fi + + # Regression in curl causes curl with --retry to return a 0 exit code even when it fails to download a file - https://github.com/curl/curl/issues/17554 + if [ $curl_exit_code -eq 0 ] && echo "$curl_output" | grep -q "^curl: ([0-9]*) "; then + curl_exit_code=$(echo "$curl_output" | sed 's/curl: (\([0-9]*\)).*/\1/') + fi + + if [ $curl_exit_code -gt 0 ]; then + download_error_msg="Unable to download $remote_path." + # Check for curl timeout codes + if [[ $curl_exit_code == 7 || $curl_exit_code == 28 ]]; then + download_error_msg+=" Failed to reach the server: connection timeout." + else + local disable_feed_credential=false + local response=$(get_http_header_curl $remote_path $disable_feed_credential) + http_code=$( echo "$response" | awk '/^HTTP/{print $2}' | tail -1 ) + if [[ ! -z $http_code && $http_code != 2* ]]; then + download_error_msg+=" Returned HTTP status code: $http_code." + fi + fi + say_verbose "$download_error_msg" + return 1 + fi + return 0 +} + + +# Updates global variables $http_code and $download_error_msg +downloadwget() { + eval $invocation + unset http_code + unset download_error_msg + local remote_path="$1" + local out_path="${2:-}" + # Append feed_credential as late as possible before calling wget to avoid logging feed_credential + local remote_path_with_credential="${remote_path}${feed_credential}" + local wget_options="--tries 20 " + + local wget_options_extra='' + local wget_result='' + + # Test for options that aren't supported on all wget implementations. + if [[ $(wget -h 2>&1 | grep -E 'waitretry|connect-timeout') ]]; then + wget_options_extra="--waitretry 2 --connect-timeout 15 " + else + say "wget extra options are unavailable for this environment" + fi + + if [ -z "$out_path" ]; then + wget -q $wget_options $wget_options_extra -O - "$remote_path_with_credential" 2>&1 + wget_result=$? + else + wget $wget_options $wget_options_extra -O "$out_path" "$remote_path_with_credential" 2>&1 + wget_result=$? + fi + + if [[ $wget_result != 0 ]]; then + local disable_feed_credential=false + local response=$(get_http_header_wget $remote_path $disable_feed_credential) + http_code=$( echo "$response" | awk '/^ HTTP/{print $2}' | tail -1 ) + download_error_msg="Unable to download $remote_path." + if [[ ! -z $http_code && $http_code != 2* ]]; then + download_error_msg+=" Returned HTTP status code: $http_code." + # wget exit code 4 stands for network-issue + elif [[ $wget_result == 4 ]]; then + download_error_msg+=" Failed to reach the server: connection timeout." + fi + say_verbose "$download_error_msg" + return 1 + fi + + return 0 +} + +get_download_link_from_aka_ms() { + eval $invocation + + #quality is not supported for LTS or STS channel + #STS maps to current + if [[ ! -z "$normalized_quality" && ("$normalized_channel" == "LTS" || "$normalized_channel" == "STS") ]]; then + normalized_quality="" + say_warning "Specifying quality for STS or LTS channel is not supported, the quality will be ignored." + fi + + say_verbose "Retrieving primary payload URL from aka.ms for channel: '$normalized_channel', quality: '$normalized_quality', product: '$normalized_product', os: '$normalized_os', architecture: '$normalized_architecture'." + + #construct aka.ms link + aka_ms_link="https://aka.ms/dotnet" + if [ "$internal" = true ]; then + aka_ms_link="$aka_ms_link/internal" + fi + aka_ms_link="$aka_ms_link/$normalized_channel" + if [[ ! -z "$normalized_quality" ]]; then + aka_ms_link="$aka_ms_link/$normalized_quality" + fi + aka_ms_link="$aka_ms_link/$normalized_product-$normalized_os-$normalized_architecture.tar.gz" + say_verbose "Constructed aka.ms link: '$aka_ms_link'." + + #get HTTP response + #do not pass credentials as a part of the $aka_ms_link and do not apply credentials in the get_http_header function + #otherwise the redirect link would have credentials as well + #it would result in applying credentials twice to the resulting link and thus breaking it, and in echoing credentials to the output as a part of redirect link + disable_feed_credential=true + response="$(get_http_header $aka_ms_link $disable_feed_credential)" + + say_verbose "Received response: $response" + # Get results of all the redirects. + http_codes=$( echo "$response" | awk '$1 ~ /^HTTP/ {print $2}' ) + # They all need to be 301, otherwise some links are broken (except for the last, which is not a redirect but 200 or 404). + broken_redirects=$( echo "$http_codes" | sed '$d' | grep -v '301' ) + # The response may end without final code 2xx/4xx/5xx somehow, e.g. network restrictions on www.bing.com causes redirecting to bing.com fails with connection refused. + # In this case it should not exclude the last. + last_http_code=$( echo "$http_codes" | tail -n 1 ) + if ! [[ $last_http_code =~ ^(2|4|5)[0-9][0-9]$ ]]; then + broken_redirects=$( echo "$http_codes" | grep -v '301' ) + fi + + # All HTTP codes are 301 (Moved Permanently), the redirect link exists. + if [[ -z "$broken_redirects" ]]; then + aka_ms_download_link=$( echo "$response" | awk '$1 ~ /^Location/{print $2}' | tail -1 | tr -d '\r') + + if [[ -z "$aka_ms_download_link" ]]; then + say_verbose "The aka.ms link '$aka_ms_link' is not valid: failed to get redirect location." + return 1 + fi + + say_verbose "The redirect location retrieved: '$aka_ms_download_link'." + return 0 + else + say_verbose "The aka.ms link '$aka_ms_link' is not valid: received HTTP code: $(echo "$broken_redirects" | paste -sd "," -)." + return 1 + fi +} + +get_feeds_to_use() +{ + feeds=( + "https://builds.dotnet.microsoft.com/dotnet" + "https://ci.dot.net/public" + ) + + if [[ -n "$azure_feed" ]]; then + feeds=("$azure_feed") + fi + + if [[ -n "$uncached_feed" ]]; then + feeds=("$uncached_feed") + fi +} + +# THIS FUNCTION MAY EXIT (if the determined version is already installed). +generate_download_links() { + + download_links=() + specific_versions=() + effective_versions=() + link_types=() + + # If generate_akams_links returns false, no fallback to old links. Just terminate. + # This function may also 'exit' (if the determined version is already installed). + generate_akams_links || return + + # Check other feeds only if we haven't been able to find an aka.ms link. + if [[ "${#download_links[@]}" -lt 1 ]]; then + for feed in ${feeds[@]} + do + # generate_regular_links may also 'exit' (if the determined version is already installed). + generate_regular_links $feed || return + done + fi + + if [[ "${#download_links[@]}" -eq 0 ]]; then + say_err "Failed to resolve the exact version number." + return 1 + fi + + say_verbose "Generated ${#download_links[@]} links." + for link_index in ${!download_links[@]} + do + say_verbose "Link $link_index: ${link_types[$link_index]}, ${effective_versions[$link_index]}, ${download_links[$link_index]}" + done +} + +# THIS FUNCTION MAY EXIT (if the determined version is already installed). +generate_akams_links() { + local valid_aka_ms_link=true; + + normalized_version="$(to_lowercase "$version")" + if [[ "$normalized_version" != "latest" ]] && [ -n "$normalized_quality" ]; then + say_err "Quality and Version options are not allowed to be specified simultaneously. See https://learn.microsoft.com/dotnet/core/tools/dotnet-install-script#options for details." + return 1 + fi + + if [[ -n "$json_file" || "$normalized_version" != "latest" ]]; then + # aka.ms links are not needed when exact version is specified via command or json file + return + fi + + get_download_link_from_aka_ms || valid_aka_ms_link=false + + if [[ "$valid_aka_ms_link" == true ]]; then + say_verbose "Retrieved primary payload URL from aka.ms link: '$aka_ms_download_link'." + say_verbose "Downloading using legacy url will not be attempted." + + download_link=$aka_ms_download_link + + #get version from the path + IFS='/' + read -ra pathElems <<< "$download_link" + count=${#pathElems[@]} + specific_version="${pathElems[count-2]}" + unset IFS; + say_verbose "Version: '$specific_version'." + + #Retrieve effective version + effective_version="$(get_specific_product_version "$azure_feed" "$specific_version" "$download_link")" + + # Add link info to arrays + download_links+=($download_link) + specific_versions+=($specific_version) + effective_versions+=($effective_version) + link_types+=("aka.ms") + + # Check if the SDK version is already installed. + if [[ "$dry_run" != true ]] && is_dotnet_package_installed "$install_root" "$asset_relative_path" "$effective_version"; then + say "$asset_name with version '$effective_version' is already installed." + exit 0 + fi + + return 0 + fi + + # if quality is specified - exit with error - there is no fallback approach + if [ ! -z "$normalized_quality" ]; then + say_err "Failed to locate the latest version in the channel '$normalized_channel' with '$normalized_quality' quality for '$normalized_product', os: '$normalized_os', architecture: '$normalized_architecture'." + say_err "Refer to: https://aka.ms/dotnet-os-lifecycle for information on .NET Core support." + return 1 + fi + say_verbose "Falling back to latest.version file approach." +} + +# THIS FUNCTION MAY EXIT (if the determined version is already installed) +# args: +# feed - $1 +generate_regular_links() { + local feed="$1" + local valid_legacy_download_link=true + + specific_version=$(get_specific_version_from_version "$feed" "$channel" "$normalized_architecture" "$version" "$json_file") || specific_version='0' + + if [[ "$specific_version" == '0' ]]; then + say_verbose "Failed to resolve the specific version number using feed '$feed'" + return + fi + + effective_version="$(get_specific_product_version "$feed" "$specific_version")" + say_verbose "specific_version=$specific_version" + + download_link="$(construct_download_link "$feed" "$channel" "$normalized_architecture" "$specific_version" "$normalized_os")" + say_verbose "Constructed primary named payload URL: $download_link" + + # Add link info to arrays + download_links+=($download_link) + specific_versions+=($specific_version) + effective_versions+=($effective_version) + link_types+=("primary") + + legacy_download_link="$(construct_legacy_download_link "$feed" "$channel" "$normalized_architecture" "$specific_version")" || valid_legacy_download_link=false + + if [ "$valid_legacy_download_link" = true ]; then + say_verbose "Constructed legacy named payload URL: $legacy_download_link" + + download_links+=($legacy_download_link) + specific_versions+=($specific_version) + effective_versions+=($effective_version) + link_types+=("legacy") + else + legacy_download_link="" + say_verbose "Could not construct a legacy_download_link; omitting..." + fi + + # Check if the SDK version is already installed. + if [[ "$dry_run" != true ]] && is_dotnet_package_installed "$install_root" "$asset_relative_path" "$effective_version"; then + say "$asset_name with version '$effective_version' is already installed." + exit 0 + fi +} + +print_dry_run() { + + say "Payload URLs:" + + for link_index in "${!download_links[@]}" + do + say "URL #$link_index - ${link_types[$link_index]}: ${download_links[$link_index]}" + done + + resolved_version=${specific_versions[0]} + repeatable_command="./$script_name --version "\""$resolved_version"\"" --install-dir "\""$install_root"\"" --architecture "\""$normalized_architecture"\"" --os "\""$normalized_os"\""" + + if [ ! -z "$normalized_quality" ]; then + repeatable_command+=" --quality "\""$normalized_quality"\""" + fi + + if [[ "$runtime" == "dotnet" ]]; then + repeatable_command+=" --runtime "\""dotnet"\""" + elif [[ "$runtime" == "aspnetcore" ]]; then + repeatable_command+=" --runtime "\""aspnetcore"\""" + fi + + repeatable_command+="$non_dynamic_parameters" + + if [ -n "$feed_credential" ]; then + repeatable_command+=" --feed-credential "\"""\""" + fi + + say "Repeatable invocation: $repeatable_command" +} + +calculate_vars() { + eval $invocation + + script_name=$(basename "$0") + normalized_architecture="$(get_normalized_architecture_from_architecture "$architecture")" + say_verbose "Normalized architecture: '$normalized_architecture'." + normalized_os="$(get_normalized_os "$user_defined_os")" + say_verbose "Normalized OS: '$normalized_os'." + normalized_quality="$(get_normalized_quality "$quality")" + say_verbose "Normalized quality: '$normalized_quality'." + normalized_channel="$(get_normalized_channel "$channel")" + say_verbose "Normalized channel: '$normalized_channel'." + normalized_product="$(get_normalized_product "$runtime")" + say_verbose "Normalized product: '$normalized_product'." + install_root="$(resolve_installation_path "$install_dir")" + say_verbose "InstallRoot: '$install_root'." + + normalized_architecture="$(get_normalized_architecture_for_specific_sdk_version "$version" "$normalized_channel" "$normalized_architecture")" + + if [[ "$runtime" == "dotnet" ]]; then + asset_relative_path="shared/Microsoft.NETCore.App" + asset_name=".NET Core Runtime" + elif [[ "$runtime" == "aspnetcore" ]]; then + asset_relative_path="shared/Microsoft.AspNetCore.App" + asset_name="ASP.NET Core Runtime" + elif [ -z "$runtime" ]; then + asset_relative_path="sdk" + asset_name=".NET Core SDK" + fi + + get_feeds_to_use +} + +install_dotnet() { + eval $invocation + local download_failed=false + local download_completed=false + local remote_file_size=0 + + mkdir -p "$install_root" + zip_path="${zip_path:-$(mktemp "$temporary_file_template")}" + say_verbose "Archive path: $zip_path" + + for link_index in "${!download_links[@]}" + do + download_link="${download_links[$link_index]}" + specific_version="${specific_versions[$link_index]}" + effective_version="${effective_versions[$link_index]}" + link_type="${link_types[$link_index]}" + + say "Attempting to download using $link_type link $download_link" + + # The download function will set variables $http_code and $download_error_msg in case of failure. + download_failed=false + download "$download_link" "$zip_path" 2>&1 || download_failed=true + + if [ "$download_failed" = true ]; then + case $http_code in + 404) + say "The resource at $link_type link '$download_link' is not available." + ;; + *) + say "Failed to download $link_type link '$download_link': $http_code $download_error_msg" + ;; + esac + rm -f "$zip_path" 2>&1 && say_verbose "Temporary archive file $zip_path was removed" + else + download_completed=true + break + fi + done + + if [[ "$download_completed" == false ]]; then + say_err "Could not find \`$asset_name\` with version = $specific_version" + say_err "Refer to: https://aka.ms/dotnet-os-lifecycle for information on .NET Core support" + return 1 + fi + + remote_file_size="$(get_remote_file_size "$download_link")" + + say "Extracting archive from $download_link" + extract_dotnet_package "$zip_path" "$install_root" "$remote_file_size" || return 1 + + # Check if the SDK version is installed; if not, fail the installation. + # if the version contains "RTM" or "servicing"; check if a 'release-type' SDK version is installed. + if [[ $specific_version == *"rtm"* || $specific_version == *"servicing"* ]]; then + IFS='-' + read -ra verArr <<< "$specific_version" + release_version="${verArr[0]}" + unset IFS; + say_verbose "Checking installation: version = $release_version" + if is_dotnet_package_installed "$install_root" "$asset_relative_path" "$release_version"; then + say "Installed version is $effective_version" + return 0 + fi + fi + + # Check if the standard SDK version is installed. + say_verbose "Checking installation: version = $effective_version" + if is_dotnet_package_installed "$install_root" "$asset_relative_path" "$effective_version"; then + say "Installed version is $effective_version" + return 0 + fi + + # Version verification failed. More likely something is wrong either with the downloaded content or with the verification algorithm. + say_err "Failed to verify the version of installed \`$asset_name\`.\nInstallation source: $download_link.\nInstallation location: $install_root.\nReport the bug at https://github.com/dotnet/install-scripts/issues." + say_err "\`$asset_name\` with version = $effective_version failed to install with an error." + return 1 +} + +args=("$@") + +local_version_file_relative_path="/.version" +bin_folder_relative_path="" +temporary_file_template="${TMPDIR:-/tmp}/dotnet.XXXXXXXXX" + +channel="LTS" +version="Latest" +json_file="" +install_dir="" +architecture="" +dry_run=false +no_path=false +azure_feed="" +uncached_feed="" +feed_credential="" +verbose=false +runtime="" +runtime_id="" +quality="" +internal=false +override_non_versioned_files=true +non_dynamic_parameters="" +user_defined_os="" + +while [ $# -ne 0 ] +do + name="$1" + case "$name" in + -c|--channel|-[Cc]hannel) + shift + channel="$1" + ;; + -v|--version|-[Vv]ersion) + shift + version="$1" + ;; + -q|--quality|-[Qq]uality) + shift + quality="$1" + ;; + --internal|-[Ii]nternal) + internal=true + non_dynamic_parameters+=" $name" + ;; + -i|--install-dir|-[Ii]nstall[Dd]ir) + shift + install_dir="$1" + ;; + --arch|--architecture|-[Aa]rch|-[Aa]rchitecture) + shift + architecture="$1" + ;; + --os|-[Oo][SS]) + shift + user_defined_os="$1" + ;; + --shared-runtime|-[Ss]hared[Rr]untime) + say_warning "The --shared-runtime flag is obsolete and may be removed in a future version of this script. The recommended usage is to specify '--runtime dotnet'." + if [ -z "$runtime" ]; then + runtime="dotnet" + fi + ;; + --runtime|-[Rr]untime) + shift + runtime="$1" + if [[ "$runtime" != "dotnet" ]] && [[ "$runtime" != "aspnetcore" ]]; then + say_err "Unsupported value for --runtime: '$1'. Valid values are 'dotnet' and 'aspnetcore'." + if [[ "$runtime" == "windowsdesktop" ]]; then + say_err "WindowsDesktop archives are manufactured for Windows platforms only." + fi + exit 1 + fi + ;; + --dry-run|-[Dd]ry[Rr]un) + dry_run=true + ;; + --no-path|-[Nn]o[Pp]ath) + no_path=true + non_dynamic_parameters+=" $name" + ;; + --verbose|-[Vv]erbose) + verbose=true + non_dynamic_parameters+=" $name" + ;; + --azure-feed|-[Aa]zure[Ff]eed) + shift + azure_feed="$1" + non_dynamic_parameters+=" $name "\""$1"\""" + ;; + --uncached-feed|-[Uu]ncached[Ff]eed) + shift + uncached_feed="$1" + non_dynamic_parameters+=" $name "\""$1"\""" + ;; + --feed-credential|-[Ff]eed[Cc]redential) + shift + feed_credential="$1" + #feed_credential should start with "?", for it to be added to the end of the link. + #adding "?" at the beginning of the feed_credential if needed. + [[ -z "$(echo $feed_credential)" ]] || [[ $feed_credential == \?* ]] || feed_credential="?$feed_credential" + ;; + --runtime-id|-[Rr]untime[Ii]d) + shift + runtime_id="$1" + non_dynamic_parameters+=" $name "\""$1"\""" + say_warning "Use of --runtime-id is obsolete and should be limited to the versions below 2.1. To override architecture, use --architecture option instead. To override OS, use --os option instead." + ;; + --jsonfile|-[Jj][Ss]on[Ff]ile) + shift + json_file="$1" + ;; + --skip-non-versioned-files|-[Ss]kip[Nn]on[Vv]ersioned[Ff]iles) + override_non_versioned_files=false + non_dynamic_parameters+=" $name" + ;; + --keep-zip|-[Kk]eep[Zz]ip) + keep_zip=true + non_dynamic_parameters+=" $name" + ;; + --zip-path|-[Zz]ip[Pp]ath) + shift + zip_path="$1" + ;; + -?|--?|-h|--help|-[Hh]elp) + script_name="dotnet-install.sh" + echo ".NET Tools Installer" + echo "Usage:" + echo " # Install a .NET SDK of a given Quality from a given Channel" + echo " $script_name [-c|--channel ] [-q|--quality ]" + echo " # Install a .NET SDK of a specific public version" + echo " $script_name [-v|--version ]" + echo " $script_name -h|-?|--help" + echo "" + echo "$script_name is a simple command line interface for obtaining dotnet cli." + echo " Note that the intended use of this script is for Continuous Integration (CI) scenarios, where:" + echo " - The SDK needs to be installed without user interaction and without admin rights." + echo " - The SDK installation doesn't need to persist across multiple CI runs." + echo " To set up a development environment or to run apps, use installers rather than this script. Visit https://dotnet.microsoft.com/download to get the installer." + echo "" + echo "Options:" + echo " -c,--channel Download from the channel specified, Defaults to \`$channel\`." + echo " -Channel" + echo " Possible values:" + echo " - STS - the most recent Standard Term Support release" + echo " - LTS - the most recent Long Term Support release" + echo " - 2-part version in a format A.B - represents a specific release" + echo " examples: 2.0; 1.0" + echo " - 3-part version in a format A.B.Cxx - represents a specific SDK release" + echo " examples: 5.0.1xx, 5.0.2xx." + echo " Supported since 5.0 release" + echo " Warning: Value 'Current' is deprecated for the Channel parameter. Use 'STS' instead." + echo " Note: The version parameter overrides the channel parameter when any version other than 'latest' is used." + echo " -v,--version Use specific VERSION, Defaults to \`$version\`." + echo " -Version" + echo " Possible values:" + echo " - latest - the latest build on specific channel" + echo " - 3-part version in a format A.B.C - represents specific version of build" + echo " examples: 2.0.0-preview2-006120; 1.1.0" + echo " -q,--quality Download the latest build of specified quality in the channel." + echo " -Quality" + echo " The possible values are: daily, preview, GA." + echo " Works only in combination with channel. Not applicable for STS and LTS channels and will be ignored if those channels are used." + echo " For SDK use channel in A.B.Cxx format. Using quality for SDK together with channel in A.B format is not supported." + echo " Supported since 5.0 release." + echo " Note: The version parameter overrides the channel parameter when any version other than 'latest' is used, and therefore overrides the quality." + echo " --internal,-Internal Download internal builds. Requires providing credentials via --feed-credential parameter." + echo " --feed-credential Token to access Azure feed. Used as a query string to append to the Azure feed." + echo " -FeedCredential This parameter typically is not specified." + echo " -i,--install-dir Install under specified location (see Install Location below)" + echo " -InstallDir" + echo " --architecture Architecture of dotnet binaries to be installed, Defaults to \`$architecture\`." + echo " --arch,-Architecture,-Arch" + echo " Possible values: x64, arm, arm64, s390x, ppc64le and loongarch64" + echo " --os Specifies operating system to be used when selecting the installer." + echo " Overrides the OS determination approach used by the script. Supported values: osx, linux, linux-musl, freebsd, rhel.6." + echo " In case any other value is provided, the platform will be determined by the script based on machine configuration." + echo " Not supported for legacy links. Use --runtime-id to specify platform for legacy links." + echo " Refer to: https://aka.ms/dotnet-os-lifecycle for more information." + echo " --runtime Installs a shared runtime only, without the SDK." + echo " -Runtime" + echo " Possible values:" + echo " - dotnet - the Microsoft.NETCore.App shared runtime" + echo " - aspnetcore - the Microsoft.AspNetCore.App shared runtime" + echo " --dry-run,-DryRun Do not perform installation. Display download link." + echo " --no-path, -NoPath Do not set PATH for the current process." + echo " --verbose,-Verbose Display diagnostics information." + echo " --azure-feed,-AzureFeed For internal use only." + echo " Allows using a different storage to download SDK archives from." + echo " --uncached-feed,-UncachedFeed For internal use only." + echo " Allows using a different storage to download SDK archives from." + echo " --skip-non-versioned-files Skips non-versioned files if they already exist, such as the dotnet executable." + echo " -SkipNonVersionedFiles" + echo " --jsonfile Determines the SDK version from a user specified global.json file." + echo " Note: global.json must have a value for 'SDK:Version'" + echo " --keep-zip,-KeepZip If set, downloaded file is kept." + echo " --zip-path, -ZipPath If set, downloaded file is stored at the specified path." + echo " -?,--?,-h,--help,-Help Shows this help message" + echo "" + echo "Install Location:" + echo " Location is chosen in following order:" + echo " - --install-dir option" + echo " - Environmental variable DOTNET_INSTALL_DIR" + echo " - $HOME/.dotnet" + exit 0 + ;; + *) + say_err "Unknown argument \`$name\`" + exit 1 + ;; + esac + + shift +done + +say_verbose "Note that the intended use of this script is for Continuous Integration (CI) scenarios, where:" +say_verbose "- The SDK needs to be installed without user interaction and without admin rights." +say_verbose "- The SDK installation doesn't need to persist across multiple CI runs." +say_verbose "To set up a development environment or to run apps, use installers rather than this script. Visit https://dotnet.microsoft.com/download to get the installer.\n" + +if [ "$internal" = true ] && [ -z "$(echo $feed_credential)" ]; then + message="Provide credentials via --feed-credential parameter." + if [ "$dry_run" = true ]; then + say_warning "$message" + else + say_err "$message" + exit 1 + fi +fi + +check_min_reqs +calculate_vars +# generate_regular_links call below will 'exit' if the determined version is already installed. +generate_download_links + +if [[ "$dry_run" = true ]]; then + print_dry_run + exit 0 +fi + +install_dotnet + +bin_path="$(get_absolute_path "$(combine_paths "$install_root" "$bin_folder_relative_path")")" +if [ "$no_path" = false ]; then + say "Adding to current process PATH: \`$bin_path\`. Note: This change will be visible only when sourcing script." + export PATH="$bin_path":"$PATH" +else + say "Binaries of dotnet can be found in $bin_path" +fi + +say "Note that the script does not resolve dependencies during installation." +say "To check the list of dependencies, go to https://learn.microsoft.com/dotnet/core/install, select your operating system and check the \"Dependencies\" section." +say "Installation finished successfully." diff --git a/src/Refitter.Core/ApizrRegistrationGenerator.cs b/src/Refitter.Core/ApizrRegistrationGenerator.cs index 21872a3f5..099ebc467 100644 --- a/src/Refitter.Core/ApizrRegistrationGenerator.cs +++ b/src/Refitter.Core/ApizrRegistrationGenerator.cs @@ -34,7 +34,7 @@ public static string Generate( .CapitalizeFirstCharacter() : string.Empty; - if(isDependencyInjectionExtension) + if (isDependencyInjectionExtension) methodName = hasManyApis ? $"Configure{formatedTitle}ApizrManagers" : $"Configure{formatedTitle}ApizrManager"; else methodName = hasManyApis ? $"Build{formatedTitle}ApizrManagers" : $"Build{formatedTitle}ApizrManager"; @@ -209,7 +209,7 @@ public static string Generate( $$""" using Mapster; """); - if(isDependencyInjectionExtension) + if (isDependencyInjectionExtension) usingsCodeBuilder.AppendLine( $$""" using MapsterMapper; @@ -225,7 +225,7 @@ public static string Generate( break; } - if(settings.ApizrSettings.WithPriority) + if (settings.ApizrSettings.WithPriority) { apizrPackages.Add(ApizrPackages.Apizr_Integrations_Fusillade); optionsCodeBuilder.AppendLine(); @@ -381,7 +381,7 @@ public static partial class IServiceCollectionExtensions /// /// Adjust common shared options /// - """); + """); } code.AppendLine( @@ -409,7 +409,7 @@ public static partial class IServiceCollectionExtensions """); for (int i = 0; i < interfaceNames.Length; i++) { - if(i > 0) + if (i > 0) code.AppendLine(); code.Append( @@ -462,7 +462,7 @@ public static partial class IServiceCollectionExtensions /// /// Adjust common shared options /// - """); + """); } code.AppendLine( @@ -471,11 +471,11 @@ public static partial class IServiceCollectionExtensions this IServiceCollection services, """); - code.AppendLine(hasBaseUrl ? + code.AppendLine(hasBaseUrl ? $$""" Action? optionsBuilder = null) { - """ : + """ : $$""" Action optionsBuilder) { @@ -491,7 +491,7 @@ public static partial class IServiceCollectionExtensions #pragma warning disable RS1035 code.Remove(code.Length - Environment.NewLine.Length, Environment.NewLine.Length); #pragma warning restore RS1035 - } + } #endregion } @@ -533,7 +533,7 @@ public static partial class ApizrRegistration /// /// Adjust common shared options /// - """); + """); } code.AppendLine( @@ -599,7 +599,7 @@ public static partial class ApizrRegistration /// /// Adjust common shared options /// - """); + """); } code.AppendLine( @@ -614,7 +614,7 @@ public static partial class ApizrRegistration #pragma warning disable RS1035 code.Remove(code.Length - Environment.NewLine.Length, Environment.NewLine.Length); #pragma warning restore RS1035 - } + } #endregion } diff --git a/src/Refitter.Core/DependencyInjectionGenerator.cs b/src/Refitter.Core/DependencyInjectionGenerator.cs index ee29ddf2b..b39fef46a 100644 --- a/src/Refitter.Core/DependencyInjectionGenerator.cs +++ b/src/Refitter.Core/DependencyInjectionGenerator.cs @@ -1,4 +1,4 @@ -using System.Globalization; +using System.Globalization; using System.Text; namespace Refitter.Core; @@ -29,7 +29,7 @@ public static string Generate( Action? builder = default, RefitSettings? settings = default) """; - + var configureRefitClient = string.IsNullOrEmpty(iocSettings.BaseUrl) ? ".ConfigureHttpClient(c => c.BaseAddress = baseUrl)" : $".ConfigureHttpClient(c => c.BaseAddress = new Uri(\"{iocSettings.BaseUrl}\"))"; @@ -76,7 +76,7 @@ public static partial class IServiceCollectionExtensions """"); foreach (var interfaceName in interfaceNames) { - var clientBuilderName = $"clientBuilder{interfaceName}"; + var clientBuilderName = $"clientBuilder{interfaceName}"; code.Append( $$""" var {{clientBuilderName}} = services @@ -89,7 +89,7 @@ public static partial class IServiceCollectionExtensions code.AppendLine(); code.Append($" .AddHttpMessageHandler<{httpMessageHandler}>()"); } - + code.Append(";"); code.AppendLine(); @@ -108,7 +108,7 @@ public static partial class IServiceCollectionExtensions TimeSpan.FromSeconds({{durationString}}), {{iocSettings.MaxRetryCount}}))); """); - } + } else if (iocSettings.TransientErrorHandler == TransientErrorHandler.HttpResilience) { var durationString = iocSettings.FirstBackoffRetryInSeconds.ToString(CultureInfo.InvariantCulture); @@ -132,7 +132,7 @@ public static partial class IServiceCollectionExtensions code.AppendLine($" builder?.Invoke({clientBuilderName});"); code.AppendLine(); } - + #pragma warning disable RS1035 code.Remove(code.Length - Environment.NewLine.Length, Environment.NewLine.Length); #pragma warning restore RS1035 @@ -144,4 +144,4 @@ public static partial class IServiceCollectionExtensions code.AppendLine(); return code.ToString(); } -} \ No newline at end of file +} diff --git a/src/Refitter.Core/EnumExtensions.cs b/src/Refitter.Core/EnumExtensions.cs index 98bee4830..66658f01e 100644 --- a/src/Refitter.Core/EnumExtensions.cs +++ b/src/Refitter.Core/EnumExtensions.cs @@ -1,4 +1,4 @@ -using System.Collections.Concurrent; +using System.Collections.Concurrent; using System.ComponentModel; using System.Reflection; diff --git a/src/Refitter.Core/FilenameConstants.cs b/src/Refitter.Core/FilenameConstants.cs index e629cc23e..d4d9f1709 100644 --- a/src/Refitter.Core/FilenameConstants.cs +++ b/src/Refitter.Core/FilenameConstants.cs @@ -9,12 +9,12 @@ public static class TypenameConstants /// The typename for Refit interfaces. /// public const string RefitInterfaces = "RefitInterfaces"; - + /// /// The typename for contracts. /// public const string Contracts = "Contracts"; - + /// /// The typename for dependency injection. /// diff --git a/src/Refitter.Core/IdentifierUtils.cs b/src/Refitter.Core/IdentifierUtils.cs index 082b0022b..223bb9fde 100644 --- a/src/Refitter.Core/IdentifierUtils.cs +++ b/src/Refitter.Core/IdentifierUtils.cs @@ -1,4 +1,4 @@ -namespace Refitter.Core; +namespace Refitter.Core; internal static class IdentifierUtils { diff --git a/src/Refitter.Core/OpenApiDocumentFactory.cs b/src/Refitter.Core/OpenApiDocumentFactory.cs index 2889c97bf..5d622de15 100644 --- a/src/Refitter.Core/OpenApiDocumentFactory.cs +++ b/src/Refitter.Core/OpenApiDocumentFactory.cs @@ -1,4 +1,4 @@ -using System.Net; +using System.Net; using Microsoft.OpenApi.Extensions; using Microsoft.OpenApi.Readers; using NSwag; @@ -37,7 +37,7 @@ public static async Task CreateAsync(string openApiPath) return await OpenApiDocument.FromJsonAsync(json); } catch - { + { return await CreateUsingNSwagAsync(openApiPath); } } @@ -47,13 +47,13 @@ private static async Task CreateUsingNSwagAsync(string openApiP if (IsHttp(openApiPath)) { var content = await GetHttpContent(openApiPath); - return IsYaml(openApiPath) - ? await OpenApiYamlDocument.FromYamlAsync(content) + return IsYaml(openApiPath) + ? await OpenApiYamlDocument.FromYamlAsync(content) : await OpenApiDocument.FromJsonAsync(content); } - return IsYaml(openApiPath) - ? await OpenApiYamlDocument.FromFileAsync(openApiPath) + return IsYaml(openApiPath) + ? await OpenApiYamlDocument.FromFileAsync(openApiPath) : await OpenApiDocument.FromFileAsync(openApiPath); } @@ -111,4 +111,4 @@ private static bool IsYaml(string path) { return path.EndsWith("yaml") || path.EndsWith("yml"); } -} \ No newline at end of file +} diff --git a/src/Refitter.Core/OperationNameGenerator.cs b/src/Refitter.Core/OperationNameGenerator.cs index 3b4ac170d..b622afda8 100644 --- a/src/Refitter.Core/OperationNameGenerator.cs +++ b/src/Refitter.Core/OperationNameGenerator.cs @@ -1,4 +1,4 @@ -using System.Diagnostics.CodeAnalysis; +using System.Diagnostics.CodeAnalysis; using NSwag; using NSwag.CodeGeneration.OperationNameGenerators; using GeneratorType = Refitter.Core.OperationNameGeneratorTypes; @@ -93,4 +93,4 @@ private bool CheckForDuplicateOperationIds( return operationNames.Distinct().Count() != operationNames.Count; } -} \ No newline at end of file +} diff --git a/src/Refitter.Core/ParameterExtractor.cs b/src/Refitter.Core/ParameterExtractor.cs index 51f4ac8f3..b28fe5d44 100644 --- a/src/Refitter.Core/ParameterExtractor.cs +++ b/src/Refitter.Core/ParameterExtractor.cs @@ -142,9 +142,9 @@ private static string GetQueryAttribute(CSharpParameterModel parameter, RefitGen { parameter.IsDate: true, settings.CodeGeneratorSettings.DateFormat: not null } => $"Query(Format = \"{settings.CodeGeneratorSettings?.DateFormat}\")", { - parameter.IsDateOrDateTime: true, parameter.Schema.Format: "date-time", - settings.CodeGeneratorSettings.DateTimeFormat: not null - } => $"Query(Format = \"{settings.CodeGeneratorSettings?.DateTimeFormat}\")", + parameter.IsDateOrDateTime: true, parameter.Schema.Format: "date-time", + settings.CodeGeneratorSettings.DateTimeFormat: not null + } => $"Query(Format = \"{settings.CodeGeneratorSettings?.DateTimeFormat}\")", _ => "Query", }; } diff --git a/src/Refitter.Core/RefitGeneratedCode.cs b/src/Refitter.Core/RefitGeneratedCode.cs index cf91d6c31..95595c5d7 100644 --- a/src/Refitter.Core/RefitGeneratedCode.cs +++ b/src/Refitter.Core/RefitGeneratedCode.cs @@ -11,4 +11,4 @@ public override string ToString() { return SourceCode; } -} \ No newline at end of file +} diff --git a/src/Refitter.Core/RefitInterfaceGenerator.cs b/src/Refitter.Core/RefitInterfaceGenerator.cs index 0a15a43c5..8f60841f6 100644 --- a/src/Refitter.Core/RefitInterfaceGenerator.cs +++ b/src/Refitter.Core/RefitInterfaceGenerator.cs @@ -84,7 +84,7 @@ private string GenerateInterfaceBody(out string? dynamicQuerystringParameters) .AppendLine($"{Separator}{Separator}{returnType} {operationName}({parametersString});") .AppendLine(); - if (parametersString.Contains("?") && settings is {OptionalParameters: true, ApizrSettings: not null}) + if (parametersString.Contains("?") && settings is { OptionalParameters: true, ApizrSettings: not null }) { if (settings.GenerateXmlDocCodeComments) { diff --git a/src/Refitter.Core/SchemaCleaner.cs b/src/Refitter.Core/SchemaCleaner.cs index be48b07be..f1650655a 100644 --- a/src/Refitter.Core/SchemaCleaner.cs +++ b/src/Refitter.Core/SchemaCleaner.cs @@ -1,4 +1,4 @@ -using System.Text.RegularExpressions; +using System.Text.RegularExpressions; using NJsonSchema; using NSwag; diff --git a/src/Refitter.Core/Settings/CacheProviderType.cs b/src/Refitter.Core/Settings/CacheProviderType.cs index 934a3646c..3977af1fa 100644 --- a/src/Refitter.Core/Settings/CacheProviderType.cs +++ b/src/Refitter.Core/Settings/CacheProviderType.cs @@ -1,4 +1,4 @@ -namespace Refitter.Core +namespace Refitter.Core { /// /// Enumeration of cache provider types. @@ -9,30 +9,30 @@ public enum CacheProviderType /// No cache provider. /// None, - + /// /// Akavache cache provider. /// Akavache, - + /// /// MonkeyCache cache provider. /// MonkeyCache, - + /// /// In-memory cache provider. /// InMemory, - + /// /// Distributed cache as string provider. /// DistributedAsString, - + /// /// Distributed cache as byte array provider. /// DistributedAsByteArray, } -} \ No newline at end of file +} diff --git a/src/Refitter.Core/Settings/MappingProviderType.cs b/src/Refitter.Core/Settings/MappingProviderType.cs index 3f743984d..f91bb2db6 100644 --- a/src/Refitter.Core/Settings/MappingProviderType.cs +++ b/src/Refitter.Core/Settings/MappingProviderType.cs @@ -1,4 +1,4 @@ -namespace Refitter.Core +namespace Refitter.Core { /// /// Enumeration of mapping provider types. @@ -9,15 +9,15 @@ public enum MappingProviderType /// No mapping provider. /// None, - + /// /// AutoMapper mapping provider. /// AutoMapper, - + /// /// Mapster mapping provider. /// Mapster } -} \ No newline at end of file +} diff --git a/src/Refitter.Core/Settings/OperationNameGeneratorTypes.cs b/src/Refitter.Core/Settings/OperationNameGeneratorTypes.cs index d3d074795..6e7a89c48 100644 --- a/src/Refitter.Core/Settings/OperationNameGeneratorTypes.cs +++ b/src/Refitter.Core/Settings/OperationNameGeneratorTypes.cs @@ -1,4 +1,4 @@ -using System.ComponentModel; +using System.ComponentModel; namespace Refitter.Core; diff --git a/src/Refitter.Core/Settings/RefitGeneratorSettings.cs b/src/Refitter.Core/Settings/RefitGeneratorSettings.cs index 1a014dc12..87ff8f9cc 100644 --- a/src/Refitter.Core/Settings/RefitGeneratorSettings.cs +++ b/src/Refitter.Core/Settings/RefitGeneratorSettings.cs @@ -15,7 +15,7 @@ public class RefitGeneratorSettings /// Default output folder for generated files. /// public const string DefaultOutputFolder = "./Generated"; - + /// /// Default namespace for generated code. /// @@ -365,7 +365,7 @@ payloads with (yet) unknown types are offered by newer versions of an API /// /// Gets or sets the parameter name generator for customizing parameter names. /// - [JsonIgnore] + [JsonIgnore] public IParameterNameGenerator? ParameterNameGenerator { get; set; } /// diff --git a/src/Refitter.Core/StringCasingExtensions.cs b/src/Refitter.Core/StringCasingExtensions.cs index 19bba7daa..e39ac3ab0 100644 --- a/src/Refitter.Core/StringCasingExtensions.cs +++ b/src/Refitter.Core/StringCasingExtensions.cs @@ -77,4 +77,4 @@ public static string ConvertSnakeCaseToPascalCase(this string str) return string.Join(string.Empty, parts); } -} \ No newline at end of file +} diff --git a/src/Refitter.Core/WellKnownNamesspaces.cs b/src/Refitter.Core/WellKnownNamesspaces.cs index bee1b6ff9..7af36180d 100644 --- a/src/Refitter.Core/WellKnownNamesspaces.cs +++ b/src/Refitter.Core/WellKnownNamesspaces.cs @@ -13,4 +13,4 @@ public static string TrimImportedNamespaces(string returnTypeParameter) => .Select(s => returnTypeParameter.Replace(s + ".", string.Empty)) .FirstOrDefault() ?? returnTypeParameter; -} \ No newline at end of file +} diff --git a/src/Refitter.MSBuild/RefitterGenerateTask.cs b/src/Refitter.MSBuild/RefitterGenerateTask.cs index 2b25a75d5..92be08d3d 100644 --- a/src/Refitter.MSBuild/RefitterGenerateTask.cs +++ b/src/Refitter.MSBuild/RefitterGenerateTask.cs @@ -169,14 +169,14 @@ private List GetExpectedGeneratedFiles(string refitterFilePath) // Multiple files mode var baseOutputFolder = !string.IsNullOrWhiteSpace(outputFolder) ? outputFolder : "./Generated"; var interfaceOutputPath = Path.GetFullPath(Path.Combine(refitterFileDirectory, baseOutputFolder, "RefitInterfaces.cs")); - var contractsOutputPath = Path.GetFullPath(Path.Combine(refitterFileDirectory, - !string.IsNullOrWhiteSpace(contractsOutputFolder) ? contractsOutputFolder : baseOutputFolder, + var contractsOutputPath = Path.GetFullPath(Path.Combine(refitterFileDirectory, + !string.IsNullOrWhiteSpace(contractsOutputFolder) ? contractsOutputFolder : baseOutputFolder, "Contracts.cs")); var diOutputPath = Path.GetFullPath(Path.Combine(refitterFileDirectory, baseOutputFolder, "DependencyInjection.cs")); generatedFiles.Add(interfaceOutputPath); generatedFiles.Add(contractsOutputPath); - + // DependencyInjection.cs is only generated if dependencyInjectionSettings are specified if (hasDependencyInjectionSettings) { diff --git a/src/Refitter.SourceGenerator.Tests/CustomOutputFolderGeneratorTests.cs b/src/Refitter.SourceGenerator.Tests/CustomOutputFolderGeneratorTests.cs index 03f670aba..387e3724c 100644 --- a/src/Refitter.SourceGenerator.Tests/CustomOutputFolderGeneratorTests.cs +++ b/src/Refitter.SourceGenerator.Tests/CustomOutputFolderGeneratorTests.cs @@ -1,4 +1,4 @@ -using FluentAssertions; +using FluentAssertions; using Refit; using Refitter.Tests.CustomGenerated; using Xunit; @@ -16,4 +16,4 @@ public void Can_Resolve_Refit_Interface() => RestService.For("https://petstore3.swagger.io/api/v3") .Should() .NotBeNull(); -} \ No newline at end of file +} diff --git a/src/Refitter.SourceGenerator.Tests/DelegatingHandlers.cs b/src/Refitter.SourceGenerator.Tests/DelegatingHandlers.cs index c5e6e6995..080a1353a 100644 --- a/src/Refitter.SourceGenerator.Tests/DelegatingHandlers.cs +++ b/src/Refitter.SourceGenerator.Tests/DelegatingHandlers.cs @@ -4,7 +4,7 @@ public class EmptyMessageHandler : DelegatingHandler { } - public class AnotherEmptyMessageHandler : DelegatingHandler + public class AnotherEmptyMessageHandler : DelegatingHandler { } -} \ No newline at end of file +} diff --git a/src/Refitter.SourceGenerator.Tests/MultipleInterfaceByTagGeneratorTests.cs b/src/Refitter.SourceGenerator.Tests/MultipleInterfaceByTagGeneratorTests.cs index 3fb137ab4..d9c9442a9 100644 --- a/src/Refitter.SourceGenerator.Tests/MultipleInterfaceByTagGeneratorTests.cs +++ b/src/Refitter.SourceGenerator.Tests/MultipleInterfaceByTagGeneratorTests.cs @@ -1,4 +1,4 @@ -using FluentAssertions; +using FluentAssertions; using Refit; using Refitter.Tests.AdditionalFiles.ByTag; using Xunit; @@ -25,4 +25,4 @@ public void Can_Resolve_Refit_Interface(Type type) => RestService.For(type, "https://petstore3.swagger.io/api/v3") .Should() .NotBeNull(); -} \ No newline at end of file +} diff --git a/src/Refitter.SourceGenerator.Tests/MultipleInterfaceGeneratorTests.cs b/src/Refitter.SourceGenerator.Tests/MultipleInterfaceGeneratorTests.cs index 9d3b2da56..83e380afc 100644 --- a/src/Refitter.SourceGenerator.Tests/MultipleInterfaceGeneratorTests.cs +++ b/src/Refitter.SourceGenerator.Tests/MultipleInterfaceGeneratorTests.cs @@ -57,4 +57,4 @@ public void Can_Resolve_Refit_Interface(Type type) => RestService.For(type, "https://petstore3.swagger.io/api/v3") .Should() .NotBeNull(); -} \ No newline at end of file +} diff --git a/src/Refitter.SourceGenerator.Tests/OptionalParametersGeneratorTest.cs b/src/Refitter.SourceGenerator.Tests/OptionalParametersGeneratorTest.cs index dc338152e..0ab440c43 100644 --- a/src/Refitter.SourceGenerator.Tests/OptionalParametersGeneratorTest.cs +++ b/src/Refitter.SourceGenerator.Tests/OptionalParametersGeneratorTest.cs @@ -1,4 +1,4 @@ -using FluentAssertions; +using FluentAssertions; using Refit; using Refitter.Tests.AdditionalFiles.OptionalParameters; using Xunit; @@ -19,4 +19,4 @@ public void Can_Resolve_Refit_Interface() => RestService.For("https://petstore3.swagger.io/api/v3") .Should() .NotBeNull(); -} \ No newline at end of file +} diff --git a/src/Refitter.SourceGenerator.Tests/SingleInterfaceGeneratorTest.cs b/src/Refitter.SourceGenerator.Tests/SingleInterfaceGeneratorTest.cs index 7de77f853..462062695 100644 --- a/src/Refitter.SourceGenerator.Tests/SingleInterfaceGeneratorTest.cs +++ b/src/Refitter.SourceGenerator.Tests/SingleInterfaceGeneratorTest.cs @@ -1,4 +1,4 @@ -using FluentAssertions; +using FluentAssertions; using Refit; using Refitter.Tests.AdditionalFiles.SingeInterface; using Xunit; @@ -19,4 +19,4 @@ public void Can_Resolve_Refit_Interface() => RestService.For("https://petstore3.swagger.io/api/v3") .Should() .NotBeNull(); -} \ No newline at end of file +} diff --git a/src/Refitter.Tests/Build/BuildHelper.cs b/src/Refitter.Tests/Build/BuildHelper.cs index f98a99bba..915656804 100644 --- a/src/Refitter.Tests/Build/BuildHelper.cs +++ b/src/Refitter.Tests/Build/BuildHelper.cs @@ -1,4 +1,4 @@ -using System.Diagnostics; +using System.Diagnostics; using System.Text; namespace Refitter.Tests.Build; @@ -56,4 +56,4 @@ public class BuildFailedException(string Errors, string Output) : Exception($"Build failed{Crlf}Errors:{Crlf}{Errors}{Crlf}Output:{Crlf}{Output}") { private static readonly string Crlf = Environment.NewLine; -} \ No newline at end of file +} diff --git a/src/Refitter.Tests/CustomCSharpGeneratorSettingsTests.cs b/src/Refitter.Tests/CustomCSharpGeneratorSettingsTests.cs index 9d6ca2108..eab60ff98 100644 --- a/src/Refitter.Tests/CustomCSharpGeneratorSettingsTests.cs +++ b/src/Refitter.Tests/CustomCSharpGeneratorSettingsTests.cs @@ -154,4 +154,4 @@ private static async Task GenerateCode( var sut = await RefitGenerator.CreateAsync(settings); return sut.Generate(); } -} \ No newline at end of file +} diff --git a/src/Refitter.Tests/DependencyInjectionGeneratorWithMicrosoftHttpResilienceTests.cs b/src/Refitter.Tests/DependencyInjectionGeneratorWithMicrosoftHttpResilienceTests.cs index 4f0dfa61b..cc7bd1d14 100644 --- a/src/Refitter.Tests/DependencyInjectionGeneratorWithMicrosoftHttpResilienceTests.cs +++ b/src/Refitter.Tests/DependencyInjectionGeneratorWithMicrosoftHttpResilienceTests.cs @@ -1,4 +1,4 @@ -using FluentAssertions; +using FluentAssertions; using Refitter.Core; using Xunit; @@ -97,4 +97,4 @@ public void Can_Generate_Without_BaseUrl() code.Should().Contain("Uri baseUrl"); code.Should().Contain(".ConfigureHttpClient(c => c.BaseAddress = baseUrl)"); } -} \ No newline at end of file +} diff --git a/src/Refitter.Tests/DependencyInjectionGeneratorWithPollyTests.cs b/src/Refitter.Tests/DependencyInjectionGeneratorWithPollyTests.cs index 0e54a7662..dadd4608d 100644 --- a/src/Refitter.Tests/DependencyInjectionGeneratorWithPollyTests.cs +++ b/src/Refitter.Tests/DependencyInjectionGeneratorWithPollyTests.cs @@ -1,4 +1,4 @@ -using FluentAssertions; +using FluentAssertions; using Refitter.Core; using Xunit; @@ -101,4 +101,4 @@ public void Can_Generate_Without_BaseUrl() code.Should().Contain("Uri baseUrl"); code.Should().Contain(".ConfigureHttpClient(c => c.BaseAddress = baseUrl)"); } -} \ No newline at end of file +} diff --git a/src/Refitter.Tests/Examples/AdditionalNamespacesTests.cs b/src/Refitter.Tests/Examples/AdditionalNamespacesTests.cs index c55c64cfb..c23340dfa 100644 --- a/src/Refitter.Tests/Examples/AdditionalNamespacesTests.cs +++ b/src/Refitter.Tests/Examples/AdditionalNamespacesTests.cs @@ -1,4 +1,4 @@ -using FluentAssertions; +using FluentAssertions; using Refitter.Core; using Refitter.Tests.Build; using Xunit; @@ -106,4 +106,4 @@ private static async Task CreateSwaggerFile(string contents) await File.WriteAllTextAsync(swaggerFile, contents); return swaggerFile; } -} \ No newline at end of file +} diff --git a/src/Refitter.Tests/Examples/ApizrTests.cs b/src/Refitter.Tests/Examples/ApizrTests.cs index afff6ea30..52a190c68 100644 --- a/src/Refitter.Tests/Examples/ApizrTests.cs +++ b/src/Refitter.Tests/Examples/ApizrTests.cs @@ -110,7 +110,7 @@ public async Task Can_Generate_Code() string generateCode = await GenerateCode(); generateCode.Should().NotBeNullOrWhiteSpace(); } - + [Fact] public async Task Generates_Nullable_Directive() { diff --git a/src/Refitter.Tests/Examples/ArrayTypeReturnMultipleInterfacesByEndpointTests.cs b/src/Refitter.Tests/Examples/ArrayTypeReturnMultipleInterfacesByEndpointTests.cs index fae55630f..eb6d4c1b2 100644 --- a/src/Refitter.Tests/Examples/ArrayTypeReturnMultipleInterfacesByEndpointTests.cs +++ b/src/Refitter.Tests/Examples/ArrayTypeReturnMultipleInterfacesByEndpointTests.cs @@ -72,8 +72,8 @@ public async Task Can_Build_Generated_Code() private static async Task GenerateCode() { var swaggerFile = await CreateSwaggerFile(OpenApiSpec); - var settings = new RefitGeneratorSettings - { + var settings = new RefitGeneratorSettings + { OpenApiPath = swaggerFile, MultipleInterfaces = MultipleInterfaces.ByEndpoint, CodeGeneratorSettings = new CodeGeneratorSettings { ArrayType = "System.Collections.Generic.IList" } diff --git a/src/Refitter.Tests/Examples/ArrayTypeReturnMultipleInterfacesByTagTests.cs b/src/Refitter.Tests/Examples/ArrayTypeReturnMultipleInterfacesByTagTests.cs index 383f27a23..676d6d8c8 100644 --- a/src/Refitter.Tests/Examples/ArrayTypeReturnMultipleInterfacesByTagTests.cs +++ b/src/Refitter.Tests/Examples/ArrayTypeReturnMultipleInterfacesByTagTests.cs @@ -72,8 +72,8 @@ public async Task Can_Build_Generated_Code() private static async Task GenerateCode() { var swaggerFile = await CreateSwaggerFile(OpenApiSpec); - var settings = new RefitGeneratorSettings - { + var settings = new RefitGeneratorSettings + { OpenApiPath = swaggerFile, MultipleInterfaces = MultipleInterfaces.ByTag, CodeGeneratorSettings = new CodeGeneratorSettings { ArrayType = "System.Collections.Generic.IList" } diff --git a/src/Refitter.Tests/Examples/ArrayTypeReturnTests.cs b/src/Refitter.Tests/Examples/ArrayTypeReturnTests.cs index fb6764dff..4410038c1 100644 --- a/src/Refitter.Tests/Examples/ArrayTypeReturnTests.cs +++ b/src/Refitter.Tests/Examples/ArrayTypeReturnTests.cs @@ -72,8 +72,8 @@ public async Task Can_Build_Generated_Code() private static async Task GenerateCode() { var swaggerFile = await CreateSwaggerFile(OpenApiSpec); - var settings = new RefitGeneratorSettings - { + var settings = new RefitGeneratorSettings + { OpenApiPath = swaggerFile, CodeGeneratorSettings = new CodeGeneratorSettings { ArrayType = "System.Collections.Generic.IList" } }; diff --git a/src/Refitter.Tests/Examples/CaseSensitiveParametersTests.cs b/src/Refitter.Tests/Examples/CaseSensitiveParametersTests.cs index 7d62c8e69..5ab969568 100644 --- a/src/Refitter.Tests/Examples/CaseSensitiveParametersTests.cs +++ b/src/Refitter.Tests/Examples/CaseSensitiveParametersTests.cs @@ -86,4 +86,4 @@ private static async Task CreateSwaggerFile(string contents) await File.WriteAllTextAsync(swaggerFile, contents); return swaggerFile; } -} \ No newline at end of file +} diff --git a/src/Refitter.Tests/Examples/CollectionFormatTests.cs b/src/Refitter.Tests/Examples/CollectionFormatTests.cs index 831842bf8..26eb88aa9 100644 --- a/src/Refitter.Tests/Examples/CollectionFormatTests.cs +++ b/src/Refitter.Tests/Examples/CollectionFormatTests.cs @@ -86,7 +86,7 @@ public async Task Can_Build_Generated_Code() public async Task Generated_Code_Contains_Expected_Collection_Format(CollectionFormat format, string expectedAttribute) { string generateCode = await GenerateCode(format); - + using (new AssertionScope()) { generateCode.Should().Contain(expectedAttribute); @@ -133,4 +133,4 @@ private static async Task CreateSwaggerFile(string contents) await File.WriteAllTextAsync(swaggerFile, contents); return swaggerFile; } -} \ No newline at end of file +} diff --git a/src/Refitter.Tests/Examples/ColonsInPathTests.cs b/src/Refitter.Tests/Examples/ColonsInPathTests.cs index 4f2f21dd3..2b9c83927 100644 --- a/src/Refitter.Tests/Examples/ColonsInPathTests.cs +++ b/src/Refitter.Tests/Examples/ColonsInPathTests.cs @@ -87,4 +87,4 @@ private static async Task CreateSwaggerFile(string contents) await File.WriteAllTextAsync(swaggerFile, contents); return swaggerFile; } -} \ No newline at end of file +} diff --git a/src/Refitter.Tests/Examples/CustomCodeGeneratorWithDateTimeTests.cs b/src/Refitter.Tests/Examples/CustomCodeGeneratorWithDateTimeTests.cs index a60742655..7272e5d0c 100644 --- a/src/Refitter.Tests/Examples/CustomCodeGeneratorWithDateTimeTests.cs +++ b/src/Refitter.Tests/Examples/CustomCodeGeneratorWithDateTimeTests.cs @@ -1,4 +1,4 @@ -using FluentAssertions; +using FluentAssertions; using Refitter.Core; using Refitter.Tests.Build; using Xunit; @@ -135,4 +135,4 @@ private static async Task CreateSwaggerFile(string contents) await File.WriteAllTextAsync(swaggerFile, contents); return swaggerFile; } -} \ No newline at end of file +} diff --git a/src/Refitter.Tests/Examples/DeprecatedEndpointTests.cs b/src/Refitter.Tests/Examples/DeprecatedEndpointTests.cs index 427dc9c7b..769b7edbc 100644 --- a/src/Refitter.Tests/Examples/DeprecatedEndpointTests.cs +++ b/src/Refitter.Tests/Examples/DeprecatedEndpointTests.cs @@ -100,4 +100,4 @@ private static async Task CreateSwaggerFile(string contents) await File.WriteAllTextAsync(swaggerFile, contents); return swaggerFile; } -} \ No newline at end of file +} diff --git a/src/Refitter.Tests/Examples/DeprecatedEndpointsSkippedTests.cs b/src/Refitter.Tests/Examples/DeprecatedEndpointsSkippedTests.cs index 6acb3a8c0..cd44a2135 100644 --- a/src/Refitter.Tests/Examples/DeprecatedEndpointsSkippedTests.cs +++ b/src/Refitter.Tests/Examples/DeprecatedEndpointsSkippedTests.cs @@ -118,4 +118,4 @@ private static async Task CreateSwaggerFile(string contents) await File.WriteAllTextAsync(swaggerFile, contents); return swaggerFile; } -} \ No newline at end of file +} diff --git a/src/Refitter.Tests/Examples/DeprecatedMultipleInterfaceByTagEndpointsSkippedTests.cs b/src/Refitter.Tests/Examples/DeprecatedMultipleInterfaceByTagEndpointsSkippedTests.cs index 76f82d3be..80882288f 100644 --- a/src/Refitter.Tests/Examples/DeprecatedMultipleInterfaceByTagEndpointsSkippedTests.cs +++ b/src/Refitter.Tests/Examples/DeprecatedMultipleInterfaceByTagEndpointsSkippedTests.cs @@ -119,4 +119,4 @@ private static async Task CreateSwaggerFile(string contents) await File.WriteAllTextAsync(swaggerFile, contents); return swaggerFile; } -} \ No newline at end of file +} diff --git a/src/Refitter.Tests/Examples/DeprecatedMultipleInterfaceEndpointsSkippedTests.cs b/src/Refitter.Tests/Examples/DeprecatedMultipleInterfaceEndpointsSkippedTests.cs index 5ccd36c71..5ffe5ef71 100644 --- a/src/Refitter.Tests/Examples/DeprecatedMultipleInterfaceEndpointsSkippedTests.cs +++ b/src/Refitter.Tests/Examples/DeprecatedMultipleInterfaceEndpointsSkippedTests.cs @@ -119,4 +119,4 @@ private static async Task CreateSwaggerFile(string contents) await File.WriteAllTextAsync(swaggerFile, contents); return swaggerFile; } -} \ No newline at end of file +} diff --git a/src/Refitter.Tests/Examples/FilterByPathTests.cs b/src/Refitter.Tests/Examples/FilterByPathTests.cs index aa963974e..f2e76f3ca 100644 --- a/src/Refitter.Tests/Examples/FilterByPathTests.cs +++ b/src/Refitter.Tests/Examples/FilterByPathTests.cs @@ -1,4 +1,4 @@ -using FluentAssertions; +using FluentAssertions; using Refitter.Core; using Refitter.Tests.Build; using Xunit; diff --git a/src/Refitter.Tests/Examples/FilterByTagsTests.cs b/src/Refitter.Tests/Examples/FilterByTagsTests.cs index 13ea12678..8239cedb7 100644 --- a/src/Refitter.Tests/Examples/FilterByTagsTests.cs +++ b/src/Refitter.Tests/Examples/FilterByTagsTests.cs @@ -1,4 +1,4 @@ -using FluentAssertions; +using FluentAssertions; using Refitter.Core; using Refitter.Tests.Build; using Xunit; diff --git a/src/Refitter.Tests/Examples/IncludeInheritanceHierarchyTests.cs b/src/Refitter.Tests/Examples/IncludeInheritanceHierarchyTests.cs index 60fa51adb..abf4aed1f 100644 --- a/src/Refitter.Tests/Examples/IncludeInheritanceHierarchyTests.cs +++ b/src/Refitter.Tests/Examples/IncludeInheritanceHierarchyTests.cs @@ -1,4 +1,4 @@ -using FluentAssertions; +using FluentAssertions; using Refitter.Core; using Refitter.Tests.Build; using Xunit; @@ -57,71 +57,71 @@ public class IncludeInheritanceHierarchyTests additionalProperties: false "; - [Theory] - [InlineData(true)] - [InlineData(false)] - public async Task Can_Generate_Code(bool includeHierarchy) - { - string generateCode = await GenerateCode(includeHierarchy); - generateCode.Should().NotBeNullOrWhiteSpace(); - } + [Theory] + [InlineData(true)] + [InlineData(false)] + public async Task Can_Generate_Code(bool includeHierarchy) + { + string generateCode = await GenerateCode(includeHierarchy); + generateCode.Should().NotBeNullOrWhiteSpace(); + } - [Fact] - public async Task Removes_Unreferenced_Schema() - { - string generateCode = await GenerateCode(includeHierarchy: false); - generateCode.Should().NotContain("Anonymous"); + [Fact] + public async Task Removes_Unreferenced_Schema() + { + string generateCode = await GenerateCode(includeHierarchy: false); + generateCode.Should().NotContain("Anonymous"); - generateCode.Should().NotContain("class B"); - generateCode.Should().Contain("class A"); - } + generateCode.Should().NotContain("class B"); + generateCode.Should().Contain("class A"); + } - [Fact] - public async Task Keeps_All_Union_Cases_Schema() - { - string generateCode = await GenerateCode(includeHierarchy: true); - generateCode.Should().NotContain("Anonymous"); + [Fact] + public async Task Keeps_All_Union_Cases_Schema() + { + string generateCode = await GenerateCode(includeHierarchy: true); + generateCode.Should().NotContain("Anonymous"); - generateCode.Should().Contain("class B"); - generateCode.Should().Contain("class A"); - } + generateCode.Should().Contain("class B"); + generateCode.Should().Contain("class A"); + } - [Theory] - [InlineData(true)] - [InlineData(false)] - public async Task Can_Build_Generated_Code(bool includeHierarchy) - { - string generateCode = await GenerateCode(includeHierarchy); - BuildHelper - .BuildCSharp(generateCode) - .Should() - .BeTrue(); - } + [Theory] + [InlineData(true)] + [InlineData(false)] + public async Task Can_Build_Generated_Code(bool includeHierarchy) + { + string generateCode = await GenerateCode(includeHierarchy); + BuildHelper + .BuildCSharp(generateCode) + .Should() + .BeTrue(); + } - private static async Task GenerateCode(bool includeHierarchy) - { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); - var settings = new RefitGeneratorSettings + private static async Task GenerateCode(bool includeHierarchy) { - OpenApiPath = swaggerFile, - TrimUnusedSchema = true, - IncludeInheritanceHierarchy = includeHierarchy, - UsePolymorphicSerialization = true, // use System.Text.Json attributes - }; + var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var settings = new RefitGeneratorSettings + { + OpenApiPath = swaggerFile, + TrimUnusedSchema = true, + IncludeInheritanceHierarchy = includeHierarchy, + UsePolymorphicSerialization = true, // use System.Text.Json attributes + }; - var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; - } + var sut = await RefitGenerator.CreateAsync(settings); + var generateCode = sut.Generate(); + return generateCode; + } - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; + private static async Task CreateSwaggerFile(string contents) + { + var filename = $"{Guid.NewGuid()}.yml"; + var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); + Directory.CreateDirectory(folder); + var swaggerFile = Path.Combine(folder, filename); + await File.WriteAllTextAsync(swaggerFile, contents); + return swaggerFile; + } } } -} diff --git a/src/Refitter.Tests/Examples/KeepSchemaPatternsTests.cs b/src/Refitter.Tests/Examples/KeepSchemaPatternsTests.cs index 4c058f2d5..cc4c3187b 100644 --- a/src/Refitter.Tests/Examples/KeepSchemaPatternsTests.cs +++ b/src/Refitter.Tests/Examples/KeepSchemaPatternsTests.cs @@ -1,4 +1,4 @@ -using FluentAssertions; +using FluentAssertions; using Refitter.Core; using Refitter.Tests.Build; using Xunit; @@ -145,7 +145,7 @@ public async Task Can_Build_Generated_Code() private static async Task GenerateCode() { var swaggerFile = await CreateSwaggerFile(OpenApiSpec); - var settings = new RefitGeneratorSettings {OpenApiPath = swaggerFile, TrimUnusedSchema = true, KeepSchemaPatterns = new[] {"^UserComponent$"},}; + var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile, TrimUnusedSchema = true, KeepSchemaPatterns = new[] { "^UserComponent$" }, }; var sut = await RefitGenerator.CreateAsync(settings); var generateCode = sut.Generate(); @@ -161,4 +161,4 @@ private static async Task CreateSwaggerFile(string contents) await File.WriteAllTextAsync(swaggerFile, contents); return swaggerFile; } -} \ No newline at end of file +} diff --git a/src/Refitter.Tests/Examples/NoContentApiResponseTests.cs b/src/Refitter.Tests/Examples/NoContentApiResponseTests.cs index b2a89baf1..018fb08fd 100644 --- a/src/Refitter.Tests/Examples/NoContentApiResponseTests.cs +++ b/src/Refitter.Tests/Examples/NoContentApiResponseTests.cs @@ -98,4 +98,4 @@ private static async Task CreateSwaggerFile(string contents) await File.WriteAllTextAsync(swaggerFile, contents); return swaggerFile; } -} \ No newline at end of file +} diff --git a/src/Refitter.Tests/Examples/OctetStreamBodyTests.cs b/src/Refitter.Tests/Examples/OctetStreamBodyTests.cs index efe7a7899..64b4d6afc 100644 --- a/src/Refitter.Tests/Examples/OctetStreamBodyTests.cs +++ b/src/Refitter.Tests/Examples/OctetStreamBodyTests.cs @@ -48,21 +48,21 @@ public async Task Can_Generate_Code() string generateCode = await GenerateCode(); generateCode.Should().NotBeNullOrWhiteSpace(); } - + [Fact] public async Task Generates_Pet_Interface() { string generateCode = await GenerateCode(); generateCode.Should().Contain("partial interface IPetApi"); } - + [Fact] public async Task Generates_StreamPart_Parameter() { string generateCode = await GenerateCode(true); generateCode.Should().Contain("long petId, [Query] string additionalMetadata, StreamPart body"); } - + [Fact] public async Task Can_Build_Generated_Code() { diff --git a/src/Refitter.Tests/Examples/OpenApiUrlTests.cs b/src/Refitter.Tests/Examples/OpenApiUrlTests.cs index 02a63ed00..9d9308379 100644 --- a/src/Refitter.Tests/Examples/OpenApiUrlTests.cs +++ b/src/Refitter.Tests/Examples/OpenApiUrlTests.cs @@ -1,4 +1,4 @@ -#if !DEBUG +#if !DEBUG using FluentAssertions; using Refitter.Core; using Refitter.Tests.Build; @@ -45,4 +45,4 @@ public async Task Can_Build_Generated_Code_From_OpenApi_v3_Url_Yaml(string url) .BeTrue(url); } } -#endif \ No newline at end of file +#endif diff --git a/src/Refitter.Tests/Examples/OptionalNullableParametersTests.cs b/src/Refitter.Tests/Examples/OptionalNullableParametersTests.cs index 54f962589..db4507363 100644 --- a/src/Refitter.Tests/Examples/OptionalNullableParametersTests.cs +++ b/src/Refitter.Tests/Examples/OptionalNullableParametersTests.cs @@ -51,7 +51,7 @@ public async Task Can_Generate_Code() string generateCode = await GenerateCode(); generateCode.Should().NotBeNullOrWhiteSpace(); } - + [Fact] public async Task Generates_Nullable_Directive() { @@ -118,4 +118,4 @@ private static async Task CreateSwaggerFile(string contents) await File.WriteAllTextAsync(swaggerFile, contents); return swaggerFile; } -} \ No newline at end of file +} diff --git a/src/Refitter.Tests/Examples/PathParametersTests.cs b/src/Refitter.Tests/Examples/PathParametersTests.cs index 63bd17ae6..2a1cf2bdb 100644 --- a/src/Refitter.Tests/Examples/PathParametersTests.cs +++ b/src/Refitter.Tests/Examples/PathParametersTests.cs @@ -98,4 +98,4 @@ private static async Task CreateSwaggerFile(string contents) await File.WriteAllTextAsync(swaggerFile, contents); return swaggerFile; } -} \ No newline at end of file +} diff --git a/src/Refitter.Tests/Examples/PoorOperationIdsTests.cs b/src/Refitter.Tests/Examples/PoorOperationIdsTests.cs index a0491f083..9a24ca6e7 100644 --- a/src/Refitter.Tests/Examples/PoorOperationIdsTests.cs +++ b/src/Refitter.Tests/Examples/PoorOperationIdsTests.cs @@ -1,4 +1,4 @@ -using FluentAssertions; +using FluentAssertions; using Refitter.Core; using Refitter.Tests.Build; using Xunit; @@ -95,4 +95,4 @@ private static async Task CreateSwaggerFile(string contents) await File.WriteAllTextAsync(swaggerFile, contents); return swaggerFile; } -} \ No newline at end of file +} diff --git a/src/Refitter.Tests/Examples/SystemPropertyInContractTests.cs b/src/Refitter.Tests/Examples/SystemPropertyInContractTests.cs index cbe33019a..a5b1ac423 100644 --- a/src/Refitter.Tests/Examples/SystemPropertyInContractTests.cs +++ b/src/Refitter.Tests/Examples/SystemPropertyInContractTests.cs @@ -1,4 +1,4 @@ -using FluentAssertions; +using FluentAssertions; using Refitter.Core; using Refitter.Tests.Build; using Xunit; @@ -73,4 +73,4 @@ private static async Task CreateSwaggerFile(string contents) await File.WriteAllTextAsync(swaggerFile, contents); return swaggerFile; } -} \ No newline at end of file +} diff --git a/src/Refitter.Tests/Examples/TrimUnusedSchemaTests.cs b/src/Refitter.Tests/Examples/TrimUnusedSchemaTests.cs index 592575f72..1553c7e4f 100644 --- a/src/Refitter.Tests/Examples/TrimUnusedSchemaTests.cs +++ b/src/Refitter.Tests/Examples/TrimUnusedSchemaTests.cs @@ -1,4 +1,4 @@ -using FluentAssertions; +using FluentAssertions; using Refitter.Core; using Refitter.Tests.Build; using Xunit; @@ -246,4 +246,4 @@ private static async Task CreateSwaggerFile(string contents) await File.WriteAllTextAsync(swaggerFile, contents); return swaggerFile; } -} \ No newline at end of file +} diff --git a/src/Refitter.Tests/IllegalSymbolsTests.cs b/src/Refitter.Tests/IllegalSymbolsTests.cs index f8d1f74e9..d774c1386 100644 --- a/src/Refitter.Tests/IllegalSymbolsTests.cs +++ b/src/Refitter.Tests/IllegalSymbolsTests.cs @@ -1,4 +1,4 @@ -using FluentAssertions; +using FluentAssertions; using Refitter.Core; using Refitter.Tests.Build; using Refitter.Tests.Resources; @@ -46,4 +46,4 @@ private static async Task GenerateCode( return sut.Generate(); } -} \ No newline at end of file +} diff --git a/src/Refitter.Tests/OpenApiDocumentFactoryTests.cs b/src/Refitter.Tests/OpenApiDocumentFactoryTests.cs index c2787d4c3..720f5a39c 100644 --- a/src/Refitter.Tests/OpenApiDocumentFactoryTests.cs +++ b/src/Refitter.Tests/OpenApiDocumentFactoryTests.cs @@ -1,4 +1,4 @@ -using FluentAssertions; +using FluentAssertions; using Refitter.Core; using Refitter.Tests.Resources; using Xunit; @@ -17,7 +17,7 @@ public async Task Create_From_Uri_Returns_NotNull(string url) .Should() .NotBeNull(); } - + [Theory] [InlineData(SampleOpenSpecifications.SwaggerPetstoreJsonV3, "SwaggerPetstore.json")] [InlineData(SampleOpenSpecifications.SwaggerPetstoreYamlV3, "SwaggerPetstore.yaml")] @@ -31,4 +31,4 @@ public async Task Create_From_File_Returns_NotNull(SampleOpenSpecifications vers .Should() .NotBeNull(); } -} \ No newline at end of file +} diff --git a/src/Refitter.Tests/PathParametersWithUrlTests.cs b/src/Refitter.Tests/PathParametersWithUrlTests.cs index d7d2b2a8e..243bd06cc 100644 --- a/src/Refitter.Tests/PathParametersWithUrlTests.cs +++ b/src/Refitter.Tests/PathParametersWithUrlTests.cs @@ -43,4 +43,4 @@ private static async Task GenerateCode(string url) var generateCode = sut.Generate(); return generateCode; } -} \ No newline at end of file +} diff --git a/src/Refitter.Tests/RefitInterfaceImportTests.cs b/src/Refitter.Tests/RefitInterfaceImportTests.cs index 74cb14eeb..5a3caed68 100644 --- a/src/Refitter.Tests/RefitInterfaceImportTests.cs +++ b/src/Refitter.Tests/RefitInterfaceImportTests.cs @@ -1,4 +1,4 @@ -using FluentAssertions; +using FluentAssertions; using Refitter.Core; using Xunit; @@ -36,7 +36,7 @@ public void Should_NotContain_Any_System_Excluded() [Fact] public void Should_NotContain_SystemThreading_Excluded() { - var settings = new RefitGeneratorSettings { UseCancellationTokens = true, ReturnIObservable = false, ExcludeNamespaces = new string[] { "System.Threading$" } }; + var settings = new RefitGeneratorSettings { UseCancellationTokens = true, ReturnIObservable = false, ExcludeNamespaces = new string[] { "System.Threading$" } }; var refitInterfaceImport = RefitInterfaceImports.GetImportedNamespaces(settings); refitInterfaceImport.Should().NotContain("System.Threading"); refitInterfaceImport.Should().Contain("System.Threading.Tasks"); @@ -58,4 +58,4 @@ public void Should_Contain_ApizrConfiguringRequest_And_NotContain_SystemThreadin refitInterfaceImport.Should().Contain("Apizr.Configuring.Request"); refitInterfaceImport.Should().NotContain("System.Threading"); } -} \ No newline at end of file +} diff --git a/src/Refitter.Tests/Resources/EmbeddedResources.cs b/src/Refitter.Tests/Resources/EmbeddedResources.cs index e182392d4..8109144ba 100644 --- a/src/Refitter.Tests/Resources/EmbeddedResources.cs +++ b/src/Refitter.Tests/Resources/EmbeddedResources.cs @@ -1,4 +1,4 @@ -namespace Refitter.Tests.Resources; +namespace Refitter.Tests.Resources; public static class EmbeddedResources { diff --git a/src/Refitter.Tests/Resources/SampleOpenSpecifications.cs b/src/Refitter.Tests/Resources/SampleOpenSpecifications.cs index e21b3ad8b..54b1443bb 100644 --- a/src/Refitter.Tests/Resources/SampleOpenSpecifications.cs +++ b/src/Refitter.Tests/Resources/SampleOpenSpecifications.cs @@ -1,4 +1,4 @@ -namespace Refitter.Tests.Resources; +namespace Refitter.Tests.Resources; public enum SampleOpenSpecifications { diff --git a/src/Refitter.Tests/StringCasingExtensionTests.cs b/src/Refitter.Tests/StringCasingExtensionTests.cs index 8fd38ef70..5a3047d95 100644 --- a/src/Refitter.Tests/StringCasingExtensionTests.cs +++ b/src/Refitter.Tests/StringCasingExtensionTests.cs @@ -45,4 +45,4 @@ public void CanConvertColonsToPascalCase(string input, string expected) [InlineData("foo_bar", "FooBar")] public void CanConvertSnakeCaseToPascalCase(string input, string expected) => input.ConvertSnakeCaseToPascalCase().Should().Be(expected); -} \ No newline at end of file +} diff --git a/src/Refitter.Tests/SwaggerPetstoreApizrTests.cs b/src/Refitter.Tests/SwaggerPetstoreApizrTests.cs index bcb410e06..140d0eb6c 100644 --- a/src/Refitter.Tests/SwaggerPetstoreApizrTests.cs +++ b/src/Refitter.Tests/SwaggerPetstoreApizrTests.cs @@ -115,7 +115,7 @@ public async Task Can_Generate_Code_With_Default_Namespace(SampleOpenSpecificati [InlineData(SampleOpenSpecifications.SwaggerPetstoreYamlV2, "SwaggerPetstore.yaml")] public async Task Can_Generate_Code_With_Fixed_Interface_Name(SampleOpenSpecifications version, string filename) { - var settings = new ApizrGeneratorSettings {Naming = {UseOpenApiTitle = false, InterfaceName = "SomeOtherName"}}; + var settings = new ApizrGeneratorSettings { Naming = { UseOpenApiTitle = false, InterfaceName = "SomeOtherName" } }; var generateCode = await GenerateCode(version, filename, settings); generateCode.Should().Contain("interface ISomeOtherName"); } @@ -127,7 +127,7 @@ public async Task Can_Generate_Code_With_Fixed_Interface_Name(SampleOpenSpecific [InlineData(SampleOpenSpecifications.SwaggerPetstoreYamlV2, "SwaggerPetstore.yaml")] public async Task Can_Generate_Code_Without_AutoGenerated_Header(SampleOpenSpecifications version, string filename) { - var settings = new ApizrGeneratorSettings {AddAutoGeneratedHeader = false}; + var settings = new ApizrGeneratorSettings { AddAutoGeneratedHeader = false }; var generateCode = await GenerateCode(version, filename, settings); generateCode.Should().NotContain("This code was generated by Refitter"); } @@ -139,7 +139,7 @@ public async Task Can_Generate_Code_Without_AutoGenerated_Header(SampleOpenSpeci [InlineData(SampleOpenSpecifications.SwaggerPetstoreYamlV2, "SwaggerPetstore.yaml")] public async Task Can_Generate_Code_That_Returns_IApiResponse(SampleOpenSpecifications version, string filename) { - var settings = new ApizrGeneratorSettings {ReturnIApiResponse = true}; + var settings = new ApizrGeneratorSettings { ReturnIApiResponse = true }; var generateCode = await GenerateCode(version, filename, settings); generateCode.Should().Contain("Task>"); } @@ -174,7 +174,7 @@ public async Task Can_Generate_Code_With_Type_Override(SampleOpenSpecifications [InlineData(SampleOpenSpecifications.SwaggerPetstoreYamlV2, "SwaggerPetstore.yaml")] public async Task Can_Generate_Code_With_Internal_Contract_Types(SampleOpenSpecifications version, string filename) { - var settings = new ApizrGeneratorSettings {TypeAccessibility = TypeAccessibility.Internal}; + var settings = new ApizrGeneratorSettings { TypeAccessibility = TypeAccessibility.Internal }; var generateCode = await GenerateCode(version, filename, settings); generateCode.Should().Contain("internal partial class"); } @@ -186,7 +186,7 @@ public async Task Can_Generate_Code_With_Internal_Contract_Types(SampleOpenSpeci [InlineData(SampleOpenSpecifications.SwaggerPetstoreYamlV2, "SwaggerPetstore.yaml")] public async Task Can_Generate_Code_With_Internal_Interface(SampleOpenSpecifications version, string filename) { - var settings = new ApizrGeneratorSettings {TypeAccessibility = TypeAccessibility.Internal}; + var settings = new ApizrGeneratorSettings { TypeAccessibility = TypeAccessibility.Internal }; var generateCode = await GenerateCode(version, filename, settings); generateCode.Should().Contain("internal partial interface"); } @@ -198,7 +198,7 @@ public async Task Can_Generate_Code_With_Internal_Interface(SampleOpenSpecificat [InlineData(SampleOpenSpecifications.SwaggerPetstoreYamlV2, "SwaggerPetstore.yaml")] public async Task Can_Generate_Code_Without_CancellationToken(SampleOpenSpecifications version, string filename) { - var settings = new ApizrGeneratorSettings {UseCancellationTokens = true}; + var settings = new ApizrGeneratorSettings { UseCancellationTokens = true }; var generateCode = await GenerateCode(version, filename, settings); generateCode.Should().NotContain("CancellationToken cancellationToken = default"); // Handled by Apizr request options } @@ -217,7 +217,7 @@ public async Task Can_Generate_Code_With_Correct_Usings( string filename, bool cancellationTokens) { - var settings = new ApizrGeneratorSettings {UseCancellationTokens = cancellationTokens}; + var settings = new ApizrGeneratorSettings { UseCancellationTokens = cancellationTokens }; var generateCode = await GenerateCode(version, filename, settings); generateCode.Should().NotContain("CancellationToken cancellationToken = default"); // Handled by Apizr request options } @@ -229,7 +229,7 @@ public async Task Can_Generate_Code_With_Correct_Usings( [InlineData(SampleOpenSpecifications.SwaggerPetstoreYamlV2WithDifferentHeaders, "SwaggerPetstoreWithDifferentHeaders.yaml")] public async Task Can_Generate_Code_With_OperationHeaders_With_Different_Headers(SampleOpenSpecifications version, string filename) { - var settings = new ApizrGeneratorSettings {GenerateOperationHeaders = true}; + var settings = new ApizrGeneratorSettings { GenerateOperationHeaders = true }; var generateCode = await GenerateCode(version, filename, settings); generateCode.Should().Contain("[Header(\"api-key\")] string api_key"); } @@ -241,7 +241,7 @@ public async Task Can_Generate_Code_With_OperationHeaders_With_Different_Headers [InlineData(SampleOpenSpecifications.SwaggerPetstoreYamlV2, "SwaggerPetstore.yaml")] public async Task Can_Generate_Code_With_OperationHeaders(SampleOpenSpecifications version, string filename) { - var settings = new ApizrGeneratorSettings {GenerateOperationHeaders = true}; + var settings = new ApizrGeneratorSettings { GenerateOperationHeaders = true }; var generateCode = await GenerateCode(version, filename, settings); generateCode.Should().Contain("[Header(\"api_key\")] string api_key"); } @@ -253,7 +253,7 @@ public async Task Can_Generate_Code_With_OperationHeaders(SampleOpenSpecificatio [InlineData(SampleOpenSpecifications.SwaggerPetstoreYamlV2, "SwaggerPetstore.yaml")] public async Task Can_Generate_Code_Without_OperationHeaders(SampleOpenSpecifications version, string filename) { - var settings = new ApizrGeneratorSettings {GenerateOperationHeaders = false}; + var settings = new ApizrGeneratorSettings { GenerateOperationHeaders = false }; var generateCode = await GenerateCode(version, filename, settings); generateCode.Should().NotContain("[Header(\"api_key\")] string? api_key"); } @@ -265,7 +265,7 @@ public async Task Can_Generate_Code_Without_OperationHeaders(SampleOpenSpecifica [InlineData(SampleOpenSpecifications.SwaggerPetstoreYamlV2WithUnsafeAuthenticationHeaders, "SwaggerPetstoreWithUnsafeAuthenticationHeaders.yaml")] public async Task Can_Generate_Code_With_Unsafe_AuthenticationHeaders(SampleOpenSpecifications version, string filename) { - var settings = new ApizrGeneratorSettings {GenerateAuthenticationHeader = true}; + var settings = new ApizrGeneratorSettings { GenerateAuthenticationHeader = true }; var generateCode = await GenerateCode(version, filename, settings); generateCode.Should().Contain("[Header(\"auth.key\")] string auth_key"); } @@ -277,7 +277,7 @@ public async Task Can_Generate_Code_With_Unsafe_AuthenticationHeaders(SampleOpen [InlineData(SampleOpenSpecifications.SwaggerPetstoreYamlV2WithAuthenticationHeaders, "SwaggerPetstoreWithAuthenticationHeaders.yaml")] public async Task Can_Generate_Code_With_AuthenticationHeaders(SampleOpenSpecifications version, string filename) { - var settings = new ApizrGeneratorSettings {GenerateAuthenticationHeader = true}; + var settings = new ApizrGeneratorSettings { GenerateAuthenticationHeader = true }; var generateCode = await GenerateCode(version, filename, settings); generateCode.Should().Contain("[Header(\"auth_key\")] string auth_key"); } @@ -289,7 +289,7 @@ public async Task Can_Generate_Code_With_AuthenticationHeaders(SampleOpenSpecifi [InlineData(SampleOpenSpecifications.SwaggerPetstoreYamlV2WithAuthenticationHeaders, "SwaggerPetstoreWithAuthenticationHeaders.yaml")] public async Task Can_Generate_Code_With_AuthenticationHeaders_Without_OperationHeaders(SampleOpenSpecifications version, string filename) { - var settings = new ApizrGeneratorSettings {GenerateOperationHeaders = false, GenerateAuthenticationHeader = true}; + var settings = new ApizrGeneratorSettings { GenerateOperationHeaders = false, GenerateAuthenticationHeader = true }; var generateCode = await GenerateCode(version, filename, settings); generateCode.Should().Contain("[Header(\"auth_key\")] string auth_key"); } @@ -301,7 +301,7 @@ public async Task Can_Generate_Code_With_AuthenticationHeaders_Without_Operation [InlineData(SampleOpenSpecifications.SwaggerPetstoreYamlV2, "SwaggerPetstore.yaml")] public async Task Can_Generate_Code_Without_AuthenticationHeaders(SampleOpenSpecifications version, string filename) { - var settings = new ApizrGeneratorSettings {GenerateAuthenticationHeader = false}; + var settings = new ApizrGeneratorSettings { GenerateAuthenticationHeader = false }; var generateCode = await GenerateCode(version, filename, settings); generateCode.Should().NotContain("[Header(\"auth_key\")] string? auth_key"); } @@ -326,7 +326,7 @@ public async Task Can_Generate_Code_With_Accept_Request_Header(SampleOpenSpecifi [InlineData(SampleOpenSpecifications.SwaggerPetstoreYamlV3, "SwaggerPetstore.yaml")] public async Task Can_Generate_Code_With_No_Accept_Request_Header(SampleOpenSpecifications version, string filename) { - var settings = new ApizrGeneratorSettings {AddAcceptHeaders = false}; + var settings = new ApizrGeneratorSettings { AddAcceptHeaders = false }; var generateCode = await GenerateCode(version, filename, settings); generateCode.Should().NotContain("[Headers(\"Accept"); } @@ -338,7 +338,7 @@ public async Task Can_Generate_Code_With_No_Accept_Request_Header(SampleOpenSpec [InlineData(SampleOpenSpecifications.SwaggerPetstoreYamlV2, "SwaggerPetstore.yaml")] public async Task Can_Generate_Code_With_Multiple_Interfaces(SampleOpenSpecifications version, string filename) { - var settings = new ApizrGeneratorSettings {MultipleInterfaces = MultipleInterfaces.ByEndpoint}; + var settings = new ApizrGeneratorSettings { MultipleInterfaces = MultipleInterfaces.ByEndpoint }; var generateCode = await GenerateCode(version, filename, settings); generateCode.Should().NotBeNullOrWhiteSpace(); } @@ -422,7 +422,7 @@ public async Task Can_Generate_Code_GeneratedCode_Attribute( string filename, MultipleInterfaces multipleInterfaces) { - var settings = new ApizrGeneratorSettings {MultipleInterfaces = multipleInterfaces}; + var settings = new ApizrGeneratorSettings { MultipleInterfaces = multipleInterfaces }; var generateCode = await GenerateCode(version, filename, settings); generateCode.Should().Contain("[System.CodeDom.Compiler.GeneratedCode(\"Refitter\""); } @@ -439,7 +439,8 @@ public async Task Can_Generate_Code_With_Multiple_Interfaces_And_OperationNameTe { var settings = new ApizrGeneratorSettings { - MultipleInterfaces = multipleInterfaces, OperationNameTemplate = "ExecuteAsync" + MultipleInterfaces = multipleInterfaces, + OperationNameTemplate = "ExecuteAsync" }; var generateCode = await GenerateCode(version, filename, settings); generateCode.Should().Contain("ExecuteAsync("); @@ -470,7 +471,7 @@ public async Task Can_Build_Generated_Code(SampleOpenSpecifications version, str #endif public async Task Can_Build_Generated_Code_With_IApiResponse(SampleOpenSpecifications version, string filename) { - var settings = new ApizrGeneratorSettings {ReturnIApiResponse = true}; + var settings = new ApizrGeneratorSettings { ReturnIApiResponse = true }; var generateCode = await GenerateCode(version, filename, settings); BuildHelper .BuildCSharp(generateCode) @@ -482,7 +483,7 @@ public async Task Can_Build_Generated_Code_With_IApiResponse(SampleOpenSpecifica [InlineData(SampleOpenSpecifications.SwaggerPetstoreJsonV3, "SwaggerPetstore.json")] public async Task Can_Build_Generated_Code_With_IObservableResponse(SampleOpenSpecifications version, string filename) { - var settings = new ApizrGeneratorSettings {ReturnIObservable = true}; + var settings = new ApizrGeneratorSettings { ReturnIObservable = true }; var generateCode = await GenerateCode(version, filename, settings); BuildHelper @@ -500,7 +501,7 @@ public async Task Can_Build_Generated_Code_With_IObservableResponse(SampleOpenSp #endif public async Task Can_Build_Generated_Code_With_Multiple_Interfaces(SampleOpenSpecifications version, string filename) { - var settings = new ApizrGeneratorSettings {MultipleInterfaces = MultipleInterfaces.ByEndpoint}; + var settings = new ApizrGeneratorSettings { MultipleInterfaces = MultipleInterfaces.ByEndpoint }; var generateCode = await GenerateCode(version, filename, settings); BuildHelper .BuildCSharp(generateCode) @@ -517,7 +518,7 @@ public async Task Can_Build_Generated_Code_With_Multiple_Interfaces(SampleOpenSp #endif public async Task Can_Build_Generated_Code_With_Multiple_Interfaces_ByTag(SampleOpenSpecifications version, string filename) { - var settings = new ApizrGeneratorSettings {MultipleInterfaces = MultipleInterfaces.ByTag}; + var settings = new ApizrGeneratorSettings { MultipleInterfaces = MultipleInterfaces.ByTag }; var generateCode = await GenerateCode(version, filename, settings); BuildHelper .BuildCSharp(generateCode) @@ -561,7 +562,7 @@ public async Task Can_Generate_Code_Obsolete_Attribute(SampleOpenSpecifications [InlineData(SampleOpenSpecifications.SwaggerPetstoreYamlV2, "SwaggerPetstore.yaml")] public async Task Can_Generate_Code_Without_Obsolete_Operations(SampleOpenSpecifications version, string filename) { - var settings = new ApizrGeneratorSettings {GenerateDeprecatedOperations = false}; + var settings = new ApizrGeneratorSettings { GenerateDeprecatedOperations = false }; var generateCode = await GenerateCode(version, filename, settings); generateCode.Should().NotContain(@"/pet/findByTags"); } @@ -573,7 +574,7 @@ public async Task Can_Generate_Code_Without_Obsolete_Operations(SampleOpenSpecif [InlineData(SampleOpenSpecifications.SwaggerPetstoreYamlV2, "SwaggerPetstore.yaml")] public async Task Can_Generate_Code_With_Operation_Name_Template(SampleOpenSpecifications version, string filename) { - var settings = new ApizrGeneratorSettings {OperationNameTemplate = "{operationName}Async"}; + var settings = new ApizrGeneratorSettings { OperationNameTemplate = "{operationName}Async" }; var generateCode = await GenerateCode(version, filename, settings); generateCode.Should().Contain("FindPetsByStatusAsync"); } @@ -611,7 +612,8 @@ public async Task Can_Generate_Code_Without_AdditionalProperties(SampleOpenSpeci { var settings = new ApizrGeneratorSettings { - GenerateDefaultAdditionalProperties = false, OperationNameTemplate = "{operationName}Async" + GenerateDefaultAdditionalProperties = false, + OperationNameTemplate = "{operationName}Async" }; var generateCode = await GenerateCode(version, filename, settings); generateCode.Should().NotContain("Dictionary AdditionalProperties"); @@ -628,7 +630,8 @@ public async Task Can_Generate_Code_With_NonNullable_Return_Types(SampleOpenSpec { CodeGeneratorSettings = new CodeGeneratorSettings { - GenerateNullableReferenceTypes = true, GenerateOptionalPropertiesAsNullable = true + GenerateNullableReferenceTypes = true, + GenerateOptionalPropertiesAsNullable = true } }; var generateCode = await GenerateCode(version, filename, settings); @@ -643,7 +646,10 @@ public async Task Can_Generate_Code_With_NonNullable_Return_Types(SampleOpenSpec [InlineData(SampleOpenSpecifications.SwaggerPetstoreYamlV2, "SwaggerPetstore.yaml")] public async Task Can_Generate_Code_With_NonNullable_Return_Types_In_ApiResponse(SampleOpenSpecifications version, string filename) { - var settings = new ApizrGeneratorSettings {ReturnIApiResponse = true, CodeGeneratorSettings = new CodeGeneratorSettings + var settings = new ApizrGeneratorSettings + { + ReturnIApiResponse = true, + CodeGeneratorSettings = new CodeGeneratorSettings { GenerateNullableReferenceTypes = true, GenerateOptionalPropertiesAsNullable = true @@ -676,7 +682,7 @@ public async Task Can_Generate_Code_With_DynamicQuerystringParameter(SampleOpenS var settings = new ApizrGeneratorSettings { UseDynamicQuerystringParameters = true }; var generateCode = await GenerateCode(version, filename, settings); - if(version is SampleOpenSpecifications.SwaggerPetstoreJsonV3 or SampleOpenSpecifications.SwaggerPetstoreYamlV3) + if (version is SampleOpenSpecifications.SwaggerPetstoreJsonV3 or SampleOpenSpecifications.SwaggerPetstoreYamlV3) generateCode.Should().Contain("long petId, [Query] UpdatePetWithFormQueryParams queryParams, [RequestOptions] IApizrRequestOptions options);") .And.Contain("public class UpdatePetWithFormQueryParams"); diff --git a/src/Refitter.Tests/SwaggerPetstoreMultipleFileTests.cs b/src/Refitter.Tests/SwaggerPetstoreMultipleFileTests.cs index fb087875d..cc8192d4e 100644 --- a/src/Refitter.Tests/SwaggerPetstoreMultipleFileTests.cs +++ b/src/Refitter.Tests/SwaggerPetstoreMultipleFileTests.cs @@ -1,4 +1,4 @@ -using FluentAssertions; +using FluentAssertions; using Refitter.Core; using Refitter.Tests.Build; using Refitter.Tests.Resources; diff --git a/src/Refitter.Tests/TestFile.cs b/src/Refitter.Tests/TestFile.cs index 9f7a29e74..3bb72a604 100644 --- a/src/Refitter.Tests/TestFile.cs +++ b/src/Refitter.Tests/TestFile.cs @@ -1,4 +1,4 @@ -namespace Refitter.Tests; +namespace Refitter.Tests; public static class TestFile { @@ -10,4 +10,4 @@ public static async Task CreateSwaggerFile(string contents, string filen await File.WriteAllTextAsync(swaggerFile, contents); return swaggerFile; } -} \ No newline at end of file +} diff --git a/src/Refitter.Tests/XmlDocumentationGeneratorTests.cs b/src/Refitter.Tests/XmlDocumentationGeneratorTests.cs index 4eb81a688..23e18b4e3 100644 --- a/src/Refitter.Tests/XmlDocumentationGeneratorTests.cs +++ b/src/Refitter.Tests/XmlDocumentationGeneratorTests.cs @@ -67,7 +67,8 @@ public void Can_Generate_Method_Remarks() public void Can_Generate_Method_Param() { var docs = new StringBuilder(); - var method = CreateOperationModel(new OpenApiOperation { + var method = CreateOperationModel(new OpenApiOperation + { Parameters = { new OpenApiParameter { OriginalName = "testParam", Description = "TestParameter" } }, }); this._generator.AppendMethodDocumentation(method, false, false, false, docs); @@ -102,7 +103,8 @@ public void Can_Generate_DynamicQuerystring_Param() public void Can_Generate_Method_Returns() { var docs = new StringBuilder(); - var method = CreateOperationModel(new OpenApiOperation { + var method = CreateOperationModel(new OpenApiOperation + { Responses = { ["200"] = new OpenApiResponse @@ -121,7 +123,8 @@ public void Can_Generate_Method_Returns() public void Can_Generate_Method_Returns_With_Empty_Result() { var docs = new StringBuilder(); - var method = CreateOperationModel(new OpenApiOperation { + var method = CreateOperationModel(new OpenApiOperation + { Responses = { ["200"] = new OpenApiResponse { Content = { [""] = new OpenApiMediaType() } }, @@ -207,4 +210,4 @@ public void Can_Generate_Method_With_IApiResponse() .And.Contain("400"); } } -} \ No newline at end of file +} diff --git a/src/Refitter/GenerateCommand.cs b/src/Refitter/GenerateCommand.cs index d10e7e45e..92529d976 100644 --- a/src/Refitter/GenerateCommand.cs +++ b/src/Refitter/GenerateCommand.cs @@ -67,7 +67,7 @@ public override async Task ExecuteAsync(CommandContext context, Settings se var supportKey = settings.NoLogging ? "Unavailable when logging is disabled" : SupportInformation.GetSupportKey(); - + if (settings.SimpleOutput) { Console.WriteLine($"Support key: {supportKey}"); @@ -239,7 +239,7 @@ public override async Task ExecuteAsync(CommandContext context, Settings se AnsiConsole.WriteLine(); } } - + if (settings.SimpleOutput) { Console.WriteLine("Support"); @@ -413,7 +413,7 @@ private async Task WriteMultipleFiles( var totalSize = 0L; var totalLines = 0; - + Table? table = null; if (settings.SimpleOutput) diff --git a/src/Refitter/Program.cs b/src/Refitter/Program.cs index f1e6cbb32..79bdb52a7 100644 --- a/src/Refitter/Program.cs +++ b/src/Refitter/Program.cs @@ -1,4 +1,4 @@ -using System.Diagnostics.CodeAnalysis; +using System.Diagnostics.CodeAnalysis; using Spectre.Console.Cli; namespace Refitter; @@ -134,7 +134,7 @@ private static int Main(string[] args) "./openapi.json", "--trim-unused-schema", " --keep-schema", - "'^Model$'", + "'^Model$'", "--keep-schema", "'^Person.+'"); @@ -148,7 +148,7 @@ private static int Main(string[] args) "--operation-name-template", "'{operationName}Async'"); - configuration + configuration .AddExample( "./openapi.json", "--optional-nullable-parameters"); @@ -167,4 +167,4 @@ private static int Main(string[] args) return app.Run(args); } -} \ No newline at end of file +} diff --git a/src/Refitter/Settings.cs b/src/Refitter/Settings.cs index 9af149b6c..c809d170d 100644 --- a/src/Refitter/Settings.cs +++ b/src/Refitter/Settings.cs @@ -40,7 +40,7 @@ public sealed class Settings : CommandSettings [Description("Don't add header to output file")] [CommandOption("--no-auto-generated-header")] [DefaultValue(false)] - public bool NoAutoGeneratedHeader { get; set; } + public bool NoAutoGeneratedHeader { get; set; } [Description("Don't generate XML doc comments for interfaces and operations")] [CommandOption("--no-xml-doc-comments")] diff --git a/src/Refitter/SettingsValidator.cs b/src/Refitter/SettingsValidator.cs index de723b621..e4232555a 100644 --- a/src/Refitter/SettingsValidator.cs +++ b/src/Refitter/SettingsValidator.cs @@ -1,4 +1,4 @@ -using Refitter.Core; +using Refitter.Core; using Spectre.Console; namespace Refitter; @@ -111,4 +111,4 @@ private static bool IsUrl(string openApiPath) return Uri.TryCreate(openApiPath, UriKind.Absolute, out var uriResult) && (uriResult.Scheme == Uri.UriSchemeHttp || uriResult.Scheme == Uri.UriSchemeHttps); } -} \ No newline at end of file +} diff --git a/src/Refitter/SupportInformation.cs b/src/Refitter/SupportInformation.cs index 1a70b8e22..1b56d93b4 100644 --- a/src/Refitter/SupportInformation.cs +++ b/src/Refitter/SupportInformation.cs @@ -31,4 +31,4 @@ private static string ToSha256(this string value) var hash = SHA256.HashData(bytes); return Convert.ToBase64String(hash).ToLowerInvariant(); } -} \ No newline at end of file +} diff --git a/src/Refitter/SupportKeyInitializer.cs b/src/Refitter/SupportKeyInitializer.cs index dea24938a..f6539b048 100644 --- a/src/Refitter/SupportKeyInitializer.cs +++ b/src/Refitter/SupportKeyInitializer.cs @@ -1,4 +1,4 @@ -using Microsoft.ApplicationInsights.Channel; +using Microsoft.ApplicationInsights.Channel; using Microsoft.ApplicationInsights.DataContracts; using Microsoft.ApplicationInsights.Extensibility; diff --git a/src/Refitter/Validation/OpenApiStats.cs b/src/Refitter/Validation/OpenApiStats.cs index 243f70efd..70c33da49 100644 --- a/src/Refitter/Validation/OpenApiStats.cs +++ b/src/Refitter/Validation/OpenApiStats.cs @@ -1,4 +1,4 @@ -using Microsoft.OpenApi.Models; +using Microsoft.OpenApi.Models; using Microsoft.OpenApi.Services; namespace Refitter.Validation; @@ -79,4 +79,4 @@ public override string ToString() - Schemas: {SchemaCount} """; } -} \ No newline at end of file +} diff --git a/src/Refitter/Validation/OpenApiValidationException.cs b/src/Refitter/Validation/OpenApiValidationException.cs index 65642847b..62d286c3b 100644 --- a/src/Refitter/Validation/OpenApiValidationException.cs +++ b/src/Refitter/Validation/OpenApiValidationException.cs @@ -1,13 +1,13 @@ -namespace Refitter.Validation; +namespace Refitter.Validation; public class OpenApiValidationException : Exception { public OpenApiValidationResult ValidationResult { get; } public OpenApiValidationException( - OpenApiValidationResult validationResult) + OpenApiValidationResult validationResult) : base("OpenAPI validation failed") { ValidationResult = validationResult; } -} \ No newline at end of file +} diff --git a/src/Refitter/Validation/OpenApiValidationResult.cs b/src/Refitter/Validation/OpenApiValidationResult.cs index 1a8c2702e..0de831f3e 100644 --- a/src/Refitter/Validation/OpenApiValidationResult.cs +++ b/src/Refitter/Validation/OpenApiValidationResult.cs @@ -1,4 +1,4 @@ -using Microsoft.OpenApi.Readers; +using Microsoft.OpenApi.Readers; namespace Refitter.Validation; @@ -7,10 +7,10 @@ public record OpenApiValidationResult( OpenApiStats Statistics) { public bool IsValid => Diagnostics.Errors.Count == 0; - + public void ThrowIfInvalid() { if (!IsValid) throw new OpenApiValidationException(this); } -} \ No newline at end of file +} diff --git a/src/Refitter/Validation/OpenApiValidator.cs b/src/Refitter/Validation/OpenApiValidator.cs index 9b1029ff0..2172da171 100644 --- a/src/Refitter/Validation/OpenApiValidator.cs +++ b/src/Refitter/Validation/OpenApiValidator.cs @@ -1,4 +1,4 @@ -using Microsoft.OpenApi.Readers; +using Microsoft.OpenApi.Readers; using Microsoft.OpenApi.Services; namespace Refitter.Validation; @@ -17,4 +17,4 @@ public static async Task Validate(string openApiFile) result.OpenApiDiagnostic, statsVisitor); } -} \ No newline at end of file +} From 662e8355d7d5aa30a8ecb7f0e462234b5b495834 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 17 Sep 2025 20:50:33 +0000 Subject: [PATCH 3/7] Fix variable name shadowing issues - replace 'generateCode' with 'generatedCode' Co-authored-by: christianhelle <710400+christianhelle@users.noreply.github.com> --- src/Refitter.MSBuild/RefitterGenerateTask.cs | 6 +- .../CustomCSharpGeneratorSettingsTests.cs | 50 ++-- .../Examples/AdditionalNamespacesTests.cs | 16 +- src/Refitter.Tests/Examples/ApizrTests.cs | 62 ++--- ...ReturnMultipleInterfacesByEndpointTests.cs | 16 +- ...yTypeReturnMultipleInterfacesByTagTests.cs | 16 +- .../Examples/ArrayTypeReturnTests.cs | 16 +- .../Examples/CaseSensitiveParametersTests.cs | 16 +- .../Examples/CollectionFormatTests.cs | 16 +- .../Examples/ColonsInPathTests.cs | 16 +- .../CustomCodeGeneratorWithDateTimeTests.cs | 24 +- .../Examples/CustomDateFormatTests.cs | 20 +- .../Examples/DeprecatedEndpointTests.cs | 16 +- .../DeprecatedEndpointsSkippedTests.cs | 24 +- ...ipleInterfaceByTagEndpointsSkippedTests.cs | 24 +- ...dMultipleInterfaceEndpointsSkippedTests.cs | 24 +- .../Examples/FilterByPathTests.cs | 22 +- .../Examples/FilterByTagsTests.cs | 22 +- .../IncludeInheritanceHierarchyTests.cs | 28 +-- src/Refitter.Tests/Examples/KebabCaseTests.cs | 16 +- .../Examples/KeepSchemaPatternsTests.cs | 24 +- .../Examples/MultiPartFormDataTests.cs | 22 +- .../MultipleInterfacesByEndpointTests.cs | 36 +-- ...ultipleInterfacesByEndpointWithIoCTests.cs | 24 +- .../Examples/MultipleInterfacesByTagsTests.cs | 28 +-- .../Examples/MultipleSuccessResponsesTests.cs | 16 +- .../Examples/NoContentApiResponseTests.cs | 16 +- .../Examples/OctetStreamBodyTests.cs | 20 +- .../Examples/OpenApiUrlTests.cs | 8 +- .../OperationIdWithInvalidFirstCharTests.cs | 16 +- .../Examples/OperationIdWithSpacesTests.cs | 16 +- .../OptionalNullableParametersTests.cs | 28 +-- .../Examples/PathParametersTests.cs | 18 +- .../Examples/PercentageCharacterTests.cs | 16 +- .../Examples/PoorOperationIdsTests.cs | 12 +- .../Examples/RequestResponseHeadersTests.cs | 20 +- .../Examples/ResponseHeadersTests.cs | 20 +- .../Examples/SymbolsInDescriptionTests.cs | 16 +- .../Examples/SystemPropertyInContractTests.cs | 12 +- .../Examples/TrimUnusedSchemaTests.cs | 28 +-- .../Examples/UnderscoresToPascalCaseTests.cs | 16 +- .../Examples/UseIsoDateFormatTests.cs | 64 ++--- .../UsePolymorphicSerializationTests.cs | 30 +-- src/Refitter.Tests/IllegalSymbolsTests.cs | 8 +- .../PathParametersWithUrlTests.cs | 12 +- .../SwaggerPetstoreApizrTests.cs | 196 +++++++-------- src/Refitter.Tests/SwaggerPetstoreTests.cs | 228 +++++++++--------- 47 files changed, 700 insertions(+), 700 deletions(-) diff --git a/src/Refitter.MSBuild/RefitterGenerateTask.cs b/src/Refitter.MSBuild/RefitterGenerateTask.cs index 92be08d3d..8d444b7df 100644 --- a/src/Refitter.MSBuild/RefitterGenerateTask.cs +++ b/src/Refitter.MSBuild/RefitterGenerateTask.cs @@ -63,14 +63,14 @@ private List StartProcess(string file) var expectedFiles = GetExpectedGeneratedFiles(file); var assembly = Assembly.GetExecutingAssembly(); var packageFolder = Path.GetDirectoryName(assembly.Location); - var seperator = Path.DirectorySeparatorChar; - var refitterDll = $"{packageFolder}{seperator}..{seperator}net8.0{seperator}refitter.dll"; + var separator = Path.DirectorySeparatorChar; + var refitterDll = $"{packageFolder}{separator}..{separator}net8.0{separator}refitter.dll"; List installedRuntimes = GetInstalledDotnetRuntimes(); if (installedRuntimes.Any(r => r.StartsWith("Microsoft.NETCore.App 9."))) { // Use .NET 9 version if available - refitterDll = $"{packageFolder}{seperator}..{seperator}net9.0{seperator}refitter.dll"; + refitterDll = $"{packageFolder}{separator}..{separator}net9.0{separator}refitter.dll"; TryLogCommandLine("Detected .NET 9 runtime. Using .NET 9 version of Refitter."); } else diff --git a/src/Refitter.Tests/CustomCSharpGeneratorSettingsTests.cs b/src/Refitter.Tests/CustomCSharpGeneratorSettingsTests.cs index eab60ff98..86f3840c0 100644 --- a/src/Refitter.Tests/CustomCSharpGeneratorSettingsTests.cs +++ b/src/Refitter.Tests/CustomCSharpGeneratorSettingsTests.cs @@ -19,9 +19,9 @@ public async Task Can_Generate_Default_DateType( { var settings = new RefitGeneratorSettings(); settings.CodeGeneratorSettings = new CodeGeneratorSettings(); - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().NotBeNullOrWhiteSpace(); - generateCode.Should().Contain(settings.CodeGeneratorSettings!.DateType); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().NotBeNullOrWhiteSpace(); + generatedCode.Should().Contain(settings.CodeGeneratorSettings!.DateType); } [Theory] @@ -35,9 +35,9 @@ public async Task Can_Generate_Default_DateTimeType( { var settings = new RefitGeneratorSettings(); settings.CodeGeneratorSettings = new CodeGeneratorSettings(); - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().NotBeNullOrWhiteSpace(); - generateCode.Should().Contain(settings.CodeGeneratorSettings!.DateTimeType); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().NotBeNullOrWhiteSpace(); + generatedCode.Should().Contain(settings.CodeGeneratorSettings!.DateTimeType); } [Theory] @@ -51,9 +51,9 @@ public async Task Can_Generate_Default_ArrayType( { var settings = new RefitGeneratorSettings(); settings.CodeGeneratorSettings = new CodeGeneratorSettings(); - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().NotBeNullOrWhiteSpace(); - generateCode.Should().Contain("ICollection<"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().NotBeNullOrWhiteSpace(); + generatedCode.Should().Contain("ICollection<"); } [Theory] @@ -68,9 +68,9 @@ public async Task Can_Generate_Custom_DateType( var settings = new RefitGeneratorSettings(); settings.CodeGeneratorSettings = new CodeGeneratorSettings(); settings.CodeGeneratorSettings!.DateType = "DateTime"; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().NotBeNullOrWhiteSpace(); - generateCode.Should().Contain("DateTime"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().NotBeNullOrWhiteSpace(); + generatedCode.Should().Contain("DateTime"); } [Theory] @@ -85,9 +85,9 @@ public async Task Can_Generate_Custom_DateTimeType( var settings = new RefitGeneratorSettings(); settings.CodeGeneratorSettings = new CodeGeneratorSettings(); settings.CodeGeneratorSettings!.DateTimeType = "DateTime"; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().NotBeNullOrWhiteSpace(); - generateCode.Should().Contain("DateTime"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().NotBeNullOrWhiteSpace(); + generatedCode.Should().Contain("DateTime"); } [Theory] @@ -102,9 +102,9 @@ public async Task Can_Generate_Custom_ArrayType( var settings = new RefitGeneratorSettings(); settings.CodeGeneratorSettings = new CodeGeneratorSettings(); settings.CodeGeneratorSettings!.ArrayType = "System.Collection.Generic.IList"; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().NotBeNullOrWhiteSpace(); - generateCode.Should().Contain("System.Collection.Generic.IList<"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().NotBeNullOrWhiteSpace(); + generatedCode.Should().Contain("System.Collection.Generic.IList<"); } [Theory] @@ -122,9 +122,9 @@ public async Task Can_Generate_With_ExcludedTypeNames( { "User" }; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().NotBeNullOrWhiteSpace(); - generateCode.Should().NotContain("class User"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().NotBeNullOrWhiteSpace(); + generatedCode.Should().NotContain("class User"); } [Theory] @@ -137,10 +137,10 @@ public async Task Can_Generate_With_Immutable_Records(SampleOpenSpecifications v var settings = new RefitGeneratorSettings(); settings.ReturnIApiResponse = true; settings.CodeGeneratorSettings = new CodeGeneratorSettings { GenerateNativeRecords = true, }; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("record Pet"); - generateCode.Should().Contain("Pet("); - generateCode.Should().Contain("[JsonConstructor]"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("record Pet"); + generatedCode.Should().Contain("Pet("); + generatedCode.Should().Contain("[JsonConstructor]"); } private static async Task GenerateCode( diff --git a/src/Refitter.Tests/Examples/AdditionalNamespacesTests.cs b/src/Refitter.Tests/Examples/AdditionalNamespacesTests.cs index c23340dfa..61b29fe17 100644 --- a/src/Refitter.Tests/Examples/AdditionalNamespacesTests.cs +++ b/src/Refitter.Tests/Examples/AdditionalNamespacesTests.cs @@ -62,16 +62,16 @@ public class AdditionalNamespacesTests [Fact] public async Task Can_Generate_Code() { - string generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task Can_Build_Generated_Code() { - string generateCode = await GenerateCode(); + string generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -79,8 +79,8 @@ public async Task Can_Build_Generated_Code() [Fact] public async Task Generated_Types_Contains_Additional_Namespaces() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain("using System.Diagnostics.CodeAnalysis;"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain("using System.Diagnostics.CodeAnalysis;"); } private static async Task GenerateCode() @@ -93,8 +93,8 @@ private static async Task GenerateCode() }; var sut = await RefitGenerator.CreateAsync(foo); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } private static async Task CreateSwaggerFile(string contents) diff --git a/src/Refitter.Tests/Examples/ApizrTests.cs b/src/Refitter.Tests/Examples/ApizrTests.cs index 52a190c68..79dca204d 100644 --- a/src/Refitter.Tests/Examples/ApizrTests.cs +++ b/src/Refitter.Tests/Examples/ApizrTests.cs @@ -107,15 +107,15 @@ public class ApizrTests [Fact] public async Task Can_Generate_Code() { - string generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task Generates_Nullable_Directive() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain("#nullable"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain("#nullable"); } [Theory] @@ -124,71 +124,71 @@ public async Task Generates_Nullable_Directive() [InlineData("description")] public async Task Generates_Nullable_Parameters(string parameterName) { - string generateCode = await GenerateCode(); - generateCode.Should().Contain($"string? {parameterName}"); - generateCode.Should().NotContain($"string? {parameterName} = default"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain($"string? {parameterName}"); + generatedCode.Should().NotContain($"string? {parameterName} = default"); } [Fact] public async Task DoesNot_Generate_CancellationToken() { - string generateCode = await GenerateCode(); - generateCode.Should().NotContain("CancellationToken cancellationToken"); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotContain("CancellationToken cancellationToken"); } [Fact] public async Task Generates_RequestOptions_Last() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain("[RequestOptions] IApizrRequestOptions options);"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain("[RequestOptions] IApizrRequestOptions options);"); } [Fact] public async Task Generates_An_Overload_Without_Optional_Parameters() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain("string id, [RequestOptions] IApizrRequestOptions options);"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain("string id, [RequestOptions] IApizrRequestOptions options);"); } [Fact] public async Task Generates_Dynamic_Querystring_Parameters() { - string generateCode = await GenerateCode(true); + string generatedCode = await GenerateCode(true); // All nullable query params ending with a nullable query parameter - generateCode.Should().Contain("string id, [Query] GetFooDetailsQueryParams? queryParams, [RequestOptions] IApizrRequestOptions options);"); - generateCode.Should().Contain("public record GetFooDetailsQueryParams"); + generatedCode.Should().Contain("string id, [Query] GetFooDetailsQueryParams? queryParams, [RequestOptions] IApizrRequestOptions options);"); + generatedCode.Should().Contain("public record GetFooDetailsQueryParams"); // Some required query params ending with a non-nullable query parameter with injected params - generateCode.Should().Contain("string id, [Query] GetBarDetailsQueryParams queryParams, [RequestOptions] IApizrRequestOptions options);"); - generateCode.Should().Contain("public record GetBarDetailsQueryParams"); - generateCode.Should().Contain("public GetBarDetailsQueryParams(string title, string description)"); - generateCode.Should().Contain("Title = title;"); - generateCode.Should().Contain("Description = description;"); + generatedCode.Should().Contain("string id, [Query] GetBarDetailsQueryParams queryParams, [RequestOptions] IApizrRequestOptions options);"); + generatedCode.Should().Contain("public record GetBarDetailsQueryParams"); + generatedCode.Should().Contain("public GetBarDetailsQueryParams(string title, string description)"); + generatedCode.Should().Contain("Title = title;"); + generatedCode.Should().Contain("Description = description;"); } [Fact] public async Task Generates_Dynamic_Querystring_Parameters_ByTag() { - string generateCode = await GenerateCode(true, MultipleInterfaces.ByTag); - generateCode.Should().Contain("string id, [Query] GetFooDetailsQueryParams? queryParams, [RequestOptions] IApizrRequestOptions options);"); - generateCode.Should().Contain("public record GetFooDetailsQueryParams"); + string generatedCode = await GenerateCode(true, MultipleInterfaces.ByTag); + generatedCode.Should().Contain("string id, [Query] GetFooDetailsQueryParams? queryParams, [RequestOptions] IApizrRequestOptions options);"); + generatedCode.Should().Contain("public record GetFooDetailsQueryParams"); } [Fact] public async Task Generates_Dynamic_Querystring_Parameters_ByEndpoint() { - string generateCode = await GenerateCode(true, MultipleInterfaces.ByEndpoint); - generateCode.Should().Contain("string id, [Query] GetFooDetailsQueryParams? queryParams, [RequestOptions] IApizrRequestOptions options);"); - generateCode.Should().Contain("public record GetFooDetailsQueryParams"); + string generatedCode = await GenerateCode(true, MultipleInterfaces.ByEndpoint); + generatedCode.Should().Contain("string id, [Query] GetFooDetailsQueryParams? queryParams, [RequestOptions] IApizrRequestOptions options);"); + generatedCode.Should().Contain("public record GetFooDetailsQueryParams"); } [Fact] public async Task Can_Build_Generated_Code() { - string generateCode = await GenerateCode(); + string generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -211,8 +211,8 @@ private static async Task GenerateCode(bool useDynamicQuerystringParamet }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } private static async Task CreateSwaggerFile(string contents) diff --git a/src/Refitter.Tests/Examples/ArrayTypeReturnMultipleInterfacesByEndpointTests.cs b/src/Refitter.Tests/Examples/ArrayTypeReturnMultipleInterfacesByEndpointTests.cs index eb6d4c1b2..78c85b792 100644 --- a/src/Refitter.Tests/Examples/ArrayTypeReturnMultipleInterfacesByEndpointTests.cs +++ b/src/Refitter.Tests/Examples/ArrayTypeReturnMultipleInterfacesByEndpointTests.cs @@ -48,23 +48,23 @@ public class ArrayTypeReturnMultipleInterfacesByEndpointTests [Fact] public async Task Can_Generate_Code() { - string generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task Returns_IList() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain("IList"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain("IList"); } [Fact] public async Task Can_Build_Generated_Code() { - string generateCode = await GenerateCode(); + string generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -80,8 +80,8 @@ private static async Task GenerateCode() }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } private static async Task CreateSwaggerFile(string contents) diff --git a/src/Refitter.Tests/Examples/ArrayTypeReturnMultipleInterfacesByTagTests.cs b/src/Refitter.Tests/Examples/ArrayTypeReturnMultipleInterfacesByTagTests.cs index 676d6d8c8..11abd6f78 100644 --- a/src/Refitter.Tests/Examples/ArrayTypeReturnMultipleInterfacesByTagTests.cs +++ b/src/Refitter.Tests/Examples/ArrayTypeReturnMultipleInterfacesByTagTests.cs @@ -48,23 +48,23 @@ public class ArrayTypeReturnMultipleInterfacesByTagTests [Fact] public async Task Can_Generate_Code() { - string generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task Returns_IList() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain("IList"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain("IList"); } [Fact] public async Task Can_Build_Generated_Code() { - string generateCode = await GenerateCode(); + string generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -80,8 +80,8 @@ private static async Task GenerateCode() }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } private static async Task CreateSwaggerFile(string contents) diff --git a/src/Refitter.Tests/Examples/ArrayTypeReturnTests.cs b/src/Refitter.Tests/Examples/ArrayTypeReturnTests.cs index 4410038c1..47463877c 100644 --- a/src/Refitter.Tests/Examples/ArrayTypeReturnTests.cs +++ b/src/Refitter.Tests/Examples/ArrayTypeReturnTests.cs @@ -48,23 +48,23 @@ public class ArrayTypeReturnTests [Fact] public async Task Can_Generate_Code() { - string generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task Returns_IList() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain("IList"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain("IList"); } [Fact] public async Task Can_Build_Generated_Code() { - string generateCode = await GenerateCode(); + string generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -79,8 +79,8 @@ private static async Task GenerateCode() }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } private static async Task CreateSwaggerFile(string contents) diff --git a/src/Refitter.Tests/Examples/CaseSensitiveParametersTests.cs b/src/Refitter.Tests/Examples/CaseSensitiveParametersTests.cs index 5ab969568..26d619d9e 100644 --- a/src/Refitter.Tests/Examples/CaseSensitiveParametersTests.cs +++ b/src/Refitter.Tests/Examples/CaseSensitiveParametersTests.cs @@ -43,8 +43,8 @@ public class CaseSensitiveParametersTests [Fact] public async Task Can_Generate_Code() { - string generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Theory] @@ -53,16 +53,16 @@ public async Task Can_Generate_Code() [InlineData("Description")] public async Task Generates_AliasAs_For_Parameters(string parameterName) { - string generateCode = await GenerateCode(); - generateCode.Should().Contain($"AliasAs(\"{parameterName}\")"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain($"AliasAs(\"{parameterName}\")"); } [Fact] public async Task Can_Build_Generated_Code() { - string generateCode = await GenerateCode(); + string generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -73,8 +73,8 @@ private static async Task GenerateCode() var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } private static async Task CreateSwaggerFile(string contents) diff --git a/src/Refitter.Tests/Examples/CollectionFormatTests.cs b/src/Refitter.Tests/Examples/CollectionFormatTests.cs index 26eb88aa9..fec01bc81 100644 --- a/src/Refitter.Tests/Examples/CollectionFormatTests.cs +++ b/src/Refitter.Tests/Examples/CollectionFormatTests.cs @@ -63,16 +63,16 @@ public class CollectionFormatTests [Fact] public async Task Can_Generate_Code() { - string generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task Can_Build_Generated_Code() { - string generateCode = await GenerateCode(); + string generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -85,14 +85,14 @@ public async Task Can_Build_Generated_Code() [InlineData(CollectionFormat.Pipes, "Query(CollectionFormat.Pipes)")] public async Task Generated_Code_Contains_Expected_Collection_Format(CollectionFormat format, string expectedAttribute) { - string generateCode = await GenerateCode(format); + string generatedCode = await GenerateCode(format); using (new AssertionScope()) { - generateCode.Should().Contain(expectedAttribute); + generatedCode.Should().Contain(expectedAttribute); // Check both array parameters use the same format - generateCode.Should().Contain($"[{expectedAttribute}] IEnumerable ids"); - generateCode.Should().Contain($"[{expectedAttribute}] IEnumerable tags"); + generatedCode.Should().Contain($"[{expectedAttribute}] IEnumerable ids"); + generatedCode.Should().Contain($"[{expectedAttribute}] IEnumerable tags"); } } diff --git a/src/Refitter.Tests/Examples/ColonsInPathTests.cs b/src/Refitter.Tests/Examples/ColonsInPathTests.cs index 2b9c83927..c856fbe29 100644 --- a/src/Refitter.Tests/Examples/ColonsInPathTests.cs +++ b/src/Refitter.Tests/Examples/ColonsInPathTests.cs @@ -46,24 +46,24 @@ their ids. [Fact] public async Task Can_Generate_Code() { - var generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + var generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task Generates_Path_Without_Colons() { - var generateCode = await GenerateCode(); + var generatedCode = await GenerateCode(); using var scope = new AssertionScope(); - generateCode.Should().NotContain("/:"); + generatedCode.Should().NotContain("/:"); } [Fact] public async Task Can_Build_Generated_Code() { - var generateCode = await GenerateCode(); + var generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -74,8 +74,8 @@ private static async Task GenerateCode() var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } private static async Task CreateSwaggerFile(string contents) diff --git a/src/Refitter.Tests/Examples/CustomCodeGeneratorWithDateTimeTests.cs b/src/Refitter.Tests/Examples/CustomCodeGeneratorWithDateTimeTests.cs index 7272e5d0c..5c91dfde3 100644 --- a/src/Refitter.Tests/Examples/CustomCodeGeneratorWithDateTimeTests.cs +++ b/src/Refitter.Tests/Examples/CustomCodeGeneratorWithDateTimeTests.cs @@ -74,37 +74,37 @@ public class CustomCodeGeneratorWithDateTimeTests [Fact] public async Task Can_Generate_Code() { - string generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task GeneratedCode_Contains_TimeSpan_Parameter() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain("[Query] System.TimeSpan"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain("[Query] System.TimeSpan"); } [Fact] public async Task GeneratedCode_Contains_DateTime_Parameter() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain("System.DateTime"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain("System.DateTime"); } [Fact] public async Task GeneratedCode_NotContains_DateTimeOffset_Parameter() { - string generateCode = await GenerateCode(); - generateCode.Should().NotContain("System.DateTimeOffset"); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotContain("System.DateTimeOffset"); } [Fact] public async Task Can_Build_Generated_Code() { - string generateCode = await GenerateCode(); + string generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -122,8 +122,8 @@ private static async Task GenerateCode() }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } private static async Task CreateSwaggerFile(string contents) diff --git a/src/Refitter.Tests/Examples/CustomDateFormatTests.cs b/src/Refitter.Tests/Examples/CustomDateFormatTests.cs index 0f23a145b..685b1c750 100644 --- a/src/Refitter.Tests/Examples/CustomDateFormatTests.cs +++ b/src/Refitter.Tests/Examples/CustomDateFormatTests.cs @@ -75,30 +75,30 @@ public class CustomDateFormatTests [Fact] public async Task Can_Generate_Code() { - string generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task GeneratedCode_Contains_Date_Format_String() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain(@"[Query(Format = ""yyyy-MM-ddThh:mm:ssZ"")] "); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain(@"[Query(Format = ""yyyy-MM-ddThh:mm:ssZ"")] "); } [Fact] public async Task GeneratedCode_Contains_TimeSpan_Parameter() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain("[Query] System.TimeSpan"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain("[Query] System.TimeSpan"); } [Fact] public async Task Can_Build_Generated_Code() { - string generateCode = await GenerateCode(); + string generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -116,8 +116,8 @@ private static async Task GenerateCode() }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } private static async Task CreateSwaggerFile(string contents) diff --git a/src/Refitter.Tests/Examples/DeprecatedEndpointTests.cs b/src/Refitter.Tests/Examples/DeprecatedEndpointTests.cs index 769b7edbc..8f6e16207 100644 --- a/src/Refitter.Tests/Examples/DeprecatedEndpointTests.cs +++ b/src/Refitter.Tests/Examples/DeprecatedEndpointTests.cs @@ -60,23 +60,23 @@ public class DeprecatedEndpointTests [Fact] public async Task Can_Generate_Code() { - string generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task Should_Contain_Obsolete_Attribute() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain("[System.Obsolete]"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain("[System.Obsolete]"); } [Fact] public async Task Can_Build_Generated_Code() { - string generateCode = await GenerateCode(); + string generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -87,8 +87,8 @@ private static async Task GenerateCode() var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } private static async Task CreateSwaggerFile(string contents) diff --git a/src/Refitter.Tests/Examples/DeprecatedEndpointsSkippedTests.cs b/src/Refitter.Tests/Examples/DeprecatedEndpointsSkippedTests.cs index cd44a2135..950d337a5 100644 --- a/src/Refitter.Tests/Examples/DeprecatedEndpointsSkippedTests.cs +++ b/src/Refitter.Tests/Examples/DeprecatedEndpointsSkippedTests.cs @@ -60,37 +60,37 @@ public class DeprecatedEndpointsSkippedTests [Fact] public async Task Can_Generate_Code() { - string generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task Should_NotContain_Obsolete_Attribute() { - string generateCode = await GenerateCode(); - generateCode.Should().NotContain("[System.Obsolete]"); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotContain("[System.Obsolete]"); } [Fact] public async Task Should_NotContain_GetAllBars() { - string generateCode = await GenerateCode(); - generateCode.Should().NotContain("GetAllBars"); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotContain("GetAllBars"); } [Fact] public async Task Should_NotContain_GetBarDetails() { - string generateCode = await GenerateCode(); - generateCode.Should().NotContain("GetBarDetails"); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotContain("GetBarDetails"); } [Fact] public async Task Can_Build_Generated_Code() { - string generateCode = await GenerateCode(); + string generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -105,8 +105,8 @@ private static async Task GenerateCode() }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } private static async Task CreateSwaggerFile(string contents) diff --git a/src/Refitter.Tests/Examples/DeprecatedMultipleInterfaceByTagEndpointsSkippedTests.cs b/src/Refitter.Tests/Examples/DeprecatedMultipleInterfaceByTagEndpointsSkippedTests.cs index 80882288f..f4d92e0b3 100644 --- a/src/Refitter.Tests/Examples/DeprecatedMultipleInterfaceByTagEndpointsSkippedTests.cs +++ b/src/Refitter.Tests/Examples/DeprecatedMultipleInterfaceByTagEndpointsSkippedTests.cs @@ -60,37 +60,37 @@ public class DeprecatedMultipleInterfaceByTagEndpointsSkippedTests [Fact] public async Task Can_Generate_Code() { - string generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task Should_NotContain_Obsolete_Attribute() { - string generateCode = await GenerateCode(); - generateCode.Should().NotContain("[System.Obsolete]"); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotContain("[System.Obsolete]"); } [Fact] public async Task Should_NotContain_GetAllBars() { - string generateCode = await GenerateCode(); - generateCode.Should().NotContain("GetAllBarsEndpoint"); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotContain("GetAllBarsEndpoint"); } [Fact] public async Task Should_NotContain_GetBarDetails() { - string generateCode = await GenerateCode(); - generateCode.Should().NotContain("GetBarDetailsEndpoint"); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotContain("GetBarDetailsEndpoint"); } [Fact] public async Task Can_Build_Generated_Code() { - string generateCode = await GenerateCode(); + string generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -106,8 +106,8 @@ private static async Task GenerateCode() }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } private static async Task CreateSwaggerFile(string contents) diff --git a/src/Refitter.Tests/Examples/DeprecatedMultipleInterfaceEndpointsSkippedTests.cs b/src/Refitter.Tests/Examples/DeprecatedMultipleInterfaceEndpointsSkippedTests.cs index 5ffe5ef71..1d1b9660e 100644 --- a/src/Refitter.Tests/Examples/DeprecatedMultipleInterfaceEndpointsSkippedTests.cs +++ b/src/Refitter.Tests/Examples/DeprecatedMultipleInterfaceEndpointsSkippedTests.cs @@ -60,37 +60,37 @@ public class DeprecatedMultipleInterfaceEndpointsSkippedTests [Fact] public async Task Can_Generate_Code() { - string generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task Should_NotContain_Obsolete_Attribute() { - string generateCode = await GenerateCode(); - generateCode.Should().NotContain("[System.Obsolete]"); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotContain("[System.Obsolete]"); } [Fact] public async Task Should_NotContain_GetAllBars() { - string generateCode = await GenerateCode(); - generateCode.Should().NotContain("GetAllBarsEndpoint"); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotContain("GetAllBarsEndpoint"); } [Fact] public async Task Should_NotContain_GetBarDetails() { - string generateCode = await GenerateCode(); - generateCode.Should().NotContain("GetBarDetailsEndpoint"); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotContain("GetBarDetailsEndpoint"); } [Fact] public async Task Can_Build_Generated_Code() { - string generateCode = await GenerateCode(); + string generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -106,8 +106,8 @@ private static async Task GenerateCode() }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } private static async Task CreateSwaggerFile(string contents) diff --git a/src/Refitter.Tests/Examples/FilterByPathTests.cs b/src/Refitter.Tests/Examples/FilterByPathTests.cs index f2e76f3ca..aa511e3a0 100644 --- a/src/Refitter.Tests/Examples/FilterByPathTests.cs +++ b/src/Refitter.Tests/Examples/FilterByPathTests.cs @@ -58,26 +58,26 @@ public class FilterByPathTests [Fact] public async Task Can_Generate_Code() { - string generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task Generates_Methods() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain("\"/bar\""); - generateCode.Should().NotContain("\"/bar/{id}\""); - generateCode.Should().Contain("\"/foo\""); - generateCode.Should().Contain("\"/foo/{id}\""); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain("\"/bar\""); + generatedCode.Should().NotContain("\"/bar/{id}\""); + generatedCode.Should().Contain("\"/foo\""); + generatedCode.Should().Contain("\"/foo/{id}\""); } [Fact] public async Task Can_Build_Generated_Code() { - string generateCode = await GenerateCode(); + string generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -92,8 +92,8 @@ private static async Task GenerateCode() }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } private static async Task CreateSwaggerFile(string contents) diff --git a/src/Refitter.Tests/Examples/FilterByTagsTests.cs b/src/Refitter.Tests/Examples/FilterByTagsTests.cs index 8239cedb7..b00213c31 100644 --- a/src/Refitter.Tests/Examples/FilterByTagsTests.cs +++ b/src/Refitter.Tests/Examples/FilterByTagsTests.cs @@ -67,26 +67,26 @@ public class FilterByTagsTests [Fact] public async Task Can_Generate_Code() { - string generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task Generates_BarAndBaz_Methods() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain("\"/bar\""); - generateCode.Should().Contain("\"/bar/{id}\""); - generateCode.Should().Contain("\"/baz\""); - generateCode.Should().NotContain("/foo"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain("\"/bar\""); + generatedCode.Should().Contain("\"/bar/{id}\""); + generatedCode.Should().Contain("\"/baz\""); + generatedCode.Should().NotContain("/foo"); } [Fact] public async Task Can_Build_Generated_Code() { - string generateCode = await GenerateCode(); + string generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -101,8 +101,8 @@ private static async Task GenerateCode() }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } private static async Task CreateSwaggerFile(string contents) diff --git a/src/Refitter.Tests/Examples/IncludeInheritanceHierarchyTests.cs b/src/Refitter.Tests/Examples/IncludeInheritanceHierarchyTests.cs index abf4aed1f..b0d36afe8 100644 --- a/src/Refitter.Tests/Examples/IncludeInheritanceHierarchyTests.cs +++ b/src/Refitter.Tests/Examples/IncludeInheritanceHierarchyTests.cs @@ -62,28 +62,28 @@ public class IncludeInheritanceHierarchyTests [InlineData(false)] public async Task Can_Generate_Code(bool includeHierarchy) { - string generateCode = await GenerateCode(includeHierarchy); - generateCode.Should().NotBeNullOrWhiteSpace(); + string generatedCode = await GenerateCode(includeHierarchy); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task Removes_Unreferenced_Schema() { - string generateCode = await GenerateCode(includeHierarchy: false); - generateCode.Should().NotContain("Anonymous"); + string generatedCode = await GenerateCode(includeHierarchy: false); + generatedCode.Should().NotContain("Anonymous"); - generateCode.Should().NotContain("class B"); - generateCode.Should().Contain("class A"); + generatedCode.Should().NotContain("class B"); + generatedCode.Should().Contain("class A"); } [Fact] public async Task Keeps_All_Union_Cases_Schema() { - string generateCode = await GenerateCode(includeHierarchy: true); - generateCode.Should().NotContain("Anonymous"); + string generatedCode = await GenerateCode(includeHierarchy: true); + generatedCode.Should().NotContain("Anonymous"); - generateCode.Should().Contain("class B"); - generateCode.Should().Contain("class A"); + generatedCode.Should().Contain("class B"); + generatedCode.Should().Contain("class A"); } [Theory] @@ -91,9 +91,9 @@ public async Task Keeps_All_Union_Cases_Schema() [InlineData(false)] public async Task Can_Build_Generated_Code(bool includeHierarchy) { - string generateCode = await GenerateCode(includeHierarchy); + string generatedCode = await GenerateCode(includeHierarchy); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -110,8 +110,8 @@ private static async Task GenerateCode(bool includeHierarchy) }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } private static async Task CreateSwaggerFile(string contents) diff --git a/src/Refitter.Tests/Examples/KebabCaseTests.cs b/src/Refitter.Tests/Examples/KebabCaseTests.cs index 3657ee419..76326010f 100644 --- a/src/Refitter.Tests/Examples/KebabCaseTests.cs +++ b/src/Refitter.Tests/Examples/KebabCaseTests.cs @@ -53,23 +53,23 @@ public class KebabCaseTests [Fact] public async Task Can_Generate_Code() { - string generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task Replaces_KababCase_Parameters_With_PascalCase() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain("string job_id"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain("string job_id"); } [Fact] public async Task Can_Build_Generated_Code() { - string generateCode = await GenerateCode(); + string generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -80,8 +80,8 @@ private static async Task GenerateCode() var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } private static async Task CreateSwaggerFile(string contents) diff --git a/src/Refitter.Tests/Examples/KeepSchemaPatternsTests.cs b/src/Refitter.Tests/Examples/KeepSchemaPatternsTests.cs index cc4c3187b..224a6120a 100644 --- a/src/Refitter.Tests/Examples/KeepSchemaPatternsTests.cs +++ b/src/Refitter.Tests/Examples/KeepSchemaPatternsTests.cs @@ -116,28 +116,28 @@ public class KeepSchemaPatternsTests [Fact] public async Task Can_Generate_Code() { - string generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task Keeps_Unreferenced_Schema() { - string generateCode = await GenerateCode(); + string generatedCode = await GenerateCode(); - generateCode.Should().NotContain("class UserComponent2"); - generateCode.Should().Contain("class UserComponent"); - generateCode.Should().Contain("class SomeComponent"); - generateCode.Should().Contain("class Component"); - generateCode.Should().Contain("class Metadata"); + generatedCode.Should().NotContain("class UserComponent2"); + generatedCode.Should().Contain("class UserComponent"); + generatedCode.Should().Contain("class SomeComponent"); + generatedCode.Should().Contain("class Component"); + generatedCode.Should().Contain("class Metadata"); } [Fact] public async Task Can_Build_Generated_Code() { - string generateCode = await GenerateCode(); + string generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -148,8 +148,8 @@ private static async Task GenerateCode() var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile, TrimUnusedSchema = true, KeepSchemaPatterns = new[] { "^UserComponent$" }, }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } private static async Task CreateSwaggerFile(string contents) diff --git a/src/Refitter.Tests/Examples/MultiPartFormDataTests.cs b/src/Refitter.Tests/Examples/MultiPartFormDataTests.cs index c34439866..9e6418705 100644 --- a/src/Refitter.Tests/Examples/MultiPartFormDataTests.cs +++ b/src/Refitter.Tests/Examples/MultiPartFormDataTests.cs @@ -99,16 +99,16 @@ public class MultiPartFormDataTests [Fact] public async Task Can_Generate_Code() { - string generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task Can_Build_Generated_Code() { - string generateCode = await GenerateCode(); + string generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -116,16 +116,16 @@ public async Task Can_Build_Generated_Code() [Fact] public async Task Generated_Code_Contains_MultiPart_Attribute() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain("[Multipart]"); - generateCode.Should().NotContain("Content-Type: multipart/form-data"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain("[Multipart]"); + generatedCode.Should().NotContain("Content-Type: multipart/form-data"); } [Fact] public async Task Generated_Code_Contains_Correct_Parameters() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain("string name, StreamPart animalClassFile, StreamPart animalCrowdFile"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain("string name, StreamPart animalClassFile, StreamPart animalCrowdFile"); } private static async Task GenerateCode() @@ -134,8 +134,8 @@ private static async Task GenerateCode() var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } private static async Task CreateSwaggerFile(string contents) diff --git a/src/Refitter.Tests/Examples/MultipleInterfacesByEndpointTests.cs b/src/Refitter.Tests/Examples/MultipleInterfacesByEndpointTests.cs index bc79f5a24..16b358965 100644 --- a/src/Refitter.Tests/Examples/MultipleInterfacesByEndpointTests.cs +++ b/src/Refitter.Tests/Examples/MultipleInterfacesByEndpointTests.cs @@ -106,53 +106,53 @@ public class MultipleInterfacesByEndpointTests [Fact] public async Task Can_Generate_Code() { - string generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task Generates_IGetAllFooEndpoint() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain("partial interface IGetAllFoosEndpoint"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain("partial interface IGetAllFoosEndpoint"); } [Fact] public async Task Generates_IGetFooDetailsEndpoint() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain("partial interface IGetFooDetailsEndpoint"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain("partial interface IGetFooDetailsEndpoint"); } [Fact] public async Task Generates_IGetAllBarEndpoint() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain("partial interface IGetAllBarsEndpoint"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain("partial interface IGetAllBarsEndpoint"); } [Fact] public async Task Generates_IGetBarDetailsEndpoint() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain("partial interface IGetBarDetailsEndpoint"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain("partial interface IGetBarDetailsEndpoint"); } [Fact] public async Task Generates_Dynamic_Querystring_Parameters() { - string generateCode = await GenerateCode(true); - generateCode.Should().Contain("GetFooDetailsQueryParams"); - generateCode.Should().NotContain("GetAllFoosQueryParams"); - generateCode.Should().Contain("GetBarDetailsQueryParams"); + string generatedCode = await GenerateCode(true); + generatedCode.Should().Contain("GetFooDetailsQueryParams"); + generatedCode.Should().NotContain("GetAllFoosQueryParams"); + generatedCode.Should().Contain("GetBarDetailsQueryParams"); } [Fact] public async Task Can_Build_Generated_Code() { - string generateCode = await GenerateCode(); + string generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -169,8 +169,8 @@ private static async Task GenerateCode(bool useDynamicQuerystringParamet }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } private static async Task CreateSwaggerFile(string contents) diff --git a/src/Refitter.Tests/Examples/MultipleInterfacesByEndpointWithIoCTests.cs b/src/Refitter.Tests/Examples/MultipleInterfacesByEndpointWithIoCTests.cs index ef313337c..e4c86d6fa 100644 --- a/src/Refitter.Tests/Examples/MultipleInterfacesByEndpointWithIoCTests.cs +++ b/src/Refitter.Tests/Examples/MultipleInterfacesByEndpointWithIoCTests.cs @@ -40,37 +40,37 @@ public class MultipleInterfacesByEndpointWithIoCTests [Fact] public async Task Can_Generate_Code() { - string generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task Generates_IDeleteFooEndpoint() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain("partial interface IDeleteFooEndpoint"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain("partial interface IDeleteFooEndpoint"); } [Fact] public async Task Generates_IDeleteBarEndpoint() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain("partial interface IDeleteBarEndpoint"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain("partial interface IDeleteBarEndpoint"); } [Fact] public async Task Generates_IServiceCollectionExtensions() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain("static partial class IServiceCollectionExtensions"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain("static partial class IServiceCollectionExtensions"); } [Fact] public async Task Can_Build_Generated_Code() { - string generateCode = await GenerateCode(); + string generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -91,8 +91,8 @@ private static async Task GenerateCode() }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } private static async Task CreateSwaggerFile(string contents) diff --git a/src/Refitter.Tests/Examples/MultipleInterfacesByTagsTests.cs b/src/Refitter.Tests/Examples/MultipleInterfacesByTagsTests.cs index e6ce8694f..f78cef886 100644 --- a/src/Refitter.Tests/Examples/MultipleInterfacesByTagsTests.cs +++ b/src/Refitter.Tests/Examples/MultipleInterfacesByTagsTests.cs @@ -117,39 +117,39 @@ public class MultipleInterfacesByTagsTests [Fact] public async Task Can_Generate_Code() { - string generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task Generates_Foo_Interface() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain("partial interface IFooApi"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain("partial interface IFooApi"); } [Fact] public async Task Generates_Bar_Interface() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain("partial interface IBarApi"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain("partial interface IBarApi"); } [Fact] public async Task Generates_Dynamic_Querystring_Parameters() { - string generateCode = await GenerateCode(true); - generateCode.Should().Contain("GetFooDetailsQueryParams"); - generateCode.Should().Contain("GetAllFoosQueryParams"); - generateCode.Should().Contain("GetBarDetailsQueryParams"); + string generatedCode = await GenerateCode(true); + generatedCode.Should().Contain("GetFooDetailsQueryParams"); + generatedCode.Should().Contain("GetAllFoosQueryParams"); + generatedCode.Should().Contain("GetBarDetailsQueryParams"); } [Fact] public async Task Can_Build_Generated_Code() { - string generateCode = await GenerateCode(); + string generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -166,8 +166,8 @@ private static async Task GenerateCode(bool useDynamicQuerystringParamet }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } private static async Task CreateSwaggerFile(string contents) diff --git a/src/Refitter.Tests/Examples/MultipleSuccessResponsesTests.cs b/src/Refitter.Tests/Examples/MultipleSuccessResponsesTests.cs index 4f5cc4c13..9588f8221 100644 --- a/src/Refitter.Tests/Examples/MultipleSuccessResponsesTests.cs +++ b/src/Refitter.Tests/Examples/MultipleSuccessResponsesTests.cs @@ -59,23 +59,23 @@ public class MultipleSuccessResponsesTests [Fact] public async Task Can_Generate_Code() { - string generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task Has_No_Duplicate_Accept_Headers() { - string generateCode = await GenerateCode(); - generateCode.Should().NotContain("[Headers(\"Accept: application/json, application/json\")]"); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotContain("[Headers(\"Accept: application/json, application/json\")]"); } [Fact] public async Task Can_Build_Generated_Code() { - string generateCode = await GenerateCode(); + string generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -86,8 +86,8 @@ private static async Task GenerateCode() var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } private static async Task CreateSwaggerFile(string contents) diff --git a/src/Refitter.Tests/Examples/NoContentApiResponseTests.cs b/src/Refitter.Tests/Examples/NoContentApiResponseTests.cs index 018fb08fd..00c572b86 100644 --- a/src/Refitter.Tests/Examples/NoContentApiResponseTests.cs +++ b/src/Refitter.Tests/Examples/NoContentApiResponseTests.cs @@ -56,24 +56,24 @@ their ids. [Fact] public async Task Can_Generate_Code() { - var generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + var generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task Generates_IApiResponse_For_NoContent() { - var generateCode = await GenerateCode(); + var generatedCode = await GenerateCode(); using var scope = new AssertionScope(); - generateCode.Should().Contain("Task"); + generatedCode.Should().Contain("Task"); } [Fact] public async Task Can_Build_Generated_Code() { - var generateCode = await GenerateCode(); + var generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -85,8 +85,8 @@ private static async Task GenerateCode() settings.ReturnIApiResponse = true; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } private static async Task CreateSwaggerFile(string contents) diff --git a/src/Refitter.Tests/Examples/OctetStreamBodyTests.cs b/src/Refitter.Tests/Examples/OctetStreamBodyTests.cs index 64b4d6afc..d77727190 100644 --- a/src/Refitter.Tests/Examples/OctetStreamBodyTests.cs +++ b/src/Refitter.Tests/Examples/OctetStreamBodyTests.cs @@ -45,30 +45,30 @@ public class OctetStreamBodyTests [Fact] public async Task Can_Generate_Code() { - string generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task Generates_Pet_Interface() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain("partial interface IPetApi"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain("partial interface IPetApi"); } [Fact] public async Task Generates_StreamPart_Parameter() { - string generateCode = await GenerateCode(true); - generateCode.Should().Contain("long petId, [Query] string additionalMetadata, StreamPart body"); + string generatedCode = await GenerateCode(true); + generatedCode.Should().Contain("long petId, [Query] string additionalMetadata, StreamPart body"); } [Fact] public async Task Can_Build_Generated_Code() { - string generateCode = await GenerateCode(); + string generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -85,8 +85,8 @@ private static async Task GenerateCode(bool useDynamicQuerystringParamet }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } private static async Task CreateSwaggerFile(string contents) diff --git a/src/Refitter.Tests/Examples/OpenApiUrlTests.cs b/src/Refitter.Tests/Examples/OpenApiUrlTests.cs index 9d9308379..0b24b4df1 100644 --- a/src/Refitter.Tests/Examples/OpenApiUrlTests.cs +++ b/src/Refitter.Tests/Examples/OpenApiUrlTests.cs @@ -21,9 +21,9 @@ public async Task Can_Build_Generated_Code_From_OpenApi_v3_Url_Json(string url) { var settings = new RefitGeneratorSettings { OpenApiPath = url }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); + var generatedCode = sut.Generate(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(url); } @@ -38,9 +38,9 @@ public async Task Can_Build_Generated_Code_From_OpenApi_v3_Url_Yaml(string url) { var settings = new RefitGeneratorSettings { OpenApiPath = url }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); + var generatedCode = sut.Generate(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(url); } diff --git a/src/Refitter.Tests/Examples/OperationIdWithInvalidFirstCharTests.cs b/src/Refitter.Tests/Examples/OperationIdWithInvalidFirstCharTests.cs index 406eeda07..04aeab306 100644 --- a/src/Refitter.Tests/Examples/OperationIdWithInvalidFirstCharTests.cs +++ b/src/Refitter.Tests/Examples/OperationIdWithInvalidFirstCharTests.cs @@ -32,23 +32,23 @@ public class OperationIdWithInvalidFirstCharTests [Fact] public async Task Can_Generate_Code() { - string generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task Adds_Underscore_At_Beginning_With_Ivalid_Methode_Name() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain("_2fa"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain("_2fa"); } [Fact] public async Task Can_Build_Generated_Code() { - string generateCode = await GenerateCode(); + string generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -62,8 +62,8 @@ private static async Task GenerateCode() }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } private static async Task CreateSwaggerFile(string contents) diff --git a/src/Refitter.Tests/Examples/OperationIdWithSpacesTests.cs b/src/Refitter.Tests/Examples/OperationIdWithSpacesTests.cs index 3b75e2201..d73130c71 100644 --- a/src/Refitter.Tests/Examples/OperationIdWithSpacesTests.cs +++ b/src/Refitter.Tests/Examples/OperationIdWithSpacesTests.cs @@ -31,23 +31,23 @@ public class OperationIdWithSpacesTests [Fact] public async Task Can_Generate_Code() { - string generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task Replaces_KababCase_Parameters_With_PascalCase() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain("string job_id"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain("string job_id"); } [Fact] public async Task Can_Build_Generated_Code() { - string generateCode = await GenerateCode(); + string generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -58,8 +58,8 @@ private static async Task GenerateCode() var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } private static async Task CreateSwaggerFile(string contents) diff --git a/src/Refitter.Tests/Examples/OptionalNullableParametersTests.cs b/src/Refitter.Tests/Examples/OptionalNullableParametersTests.cs index db4507363..a7ccd9e90 100644 --- a/src/Refitter.Tests/Examples/OptionalNullableParametersTests.cs +++ b/src/Refitter.Tests/Examples/OptionalNullableParametersTests.cs @@ -48,15 +48,15 @@ public class OptionalNullableParametersTests [Fact] public async Task Can_Generate_Code() { - string generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task Generates_Nullable_Directive() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain("#nullable"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain("#nullable"); } [Theory] @@ -65,30 +65,30 @@ public async Task Generates_Nullable_Directive() [InlineData("description")] public async Task Generates_Nullable_Parameters(string parameterName) { - string generateCode = await GenerateCode(); - generateCode.Should().Contain($"string? {parameterName} = default"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain($"string? {parameterName} = default"); } [Fact] public async Task Generates_CancellationToken_Last() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain("CancellationToken cancellationToken = default);"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain("CancellationToken cancellationToken = default);"); } [Fact] public async Task Generates_DynamicQuerystring_Param() { - string generateCode = await GenerateCode(true); - generateCode.Should().Contain("string id, [Query] UpdateJobDetailsQueryParams? queryParams = default, CancellationToken cancellationToken = default);"); + string generatedCode = await GenerateCode(true); + generatedCode.Should().Contain("string id, [Query] UpdateJobDetailsQueryParams? queryParams = default, CancellationToken cancellationToken = default);"); } [Fact] public async Task Can_Build_Generated_Code() { - string generateCode = await GenerateCode(); + string generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -105,8 +105,8 @@ private static async Task GenerateCode(bool useDynamicQuerystringParamet }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } private static async Task CreateSwaggerFile(string contents) diff --git a/src/Refitter.Tests/Examples/PathParametersTests.cs b/src/Refitter.Tests/Examples/PathParametersTests.cs index 2a1cf2bdb..116532e92 100644 --- a/src/Refitter.Tests/Examples/PathParametersTests.cs +++ b/src/Refitter.Tests/Examples/PathParametersTests.cs @@ -56,25 +56,25 @@ their ids. [Fact] public async Task Can_Generate_Code() { - var generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + var generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task Generates_Path_Parameters() { - var generateCode = await GenerateCode(); + var generatedCode = await GenerateCode(); using var scope = new AssertionScope(); - generateCode.Should().Contain("Guid orderId"); - generateCode.Should().Contain("Guid orderItemId"); + generatedCode.Should().Contain("Guid orderId"); + generatedCode.Should().Contain("Guid orderItemId"); } [Fact] public async Task Can_Build_Generated_Code() { - var generateCode = await GenerateCode(); + var generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -85,8 +85,8 @@ private static async Task GenerateCode() var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } private static async Task CreateSwaggerFile(string contents) diff --git a/src/Refitter.Tests/Examples/PercentageCharacterTests.cs b/src/Refitter.Tests/Examples/PercentageCharacterTests.cs index 14dd278cf..aaab517a6 100644 --- a/src/Refitter.Tests/Examples/PercentageCharacterTests.cs +++ b/src/Refitter.Tests/Examples/PercentageCharacterTests.cs @@ -48,23 +48,23 @@ public class PercentageCharacterTests [Fact] public async Task Can_Generate_Code() { - string generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task Replaces_Percentage_With_PascalCase() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain("string PercentOfSomething"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain("string PercentOfSomething"); } [Fact] public async Task Can_Build_Generated_Code() { - string generateCode = await GenerateCode(); + string generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -75,8 +75,8 @@ private static async Task GenerateCode() var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } private static async Task CreateSwaggerFile(string contents) diff --git a/src/Refitter.Tests/Examples/PoorOperationIdsTests.cs b/src/Refitter.Tests/Examples/PoorOperationIdsTests.cs index 9a24ca6e7..f6a89f5b3 100644 --- a/src/Refitter.Tests/Examples/PoorOperationIdsTests.cs +++ b/src/Refitter.Tests/Examples/PoorOperationIdsTests.cs @@ -62,16 +62,16 @@ public class PoorOperationIdsTests [Fact] public async Task Can_Generate_Code() { - string generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task Can_Build_Generated_Code() { - string generateCode = await GenerateCode(); + string generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -82,8 +82,8 @@ private static async Task GenerateCode() var foo = new RefitGeneratorSettings { OpenApiPath = swaggerFile }; var sut = await RefitGenerator.CreateAsync(foo); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } private static async Task CreateSwaggerFile(string contents) diff --git a/src/Refitter.Tests/Examples/RequestResponseHeadersTests.cs b/src/Refitter.Tests/Examples/RequestResponseHeadersTests.cs index d5d1c10ef..9d4ad9eea 100644 --- a/src/Refitter.Tests/Examples/RequestResponseHeadersTests.cs +++ b/src/Refitter.Tests/Examples/RequestResponseHeadersTests.cs @@ -30,32 +30,32 @@ public class RequestResponseHeadersTests [Fact] public async Task Can_Generate_Code() { - var generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + var generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task Generates_ContentType_Header_Attribute() { - var generateCode = await GenerateCode(); + var generatedCode = await GenerateCode(); using var scope = new AssertionScope(); - generateCode.Should().Contain("Content-Type: application/json"); + generatedCode.Should().Contain("Content-Type: application/json"); } [Fact] public async Task Generates_Accept_Header_Attribute() { - var generateCode = await GenerateCode(); + var generatedCode = await GenerateCode(); using var scope = new AssertionScope(); - generateCode.Should().Contain("Accept: application/json"); + generatedCode.Should().Contain("Accept: application/json"); } [Fact] public async Task Can_Build_Generated_Code() { - var generateCode = await GenerateCode(); + var generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -66,8 +66,8 @@ private static async Task GenerateCode() var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile, AddAcceptHeaders = true }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } private static async Task CreateSwaggerFile(string contents) diff --git a/src/Refitter.Tests/Examples/ResponseHeadersTests.cs b/src/Refitter.Tests/Examples/ResponseHeadersTests.cs index 0d8bd347b..f04d7179d 100644 --- a/src/Refitter.Tests/Examples/ResponseHeadersTests.cs +++ b/src/Refitter.Tests/Examples/ResponseHeadersTests.cs @@ -24,32 +24,32 @@ public class ResponseHeadersTests [Fact] public async Task Can_Generate_Code() { - var generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + var generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task Should_Not_Generate_ContentType_Header_Attribute() { - var generateCode = await GenerateCode(); + var generatedCode = await GenerateCode(); using var scope = new AssertionScope(); - generateCode.Should().NotContain("Content-Type: \")]"); + generatedCode.Should().NotContain("Content-Type: \")]"); } [Fact] public async Task Generates_Accept_Header_Attribute() { - var generateCode = await GenerateCode(); + var generatedCode = await GenerateCode(); using var scope = new AssertionScope(); - generateCode.Should().Contain("Accept: application/json"); + generatedCode.Should().Contain("Accept: application/json"); } [Fact] public async Task Can_Build_Generated_Code() { - var generateCode = await GenerateCode(); + var generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -60,8 +60,8 @@ private static async Task GenerateCode() var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile, AddAcceptHeaders = true }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } private static async Task CreateSwaggerFile(string contents) diff --git a/src/Refitter.Tests/Examples/SymbolsInDescriptionTests.cs b/src/Refitter.Tests/Examples/SymbolsInDescriptionTests.cs index 220ffa85c..b2480d991 100644 --- a/src/Refitter.Tests/Examples/SymbolsInDescriptionTests.cs +++ b/src/Refitter.Tests/Examples/SymbolsInDescriptionTests.cs @@ -36,23 +36,23 @@ Something something >> << [Fact] public async Task Can_Generate_Code() { - var generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + var generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task Symbols_In_Description_Are_Escaped() { - var generateCode = await GenerateCode(); - generateCode.Should().Contain("<test> >> << </test>"); + var generatedCode = await GenerateCode(); + generatedCode.Should().Contain("<test> >> << </test>"); } [Fact] public async Task Can_Build_Generated_Code() { - var generateCode = await GenerateCode(); + var generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -63,8 +63,8 @@ private static async Task GenerateCode() var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } private static async Task CreateSwaggerFile(string contents) diff --git a/src/Refitter.Tests/Examples/SystemPropertyInContractTests.cs b/src/Refitter.Tests/Examples/SystemPropertyInContractTests.cs index a5b1ac423..81a83d770 100644 --- a/src/Refitter.Tests/Examples/SystemPropertyInContractTests.cs +++ b/src/Refitter.Tests/Examples/SystemPropertyInContractTests.cs @@ -40,16 +40,16 @@ public class SystemPropertyInContractTests [Fact] public async Task Can_Generate_Code() { - string generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task Can_Build_Generated_Code() { - string generateCode = await GenerateCode(); + string generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -60,8 +60,8 @@ private static async Task GenerateCode() var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } private static async Task CreateSwaggerFile(string contents) diff --git a/src/Refitter.Tests/Examples/TrimUnusedSchemaTests.cs b/src/Refitter.Tests/Examples/TrimUnusedSchemaTests.cs index 1553c7e4f..da7b6a1cc 100644 --- a/src/Refitter.Tests/Examples/TrimUnusedSchemaTests.cs +++ b/src/Refitter.Tests/Examples/TrimUnusedSchemaTests.cs @@ -189,36 +189,36 @@ public class TrimUnusedSchemaTests [Fact] public async Task Can_Generate_Code() { - string generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task Removes_Unreferenced_Schema() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain("class Warehouse"); - generateCode.Should().Contain("class WarehouseResponse"); - generateCode.Should().Contain("class SomeComponent"); - generateCode.Should().Contain("class Component"); - generateCode.Should().Contain("class ProblemDetails"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain("class Warehouse"); + generatedCode.Should().Contain("class WarehouseResponse"); + generatedCode.Should().Contain("class SomeComponent"); + generatedCode.Should().Contain("class Component"); + generatedCode.Should().Contain("class ProblemDetails"); // Schema is manipulated to return ARRAY of WarehouseResponse // previously (<= 0.9.9.0) this wasn't accomodated. // // For whatever reason NSwag OpenApi-Schema doesn't contain Schema for "Items" // Instead it's inside "Item" - generateCode.Should().Contain("Task> CreateWarehouse([Query] string token, [Body] Warehouse "); + generatedCode.Should().Contain("Task> CreateWarehouse([Query] string token, [Body] Warehouse "); - generateCode.Should().NotContain("class UserComponent"); + generatedCode.Should().NotContain("class UserComponent"); } [Fact] public async Task Can_Build_Generated_Code() { - string generateCode = await GenerateCode(); + string generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -233,8 +233,8 @@ private static async Task GenerateCode() }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } private static async Task CreateSwaggerFile(string contents) diff --git a/src/Refitter.Tests/Examples/UnderscoresToPascalCaseTests.cs b/src/Refitter.Tests/Examples/UnderscoresToPascalCaseTests.cs index 8b494e97f..20a4b5aa8 100644 --- a/src/Refitter.Tests/Examples/UnderscoresToPascalCaseTests.cs +++ b/src/Refitter.Tests/Examples/UnderscoresToPascalCaseTests.cs @@ -53,23 +53,23 @@ public class HandleUnderscoresTests [Fact] public async Task Can_Generate_Code() { - string generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task Replaces_Underscore_Properties_With_PascalCase() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain("DateTimeOffset StartDate"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain("DateTimeOffset StartDate"); } [Fact] public async Task Can_Build_Generated_Code() { - string generateCode = await GenerateCode(); + string generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -80,8 +80,8 @@ private static async Task GenerateCode() var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } private static async Task CreateSwaggerFile(string contents) diff --git a/src/Refitter.Tests/Examples/UseIsoDateFormatTests.cs b/src/Refitter.Tests/Examples/UseIsoDateFormatTests.cs index b9aa984fd..dd0a7ce3b 100644 --- a/src/Refitter.Tests/Examples/UseIsoDateFormatTests.cs +++ b/src/Refitter.Tests/Examples/UseIsoDateFormatTests.cs @@ -49,54 +49,54 @@ public class UseIsoDateFormatTests [Fact] public async Task Can_Generate_Code() { - string generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task GeneratedCode_Contains_Date_Format_String() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain(@"[Query(Format = ""yyyy-MM-dd"")] System.DateTimeOffset valid_from"); - generateCode.Should().Contain(@"[Query(Format = ""yyyy-MM-dd"")] System.DateTimeOffset valid_to"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain(@"[Query(Format = ""yyyy-MM-dd"")] System.DateTimeOffset valid_from"); + generatedCode.Should().Contain(@"[Query(Format = ""yyyy-MM-dd"")] System.DateTimeOffset valid_to"); } [Fact] public async Task GeneratedCode_NotContains_DateTime_Format_String() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain(@"[Query] System.DateTimeOffset test_datetime"); - generateCode.Should().NotContain(@"[Query(Format = ""yyyy-MM-dd"")] System.DateTimeOffset time_datetime"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain(@"[Query] System.DateTimeOffset test_datetime"); + generatedCode.Should().NotContain(@"[Query(Format = ""yyyy-MM-dd"")] System.DateTimeOffset time_datetime"); } [Fact] public async Task GeneratedCode_Contains_TimeSpan_Parameter() { - string generateCode = await GenerateCode(); - generateCode.Should().Contain("[Query] System.TimeSpan"); + string generatedCode = await GenerateCode(); + generatedCode.Should().Contain("[Query] System.TimeSpan"); } [Fact] public async Task GeneratedCode_Contains_Date_Format_String_With_Empty_Settings() { - string generateCode = await GenerateCode(new CodeGeneratorSettings()); - generateCode.Should().Contain(@"[Query(Format = ""yyyy-MM-dd"")] System.DateTimeOffset valid_from"); - generateCode.Should().Contain(@"[Query(Format = ""yyyy-MM-dd"")] System.DateTimeOffset valid_to"); + string generatedCode = await GenerateCode(new CodeGeneratorSettings()); + generatedCode.Should().Contain(@"[Query(Format = ""yyyy-MM-dd"")] System.DateTimeOffset valid_from"); + generatedCode.Should().Contain(@"[Query(Format = ""yyyy-MM-dd"")] System.DateTimeOffset valid_to"); } [Fact] public async Task GeneratedCode_NotContains_DateTime_Format_String_With_Empty_Settings() { - string generateCode = await GenerateCode(new CodeGeneratorSettings()); - generateCode.Should().Contain(@"[Query] System.DateTimeOffset test_datetime"); - generateCode.Should().NotContain(@"[Query(Format = ""yyyy-MM-dd"")] System.DateTimeOffset time_datetime"); + string generatedCode = await GenerateCode(new CodeGeneratorSettings()); + generatedCode.Should().Contain(@"[Query] System.DateTimeOffset test_datetime"); + generatedCode.Should().NotContain(@"[Query(Format = ""yyyy-MM-dd"")] System.DateTimeOffset time_datetime"); } [Fact] public async Task GeneratedCode_Contains_TimeSpan_Parameter_With_Empty_Settings() { - string generateCode = await GenerateCode(new CodeGeneratorSettings()); - generateCode.Should().Contain("[Query] System.TimeSpan"); + string generatedCode = await GenerateCode(new CodeGeneratorSettings()); + generatedCode.Should().Contain("[Query] System.TimeSpan"); } [Theory, AutoData] @@ -104,39 +104,39 @@ public async Task GeneratedCode_Contains_Date_Format_String_With_Settings( string dateFormat, string dateTimeFormat) { - var generateCode = await GenerateCode( + var generatedCode = await GenerateCode( new CodeGeneratorSettings { DateFormat = dateFormat, DateTimeFormat = dateTimeFormat }); - generateCode.Should().Contain(@$"[Query(Format = ""{dateFormat}"")] System.DateTimeOffset valid_from"); - generateCode.Should().Contain(@$"[Query(Format = ""{dateFormat}"")] System.DateTimeOffset valid_to"); - generateCode.Should().Contain(@$"[Query(Format = ""{dateTimeFormat}"")] System.DateTimeOffset test_datetime"); - generateCode.Should().Contain(@$"[Query] System.TimeSpan test_time"); + generatedCode.Should().Contain(@$"[Query(Format = ""{dateFormat}"")] System.DateTimeOffset valid_from"); + generatedCode.Should().Contain(@$"[Query(Format = ""{dateFormat}"")] System.DateTimeOffset valid_to"); + generatedCode.Should().Contain(@$"[Query(Format = ""{dateTimeFormat}"")] System.DateTimeOffset test_datetime"); + generatedCode.Should().Contain(@$"[Query] System.TimeSpan test_time"); } [Theory, AutoData] public async Task GeneratedCode_NotContains_DateTime_Format_String_With_Settings(string format) { - string generateCode = await GenerateCode(new CodeGeneratorSettings { DateFormat = format }); - generateCode.Should().Contain(@"[Query] System.DateTimeOffset test_datetime"); - generateCode.Should().NotContain(@$"[Query(Format = ""{format}"")] System.DateTimeOffset time_datetime"); + string generatedCode = await GenerateCode(new CodeGeneratorSettings { DateFormat = format }); + generatedCode.Should().Contain(@"[Query] System.DateTimeOffset test_datetime"); + generatedCode.Should().NotContain(@$"[Query(Format = ""{format}"")] System.DateTimeOffset time_datetime"); } [Theory, AutoData] public async Task GeneratedCode_Contains_TimeSpan_Parameter_With_Settings(string format) { - string generateCode = await GenerateCode(new CodeGeneratorSettings { DateFormat = format }); - generateCode.Should().Contain("[Query] System.TimeSpan"); + string generatedCode = await GenerateCode(new CodeGeneratorSettings { DateFormat = format }); + generatedCode.Should().Contain("[Query] System.TimeSpan"); } [Fact] public async Task Can_Build_Generated_Code() { - string generateCode = await GenerateCode(); - BuildHelper.BuildCSharp(generateCode).Should().BeTrue(); + string generatedCode = await GenerateCode(); + BuildHelper.BuildCSharp(generatedCode).Should().BeTrue(); } private static async Task GenerateCode(CodeGeneratorSettings? generatorSettings = null) @@ -150,8 +150,8 @@ private static async Task GenerateCode(CodeGeneratorSettings? generatorS }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } private static async Task CreateSwaggerFile(string contents) diff --git a/src/Refitter.Tests/Examples/UsePolymorphicSerializationTests.cs b/src/Refitter.Tests/Examples/UsePolymorphicSerializationTests.cs index 8df8d6ce2..b5e5b896c 100644 --- a/src/Refitter.Tests/Examples/UsePolymorphicSerializationTests.cs +++ b/src/Refitter.Tests/Examples/UsePolymorphicSerializationTests.cs @@ -189,32 +189,32 @@ public class UsePolymorphicSerializationTests [Fact] public async Task Can_Generate_Code() { - string generateCode = await GenerateCode(); - generateCode.Should().NotBeNullOrWhiteSpace(); + string generatedCode = await GenerateCode(); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Fact] public async Task Use_Polymorphic_Serialization() { - string generateCode = await GenerateCode(); + string generatedCode = await GenerateCode(); - generateCode.Should().NotContain("JsonInheritanceConverter"); - generateCode.Should().NotContain("JsonInheritanceAttribute"); + generatedCode.Should().NotContain("JsonInheritanceConverter"); + generatedCode.Should().NotContain("JsonInheritanceAttribute"); - generateCode.Should().Contain("[JsonPolymorphic(TypeDiscriminatorPropertyName = \"$type\", UnknownDerivedTypeHandling = JsonUnknownDerivedTypeHandling.FallBackToBaseType, IgnoreUnrecognizedTypeDiscriminators = true)]"); - generateCode.Should().Contain("[JsonDerivedType(typeof(Warehouse), typeDiscriminator: \"Warehouse\")]"); - generateCode.Should().Contain("[JsonDerivedType(typeof(WarehouseResponse), typeDiscriminator: \"WarehouseResponse\")]"); - generateCode.Should().Contain("[JsonDerivedType(typeof(LoadingAddress), typeDiscriminator: \"LoadingAddress\")]"); - generateCode.Should().Contain("[JsonDerivedType(typeof(UserComponent), typeDiscriminator: \"UserComponent\")]"); - generateCode.Should().Contain("[JsonDerivedType(typeof(UserComponent2), typeDiscriminator: \"UserComponent2\")]"); + generatedCode.Should().Contain("[JsonPolymorphic(TypeDiscriminatorPropertyName = \"$type\", UnknownDerivedTypeHandling = JsonUnknownDerivedTypeHandling.FallBackToBaseType, IgnoreUnrecognizedTypeDiscriminators = true)]"); + generatedCode.Should().Contain("[JsonDerivedType(typeof(Warehouse), typeDiscriminator: \"Warehouse\")]"); + generatedCode.Should().Contain("[JsonDerivedType(typeof(WarehouseResponse), typeDiscriminator: \"WarehouseResponse\")]"); + generatedCode.Should().Contain("[JsonDerivedType(typeof(LoadingAddress), typeDiscriminator: \"LoadingAddress\")]"); + generatedCode.Should().Contain("[JsonDerivedType(typeof(UserComponent), typeDiscriminator: \"UserComponent\")]"); + generatedCode.Should().Contain("[JsonDerivedType(typeof(UserComponent2), typeDiscriminator: \"UserComponent2\")]"); } [Fact] public async Task Can_Build_Generated_Code() { - string generateCode = await GenerateCode(); + string generatedCode = await GenerateCode(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -229,8 +229,8 @@ private static async Task GenerateCode() }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } private static async Task CreateSwaggerFile(string contents) diff --git a/src/Refitter.Tests/IllegalSymbolsTests.cs b/src/Refitter.Tests/IllegalSymbolsTests.cs index d774c1386..214e06d72 100644 --- a/src/Refitter.Tests/IllegalSymbolsTests.cs +++ b/src/Refitter.Tests/IllegalSymbolsTests.cs @@ -11,9 +11,9 @@ public class IllegalSymbolsTests [Fact] public async Task Illegal_Symbols_In_Paths__Should_Build_Successfully() { - var generateCode = await GenerateCode(EmbeddedResources.SwaggerIllegalPathsJsonV3); + var generatedCode = await GenerateCode(EmbeddedResources.SwaggerIllegalPathsJsonV3); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -21,9 +21,9 @@ public async Task Illegal_Symbols_In_Paths__Should_Build_Successfully() [Fact] public async Task Illegal_Symbols_In_Title__Should_Build_Successfully() { - var generateCode = await GenerateCode(EmbeddedResources.SwaggerIllegalSymbolsInTitleJsonV3); + var generatedCode = await GenerateCode(EmbeddedResources.SwaggerIllegalSymbolsInTitleJsonV3); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } diff --git a/src/Refitter.Tests/PathParametersWithUrlTests.cs b/src/Refitter.Tests/PathParametersWithUrlTests.cs index 243bd06cc..5ac2f6f02 100644 --- a/src/Refitter.Tests/PathParametersWithUrlTests.cs +++ b/src/Refitter.Tests/PathParametersWithUrlTests.cs @@ -16,8 +16,8 @@ public class PathParametersWithUrlTests #endif public async Task Can_Generate_Code(string url) { - var generateCode = await GenerateCode(url); - generateCode.Should().NotBeNullOrWhiteSpace(); + var generatedCode = await GenerateCode(url); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Theory] @@ -29,9 +29,9 @@ public async Task Can_Generate_Code(string url) #endif public async Task Can_Build_Generated_Code(string url) { - var generateCode = await GenerateCode(url); + var generatedCode = await GenerateCode(url); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -40,7 +40,7 @@ private static async Task GenerateCode(string url) { var settings = new RefitGeneratorSettings { OpenApiPath = url }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); - return generateCode; + var generatedCode = sut.Generate(); + return generatedCode; } } diff --git a/src/Refitter.Tests/SwaggerPetstoreApizrTests.cs b/src/Refitter.Tests/SwaggerPetstoreApizrTests.cs index 140d0eb6c..34bf066e2 100644 --- a/src/Refitter.Tests/SwaggerPetstoreApizrTests.cs +++ b/src/Refitter.Tests/SwaggerPetstoreApizrTests.cs @@ -37,8 +37,8 @@ public ApizrGeneratorSettings() [InlineData(SampleOpenSpecifications.SwaggerPetstoreYamlV2, "SwaggerPetstore.yaml")] public async Task Can_Generate_Code(SampleOpenSpecifications version, string filename) { - var generateCode = await GenerateCode(version, filename); - generateCode.Should().NotBeNullOrWhiteSpace(); + var generatedCode = await GenerateCode(version, filename); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Theory] @@ -48,8 +48,8 @@ public async Task Can_Generate_Code(SampleOpenSpecifications version, string fil [InlineData(SampleOpenSpecifications.SwaggerPetstoreYamlV2, "SwaggerPetstore.yaml")] public async Task Can_Generate_Partial_Interfaces(SampleOpenSpecifications version, string filename) { - var generateCode = await GenerateCode(version, filename); - generateCode.Should().Contain("partial interface"); + var generatedCode = await GenerateCode(version, filename); + generatedCode.Should().Contain("partial interface"); } [Theory] @@ -59,11 +59,11 @@ public async Task Can_Generate_Partial_Interfaces(SampleOpenSpecifications versi [InlineData(SampleOpenSpecifications.SwaggerPetstoreYamlV2, "SwaggerPetstore.yaml")] public async Task Can_Generate_Code_Without_Contracts(SampleOpenSpecifications version, string filename) { - var generateCode = await GenerateCode( + var generatedCode = await GenerateCode( version, filename, new ApizrGeneratorSettings { GenerateXmlDocCodeComments = false, GenerateContracts = false }); - generateCode.Should().NotContain("class Pet"); + generatedCode.Should().NotContain("class Pet"); } [Theory] @@ -73,11 +73,11 @@ public async Task Can_Generate_Code_Without_Contracts(SampleOpenSpecifications v [InlineData(SampleOpenSpecifications.SwaggerPetstoreYamlV2, "SwaggerPetstore.yaml")] public async Task Can_Generate_Code_With_XmlDoc_Code_Comments(SampleOpenSpecifications version, string filename) { - var generateCode = await GenerateCode( + var generatedCode = await GenerateCode( version, filename, new ApizrGeneratorSettings { GenerateXmlDocCodeComments = true, GenerateContracts = false }); - generateCode.Should().Contain(""); + generatedCode.Should().Contain(""); } [Theory] @@ -87,11 +87,11 @@ public async Task Can_Generate_Code_With_XmlDoc_Code_Comments(SampleOpenSpecific [InlineData(SampleOpenSpecifications.SwaggerPetstoreYamlV2, "SwaggerPetstore.yaml")] public async Task Can_Generate_Code_Without_XmlDoc_Code_Comments(SampleOpenSpecifications version, string filename) { - var generateCode = await GenerateCode( + var generatedCode = await GenerateCode( version, filename, new ApizrGeneratorSettings { GenerateXmlDocCodeComments = false, GenerateContracts = false }); - generateCode.Should().NotContain(""); + generatedCode.Should().NotContain(""); } [Theory] @@ -101,11 +101,11 @@ public async Task Can_Generate_Code_Without_XmlDoc_Code_Comments(SampleOpenSpeci [InlineData(SampleOpenSpecifications.SwaggerPetstoreYamlV2, "SwaggerPetstore.yaml")] public async Task Can_Generate_Code_With_Default_Namespace(SampleOpenSpecifications version, string filename) { - var generateCode = await GenerateCode( + var generatedCode = await GenerateCode( version, filename, new ApizrGeneratorSettings { Namespace = "Some.Other.Namespace" }); - generateCode.Should().Contain("namespace Some.Other.Namespace"); + generatedCode.Should().Contain("namespace Some.Other.Namespace"); } [Theory] @@ -116,8 +116,8 @@ public async Task Can_Generate_Code_With_Default_Namespace(SampleOpenSpecificati public async Task Can_Generate_Code_With_Fixed_Interface_Name(SampleOpenSpecifications version, string filename) { var settings = new ApizrGeneratorSettings { Naming = { UseOpenApiTitle = false, InterfaceName = "SomeOtherName" } }; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("interface ISomeOtherName"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("interface ISomeOtherName"); } [Theory] @@ -128,8 +128,8 @@ public async Task Can_Generate_Code_With_Fixed_Interface_Name(SampleOpenSpecific public async Task Can_Generate_Code_Without_AutoGenerated_Header(SampleOpenSpecifications version, string filename) { var settings = new ApizrGeneratorSettings { AddAutoGeneratedHeader = false }; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().NotContain("This code was generated by Refitter"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().NotContain("This code was generated by Refitter"); } [Theory] @@ -140,8 +140,8 @@ public async Task Can_Generate_Code_Without_AutoGenerated_Header(SampleOpenSpeci public async Task Can_Generate_Code_That_Returns_IApiResponse(SampleOpenSpecifications version, string filename) { var settings = new ApizrGeneratorSettings { ReturnIApiResponse = true }; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("Task>"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("Task>"); } [Theory] @@ -161,10 +161,10 @@ public async Task Can_Generate_Code_With_Type_Override(SampleOpenSpecifications ["addPet"] = "void", // Remove type }, }; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("Task> GetPetById"); - generateCode.Should().Contain("Task DeletePet"); - generateCode.Should().Contain("Task AddPet"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("Task> GetPetById"); + generatedCode.Should().Contain("Task DeletePet"); + generatedCode.Should().Contain("Task AddPet"); } [Theory] @@ -175,8 +175,8 @@ public async Task Can_Generate_Code_With_Type_Override(SampleOpenSpecifications public async Task Can_Generate_Code_With_Internal_Contract_Types(SampleOpenSpecifications version, string filename) { var settings = new ApizrGeneratorSettings { TypeAccessibility = TypeAccessibility.Internal }; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("internal partial class"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("internal partial class"); } [Theory] @@ -187,8 +187,8 @@ public async Task Can_Generate_Code_With_Internal_Contract_Types(SampleOpenSpeci public async Task Can_Generate_Code_With_Internal_Interface(SampleOpenSpecifications version, string filename) { var settings = new ApizrGeneratorSettings { TypeAccessibility = TypeAccessibility.Internal }; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("internal partial interface"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("internal partial interface"); } [Theory] @@ -199,8 +199,8 @@ public async Task Can_Generate_Code_With_Internal_Interface(SampleOpenSpecificat public async Task Can_Generate_Code_Without_CancellationToken(SampleOpenSpecifications version, string filename) { var settings = new ApizrGeneratorSettings { UseCancellationTokens = true }; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().NotContain("CancellationToken cancellationToken = default"); // Handled by Apizr request options + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().NotContain("CancellationToken cancellationToken = default"); // Handled by Apizr request options } [Theory] @@ -218,8 +218,8 @@ public async Task Can_Generate_Code_With_Correct_Usings( bool cancellationTokens) { var settings = new ApizrGeneratorSettings { UseCancellationTokens = cancellationTokens }; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().NotContain("CancellationToken cancellationToken = default"); // Handled by Apizr request options + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().NotContain("CancellationToken cancellationToken = default"); // Handled by Apizr request options } [Theory] @@ -230,8 +230,8 @@ public async Task Can_Generate_Code_With_Correct_Usings( public async Task Can_Generate_Code_With_OperationHeaders_With_Different_Headers(SampleOpenSpecifications version, string filename) { var settings = new ApizrGeneratorSettings { GenerateOperationHeaders = true }; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("[Header(\"api-key\")] string api_key"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("[Header(\"api-key\")] string api_key"); } [Theory] @@ -242,8 +242,8 @@ public async Task Can_Generate_Code_With_OperationHeaders_With_Different_Headers public async Task Can_Generate_Code_With_OperationHeaders(SampleOpenSpecifications version, string filename) { var settings = new ApizrGeneratorSettings { GenerateOperationHeaders = true }; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("[Header(\"api_key\")] string api_key"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("[Header(\"api_key\")] string api_key"); } [Theory] @@ -254,8 +254,8 @@ public async Task Can_Generate_Code_With_OperationHeaders(SampleOpenSpecificatio public async Task Can_Generate_Code_Without_OperationHeaders(SampleOpenSpecifications version, string filename) { var settings = new ApizrGeneratorSettings { GenerateOperationHeaders = false }; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().NotContain("[Header(\"api_key\")] string? api_key"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().NotContain("[Header(\"api_key\")] string? api_key"); } [Theory] @@ -266,8 +266,8 @@ public async Task Can_Generate_Code_Without_OperationHeaders(SampleOpenSpecifica public async Task Can_Generate_Code_With_Unsafe_AuthenticationHeaders(SampleOpenSpecifications version, string filename) { var settings = new ApizrGeneratorSettings { GenerateAuthenticationHeader = true }; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("[Header(\"auth.key\")] string auth_key"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("[Header(\"auth.key\")] string auth_key"); } [Theory] @@ -278,8 +278,8 @@ public async Task Can_Generate_Code_With_Unsafe_AuthenticationHeaders(SampleOpen public async Task Can_Generate_Code_With_AuthenticationHeaders(SampleOpenSpecifications version, string filename) { var settings = new ApizrGeneratorSettings { GenerateAuthenticationHeader = true }; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("[Header(\"auth_key\")] string auth_key"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("[Header(\"auth_key\")] string auth_key"); } [Theory] @@ -290,8 +290,8 @@ public async Task Can_Generate_Code_With_AuthenticationHeaders(SampleOpenSpecifi public async Task Can_Generate_Code_With_AuthenticationHeaders_Without_OperationHeaders(SampleOpenSpecifications version, string filename) { var settings = new ApizrGeneratorSettings { GenerateOperationHeaders = false, GenerateAuthenticationHeader = true }; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("[Header(\"auth_key\")] string auth_key"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("[Header(\"auth_key\")] string auth_key"); } [Theory] @@ -302,8 +302,8 @@ public async Task Can_Generate_Code_With_AuthenticationHeaders_Without_Operation public async Task Can_Generate_Code_Without_AuthenticationHeaders(SampleOpenSpecifications version, string filename) { var settings = new ApizrGeneratorSettings { GenerateAuthenticationHeader = false }; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().NotContain("[Header(\"auth_key\")] string? auth_key"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().NotContain("[Header(\"auth_key\")] string? auth_key"); } [Theory] @@ -314,11 +314,11 @@ public async Task Can_Generate_Code_Without_AuthenticationHeaders(SampleOpenSpec public async Task Can_Generate_Code_With_Accept_Request_Header(SampleOpenSpecifications version, string filename) { var settings = new ApizrGeneratorSettings(); - var generateCode = await GenerateCode(version, filename, settings); + var generatedCode = await GenerateCode(version, filename, settings); if (version is SampleOpenSpecifications.SwaggerPetstoreJsonV3 or SampleOpenSpecifications.SwaggerPetstoreYamlV3) - generateCode.Should().Contain("[Headers(\"Accept: application/json\""); + generatedCode.Should().Contain("[Headers(\"Accept: application/json\""); else if (version is SampleOpenSpecifications.SwaggerPetstoreJsonV2 or SampleOpenSpecifications.SwaggerPetstoreYamlV2) - generateCode.Should().NotContain("[Headers(\"Accept: application/json\""); + generatedCode.Should().NotContain("[Headers(\"Accept: application/json\""); } [Theory] @@ -327,8 +327,8 @@ public async Task Can_Generate_Code_With_Accept_Request_Header(SampleOpenSpecifi public async Task Can_Generate_Code_With_No_Accept_Request_Header(SampleOpenSpecifications version, string filename) { var settings = new ApizrGeneratorSettings { AddAcceptHeaders = false }; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().NotContain("[Headers(\"Accept"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().NotContain("[Headers(\"Accept"); } [Theory] @@ -339,8 +339,8 @@ public async Task Can_Generate_Code_With_No_Accept_Request_Header(SampleOpenSpec public async Task Can_Generate_Code_With_Multiple_Interfaces(SampleOpenSpecifications version, string filename) { var settings = new ApizrGeneratorSettings { MultipleInterfaces = MultipleInterfaces.ByEndpoint }; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().NotBeNullOrWhiteSpace(); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Theory] @@ -358,8 +358,8 @@ public async Task Can_Generate_Code_Dependency_Injection_Setup(SampleOpenSpecifi TransientErrorHandler = TransientErrorHandler.Polly } }; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("AddApizrManagerFor"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("AddApizrManagerFor"); } [Theory] @@ -377,10 +377,10 @@ public async Task Can_Generate_Code_Dependency_Injection_Setup_With_Polly(Sample TransientErrorHandler = TransientErrorHandler.Polly } }; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("using Polly"); - generateCode.Should().Contain("AddPolicyHandler"); - generateCode.Should().Contain("Backoff.DecorrelatedJitterBackoffV2"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("using Polly"); + generatedCode.Should().Contain("AddPolicyHandler"); + generatedCode.Should().Contain("Backoff.DecorrelatedJitterBackoffV2"); } [Theory] @@ -398,10 +398,10 @@ public async Task Can_Generate_Code_Dependency_Injection_Setup_Without_Polly(Sam TransientErrorHandler = TransientErrorHandler.None } }; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().NotContain("using Polly"); - generateCode.Should().NotContain("AddPolicyHandler"); - generateCode.Should().NotContain("Backoff.DecorrelatedJitterBackoffV2"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().NotContain("using Polly"); + generatedCode.Should().NotContain("AddPolicyHandler"); + generatedCode.Should().NotContain("Backoff.DecorrelatedJitterBackoffV2"); } [Theory] @@ -423,8 +423,8 @@ public async Task Can_Generate_Code_GeneratedCode_Attribute( MultipleInterfaces multipleInterfaces) { var settings = new ApizrGeneratorSettings { MultipleInterfaces = multipleInterfaces }; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("[System.CodeDom.Compiler.GeneratedCode(\"Refitter\""); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("[System.CodeDom.Compiler.GeneratedCode(\"Refitter\""); } [Theory] @@ -442,8 +442,8 @@ public async Task Can_Generate_Code_With_Multiple_Interfaces_And_OperationNameTe MultipleInterfaces = multipleInterfaces, OperationNameTemplate = "ExecuteAsync" }; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("ExecuteAsync("); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("ExecuteAsync("); } [Theory] @@ -455,9 +455,9 @@ public async Task Can_Generate_Code_With_Multiple_Interfaces_And_OperationNameTe #endif public async Task Can_Build_Generated_Code(SampleOpenSpecifications version, string filename) { - var generateCode = await GenerateCode(version, filename); + var generatedCode = await GenerateCode(version, filename); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -472,9 +472,9 @@ public async Task Can_Build_Generated_Code(SampleOpenSpecifications version, str public async Task Can_Build_Generated_Code_With_IApiResponse(SampleOpenSpecifications version, string filename) { var settings = new ApizrGeneratorSettings { ReturnIApiResponse = true }; - var generateCode = await GenerateCode(version, filename, settings); + var generatedCode = await GenerateCode(version, filename, settings); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -484,10 +484,10 @@ public async Task Can_Build_Generated_Code_With_IApiResponse(SampleOpenSpecifica public async Task Can_Build_Generated_Code_With_IObservableResponse(SampleOpenSpecifications version, string filename) { var settings = new ApizrGeneratorSettings { ReturnIObservable = true }; - var generateCode = await GenerateCode(version, filename, settings); + var generatedCode = await GenerateCode(version, filename, settings); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -502,9 +502,9 @@ public async Task Can_Build_Generated_Code_With_IObservableResponse(SampleOpenSp public async Task Can_Build_Generated_Code_With_Multiple_Interfaces(SampleOpenSpecifications version, string filename) { var settings = new ApizrGeneratorSettings { MultipleInterfaces = MultipleInterfaces.ByEndpoint }; - var generateCode = await GenerateCode(version, filename, settings); + var generatedCode = await GenerateCode(version, filename, settings); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -519,9 +519,9 @@ public async Task Can_Build_Generated_Code_With_Multiple_Interfaces(SampleOpenSp public async Task Can_Build_Generated_Code_With_Multiple_Interfaces_ByTag(SampleOpenSpecifications version, string filename) { var settings = new ApizrGeneratorSettings { MultipleInterfaces = MultipleInterfaces.ByTag }; - var generateCode = await GenerateCode(version, filename, settings); + var generatedCode = await GenerateCode(version, filename, settings); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -536,9 +536,9 @@ public async Task Can_Build_Generated_Code_From_Url(string url) { var settings = new ApizrGeneratorSettings { OpenApiPath = url }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); + var generatedCode = sut.Generate(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -551,8 +551,8 @@ public async Task Can_Build_Generated_Code_From_Url(string url) [InlineData(SampleOpenSpecifications.SwaggerPetstoreYamlV2, "SwaggerPetstore.yaml")] public async Task Can_Generate_Code_Obsolete_Attribute(SampleOpenSpecifications version, string filename) { - var generateCode = await GenerateCode(version, filename); - generateCode.Should().Contain("[System.Obsolete]"); + var generatedCode = await GenerateCode(version, filename); + generatedCode.Should().Contain("[System.Obsolete]"); } [Theory] @@ -563,8 +563,8 @@ public async Task Can_Generate_Code_Obsolete_Attribute(SampleOpenSpecifications public async Task Can_Generate_Code_Without_Obsolete_Operations(SampleOpenSpecifications version, string filename) { var settings = new ApizrGeneratorSettings { GenerateDeprecatedOperations = false }; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().NotContain(@"/pet/findByTags"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().NotContain(@"/pet/findByTags"); } [Theory] @@ -575,8 +575,8 @@ public async Task Can_Generate_Code_Without_Obsolete_Operations(SampleOpenSpecif public async Task Can_Generate_Code_With_Operation_Name_Template(SampleOpenSpecifications version, string filename) { var settings = new ApizrGeneratorSettings { OperationNameTemplate = "{operationName}Async" }; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("FindPetsByStatusAsync"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("FindPetsByStatusAsync"); } [Theory] @@ -596,9 +596,9 @@ public async Task Can_Generate_Code_With_OperationNameGenerator(OperationNameGen { OperationNameGenerator = type }; - var generateCode = await GenerateCode(version, filename, settings); + var generatedCode = await GenerateCode(version, filename, settings); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -615,8 +615,8 @@ public async Task Can_Generate_Code_Without_AdditionalProperties(SampleOpenSpeci GenerateDefaultAdditionalProperties = false, OperationNameTemplate = "{operationName}Async" }; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().NotContain("Dictionary AdditionalProperties"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().NotContain("Dictionary AdditionalProperties"); } [Theory] @@ -634,9 +634,9 @@ public async Task Can_Generate_Code_With_NonNullable_Return_Types(SampleOpenSpec GenerateOptionalPropertiesAsNullable = true } }; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("Task"); - generateCode.Should().NotContain("Task"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("Task"); + generatedCode.Should().NotContain("Task"); } [Theory] @@ -655,9 +655,9 @@ public async Task Can_Generate_Code_With_NonNullable_Return_Types_In_ApiResponse GenerateOptionalPropertiesAsNullable = true } }; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("Task>"); - generateCode.Should().NotContain("Task>"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("Task>"); + generatedCode.Should().NotContain("Task>"); } [Theory] @@ -668,8 +668,8 @@ public async Task Can_Generate_Code_With_NonNullable_Return_Types_In_ApiResponse public async Task Can_Generate_Code_With_ImmutableRecords(SampleOpenSpecifications version, string filename) { var settings = new ApizrGeneratorSettings { ImmutableRecords = true }; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("record Pet"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("record Pet"); } [Theory] @@ -680,13 +680,13 @@ public async Task Can_Generate_Code_With_ImmutableRecords(SampleOpenSpecificatio public async Task Can_Generate_Code_With_DynamicQuerystringParameter(SampleOpenSpecifications version, string filename) { var settings = new ApizrGeneratorSettings { UseDynamicQuerystringParameters = true }; - var generateCode = await GenerateCode(version, filename, settings); + var generatedCode = await GenerateCode(version, filename, settings); if (version is SampleOpenSpecifications.SwaggerPetstoreJsonV3 or SampleOpenSpecifications.SwaggerPetstoreYamlV3) - generateCode.Should().Contain("long petId, [Query] UpdatePetWithFormQueryParams queryParams, [RequestOptions] IApizrRequestOptions options);") + generatedCode.Should().Contain("long petId, [Query] UpdatePetWithFormQueryParams queryParams, [RequestOptions] IApizrRequestOptions options);") .And.Contain("public class UpdatePetWithFormQueryParams"); - generateCode.Should().Contain("[Query] LoginUserQueryParams queryParams, [RequestOptions] IApizrRequestOptions options);") + generatedCode.Should().Contain("[Query] LoginUserQueryParams queryParams, [RequestOptions] IApizrRequestOptions options);") .And.Contain("public class LoginUserQueryParams"); } diff --git a/src/Refitter.Tests/SwaggerPetstoreTests.cs b/src/Refitter.Tests/SwaggerPetstoreTests.cs index 1033c9ec1..012fe7cfc 100644 --- a/src/Refitter.Tests/SwaggerPetstoreTests.cs +++ b/src/Refitter.Tests/SwaggerPetstoreTests.cs @@ -15,8 +15,8 @@ public class SwaggerPetstoreTests [InlineData(SampleOpenSpecifications.SwaggerPetstoreYamlV2, "SwaggerPetstore.yaml")] public async Task Can_Generate_Code(SampleOpenSpecifications version, string filename) { - var generateCode = await GenerateCode(version, filename); - generateCode.Should().NotBeNullOrWhiteSpace(); + var generatedCode = await GenerateCode(version, filename); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Theory] @@ -26,8 +26,8 @@ public async Task Can_Generate_Code(SampleOpenSpecifications version, string fil [InlineData(SampleOpenSpecifications.SwaggerPetstoreYamlV2, "SwaggerPetstore.yaml")] public async Task Can_Generate_Partial_Interfaces(SampleOpenSpecifications version, string filename) { - var generateCode = await GenerateCode(version, filename); - generateCode.Should().Contain("partial interface"); + var generatedCode = await GenerateCode(version, filename); + generatedCode.Should().Contain("partial interface"); } [Theory] @@ -37,11 +37,11 @@ public async Task Can_Generate_Partial_Interfaces(SampleOpenSpecifications versi [InlineData(SampleOpenSpecifications.SwaggerPetstoreYamlV2, "SwaggerPetstore.yaml")] public async Task Can_Generate_Code_Without_Contracts(SampleOpenSpecifications version, string filename) { - var generateCode = await GenerateCode( + var generatedCode = await GenerateCode( version, filename, new RefitGeneratorSettings { GenerateXmlDocCodeComments = false, GenerateContracts = false }); - generateCode.Should().NotContain("class Pet"); + generatedCode.Should().NotContain("class Pet"); } [Theory] @@ -51,11 +51,11 @@ public async Task Can_Generate_Code_Without_Contracts(SampleOpenSpecifications v [InlineData(SampleOpenSpecifications.SwaggerPetstoreYamlV2, "SwaggerPetstore.yaml")] public async Task Can_Generate_Code_Without_Clients(SampleOpenSpecifications version, string filename) { - var generateCode = await GenerateCode( + var generatedCode = await GenerateCode( version, filename, new RefitGeneratorSettings { GenerateXmlDocCodeComments = false, GenerateClients = false }); - generateCode.Should().NotContain("ISwaggerPetstore"); + generatedCode.Should().NotContain("ISwaggerPetstore"); } [Theory] @@ -65,11 +65,11 @@ public async Task Can_Generate_Code_Without_Clients(SampleOpenSpecifications ver [InlineData(SampleOpenSpecifications.SwaggerPetstoreYamlV2, "SwaggerPetstore.yaml")] public async Task Can_Generate_Code_With_XmlDoc_Code_Comments(SampleOpenSpecifications version, string filename) { - var generateCode = await GenerateCode( + var generatedCode = await GenerateCode( version, filename, new RefitGeneratorSettings { GenerateXmlDocCodeComments = true, GenerateContracts = false }); - generateCode.Should().Contain(""); + generatedCode.Should().Contain(""); } [Theory] @@ -79,11 +79,11 @@ public async Task Can_Generate_Code_With_XmlDoc_Code_Comments(SampleOpenSpecific [InlineData(SampleOpenSpecifications.SwaggerPetstoreYamlV2, "SwaggerPetstore.yaml")] public async Task Can_Generate_Code_Without_XmlDoc_Code_Comments(SampleOpenSpecifications version, string filename) { - var generateCode = await GenerateCode( + var generatedCode = await GenerateCode( version, filename, new RefitGeneratorSettings { GenerateXmlDocCodeComments = false, GenerateContracts = false }); - generateCode.Should().NotContain(""); + generatedCode.Should().NotContain(""); } [Theory] @@ -93,11 +93,11 @@ public async Task Can_Generate_Code_Without_XmlDoc_Code_Comments(SampleOpenSpeci [InlineData(SampleOpenSpecifications.SwaggerPetstoreYamlV2, "SwaggerPetstore.yaml")] public async Task Can_Generate_Code_With_Default_Namespace(SampleOpenSpecifications version, string filename) { - var generateCode = await GenerateCode( + var generatedCode = await GenerateCode( version, filename, new RefitGeneratorSettings { Namespace = "Some.Other.Namespace" }); - generateCode.Should().Contain("namespace Some.Other.Namespace"); + generatedCode.Should().Contain("namespace Some.Other.Namespace"); } [Theory] @@ -110,8 +110,8 @@ public async Task Can_Generate_Code_With_Fixed_Interface_Name(SampleOpenSpecific var settings = new RefitGeneratorSettings(); settings.Naming.UseOpenApiTitle = false; settings.Naming.InterfaceName = "SomeOtherName"; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("interface ISomeOtherName"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("interface ISomeOtherName"); } [Theory] @@ -123,8 +123,8 @@ public async Task Can_Generate_Code_Without_AutoGenerated_Header(SampleOpenSpeci { var settings = new RefitGeneratorSettings(); settings.AddAutoGeneratedHeader = false; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().NotContain("This code was generated by Refitter"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().NotContain("This code was generated by Refitter"); } [Theory] @@ -136,8 +136,8 @@ public async Task Can_Generate_Code_That_Returns_IApiResponse(SampleOpenSpecific { var settings = new RefitGeneratorSettings(); settings.ReturnIApiResponse = true; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("Task>"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("Task>"); } [Theory] @@ -157,10 +157,10 @@ public async Task Can_Generate_Code_With_Type_Override(SampleOpenSpecifications ["addPet"] = "void", // Remove type }, }; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("Task> GetPetById"); - generateCode.Should().Contain("Task DeletePet"); - generateCode.Should().Contain("Task AddPet"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("Task> GetPetById"); + generatedCode.Should().Contain("Task DeletePet"); + generatedCode.Should().Contain("Task AddPet"); } [Theory] @@ -172,8 +172,8 @@ public async Task Can_Generate_Code_With_Internal_Contract_Types(SampleOpenSpeci { var settings = new RefitGeneratorSettings(); settings.TypeAccessibility = TypeAccessibility.Internal; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("internal partial class"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("internal partial class"); } [Theory] @@ -185,8 +185,8 @@ public async Task Can_Generate_Code_With_Internal_Interface(SampleOpenSpecificat { var settings = new RefitGeneratorSettings(); settings.TypeAccessibility = TypeAccessibility.Internal; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("internal partial interface"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("internal partial interface"); } [Theory] @@ -198,8 +198,8 @@ public async Task Can_Generate_Code_With_CancellationToken(SampleOpenSpecificati { var settings = new RefitGeneratorSettings(); settings.UseCancellationTokens = true; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("CancellationToken cancellationToken = default"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("CancellationToken cancellationToken = default"); } [Theory] @@ -218,8 +218,8 @@ public async Task Can_Generate_Code_With_Correct_Usings( { var settings = new RefitGeneratorSettings(); settings.UseCancellationTokens = cancellationTokens; - var generateCode = await GenerateCode(version, filename, settings); - Assert.Equal(cancellationTokens, generateCode.Contains("using System.Threading;")); + var generatedCode = await GenerateCode(version, filename, settings); + Assert.Equal(cancellationTokens, generatedCode.Contains("using System.Threading;")); } [Theory] @@ -231,8 +231,8 @@ public async Task Can_Generate_Code_With_OperationHeaders_With_Different_Headers { var settings = new RefitGeneratorSettings(); settings.GenerateOperationHeaders = true; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("[Header(\"api-key\")] string api_key"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("[Header(\"api-key\")] string api_key"); } [Theory] @@ -244,8 +244,8 @@ public async Task Can_Generate_Code_With_OperationHeaders(SampleOpenSpecificatio { var settings = new RefitGeneratorSettings(); settings.GenerateOperationHeaders = true; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("[Header(\"api_key\")] string api_key"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("[Header(\"api_key\")] string api_key"); } [Theory] @@ -257,8 +257,8 @@ public async Task Can_Generate_Code_Without_OperationHeaders(SampleOpenSpecifica { var settings = new RefitGeneratorSettings(); settings.GenerateOperationHeaders = false; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().NotContain("[Header(\"api_key\")] string? api_key"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().NotContain("[Header(\"api_key\")] string? api_key"); } [Theory] @@ -270,8 +270,8 @@ public async Task Can_Generate_Code_With_Unsafe_AuthenticationHeaders(SampleOpen { var settings = new RefitGeneratorSettings(); settings.GenerateAuthenticationHeader = true; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("[Header(\"auth.key\")] string auth_key"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("[Header(\"auth.key\")] string auth_key"); } [Theory] @@ -283,8 +283,8 @@ public async Task Can_Generate_Code_With_AuthenticationHeaders(SampleOpenSpecifi { var settings = new RefitGeneratorSettings(); settings.GenerateAuthenticationHeader = true; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("[Header(\"auth_key\")] string auth_key"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("[Header(\"auth_key\")] string auth_key"); } [Theory] @@ -297,8 +297,8 @@ public async Task Can_Generate_Code_With_AuthenticationHeaders_Without_Operation var settings = new RefitGeneratorSettings(); settings.GenerateOperationHeaders = false; settings.GenerateAuthenticationHeader = true; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("[Header(\"auth_key\")] string auth_key"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("[Header(\"auth_key\")] string auth_key"); } [Theory] @@ -310,8 +310,8 @@ public async Task Can_Generate_Code_Without_AuthenticationHeaders(SampleOpenSpec { var settings = new RefitGeneratorSettings(); settings.GenerateAuthenticationHeader = false; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().NotContain("[Header(\"auth_key\")] string? auth_key"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().NotContain("[Header(\"auth_key\")] string? auth_key"); } [Theory] @@ -322,11 +322,11 @@ public async Task Can_Generate_Code_Without_AuthenticationHeaders(SampleOpenSpec public async Task Can_Generate_Code_With_Accept_Request_Header(SampleOpenSpecifications version, string filename) { var settings = new RefitGeneratorSettings(); - var generateCode = await GenerateCode(version, filename, settings); + var generatedCode = await GenerateCode(version, filename, settings); if (version is SampleOpenSpecifications.SwaggerPetstoreJsonV3 or SampleOpenSpecifications.SwaggerPetstoreYamlV3) - generateCode.Should().Contain("[Headers(\"Accept: application/json\""); + generatedCode.Should().Contain("[Headers(\"Accept: application/json\""); else if (version is SampleOpenSpecifications.SwaggerPetstoreJsonV2 or SampleOpenSpecifications.SwaggerPetstoreYamlV2) - generateCode.Should().NotContain("[Headers(\"Accept: application/json\""); + generatedCode.Should().NotContain("[Headers(\"Accept: application/json\""); } [Theory] @@ -336,8 +336,8 @@ public async Task Can_Generate_Code_With_No_Accept_Request_Header(SampleOpenSpec { var settings = new RefitGeneratorSettings(); settings.AddAcceptHeaders = false; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().NotContain("[Headers(\"Accept"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().NotContain("[Headers(\"Accept"); } [Theory] @@ -349,8 +349,8 @@ public async Task Can_Generate_Code_With_Multiple_Interfaces(SampleOpenSpecifica { var settings = new RefitGeneratorSettings(); settings.MultipleInterfaces = MultipleInterfaces.ByEndpoint; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().NotBeNullOrWhiteSpace(); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().NotBeNullOrWhiteSpace(); } [Theory] @@ -366,8 +366,8 @@ public async Task Can_Generate_Code_Dependency_Injection_Setup(SampleOpenSpecifi BaseUrl = "https://petstore3.swagger.io/api/v3", TransientErrorHandler = TransientErrorHandler.Polly }; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("ConfigureRefitClients"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("ConfigureRefitClients"); } [Theory] @@ -383,8 +383,8 @@ public async Task Can_Generate_Code_Dependency_Injection_Setup_With_Polly(Sample BaseUrl = "https://petstore3.swagger.io/api/v3", TransientErrorHandler = TransientErrorHandler.Polly }; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("using Polly"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("using Polly"); } [Theory] @@ -400,8 +400,8 @@ public async Task Can_Generate_Code_Dependency_Injection_Setup_Without_Polly(Sam BaseUrl = "https://petstore3.swagger.io/api/v3", TransientErrorHandler = TransientErrorHandler.None }; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().NotContain("using Polly"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().NotContain("using Polly"); } [Theory] @@ -429,8 +429,8 @@ public async Task Can_Generate_Code_Apizr_Setup(SampleOpenSpecifications version WithFileTransfer = true } }; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("AddApizrManagerFor"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("AddApizrManagerFor"); } [Theory] @@ -458,8 +458,8 @@ public async Task Can_Generate_Code_Apizr_Setup_With_Polly(SampleOpenSpecificati WithFileTransfer = true } }; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("using Polly"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("using Polly"); } [Theory] @@ -487,8 +487,8 @@ public async Task Can_Generate_Code_Apizr_Setup_Without_Polly(SampleOpenSpecific WithFileTransfer = true } }; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().NotContain("using Polly"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().NotContain("using Polly"); } [Theory] @@ -511,8 +511,8 @@ public async Task Can_Generate_Code_GeneratedCode_Attribute( { var settings = new RefitGeneratorSettings(); settings.MultipleInterfaces = multipleInterfaces; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("[System.CodeDom.Compiler.GeneratedCode(\"Refitter\""); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("[System.CodeDom.Compiler.GeneratedCode(\"Refitter\""); } [Theory] @@ -528,8 +528,8 @@ public async Task Can_Generate_Code_With_Multiple_Interfaces_And_OperationNameTe var settings = new RefitGeneratorSettings(); settings.MultipleInterfaces = multipleInterfaces; settings.OperationNameTemplate = "ExecuteAsync"; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("ExecuteAsync("); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("ExecuteAsync("); } [Theory] @@ -541,9 +541,9 @@ public async Task Can_Generate_Code_With_Multiple_Interfaces_And_OperationNameTe #endif public async Task Can_Build_Generated_Code(SampleOpenSpecifications version, string filename) { - var generateCode = await GenerateCode(version, filename); + var generatedCode = await GenerateCode(version, filename); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -559,9 +559,9 @@ public async Task Can_Build_Generated_Code_With_IApiResponse(SampleOpenSpecifica { var settings = new RefitGeneratorSettings(); settings.ReturnIApiResponse = true; - var generateCode = await GenerateCode(version, filename, settings); + var generatedCode = await GenerateCode(version, filename, settings); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -572,10 +572,10 @@ public async Task Can_Build_Generated_Code_With_IObservableResponse(SampleOpenSp { var settings = new RefitGeneratorSettings(); settings.ReturnIObservable = true; - var generateCode = await GenerateCode(version, filename, settings); + var generatedCode = await GenerateCode(version, filename, settings); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -591,9 +591,9 @@ public async Task Can_Build_Generated_Code_With_Multiple_Interfaces(SampleOpenSp { var settings = new RefitGeneratorSettings(); settings.MultipleInterfaces = MultipleInterfaces.ByEndpoint; - var generateCode = await GenerateCode(version, filename, settings); + var generatedCode = await GenerateCode(version, filename, settings); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -609,9 +609,9 @@ public async Task Can_Build_Generated_Code_With_Multiple_Interfaces_ByTag(Sample { var settings = new RefitGeneratorSettings(); settings.MultipleInterfaces = MultipleInterfaces.ByTag; - var generateCode = await GenerateCode(version, filename, settings); + var generatedCode = await GenerateCode(version, filename, settings); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -626,9 +626,9 @@ public async Task Can_Build_Generated_Code_From_Url(string url) { var settings = new RefitGeneratorSettings { OpenApiPath = url }; var sut = await RefitGenerator.CreateAsync(settings); - var generateCode = sut.Generate(); + var generatedCode = sut.Generate(); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -660,8 +660,8 @@ private static async Task GenerateCode( [InlineData(SampleOpenSpecifications.SwaggerPetstoreYamlV2, "SwaggerPetstore.yaml")] public async Task Can_Generate_Code_Obsolete_Attribute(SampleOpenSpecifications version, string filename) { - var generateCode = await GenerateCode(version, filename); - generateCode.Should().Contain("[System.Obsolete]"); + var generatedCode = await GenerateCode(version, filename); + generatedCode.Should().Contain("[System.Obsolete]"); } [Theory] @@ -673,8 +673,8 @@ public async Task Can_Generate_Code_Without_Obsolete_Operations(SampleOpenSpecif { var settings = new RefitGeneratorSettings(); settings.GenerateDeprecatedOperations = false; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().NotContain(@"/pet/findByTags"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().NotContain(@"/pet/findByTags"); } [Theory] @@ -686,8 +686,8 @@ public async Task Can_Generate_Code_With_Operation_Name_Template(SampleOpenSpeci { var settings = new RefitGeneratorSettings(); settings.OperationNameTemplate = "{operationName}Async"; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("FindPetsByStatusAsync"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("FindPetsByStatusAsync"); } [Theory] @@ -707,9 +707,9 @@ public async Task Can_Generate_Code_With_OperationNameGenerator(OperationNameGen { OperationNameGenerator = type }; - var generateCode = await GenerateCode(version, filename, settings); + var generatedCode = await GenerateCode(version, filename, settings); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -724,8 +724,8 @@ public async Task Can_Generate_Code_Without_AdditionalProperties(SampleOpenSpeci var settings = new RefitGeneratorSettings(); settings.GenerateDefaultAdditionalProperties = false; settings.OperationNameTemplate = "{operationName}Async"; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().NotContain("Dictionary AdditionalProperties"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().NotContain("Dictionary AdditionalProperties"); } [Theory] @@ -741,9 +741,9 @@ public async Task Can_Generate_Code_With_NonNullable_Return_Types(SampleOpenSpec GenerateNullableReferenceTypes = true, GenerateOptionalPropertiesAsNullable = true }; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("Task"); - generateCode.Should().NotContain("Task"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("Task"); + generatedCode.Should().NotContain("Task"); } [Theory] @@ -760,9 +760,9 @@ public async Task Can_Generate_Code_With_NonNullable_Return_Types_In_ApiResponse GenerateNullableReferenceTypes = true, GenerateOptionalPropertiesAsNullable = true }; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("Task>"); - generateCode.Should().NotContain("Task>"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("Task>"); + generatedCode.Should().NotContain("Task>"); } [Theory] @@ -773,8 +773,8 @@ public async Task Can_Generate_Code_With_NonNullable_Return_Types_In_ApiResponse public async Task Can_Generate_Code_With_ImmutableRecords(SampleOpenSpecifications version, string filename) { var settings = new RefitGeneratorSettings { ImmutableRecords = true }; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("record Pet"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("record Pet"); } [Theory] @@ -785,12 +785,12 @@ public async Task Can_Generate_Code_With_ImmutableRecords(SampleOpenSpecificatio public async Task Can_Generate_Code_With_DynamicQuerystringParameters(SampleOpenSpecifications version, string filename) { var settings = new RefitGeneratorSettings { UseDynamicQuerystringParameters = true }; - var generateCode = await GenerateCode(version, filename, settings); + var generatedCode = await GenerateCode(version, filename, settings); if (version is SampleOpenSpecifications.SwaggerPetstoreJsonV3 or SampleOpenSpecifications.SwaggerPetstoreYamlV3) - generateCode.Should().Contain("long petId, [Query] UpdatePetWithFormQueryParams queryParams);") + generatedCode.Should().Contain("long petId, [Query] UpdatePetWithFormQueryParams queryParams);") .And.Contain("public class UpdatePetWithFormQueryParams"); - generateCode.Should().Contain("[Query] LoginUserQueryParams queryParams);") + generatedCode.Should().Contain("[Query] LoginUserQueryParams queryParams);") .And.Contain("public class LoginUserQueryParams"); } @@ -802,8 +802,8 @@ public async Task Can_Generate_Code_With_DynamicQuerystringParameters(SampleOpen public async Task Can_Generate_Code_With_IDisposable(SampleOpenSpecifications version, string filename) { var settings = new RefitGeneratorSettings { GenerateDisposableClients = true }; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("IDisposable"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("IDisposable"); } [Theory] @@ -817,9 +817,9 @@ public async Task Can_Build_Generated_Code_With_IDisposable(SampleOpenSpecificat { var settings = new RefitGeneratorSettings(); settings.GenerateDisposableClients = true; - var generateCode = await GenerateCode(version, filename, settings); + var generatedCode = await GenerateCode(version, filename, settings); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } @@ -832,8 +832,8 @@ public async Task Can_Build_Generated_Code_With_IDisposable(SampleOpenSpecificat public async Task Can_Generate_Interface_With_Summary(SampleOpenSpecifications version, string filename) { var settings = new RefitGeneratorSettings { GenerateXmlDocCodeComments = true }; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("Swagger Petstore"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("Swagger Petstore"); } [Theory] @@ -844,9 +844,9 @@ public async Task Can_Generate_Interface_With_Summary(SampleOpenSpecifications v public async Task Can_Generate_Interfaces_Filtered_By_Path_Match(SampleOpenSpecifications version, string filename) { var settings = new RefitGeneratorSettings { IncludePathMatches = ["^/pet.*"] }; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("\"/pet\""); - generateCode.Should().Contain("\"/pet/{petId}\""); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("\"/pet\""); + generatedCode.Should().Contain("\"/pet/{petId}\""); } [Theory] @@ -859,10 +859,10 @@ public async Task Can_Generate_Interfaces_Filtered_By_Path_Match(SampleOpenSpeci public async Task Can_Import_Contracts_Namespace(SampleOpenSpecifications version, string filename) { var settings = new RefitGeneratorSettings { ContractsNamespace = "Contracts" }; - var generateCode = await GenerateCode(version, filename, settings); - generateCode.Should().Contain("using Contracts;"); + var generatedCode = await GenerateCode(version, filename, settings); + generatedCode.Should().Contain("using Contracts;"); BuildHelper - .BuildCSharp(generateCode) + .BuildCSharp(generatedCode) .Should() .BeTrue(); } From dce6620ea3a890ca24770891cb8a9cb9c19c3045 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 17 Sep 2025 20:57:10 +0000 Subject: [PATCH 4/7] Extract duplicate CreateSwaggerFile methods into shared SwaggerFileHelper utility Co-authored-by: christianhelle <710400+christianhelle@users.noreply.github.com> --- .../CustomCSharpGeneratorSettingsTests.cs | 1 + .../Examples/AdditionalNamespacesTests.cs | 12 ++------- src/Refitter.Tests/Examples/ApizrTests.cs | 13 ++-------- ...ReturnMultipleInterfacesByEndpointTests.cs | 12 ++------- ...yTypeReturnMultipleInterfacesByTagTests.cs | 12 ++------- .../Examples/ArrayTypeReturnTests.cs | 12 ++------- .../Examples/CaseSensitiveParametersTests.cs | 12 ++------- .../Examples/CollectionFormatTests.cs | 12 ++------- .../Examples/ColonsInPathTests.cs | 12 ++------- .../CustomCodeGeneratorWithDateTimeTests.cs | 12 ++------- .../Examples/CustomDateFormatTests.cs | 12 ++------- .../Examples/DefaultResponseObjectTests.cs | 12 ++------- .../Examples/DeprecatedEndpointTests.cs | 12 ++------- .../DeprecatedEndpointsSkippedTests.cs | 12 ++------- ...ipleInterfaceByTagEndpointsSkippedTests.cs | 12 ++------- ...dMultipleInterfaceEndpointsSkippedTests.cs | 12 ++------- .../Examples/FilterByPathTests.cs | 12 ++------- .../Examples/FilterByTagsTests.cs | 12 ++------- .../IncludeInheritanceHierarchyTests.cs | 13 ++-------- src/Refitter.Tests/Examples/KebabCaseTests.cs | 12 ++------- .../Examples/KeepSchemaPatternsTests.cs | 13 ++-------- .../Examples/MultiPartFormDataTests.cs | 12 ++------- .../MultipleInterfacesByEndpointTests.cs | 12 ++------- ...ultipleInterfacesByEndpointWithIoCTests.cs | 12 ++------- .../Examples/MultipleInterfacesByTagsTests.cs | 12 ++------- .../Examples/MultipleSuccessResponsesTests.cs | 13 ++-------- .../Examples/NoContentApiResponseTests.cs | 12 ++------- .../Examples/OctetStreamBodyTests.cs | 12 ++------- .../Examples/OpenApiUrlTests.cs | 3 ++- .../OperationIdWithInvalidFirstCharTests.cs | 12 ++------- .../Examples/OperationIdWithSpacesTests.cs | 12 ++------- .../OptionalNullableParametersTests.cs | 12 ++------- .../Examples/PathParametersTests.cs | 12 ++------- .../Examples/PercentageCharacterTests.cs | 13 ++-------- .../Examples/PoorOperationIdsTests.cs | 12 ++------- .../Examples/RequestResponseHeadersTests.cs | 12 ++------- .../Examples/ResponseHeadersTests.cs | 12 ++------- .../Examples/SymbolsInDescriptionTests.cs | 12 ++------- .../Examples/SystemPropertyInContractTests.cs | 12 ++------- .../Examples/TrimUnusedSchemaTests.cs | 12 ++------- .../Examples/UnderscoresToPascalCaseTests.cs | 12 ++------- .../Examples/UseIsoDateFormatTests.cs | 12 ++------- .../UsePolymorphicSerializationTests.cs | 12 ++------- src/Refitter.Tests/IllegalSymbolsTests.cs | 1 + .../PathParametersWithUrlTests.cs | 1 + .../SwaggerPetstoreApizrTests.cs | 1 + src/Refitter.Tests/SwaggerPetstoreTests.cs | 1 + .../TestUtilities/SwaggerFileHelper.cs | 25 +++++++++++++++++++ 48 files changed, 114 insertions(+), 416 deletions(-) create mode 100644 src/Refitter.Tests/TestUtilities/SwaggerFileHelper.cs diff --git a/src/Refitter.Tests/CustomCSharpGeneratorSettingsTests.cs b/src/Refitter.Tests/CustomCSharpGeneratorSettingsTests.cs index 86f3840c0..3ccd500cd 100644 --- a/src/Refitter.Tests/CustomCSharpGeneratorSettingsTests.cs +++ b/src/Refitter.Tests/CustomCSharpGeneratorSettingsTests.cs @@ -3,6 +3,7 @@ using Refitter.Core; using Refitter.Tests.Resources; using Xunit; +using Refitter.Tests.TestUtilities; namespace Refitter.Tests; diff --git a/src/Refitter.Tests/Examples/AdditionalNamespacesTests.cs b/src/Refitter.Tests/Examples/AdditionalNamespacesTests.cs index 61b29fe17..95773db1c 100644 --- a/src/Refitter.Tests/Examples/AdditionalNamespacesTests.cs +++ b/src/Refitter.Tests/Examples/AdditionalNamespacesTests.cs @@ -1,4 +1,5 @@ using FluentAssertions; +using Refitter.Tests.TestUtilities; using Refitter.Core; using Refitter.Tests.Build; using Xunit; @@ -85,7 +86,7 @@ public async Task Generated_Types_Contains_Additional_Namespaces() private static async Task GenerateCode() { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var foo = new RefitGeneratorSettings { OpenApiPath = swaggerFile, @@ -97,13 +98,4 @@ private static async Task GenerateCode() return generatedCode; } - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } } diff --git a/src/Refitter.Tests/Examples/ApizrTests.cs b/src/Refitter.Tests/Examples/ApizrTests.cs index 79dca204d..c820c42b6 100644 --- a/src/Refitter.Tests/Examples/ApizrTests.cs +++ b/src/Refitter.Tests/Examples/ApizrTests.cs @@ -1,6 +1,7 @@ using FluentAssertions; using Refitter.Core; using Refitter.Tests.Build; +using Refitter.Tests.TestUtilities; using Xunit; namespace Refitter.Tests.Examples; @@ -195,7 +196,7 @@ public async Task Can_Build_Generated_Code() private static async Task GenerateCode(bool useDynamicQuerystringParameters = false, MultipleInterfaces multipleInterfaces = MultipleInterfaces.Unset) { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile, @@ -214,14 +215,4 @@ private static async Task GenerateCode(bool useDynamicQuerystringParamet var generatedCode = sut.Generate(); return generatedCode; } - - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } } diff --git a/src/Refitter.Tests/Examples/ArrayTypeReturnMultipleInterfacesByEndpointTests.cs b/src/Refitter.Tests/Examples/ArrayTypeReturnMultipleInterfacesByEndpointTests.cs index 78c85b792..fe71d97bf 100644 --- a/src/Refitter.Tests/Examples/ArrayTypeReturnMultipleInterfacesByEndpointTests.cs +++ b/src/Refitter.Tests/Examples/ArrayTypeReturnMultipleInterfacesByEndpointTests.cs @@ -1,4 +1,5 @@ using FluentAssertions; +using Refitter.Tests.TestUtilities; using Refitter.Core; using Refitter.Tests.Build; using Xunit; @@ -71,7 +72,7 @@ public async Task Can_Build_Generated_Code() private static async Task GenerateCode() { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile, @@ -84,13 +85,4 @@ private static async Task GenerateCode() return generatedCode; } - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } } diff --git a/src/Refitter.Tests/Examples/ArrayTypeReturnMultipleInterfacesByTagTests.cs b/src/Refitter.Tests/Examples/ArrayTypeReturnMultipleInterfacesByTagTests.cs index 11abd6f78..4d2706313 100644 --- a/src/Refitter.Tests/Examples/ArrayTypeReturnMultipleInterfacesByTagTests.cs +++ b/src/Refitter.Tests/Examples/ArrayTypeReturnMultipleInterfacesByTagTests.cs @@ -1,4 +1,5 @@ using FluentAssertions; +using Refitter.Tests.TestUtilities; using Refitter.Core; using Refitter.Tests.Build; using Xunit; @@ -71,7 +72,7 @@ public async Task Can_Build_Generated_Code() private static async Task GenerateCode() { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile, @@ -84,13 +85,4 @@ private static async Task GenerateCode() return generatedCode; } - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } } diff --git a/src/Refitter.Tests/Examples/ArrayTypeReturnTests.cs b/src/Refitter.Tests/Examples/ArrayTypeReturnTests.cs index 47463877c..a3a6b9381 100644 --- a/src/Refitter.Tests/Examples/ArrayTypeReturnTests.cs +++ b/src/Refitter.Tests/Examples/ArrayTypeReturnTests.cs @@ -1,4 +1,5 @@ using FluentAssertions; +using Refitter.Tests.TestUtilities; using Refitter.Core; using Refitter.Tests.Build; using Xunit; @@ -71,7 +72,7 @@ public async Task Can_Build_Generated_Code() private static async Task GenerateCode() { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile, @@ -83,13 +84,4 @@ private static async Task GenerateCode() return generatedCode; } - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } } diff --git a/src/Refitter.Tests/Examples/CaseSensitiveParametersTests.cs b/src/Refitter.Tests/Examples/CaseSensitiveParametersTests.cs index 26d619d9e..8b7dfe061 100644 --- a/src/Refitter.Tests/Examples/CaseSensitiveParametersTests.cs +++ b/src/Refitter.Tests/Examples/CaseSensitiveParametersTests.cs @@ -1,4 +1,5 @@ using FluentAssertions; +using Refitter.Tests.TestUtilities; using Refitter.Core; using Refitter.Tests.Build; using Xunit; @@ -69,7 +70,7 @@ public async Task Can_Build_Generated_Code() private static async Task GenerateCode() { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile }; var sut = await RefitGenerator.CreateAsync(settings); @@ -77,13 +78,4 @@ private static async Task GenerateCode() return generatedCode; } - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } } diff --git a/src/Refitter.Tests/Examples/CollectionFormatTests.cs b/src/Refitter.Tests/Examples/CollectionFormatTests.cs index fec01bc81..c2a3d7a2e 100644 --- a/src/Refitter.Tests/Examples/CollectionFormatTests.cs +++ b/src/Refitter.Tests/Examples/CollectionFormatTests.cs @@ -1,4 +1,5 @@ using FluentAssertions; +using Refitter.Tests.TestUtilities; using FluentAssertions.Execution; using Refitter.Core; using Refitter.Tests.Build; @@ -98,7 +99,7 @@ public async Task Generated_Code_Contains_Expected_Collection_Format(CollectionF private static async Task GenerateCode(CollectionFormat format = CollectionFormat.Multi) { - string swaggerFile = await CreateSwaggerFile(OpenApiSpec); + string swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); try { var settings = new RefitGeneratorSettings @@ -124,13 +125,4 @@ private static async Task GenerateCode(CollectionFormat format = Collect } } - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.json"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } } diff --git a/src/Refitter.Tests/Examples/ColonsInPathTests.cs b/src/Refitter.Tests/Examples/ColonsInPathTests.cs index c856fbe29..c8e835800 100644 --- a/src/Refitter.Tests/Examples/ColonsInPathTests.cs +++ b/src/Refitter.Tests/Examples/ColonsInPathTests.cs @@ -1,4 +1,5 @@ using FluentAssertions; +using Refitter.Tests.TestUtilities; using FluentAssertions.Execution; using Refitter.Core; using Refitter.Tests.Build; @@ -70,7 +71,7 @@ public async Task Can_Build_Generated_Code() private static async Task GenerateCode() { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile }; var sut = await RefitGenerator.CreateAsync(settings); @@ -78,13 +79,4 @@ private static async Task GenerateCode() return generatedCode; } - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } } diff --git a/src/Refitter.Tests/Examples/CustomCodeGeneratorWithDateTimeTests.cs b/src/Refitter.Tests/Examples/CustomCodeGeneratorWithDateTimeTests.cs index 5c91dfde3..3ed314754 100644 --- a/src/Refitter.Tests/Examples/CustomCodeGeneratorWithDateTimeTests.cs +++ b/src/Refitter.Tests/Examples/CustomCodeGeneratorWithDateTimeTests.cs @@ -1,4 +1,5 @@ using FluentAssertions; +using Refitter.Tests.TestUtilities; using Refitter.Core; using Refitter.Tests.Build; using Xunit; @@ -111,7 +112,7 @@ public async Task Can_Build_Generated_Code() private static async Task GenerateCode() { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile, @@ -126,13 +127,4 @@ private static async Task GenerateCode() return generatedCode; } - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.json"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } } diff --git a/src/Refitter.Tests/Examples/CustomDateFormatTests.cs b/src/Refitter.Tests/Examples/CustomDateFormatTests.cs index 685b1c750..4d85b77f3 100644 --- a/src/Refitter.Tests/Examples/CustomDateFormatTests.cs +++ b/src/Refitter.Tests/Examples/CustomDateFormatTests.cs @@ -1,4 +1,5 @@ using FluentAssertions; +using Refitter.Tests.TestUtilities; using Refitter.Core; using Refitter.Tests.Build; using Xunit; @@ -105,7 +106,7 @@ public async Task Can_Build_Generated_Code() private static async Task GenerateCode() { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile, @@ -120,13 +121,4 @@ private static async Task GenerateCode() return generatedCode; } - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.json"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } } diff --git a/src/Refitter.Tests/Examples/DefaultResponseObjectTests.cs b/src/Refitter.Tests/Examples/DefaultResponseObjectTests.cs index a4f88e024..324d5c1df 100644 --- a/src/Refitter.Tests/Examples/DefaultResponseObjectTests.cs +++ b/src/Refitter.Tests/Examples/DefaultResponseObjectTests.cs @@ -1,4 +1,5 @@ using FluentAssertions; +using Refitter.Tests.TestUtilities; using Refitter.Core; using Refitter.Tests.Build; using Xunit; @@ -165,7 +166,7 @@ public async Task Should_Generate_Category_Contract() private static async Task GenerateCode() { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile, @@ -177,13 +178,4 @@ private static async Task GenerateCode() return generatedCode; } - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } } diff --git a/src/Refitter.Tests/Examples/DeprecatedEndpointTests.cs b/src/Refitter.Tests/Examples/DeprecatedEndpointTests.cs index 8f6e16207..5fe6d3a6d 100644 --- a/src/Refitter.Tests/Examples/DeprecatedEndpointTests.cs +++ b/src/Refitter.Tests/Examples/DeprecatedEndpointTests.cs @@ -1,4 +1,5 @@ using FluentAssertions; +using Refitter.Tests.TestUtilities; using Refitter.Core; using Refitter.Tests.Build; using Xunit; @@ -83,7 +84,7 @@ public async Task Can_Build_Generated_Code() private static async Task GenerateCode() { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile }; var sut = await RefitGenerator.CreateAsync(settings); @@ -91,13 +92,4 @@ private static async Task GenerateCode() return generatedCode; } - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } } diff --git a/src/Refitter.Tests/Examples/DeprecatedEndpointsSkippedTests.cs b/src/Refitter.Tests/Examples/DeprecatedEndpointsSkippedTests.cs index 950d337a5..ca7089839 100644 --- a/src/Refitter.Tests/Examples/DeprecatedEndpointsSkippedTests.cs +++ b/src/Refitter.Tests/Examples/DeprecatedEndpointsSkippedTests.cs @@ -1,4 +1,5 @@ using FluentAssertions; +using Refitter.Tests.TestUtilities; using Refitter.Core; using Refitter.Tests.Build; using Xunit; @@ -97,7 +98,7 @@ public async Task Can_Build_Generated_Code() private static async Task GenerateCode() { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile, @@ -109,13 +110,4 @@ private static async Task GenerateCode() return generatedCode; } - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } } diff --git a/src/Refitter.Tests/Examples/DeprecatedMultipleInterfaceByTagEndpointsSkippedTests.cs b/src/Refitter.Tests/Examples/DeprecatedMultipleInterfaceByTagEndpointsSkippedTests.cs index f4d92e0b3..f474683d8 100644 --- a/src/Refitter.Tests/Examples/DeprecatedMultipleInterfaceByTagEndpointsSkippedTests.cs +++ b/src/Refitter.Tests/Examples/DeprecatedMultipleInterfaceByTagEndpointsSkippedTests.cs @@ -1,4 +1,5 @@ using FluentAssertions; +using Refitter.Tests.TestUtilities; using Refitter.Core; using Refitter.Tests.Build; using Xunit; @@ -97,7 +98,7 @@ public async Task Can_Build_Generated_Code() private static async Task GenerateCode() { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile, @@ -110,13 +111,4 @@ private static async Task GenerateCode() return generatedCode; } - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } } diff --git a/src/Refitter.Tests/Examples/DeprecatedMultipleInterfaceEndpointsSkippedTests.cs b/src/Refitter.Tests/Examples/DeprecatedMultipleInterfaceEndpointsSkippedTests.cs index 1d1b9660e..e5d9831f2 100644 --- a/src/Refitter.Tests/Examples/DeprecatedMultipleInterfaceEndpointsSkippedTests.cs +++ b/src/Refitter.Tests/Examples/DeprecatedMultipleInterfaceEndpointsSkippedTests.cs @@ -1,4 +1,5 @@ using FluentAssertions; +using Refitter.Tests.TestUtilities; using Refitter.Core; using Refitter.Tests.Build; using Xunit; @@ -97,7 +98,7 @@ public async Task Can_Build_Generated_Code() private static async Task GenerateCode() { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile, @@ -110,13 +111,4 @@ private static async Task GenerateCode() return generatedCode; } - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } } diff --git a/src/Refitter.Tests/Examples/FilterByPathTests.cs b/src/Refitter.Tests/Examples/FilterByPathTests.cs index aa511e3a0..ec7029f66 100644 --- a/src/Refitter.Tests/Examples/FilterByPathTests.cs +++ b/src/Refitter.Tests/Examples/FilterByPathTests.cs @@ -1,4 +1,5 @@ using FluentAssertions; +using Refitter.Tests.TestUtilities; using Refitter.Core; using Refitter.Tests.Build; using Xunit; @@ -84,7 +85,7 @@ public async Task Can_Build_Generated_Code() private static async Task GenerateCode() { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile, @@ -96,13 +97,4 @@ private static async Task GenerateCode() return generatedCode; } - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } } diff --git a/src/Refitter.Tests/Examples/FilterByTagsTests.cs b/src/Refitter.Tests/Examples/FilterByTagsTests.cs index b00213c31..bff6e88f9 100644 --- a/src/Refitter.Tests/Examples/FilterByTagsTests.cs +++ b/src/Refitter.Tests/Examples/FilterByTagsTests.cs @@ -1,4 +1,5 @@ using FluentAssertions; +using Refitter.Tests.TestUtilities; using Refitter.Core; using Refitter.Tests.Build; using Xunit; @@ -93,7 +94,7 @@ public async Task Can_Build_Generated_Code() private static async Task GenerateCode() { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile, @@ -105,13 +106,4 @@ private static async Task GenerateCode() return generatedCode; } - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } } diff --git a/src/Refitter.Tests/Examples/IncludeInheritanceHierarchyTests.cs b/src/Refitter.Tests/Examples/IncludeInheritanceHierarchyTests.cs index b0d36afe8..88af9bdf7 100644 --- a/src/Refitter.Tests/Examples/IncludeInheritanceHierarchyTests.cs +++ b/src/Refitter.Tests/Examples/IncludeInheritanceHierarchyTests.cs @@ -1,4 +1,5 @@ using FluentAssertions; +using Refitter.Tests.TestUtilities; using Refitter.Core; using Refitter.Tests.Build; using Xunit; @@ -100,7 +101,7 @@ public async Task Can_Build_Generated_Code(bool includeHierarchy) private static async Task GenerateCode(bool includeHierarchy) { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile, @@ -113,15 +114,5 @@ private static async Task GenerateCode(bool includeHierarchy) var generatedCode = sut.Generate(); return generatedCode; } - - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } } } diff --git a/src/Refitter.Tests/Examples/KebabCaseTests.cs b/src/Refitter.Tests/Examples/KebabCaseTests.cs index 76326010f..218245655 100644 --- a/src/Refitter.Tests/Examples/KebabCaseTests.cs +++ b/src/Refitter.Tests/Examples/KebabCaseTests.cs @@ -1,4 +1,5 @@ using FluentAssertions; +using Refitter.Tests.TestUtilities; using Refitter.Core; using Refitter.Tests.Build; using Xunit; @@ -76,7 +77,7 @@ public async Task Can_Build_Generated_Code() private static async Task GenerateCode() { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile }; var sut = await RefitGenerator.CreateAsync(settings); @@ -84,13 +85,4 @@ private static async Task GenerateCode() return generatedCode; } - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } } diff --git a/src/Refitter.Tests/Examples/KeepSchemaPatternsTests.cs b/src/Refitter.Tests/Examples/KeepSchemaPatternsTests.cs index 224a6120a..51e89c551 100644 --- a/src/Refitter.Tests/Examples/KeepSchemaPatternsTests.cs +++ b/src/Refitter.Tests/Examples/KeepSchemaPatternsTests.cs @@ -1,6 +1,7 @@ using FluentAssertions; using Refitter.Core; using Refitter.Tests.Build; +using Refitter.Tests.TestUtilities; using Xunit; namespace Refitter.Tests.Examples; @@ -144,21 +145,11 @@ public async Task Can_Build_Generated_Code() private static async Task GenerateCode() { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile, TrimUnusedSchema = true, KeepSchemaPatterns = new[] { "^UserComponent$" }, }; var sut = await RefitGenerator.CreateAsync(settings); var generatedCode = sut.Generate(); return generatedCode; } - - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } } diff --git a/src/Refitter.Tests/Examples/MultiPartFormDataTests.cs b/src/Refitter.Tests/Examples/MultiPartFormDataTests.cs index 9e6418705..f2bd20363 100644 --- a/src/Refitter.Tests/Examples/MultiPartFormDataTests.cs +++ b/src/Refitter.Tests/Examples/MultiPartFormDataTests.cs @@ -1,4 +1,5 @@ using FluentAssertions; +using Refitter.Tests.TestUtilities; using Refitter.Core; using Refitter.Tests.Build; @@ -130,7 +131,7 @@ public async Task Generated_Code_Contains_Correct_Parameters() private static async Task GenerateCode() { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile }; var sut = await RefitGenerator.CreateAsync(settings); @@ -138,13 +139,4 @@ private static async Task GenerateCode() return generatedCode; } - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.json"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } } diff --git a/src/Refitter.Tests/Examples/MultipleInterfacesByEndpointTests.cs b/src/Refitter.Tests/Examples/MultipleInterfacesByEndpointTests.cs index 16b358965..9a66d72db 100644 --- a/src/Refitter.Tests/Examples/MultipleInterfacesByEndpointTests.cs +++ b/src/Refitter.Tests/Examples/MultipleInterfacesByEndpointTests.cs @@ -1,4 +1,5 @@ using FluentAssertions; +using Refitter.Tests.TestUtilities; using Refitter.Core; using Refitter.Tests.Build; using Xunit; @@ -159,7 +160,7 @@ public async Task Can_Build_Generated_Code() private static async Task GenerateCode(bool useDynamicQuerystringParameters = false) { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile, @@ -173,13 +174,4 @@ private static async Task GenerateCode(bool useDynamicQuerystringParamet return generatedCode; } - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } } diff --git a/src/Refitter.Tests/Examples/MultipleInterfacesByEndpointWithIoCTests.cs b/src/Refitter.Tests/Examples/MultipleInterfacesByEndpointWithIoCTests.cs index e4c86d6fa..0119d160e 100644 --- a/src/Refitter.Tests/Examples/MultipleInterfacesByEndpointWithIoCTests.cs +++ b/src/Refitter.Tests/Examples/MultipleInterfacesByEndpointWithIoCTests.cs @@ -1,4 +1,5 @@ using FluentAssertions; +using Refitter.Tests.TestUtilities; using Refitter.Core; using Refitter.Tests.Build; using Xunit; @@ -77,7 +78,7 @@ public async Task Can_Build_Generated_Code() private static async Task GenerateCode() { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile, @@ -95,13 +96,4 @@ private static async Task GenerateCode() return generatedCode; } - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } } diff --git a/src/Refitter.Tests/Examples/MultipleInterfacesByTagsTests.cs b/src/Refitter.Tests/Examples/MultipleInterfacesByTagsTests.cs index f78cef886..b95057104 100644 --- a/src/Refitter.Tests/Examples/MultipleInterfacesByTagsTests.cs +++ b/src/Refitter.Tests/Examples/MultipleInterfacesByTagsTests.cs @@ -1,4 +1,5 @@ using FluentAssertions; +using Refitter.Tests.TestUtilities; using Refitter.Core; using Refitter.Tests.Build; using Xunit; @@ -156,7 +157,7 @@ public async Task Can_Build_Generated_Code() private static async Task GenerateCode(bool useDynamicQuerystringParameters = false) { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile, @@ -170,13 +171,4 @@ private static async Task GenerateCode(bool useDynamicQuerystringParamet return generatedCode; } - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } } diff --git a/src/Refitter.Tests/Examples/MultipleSuccessResponsesTests.cs b/src/Refitter.Tests/Examples/MultipleSuccessResponsesTests.cs index 9588f8221..700c0df91 100644 --- a/src/Refitter.Tests/Examples/MultipleSuccessResponsesTests.cs +++ b/src/Refitter.Tests/Examples/MultipleSuccessResponsesTests.cs @@ -1,6 +1,7 @@ using FluentAssertions; using Refitter.Core; using Refitter.Tests.Build; +using Refitter.Tests.TestUtilities; using Xunit; namespace Refitter.Tests.Examples; @@ -82,21 +83,11 @@ public async Task Can_Build_Generated_Code() private static async Task GenerateCode() { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile }; var sut = await RefitGenerator.CreateAsync(settings); var generatedCode = sut.Generate(); return generatedCode; } - - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } } diff --git a/src/Refitter.Tests/Examples/NoContentApiResponseTests.cs b/src/Refitter.Tests/Examples/NoContentApiResponseTests.cs index 00c572b86..f74cc14ca 100644 --- a/src/Refitter.Tests/Examples/NoContentApiResponseTests.cs +++ b/src/Refitter.Tests/Examples/NoContentApiResponseTests.cs @@ -1,4 +1,5 @@ using FluentAssertions; +using Refitter.Tests.TestUtilities; using FluentAssertions.Execution; using Refitter.Core; using Refitter.Tests.Build; @@ -80,7 +81,7 @@ public async Task Can_Build_Generated_Code() private static async Task GenerateCode() { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile }; settings.ReturnIApiResponse = true; @@ -89,13 +90,4 @@ private static async Task GenerateCode() return generatedCode; } - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } } diff --git a/src/Refitter.Tests/Examples/OctetStreamBodyTests.cs b/src/Refitter.Tests/Examples/OctetStreamBodyTests.cs index d77727190..624719a9c 100644 --- a/src/Refitter.Tests/Examples/OctetStreamBodyTests.cs +++ b/src/Refitter.Tests/Examples/OctetStreamBodyTests.cs @@ -1,4 +1,5 @@ using FluentAssertions; +using Refitter.Tests.TestUtilities; using Refitter.Core; using Refitter.Tests.Build; using Xunit; @@ -75,7 +76,7 @@ public async Task Can_Build_Generated_Code() private static async Task GenerateCode(bool useDynamicQuerystringParameters = false) { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile, @@ -89,13 +90,4 @@ private static async Task GenerateCode(bool useDynamicQuerystringParamet return generatedCode; } - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } } diff --git a/src/Refitter.Tests/Examples/OpenApiUrlTests.cs b/src/Refitter.Tests/Examples/OpenApiUrlTests.cs index 0b24b4df1..6e030987c 100644 --- a/src/Refitter.Tests/Examples/OpenApiUrlTests.cs +++ b/src/Refitter.Tests/Examples/OpenApiUrlTests.cs @@ -1,4 +1,5 @@ #if !DEBUG +using Refitter.Tests.TestUtilities; using FluentAssertions; using Refitter.Core; using Refitter.Tests.Build; @@ -44,5 +45,5 @@ public async Task Can_Build_Generated_Code_From_OpenApi_v3_Url_Yaml(string url) .Should() .BeTrue(url); } -} #endif +} diff --git a/src/Refitter.Tests/Examples/OperationIdWithInvalidFirstCharTests.cs b/src/Refitter.Tests/Examples/OperationIdWithInvalidFirstCharTests.cs index 04aeab306..09e3e189c 100644 --- a/src/Refitter.Tests/Examples/OperationIdWithInvalidFirstCharTests.cs +++ b/src/Refitter.Tests/Examples/OperationIdWithInvalidFirstCharTests.cs @@ -1,4 +1,5 @@ using FluentAssertions; +using Refitter.Tests.TestUtilities; using Refitter.Core; using Refitter.Tests.Build; using Xunit; @@ -55,7 +56,7 @@ public async Task Can_Build_Generated_Code() private static async Task GenerateCode() { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile @@ -66,13 +67,4 @@ private static async Task GenerateCode() return generatedCode; } - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } } diff --git a/src/Refitter.Tests/Examples/OperationIdWithSpacesTests.cs b/src/Refitter.Tests/Examples/OperationIdWithSpacesTests.cs index d73130c71..dc14a75f6 100644 --- a/src/Refitter.Tests/Examples/OperationIdWithSpacesTests.cs +++ b/src/Refitter.Tests/Examples/OperationIdWithSpacesTests.cs @@ -1,4 +1,5 @@ using FluentAssertions; +using Refitter.Tests.TestUtilities; using Refitter.Core; using Refitter.Tests.Build; using Xunit; @@ -54,7 +55,7 @@ public async Task Can_Build_Generated_Code() private static async Task GenerateCode() { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile }; var sut = await RefitGenerator.CreateAsync(settings); @@ -62,13 +63,4 @@ private static async Task GenerateCode() return generatedCode; } - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } } diff --git a/src/Refitter.Tests/Examples/OptionalNullableParametersTests.cs b/src/Refitter.Tests/Examples/OptionalNullableParametersTests.cs index a7ccd9e90..d17543fe4 100644 --- a/src/Refitter.Tests/Examples/OptionalNullableParametersTests.cs +++ b/src/Refitter.Tests/Examples/OptionalNullableParametersTests.cs @@ -1,4 +1,5 @@ using FluentAssertions; +using Refitter.Tests.TestUtilities; using Refitter.Core; using Refitter.Tests.Build; using Xunit; @@ -95,7 +96,7 @@ public async Task Can_Build_Generated_Code() private static async Task GenerateCode(bool useDynamicQuerystringParameters = false) { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile, @@ -109,13 +110,4 @@ private static async Task GenerateCode(bool useDynamicQuerystringParamet return generatedCode; } - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } } diff --git a/src/Refitter.Tests/Examples/PathParametersTests.cs b/src/Refitter.Tests/Examples/PathParametersTests.cs index 116532e92..70435f186 100644 --- a/src/Refitter.Tests/Examples/PathParametersTests.cs +++ b/src/Refitter.Tests/Examples/PathParametersTests.cs @@ -1,4 +1,5 @@ using FluentAssertions; +using Refitter.Tests.TestUtilities; using FluentAssertions.Execution; using Refitter.Core; using Refitter.Tests.Build; @@ -81,7 +82,7 @@ public async Task Can_Build_Generated_Code() private static async Task GenerateCode() { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile }; var sut = await RefitGenerator.CreateAsync(settings); @@ -89,13 +90,4 @@ private static async Task GenerateCode() return generatedCode; } - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } } diff --git a/src/Refitter.Tests/Examples/PercentageCharacterTests.cs b/src/Refitter.Tests/Examples/PercentageCharacterTests.cs index aaab517a6..aa1172e7b 100644 --- a/src/Refitter.Tests/Examples/PercentageCharacterTests.cs +++ b/src/Refitter.Tests/Examples/PercentageCharacterTests.cs @@ -1,6 +1,7 @@ using FluentAssertions; using Refitter.Core; using Refitter.Tests.Build; +using Refitter.Tests.TestUtilities; using Xunit; namespace Refitter.Tests.Examples; @@ -71,21 +72,11 @@ public async Task Can_Build_Generated_Code() private static async Task GenerateCode() { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile }; var sut = await RefitGenerator.CreateAsync(settings); var generatedCode = sut.Generate(); return generatedCode; } - - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } } diff --git a/src/Refitter.Tests/Examples/PoorOperationIdsTests.cs b/src/Refitter.Tests/Examples/PoorOperationIdsTests.cs index f6a89f5b3..d92e955e5 100644 --- a/src/Refitter.Tests/Examples/PoorOperationIdsTests.cs +++ b/src/Refitter.Tests/Examples/PoorOperationIdsTests.cs @@ -1,4 +1,5 @@ using FluentAssertions; +using Refitter.Tests.TestUtilities; using Refitter.Core; using Refitter.Tests.Build; using Xunit; @@ -78,7 +79,7 @@ public async Task Can_Build_Generated_Code() private static async Task GenerateCode() { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var foo = new RefitGeneratorSettings { OpenApiPath = swaggerFile }; var sut = await RefitGenerator.CreateAsync(foo); @@ -86,13 +87,4 @@ private static async Task GenerateCode() return generatedCode; } - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } } diff --git a/src/Refitter.Tests/Examples/RequestResponseHeadersTests.cs b/src/Refitter.Tests/Examples/RequestResponseHeadersTests.cs index 9d4ad9eea..9cc823aeb 100644 --- a/src/Refitter.Tests/Examples/RequestResponseHeadersTests.cs +++ b/src/Refitter.Tests/Examples/RequestResponseHeadersTests.cs @@ -1,4 +1,5 @@ using FluentAssertions; +using Refitter.Tests.TestUtilities; using FluentAssertions.Execution; using Refitter.Core; using Refitter.Tests.Build; @@ -62,7 +63,7 @@ public async Task Can_Build_Generated_Code() private static async Task GenerateCode() { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile, AddAcceptHeaders = true }; var sut = await RefitGenerator.CreateAsync(settings); @@ -70,13 +71,4 @@ private static async Task GenerateCode() return generatedCode; } - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } } diff --git a/src/Refitter.Tests/Examples/ResponseHeadersTests.cs b/src/Refitter.Tests/Examples/ResponseHeadersTests.cs index f04d7179d..4ea1ac71a 100644 --- a/src/Refitter.Tests/Examples/ResponseHeadersTests.cs +++ b/src/Refitter.Tests/Examples/ResponseHeadersTests.cs @@ -1,4 +1,5 @@ using FluentAssertions; +using Refitter.Tests.TestUtilities; using FluentAssertions.Execution; using Refitter.Core; using Refitter.Tests.Build; @@ -56,7 +57,7 @@ public async Task Can_Build_Generated_Code() private static async Task GenerateCode() { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile, AddAcceptHeaders = true }; var sut = await RefitGenerator.CreateAsync(settings); @@ -64,13 +65,4 @@ private static async Task GenerateCode() return generatedCode; } - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } } diff --git a/src/Refitter.Tests/Examples/SymbolsInDescriptionTests.cs b/src/Refitter.Tests/Examples/SymbolsInDescriptionTests.cs index b2480d991..e971e63b2 100644 --- a/src/Refitter.Tests/Examples/SymbolsInDescriptionTests.cs +++ b/src/Refitter.Tests/Examples/SymbolsInDescriptionTests.cs @@ -1,4 +1,5 @@ using FluentAssertions; +using Refitter.Tests.TestUtilities; using FluentAssertions.Execution; using Refitter.Core; using Refitter.Tests.Build; @@ -59,7 +60,7 @@ public async Task Can_Build_Generated_Code() private static async Task GenerateCode() { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile }; var sut = await RefitGenerator.CreateAsync(settings); @@ -67,13 +68,4 @@ private static async Task GenerateCode() return generatedCode; } - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } } diff --git a/src/Refitter.Tests/Examples/SystemPropertyInContractTests.cs b/src/Refitter.Tests/Examples/SystemPropertyInContractTests.cs index 81a83d770..ed35eed0d 100644 --- a/src/Refitter.Tests/Examples/SystemPropertyInContractTests.cs +++ b/src/Refitter.Tests/Examples/SystemPropertyInContractTests.cs @@ -1,4 +1,5 @@ using FluentAssertions; +using Refitter.Tests.TestUtilities; using Refitter.Core; using Refitter.Tests.Build; using Xunit; @@ -56,7 +57,7 @@ public async Task Can_Build_Generated_Code() private static async Task GenerateCode() { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile }; var sut = await RefitGenerator.CreateAsync(settings); @@ -64,13 +65,4 @@ private static async Task GenerateCode() return generatedCode; } - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } } diff --git a/src/Refitter.Tests/Examples/TrimUnusedSchemaTests.cs b/src/Refitter.Tests/Examples/TrimUnusedSchemaTests.cs index da7b6a1cc..06c365cb9 100644 --- a/src/Refitter.Tests/Examples/TrimUnusedSchemaTests.cs +++ b/src/Refitter.Tests/Examples/TrimUnusedSchemaTests.cs @@ -1,4 +1,5 @@ using FluentAssertions; +using Refitter.Tests.TestUtilities; using Refitter.Core; using Refitter.Tests.Build; using Xunit; @@ -225,7 +226,7 @@ public async Task Can_Build_Generated_Code() private static async Task GenerateCode() { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile, @@ -237,13 +238,4 @@ private static async Task GenerateCode() return generatedCode; } - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } } diff --git a/src/Refitter.Tests/Examples/UnderscoresToPascalCaseTests.cs b/src/Refitter.Tests/Examples/UnderscoresToPascalCaseTests.cs index 20a4b5aa8..6010e01b1 100644 --- a/src/Refitter.Tests/Examples/UnderscoresToPascalCaseTests.cs +++ b/src/Refitter.Tests/Examples/UnderscoresToPascalCaseTests.cs @@ -1,4 +1,5 @@ using FluentAssertions; +using Refitter.Tests.TestUtilities; using Refitter.Core; using Refitter.Tests.Build; using Xunit; @@ -76,7 +77,7 @@ public async Task Can_Build_Generated_Code() private static async Task GenerateCode() { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile }; var sut = await RefitGenerator.CreateAsync(settings); @@ -84,13 +85,4 @@ private static async Task GenerateCode() return generatedCode; } - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } } diff --git a/src/Refitter.Tests/Examples/UseIsoDateFormatTests.cs b/src/Refitter.Tests/Examples/UseIsoDateFormatTests.cs index dd0a7ce3b..23ced3ab5 100644 --- a/src/Refitter.Tests/Examples/UseIsoDateFormatTests.cs +++ b/src/Refitter.Tests/Examples/UseIsoDateFormatTests.cs @@ -1,4 +1,5 @@ using AutoFixture.Xunit2; +using Refitter.Tests.TestUtilities; using FluentAssertions; using Refitter.Core; using Refitter.Tests.Build; @@ -141,7 +142,7 @@ public async Task Can_Build_Generated_Code() private static async Task GenerateCode(CodeGeneratorSettings? generatorSettings = null) { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile, @@ -154,13 +155,4 @@ private static async Task GenerateCode(CodeGeneratorSettings? generatorS return generatedCode; } - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yaml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } } diff --git a/src/Refitter.Tests/Examples/UsePolymorphicSerializationTests.cs b/src/Refitter.Tests/Examples/UsePolymorphicSerializationTests.cs index b5e5b896c..47909fed9 100644 --- a/src/Refitter.Tests/Examples/UsePolymorphicSerializationTests.cs +++ b/src/Refitter.Tests/Examples/UsePolymorphicSerializationTests.cs @@ -1,4 +1,5 @@ using FluentAssertions; +using Refitter.Tests.TestUtilities; using Refitter.Core; using Refitter.Tests.Build; using Xunit; @@ -221,7 +222,7 @@ public async Task Can_Build_Generated_Code() private static async Task GenerateCode() { - var swaggerFile = await CreateSwaggerFile(OpenApiSpec); + var swaggerFile = await SwaggerFileHelper.CreateSwaggerFile(OpenApiSpec); var settings = new RefitGeneratorSettings { OpenApiPath = swaggerFile, @@ -233,13 +234,4 @@ private static async Task GenerateCode() return generatedCode; } - private static async Task CreateSwaggerFile(string contents) - { - var filename = $"{Guid.NewGuid()}.yml"; - var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); - Directory.CreateDirectory(folder); - var swaggerFile = Path.Combine(folder, filename); - await File.WriteAllTextAsync(swaggerFile, contents); - return swaggerFile; - } } diff --git a/src/Refitter.Tests/IllegalSymbolsTests.cs b/src/Refitter.Tests/IllegalSymbolsTests.cs index 214e06d72..98650739d 100644 --- a/src/Refitter.Tests/IllegalSymbolsTests.cs +++ b/src/Refitter.Tests/IllegalSymbolsTests.cs @@ -3,6 +3,7 @@ using Refitter.Tests.Build; using Refitter.Tests.Resources; using Xunit; +using Refitter.Tests.TestUtilities; namespace Refitter.Tests; diff --git a/src/Refitter.Tests/PathParametersWithUrlTests.cs b/src/Refitter.Tests/PathParametersWithUrlTests.cs index 5ac2f6f02..7eb61ca93 100644 --- a/src/Refitter.Tests/PathParametersWithUrlTests.cs +++ b/src/Refitter.Tests/PathParametersWithUrlTests.cs @@ -2,6 +2,7 @@ using Refitter.Core; using Refitter.Tests.Build; using Xunit; +using Refitter.Tests.TestUtilities; namespace Refitter.Tests; diff --git a/src/Refitter.Tests/SwaggerPetstoreApizrTests.cs b/src/Refitter.Tests/SwaggerPetstoreApizrTests.cs index 34bf066e2..95e3b369a 100644 --- a/src/Refitter.Tests/SwaggerPetstoreApizrTests.cs +++ b/src/Refitter.Tests/SwaggerPetstoreApizrTests.cs @@ -3,6 +3,7 @@ using Refitter.Tests.Build; using Refitter.Tests.Resources; using Xunit; +using Refitter.Tests.TestUtilities; namespace Refitter.Tests; diff --git a/src/Refitter.Tests/SwaggerPetstoreTests.cs b/src/Refitter.Tests/SwaggerPetstoreTests.cs index 012fe7cfc..9ba9f1448 100644 --- a/src/Refitter.Tests/SwaggerPetstoreTests.cs +++ b/src/Refitter.Tests/SwaggerPetstoreTests.cs @@ -3,6 +3,7 @@ using Refitter.Tests.Build; using Refitter.Tests.Resources; using Xunit; +using Refitter.Tests.TestUtilities; namespace Refitter.Tests; diff --git a/src/Refitter.Tests/TestUtilities/SwaggerFileHelper.cs b/src/Refitter.Tests/TestUtilities/SwaggerFileHelper.cs new file mode 100644 index 000000000..6a6d58409 --- /dev/null +++ b/src/Refitter.Tests/TestUtilities/SwaggerFileHelper.cs @@ -0,0 +1,25 @@ +using System.IO; +using System.Threading.Tasks; + +namespace Refitter.Tests.TestUtilities; + +/// +/// Helper utilities for creating temporary Swagger/OpenAPI files in tests +/// +public static class SwaggerFileHelper +{ + /// + /// Creates a temporary YAML file with the specified OpenAPI content + /// + /// The OpenAPI specification content + /// The path to the created temporary file + public static async Task CreateSwaggerFile(string contents) + { + var filename = $"{Guid.NewGuid()}.yml"; + var folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); + Directory.CreateDirectory(folder); + var swaggerFile = Path.Combine(folder, filename); + await File.WriteAllTextAsync(swaggerFile, contents); + return swaggerFile; + } +} \ No newline at end of file From 98dace4960c24461296af25aba49c1eb99fa413f Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 17 Sep 2025 21:00:04 +0000 Subject: [PATCH 5/7] Add XML documentation and simplify conditional expressions in MSBuild task Co-authored-by: christianhelle <710400+christianhelle@users.noreply.github.com> --- src/Refitter.MSBuild/RefitterGenerateTask.cs | 26 +++++++++++++++++--- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/src/Refitter.MSBuild/RefitterGenerateTask.cs b/src/Refitter.MSBuild/RefitterGenerateTask.cs index 8d444b7df..fb52d05be 100644 --- a/src/Refitter.MSBuild/RefitterGenerateTask.cs +++ b/src/Refitter.MSBuild/RefitterGenerateTask.cs @@ -112,6 +112,10 @@ private List StartProcess(string file) return expectedFiles.Where(File.Exists).ToList(); } + /// + /// Gets the list of installed .NET runtimes by executing 'dotnet --list-runtimes' + /// + /// List of installed runtime strings private static List GetInstalledDotnetRuntimes() { var installedRuntimes = new List(); @@ -135,6 +139,11 @@ private static List GetInstalledDotnetRuntimes() return installedRuntimes; } + /// + /// Determines the expected output files that should be generated from a .refitter configuration file + /// + /// Path to the .refitter configuration file + /// List of expected output file paths private List GetExpectedGeneratedFiles(string refitterFilePath) { try @@ -150,10 +159,7 @@ private List GetExpectedGeneratedFiles(string refitterFilePath) var hasDependencyInjectionSettings = refitterContent.Contains("\"dependencyInjectionSettings\""); // If contractsOutputFolder is specified, automatically enable multiple files - if (!string.IsNullOrWhiteSpace(contractsOutputFolder)) - { - generateMultipleFiles = true; - } + generateMultipleFiles = generateMultipleFiles || !string.IsNullOrWhiteSpace(contractsOutputFolder); // Default output filename based on .refitter filename if not specified if (string.IsNullOrWhiteSpace(outputFilename)) @@ -246,6 +252,12 @@ private void TryLogError(string text) } } + /// + /// Extracts a string value from a JSON property using regex pattern matching + /// + /// The JSON content to search + /// The name of the property to extract + /// The extracted string value, or null if not found private static string? ExtractJsonStringValue(string json, string propertyName) { // Simple regex to extract string values from JSON @@ -255,6 +267,12 @@ private void TryLogError(string text) return match.Success ? match.Groups[1].Value : null; } + /// + /// Extracts a boolean value from a JSON property using regex pattern matching + /// + /// The JSON content to search + /// The name of the property to extract + /// True if the property value is "true", false otherwise private static bool ExtractJsonBoolValue(string json, string propertyName) { // Simple regex to extract boolean values from JSON From 5e4e2bc6e03fb47d693be2f4c5d405bb97b13722 Mon Sep 17 00:00:00 2001 From: Christian Helle Date: Fri, 19 Sep 2025 11:00:25 +0200 Subject: [PATCH 6/7] Update src/Refitter.MSBuild/RefitterGenerateTask.cs Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- src/Refitter.MSBuild/RefitterGenerateTask.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Refitter.MSBuild/RefitterGenerateTask.cs b/src/Refitter.MSBuild/RefitterGenerateTask.cs index fb52d05be..cf2c810c7 100644 --- a/src/Refitter.MSBuild/RefitterGenerateTask.cs +++ b/src/Refitter.MSBuild/RefitterGenerateTask.cs @@ -159,7 +159,8 @@ private List GetExpectedGeneratedFiles(string refitterFilePath) var hasDependencyInjectionSettings = refitterContent.Contains("\"dependencyInjectionSettings\""); // If contractsOutputFolder is specified, automatically enable multiple files - generateMultipleFiles = generateMultipleFiles || !string.IsNullOrWhiteSpace(contractsOutputFolder); + bool hasContractsOutputFolder = !string.IsNullOrWhiteSpace(contractsOutputFolder); + generateMultipleFiles = generateMultipleFiles || hasContractsOutputFolder; // Default output filename based on .refitter filename if not specified if (string.IsNullOrWhiteSpace(outputFilename)) From dc505d6932478e1ce16dacde7a64e9635c646556 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 19 Sep 2025 11:31:29 +0000 Subject: [PATCH 7/7] Remove dotnet-install.sh file and add install scripts to .gitignore Co-authored-by: christianhelle <710400+christianhelle@users.noreply.github.com> --- .gitignore | 4 + dotnet-install.sh | 1888 --------------------------------------------- 2 files changed, 4 insertions(+), 1888 deletions(-) delete mode 100755 dotnet-install.sh diff --git a/.gitignore b/.gitignore index 64d61479c..01de113a5 100644 --- a/.gitignore +++ b/.gitignore @@ -278,3 +278,7 @@ test/Apizr/GeneratedCode test/MultipleFiles/**/*.cs test/HelloWorld/HelloWorld/Output.cs test/MSBuild/refitter.msbuild/ + +# Install scripts +dotnet-install.sh +install.sh diff --git a/dotnet-install.sh b/dotnet-install.sh deleted file mode 100755 index 034d2dfb1..000000000 --- a/dotnet-install.sh +++ /dev/null @@ -1,1888 +0,0 @@ -#!/usr/bin/env bash -# Copyright (c) .NET Foundation and contributors. All rights reserved. -# Licensed under the MIT license. See LICENSE file in the project root for full license information. -# - -# Stop script on NZEC -set -e -# Stop script if unbound variable found (use ${var:-} if intentional) -set -u -# By default cmd1 | cmd2 returns exit code of cmd2 regardless of cmd1 success -# This is causing it to fail -set -o pipefail - -# Use in the the functions: eval $invocation -invocation='say_verbose "Calling: ${yellow:-}${FUNCNAME[0]} ${green:-}$*${normal:-}"' - -# standard output may be used as a return value in the functions -# we need a way to write text on the screen in the functions so that -# it won't interfere with the return value. -# Exposing stream 3 as a pipe to standard output of the script itself -exec 3>&1 - -# Setup some colors to use. These need to work in fairly limited shells, like the Ubuntu Docker container where there are only 8 colors. -# See if stdout is a terminal -if [ -t 1 ] && command -v tput > /dev/null; then - # see if it supports colors - ncolors=$(tput colors || echo 0) - if [ -n "$ncolors" ] && [ $ncolors -ge 8 ]; then - bold="$(tput bold || echo)" - normal="$(tput sgr0 || echo)" - black="$(tput setaf 0 || echo)" - red="$(tput setaf 1 || echo)" - green="$(tput setaf 2 || echo)" - yellow="$(tput setaf 3 || echo)" - blue="$(tput setaf 4 || echo)" - magenta="$(tput setaf 5 || echo)" - cyan="$(tput setaf 6 || echo)" - white="$(tput setaf 7 || echo)" - fi -fi - -say_warning() { - printf "%b\n" "${yellow:-}dotnet_install: Warning: $1${normal:-}" >&3 -} - -say_err() { - printf "%b\n" "${red:-}dotnet_install: Error: $1${normal:-}" >&2 -} - -say() { - # using stream 3 (defined in the beginning) to not interfere with stdout of functions - # which may be used as return value - printf "%b\n" "${cyan:-}dotnet-install:${normal:-} $1" >&3 -} - -say_verbose() { - if [ "$verbose" = true ]; then - say "$1" - fi -} - -# This platform list is finite - if the SDK/Runtime has supported Linux distribution-specific assets, -# then and only then should the Linux distribution appear in this list. -# Adding a Linux distribution to this list does not imply distribution-specific support. -get_legacy_os_name_from_platform() { - eval $invocation - - platform="$1" - case "$platform" in - "centos.7") - echo "centos" - return 0 - ;; - "debian.8") - echo "debian" - return 0 - ;; - "debian.9") - echo "debian.9" - return 0 - ;; - "fedora.23") - echo "fedora.23" - return 0 - ;; - "fedora.24") - echo "fedora.24" - return 0 - ;; - "fedora.27") - echo "fedora.27" - return 0 - ;; - "fedora.28") - echo "fedora.28" - return 0 - ;; - "opensuse.13.2") - echo "opensuse.13.2" - return 0 - ;; - "opensuse.42.1") - echo "opensuse.42.1" - return 0 - ;; - "opensuse.42.3") - echo "opensuse.42.3" - return 0 - ;; - "rhel.7"*) - echo "rhel" - return 0 - ;; - "ubuntu.14.04") - echo "ubuntu" - return 0 - ;; - "ubuntu.16.04") - echo "ubuntu.16.04" - return 0 - ;; - "ubuntu.16.10") - echo "ubuntu.16.10" - return 0 - ;; - "ubuntu.18.04") - echo "ubuntu.18.04" - return 0 - ;; - "alpine.3.4.3") - echo "alpine" - return 0 - ;; - esac - return 1 -} - -get_legacy_os_name() { - eval $invocation - - local uname=$(uname) - if [ "$uname" = "Darwin" ]; then - echo "osx" - return 0 - elif [ -n "$runtime_id" ]; then - echo $(get_legacy_os_name_from_platform "${runtime_id%-*}" || echo "${runtime_id%-*}") - return 0 - else - if [ -e /etc/os-release ]; then - . /etc/os-release - os=$(get_legacy_os_name_from_platform "$ID${VERSION_ID:+.${VERSION_ID}}" || echo "") - if [ -n "$os" ]; then - echo "$os" - return 0 - fi - fi - fi - - say_verbose "Distribution specific OS name and version could not be detected: UName = $uname" - return 1 -} - -get_linux_platform_name() { - eval $invocation - - if [ -n "$runtime_id" ]; then - echo "${runtime_id%-*}" - return 0 - else - if [ -e /etc/os-release ]; then - . /etc/os-release - echo "$ID${VERSION_ID:+.${VERSION_ID}}" - return 0 - elif [ -e /etc/redhat-release ]; then - local redhatRelease=$(&1 || true) | grep -q musl -} - -get_current_os_name() { - eval $invocation - - local uname=$(uname) - if [ "$uname" = "Darwin" ]; then - echo "osx" - return 0 - elif [ "$uname" = "FreeBSD" ]; then - echo "freebsd" - return 0 - elif [ "$uname" = "Linux" ]; then - local linux_platform_name="" - linux_platform_name="$(get_linux_platform_name)" || true - - if [ "$linux_platform_name" = "rhel.6" ]; then - echo $linux_platform_name - return 0 - elif is_musl_based_distro; then - echo "linux-musl" - return 0 - elif [ "$linux_platform_name" = "linux-musl" ]; then - echo "linux-musl" - return 0 - else - echo "linux" - return 0 - fi - fi - - say_err "OS name could not be detected: UName = $uname" - return 1 -} - -machine_has() { - eval $invocation - - command -v "$1" > /dev/null 2>&1 - return $? -} - -check_min_reqs() { - local hasMinimum=false - if machine_has "curl"; then - hasMinimum=true - elif machine_has "wget"; then - hasMinimum=true - fi - - if [ "$hasMinimum" = "false" ]; then - say_err "curl (recommended) or wget are required to download dotnet. Install missing prerequisite to proceed." - return 1 - fi - return 0 -} - -# args: -# input - $1 -to_lowercase() { - #eval $invocation - - echo "$1" | tr '[:upper:]' '[:lower:]' - return 0 -} - -# args: -# input - $1 -remove_trailing_slash() { - #eval $invocation - - local input="${1:-}" - echo "${input%/}" - return 0 -} - -# args: -# input - $1 -remove_beginning_slash() { - #eval $invocation - - local input="${1:-}" - echo "${input#/}" - return 0 -} - -# args: -# root_path - $1 -# child_path - $2 - this parameter can be empty -combine_paths() { - eval $invocation - - # TODO: Consider making it work with any number of paths. For now: - if [ ! -z "${3:-}" ]; then - say_err "combine_paths: Function takes two parameters." - return 1 - fi - - local root_path="$(remove_trailing_slash "$1")" - local child_path="$(remove_beginning_slash "${2:-}")" - say_verbose "combine_paths: root_path=$root_path" - say_verbose "combine_paths: child_path=$child_path" - echo "$root_path/$child_path" - return 0 -} - -get_machine_architecture() { - eval $invocation - - if command -v uname > /dev/null; then - CPUName=$(uname -m) - case $CPUName in - armv1*|armv2*|armv3*|armv4*|armv5*|armv6*) - echo "armv6-or-below" - return 0 - ;; - armv*l) - echo "arm" - return 0 - ;; - aarch64|arm64) - if [ "$(getconf LONG_BIT)" -lt 64 ]; then - # This is 32-bit OS running on 64-bit CPU (for example Raspberry Pi OS) - echo "arm" - return 0 - fi - echo "arm64" - return 0 - ;; - s390x) - echo "s390x" - return 0 - ;; - ppc64le) - echo "ppc64le" - return 0 - ;; - loongarch64) - echo "loongarch64" - return 0 - ;; - riscv64) - echo "riscv64" - return 0 - ;; - powerpc|ppc) - echo "ppc" - return 0 - ;; - esac - fi - - # Always default to 'x64' - echo "x64" - return 0 -} - -# args: -# architecture - $1 -get_normalized_architecture_from_architecture() { - eval $invocation - - local architecture="$(to_lowercase "$1")" - - if [[ $architecture == \ ]]; then - machine_architecture="$(get_machine_architecture)" - if [[ "$machine_architecture" == "armv6-or-below" ]]; then - say_err "Architecture \`$machine_architecture\` not supported. If you think this is a bug, report it at https://github.com/dotnet/install-scripts/issues" - return 1 - fi - - echo $machine_architecture - return 0 - fi - - case "$architecture" in - amd64|x64) - echo "x64" - return 0 - ;; - arm) - echo "arm" - return 0 - ;; - arm64) - echo "arm64" - return 0 - ;; - s390x) - echo "s390x" - return 0 - ;; - ppc64le) - echo "ppc64le" - return 0 - ;; - loongarch64) - echo "loongarch64" - return 0 - ;; - esac - - say_err "Architecture \`$architecture\` not supported. If you think this is a bug, report it at https://github.com/dotnet/install-scripts/issues" - return 1 -} - -# args: -# version - $1 -# channel - $2 -# architecture - $3 -get_normalized_architecture_for_specific_sdk_version() { - eval $invocation - - local is_version_support_arm64="$(is_arm64_supported "$1")" - local is_channel_support_arm64="$(is_arm64_supported "$2")" - local architecture="$3"; - local osname="$(get_current_os_name)" - - if [ "$osname" == "osx" ] && [ "$architecture" == "arm64" ] && { [ "$is_version_support_arm64" = false ] || [ "$is_channel_support_arm64" = false ]; }; then - #check if rosetta is installed - if [ "$(/usr/bin/pgrep oahd >/dev/null 2>&1;echo $?)" -eq 0 ]; then - say_verbose "Changing user architecture from '$architecture' to 'x64' because .NET SDKs prior to version 6.0 do not support arm64." - echo "x64" - return 0; - else - say_err "Architecture \`$architecture\` is not supported for .NET SDK version \`$version\`. Please install Rosetta to allow emulation of the \`$architecture\` .NET SDK on this platform" - return 1 - fi - fi - - echo "$architecture" - return 0 -} - -# args: -# version or channel - $1 -is_arm64_supported() { - # Extract the major version by splitting on the dot - major_version="${1%%.*}" - - # Check if the major version is a valid number and less than 6 - case "$major_version" in - [0-9]*) - if [ "$major_version" -lt 6 ]; then - echo false - return 0 - fi - ;; - esac - - echo true - return 0 -} - -# args: -# user_defined_os - $1 -get_normalized_os() { - eval $invocation - - local osname="$(to_lowercase "$1")" - if [ ! -z "$osname" ]; then - case "$osname" in - osx | freebsd | rhel.6 | linux-musl | linux) - echo "$osname" - return 0 - ;; - macos) - osname='osx' - echo "$osname" - return 0 - ;; - *) - say_err "'$user_defined_os' is not a supported value for --os option, supported values are: osx, macos, linux, linux-musl, freebsd, rhel.6. If you think this is a bug, report it at https://github.com/dotnet/install-scripts/issues." - return 1 - ;; - esac - else - osname="$(get_current_os_name)" || return 1 - fi - echo "$osname" - return 0 -} - -# args: -# quality - $1 -get_normalized_quality() { - eval $invocation - - local quality="$(to_lowercase "$1")" - if [ ! -z "$quality" ]; then - case "$quality" in - daily | preview) - echo "$quality" - return 0 - ;; - ga) - #ga quality is available without specifying quality, so normalizing it to empty - return 0 - ;; - *) - say_err "'$quality' is not a supported value for --quality option. Supported values are: daily, preview, ga. If you think this is a bug, report it at https://github.com/dotnet/install-scripts/issues." - return 1 - ;; - esac - fi - return 0 -} - -# args: -# channel - $1 -get_normalized_channel() { - eval $invocation - - local channel="$(to_lowercase "$1")" - - if [[ $channel == current ]]; then - say_warning 'Value "Current" is deprecated for -Channel option. Use "STS" instead.' - fi - - if [[ $channel == release/* ]]; then - say_warning 'Using branch name with -Channel option is no longer supported with newer releases. Use -Quality option with a channel in X.Y format instead.'; - fi - - if [ ! -z "$channel" ]; then - case "$channel" in - lts) - echo "LTS" - return 0 - ;; - sts) - echo "STS" - return 0 - ;; - current) - echo "STS" - return 0 - ;; - *) - echo "$channel" - return 0 - ;; - esac - fi - - return 0 -} - -# args: -# runtime - $1 -get_normalized_product() { - eval $invocation - - local product="" - local runtime="$(to_lowercase "$1")" - if [[ "$runtime" == "dotnet" ]]; then - product="dotnet-runtime" - elif [[ "$runtime" == "aspnetcore" ]]; then - product="aspnetcore-runtime" - elif [ -z "$runtime" ]; then - product="dotnet-sdk" - fi - echo "$product" - return 0 -} - -# The version text returned from the feeds is a 1-line or 2-line string: -# For the SDK and the dotnet runtime (2 lines): -# Line 1: # commit_hash -# Line 2: # 4-part version -# For the aspnetcore runtime (1 line): -# Line 1: # 4-part version - -# args: -# version_text - stdin -get_version_from_latestversion_file_content() { - eval $invocation - - cat | tail -n 1 | sed 's/\r$//' - return 0 -} - -# args: -# install_root - $1 -# relative_path_to_package - $2 -# specific_version - $3 -is_dotnet_package_installed() { - eval $invocation - - local install_root="$1" - local relative_path_to_package="$2" - local specific_version="${3//[$'\t\r\n']}" - - local dotnet_package_path="$(combine_paths "$(combine_paths "$install_root" "$relative_path_to_package")" "$specific_version")" - say_verbose "is_dotnet_package_installed: dotnet_package_path=$dotnet_package_path" - - if [ -d "$dotnet_package_path" ]; then - return 0 - else - return 1 - fi -} - -# args: -# downloaded file - $1 -# remote_file_size - $2 -validate_remote_local_file_sizes() -{ - eval $invocation - - local downloaded_file="$1" - local remote_file_size="$2" - local file_size='' - - if [[ "$OSTYPE" == "linux-gnu"* ]]; then - file_size="$(stat -c '%s' "$downloaded_file")" - elif [[ "$OSTYPE" == "darwin"* ]]; then - # hardcode in order to avoid conflicts with GNU stat - file_size="$(/usr/bin/stat -f '%z' "$downloaded_file")" - fi - - if [ -n "$file_size" ]; then - say "Downloaded file size is $file_size bytes." - - if [ -n "$remote_file_size" ] && [ -n "$file_size" ]; then - if [ "$remote_file_size" -ne "$file_size" ]; then - say "The remote and local file sizes are not equal. The remote file size is $remote_file_size bytes and the local size is $file_size bytes. The local package may be corrupted." - else - say "The remote and local file sizes are equal." - fi - fi - - else - say "Either downloaded or local package size can not be measured. One of them may be corrupted." - fi -} - -# args: -# azure_feed - $1 -# channel - $2 -# normalized_architecture - $3 -get_version_from_latestversion_file() { - eval $invocation - - local azure_feed="$1" - local channel="$2" - local normalized_architecture="$3" - - local version_file_url=null - if [[ "$runtime" == "dotnet" ]]; then - version_file_url="$azure_feed/Runtime/$channel/latest.version" - elif [[ "$runtime" == "aspnetcore" ]]; then - version_file_url="$azure_feed/aspnetcore/Runtime/$channel/latest.version" - elif [ -z "$runtime" ]; then - version_file_url="$azure_feed/Sdk/$channel/latest.version" - else - say_err "Invalid value for \$runtime" - return 1 - fi - say_verbose "get_version_from_latestversion_file: latest url: $version_file_url" - - download "$version_file_url" || return $? - return 0 -} - -# args: -# json_file - $1 -parse_globaljson_file_for_version() { - eval $invocation - - local json_file="$1" - if [ ! -f "$json_file" ]; then - say_err "Unable to find \`$json_file\`" - return 1 - fi - - sdk_section=$(cat $json_file | tr -d "\r" | awk '/"sdk"/,/}/') - if [ -z "$sdk_section" ]; then - say_err "Unable to parse the SDK node in \`$json_file\`" - return 1 - fi - - sdk_list=$(echo $sdk_section | awk -F"[{}]" '{print $2}') - sdk_list=${sdk_list//[\" ]/} - sdk_list=${sdk_list//,/$'\n'} - - local version_info="" - while read -r line; do - IFS=: - while read -r key value; do - if [[ "$key" == "version" ]]; then - version_info=$value - fi - done <<< "$line" - done <<< "$sdk_list" - if [ -z "$version_info" ]; then - say_err "Unable to find the SDK:version node in \`$json_file\`" - return 1 - fi - - unset IFS; - echo "$version_info" - return 0 -} - -# args: -# azure_feed - $1 -# channel - $2 -# normalized_architecture - $3 -# version - $4 -# json_file - $5 -get_specific_version_from_version() { - eval $invocation - - local azure_feed="$1" - local channel="$2" - local normalized_architecture="$3" - local version="$(to_lowercase "$4")" - local json_file="$5" - - if [ -z "$json_file" ]; then - if [[ "$version" == "latest" ]]; then - local version_info - version_info="$(get_version_from_latestversion_file "$azure_feed" "$channel" "$normalized_architecture" false)" || return 1 - say_verbose "get_specific_version_from_version: version_info=$version_info" - echo "$version_info" | get_version_from_latestversion_file_content - return 0 - else - echo "$version" - return 0 - fi - else - local version_info - version_info="$(parse_globaljson_file_for_version "$json_file")" || return 1 - echo "$version_info" - return 0 - fi -} - -# args: -# azure_feed - $1 -# channel - $2 -# normalized_architecture - $3 -# specific_version - $4 -# normalized_os - $5 -construct_download_link() { - eval $invocation - - local azure_feed="$1" - local channel="$2" - local normalized_architecture="$3" - local specific_version="${4//[$'\t\r\n']}" - local specific_product_version="$(get_specific_product_version "$1" "$4")" - local osname="$5" - - local download_link=null - if [[ "$runtime" == "dotnet" ]]; then - download_link="$azure_feed/Runtime/$specific_version/dotnet-runtime-$specific_product_version-$osname-$normalized_architecture.tar.gz" - elif [[ "$runtime" == "aspnetcore" ]]; then - download_link="$azure_feed/aspnetcore/Runtime/$specific_version/aspnetcore-runtime-$specific_product_version-$osname-$normalized_architecture.tar.gz" - elif [ -z "$runtime" ]; then - download_link="$azure_feed/Sdk/$specific_version/dotnet-sdk-$specific_product_version-$osname-$normalized_architecture.tar.gz" - else - return 1 - fi - - echo "$download_link" - return 0 -} - -# args: -# azure_feed - $1 -# specific_version - $2 -# download link - $3 (optional) -get_specific_product_version() { - # If we find a 'productVersion.txt' at the root of any folder, we'll use its contents - # to resolve the version of what's in the folder, superseding the specified version. - # if 'productVersion.txt' is missing but download link is already available, product version will be taken from download link - eval $invocation - - local azure_feed="$1" - local specific_version="${2//[$'\t\r\n']}" - local package_download_link="" - if [ $# -gt 2 ]; then - local package_download_link="$3" - fi - local specific_product_version=null - - # Try to get the version number, using the productVersion.txt file located next to the installer file. - local download_links=($(get_specific_product_version_url "$azure_feed" "$specific_version" true "$package_download_link") - $(get_specific_product_version_url "$azure_feed" "$specific_version" false "$package_download_link")) - - for download_link in "${download_links[@]}" - do - say_verbose "Checking for the existence of $download_link" - - if machine_has "curl" - then - if ! specific_product_version=$(curl -s --fail "${download_link}${feed_credential}" 2>&1); then - continue - else - echo "${specific_product_version//[$'\t\r\n']}" - return 0 - fi - - elif machine_has "wget" - then - specific_product_version=$(wget -qO- "${download_link}${feed_credential}" 2>&1) - if [ $? = 0 ]; then - echo "${specific_product_version//[$'\t\r\n']}" - return 0 - fi - fi - done - - # Getting the version number with productVersion.txt has failed. Try parsing the download link for a version number. - say_verbose "Failed to get the version using productVersion.txt file. Download link will be parsed instead." - specific_product_version="$(get_product_specific_version_from_download_link "$package_download_link" "$specific_version")" - echo "${specific_product_version//[$'\t\r\n']}" - return 0 -} - -# args: -# azure_feed - $1 -# specific_version - $2 -# is_flattened - $3 -# download link - $4 (optional) -get_specific_product_version_url() { - eval $invocation - - local azure_feed="$1" - local specific_version="$2" - local is_flattened="$3" - local package_download_link="" - if [ $# -gt 3 ]; then - local package_download_link="$4" - fi - - local pvFileName="productVersion.txt" - if [ "$is_flattened" = true ]; then - if [ -z "$runtime" ]; then - pvFileName="sdk-productVersion.txt" - elif [[ "$runtime" == "dotnet" ]]; then - pvFileName="runtime-productVersion.txt" - else - pvFileName="$runtime-productVersion.txt" - fi - fi - - local download_link=null - - if [ -z "$package_download_link" ]; then - if [[ "$runtime" == "dotnet" ]]; then - download_link="$azure_feed/Runtime/$specific_version/${pvFileName}" - elif [[ "$runtime" == "aspnetcore" ]]; then - download_link="$azure_feed/aspnetcore/Runtime/$specific_version/${pvFileName}" - elif [ -z "$runtime" ]; then - download_link="$azure_feed/Sdk/$specific_version/${pvFileName}" - else - return 1 - fi - else - download_link="${package_download_link%/*}/${pvFileName}" - fi - - say_verbose "Constructed productVersion link: $download_link" - echo "$download_link" - return 0 -} - -# args: -# download link - $1 -# specific version - $2 -get_product_specific_version_from_download_link() -{ - eval $invocation - - local download_link="$1" - local specific_version="$2" - local specific_product_version="" - - if [ -z "$download_link" ]; then - echo "$specific_version" - return 0 - fi - - #get filename - filename="${download_link##*/}" - - #product specific version follows the product name - #for filename 'dotnet-sdk-3.1.404-linux-x64.tar.gz': the product version is 3.1.404 - IFS='-' - read -ra filename_elems <<< "$filename" - count=${#filename_elems[@]} - if [[ "$count" -gt 2 ]]; then - specific_product_version="${filename_elems[2]}" - else - specific_product_version=$specific_version - fi - unset IFS; - echo "$specific_product_version" - return 0 -} - -# args: -# azure_feed - $1 -# channel - $2 -# normalized_architecture - $3 -# specific_version - $4 -construct_legacy_download_link() { - eval $invocation - - local azure_feed="$1" - local channel="$2" - local normalized_architecture="$3" - local specific_version="${4//[$'\t\r\n']}" - - local distro_specific_osname - distro_specific_osname="$(get_legacy_os_name)" || return 1 - - local legacy_download_link=null - if [[ "$runtime" == "dotnet" ]]; then - legacy_download_link="$azure_feed/Runtime/$specific_version/dotnet-$distro_specific_osname-$normalized_architecture.$specific_version.tar.gz" - elif [ -z "$runtime" ]; then - legacy_download_link="$azure_feed/Sdk/$specific_version/dotnet-dev-$distro_specific_osname-$normalized_architecture.$specific_version.tar.gz" - else - return 1 - fi - - echo "$legacy_download_link" - return 0 -} - -get_user_install_path() { - eval $invocation - - if [ ! -z "${DOTNET_INSTALL_DIR:-}" ]; then - echo "$DOTNET_INSTALL_DIR" - else - echo "$HOME/.dotnet" - fi - return 0 -} - -# args: -# install_dir - $1 -resolve_installation_path() { - eval $invocation - - local install_dir=$1 - if [ "$install_dir" = "" ]; then - local user_install_path="$(get_user_install_path)" - say_verbose "resolve_installation_path: user_install_path=$user_install_path" - echo "$user_install_path" - return 0 - fi - - echo "$install_dir" - return 0 -} - -# args: -# relative_or_absolute_path - $1 -get_absolute_path() { - eval $invocation - - local relative_or_absolute_path=$1 - echo "$(cd "$(dirname "$1")" && pwd -P)/$(basename "$1")" - return 0 -} - -# args: -# override - $1 (boolean, true or false) -get_cp_options() { - eval $invocation - - local override="$1" - local override_switch="" - - if [ "$override" = false ]; then - override_switch="-n" - - # create temporary files to check if 'cp -u' is supported - tmp_dir="$(mktemp -d)" - tmp_file="$tmp_dir/testfile" - tmp_file2="$tmp_dir/testfile2" - - touch "$tmp_file" - - # use -u instead of -n if it's available - if cp -u "$tmp_file" "$tmp_file2" 2>/dev/null; then - override_switch="-u" - fi - - # clean up - rm -f "$tmp_file" "$tmp_file2" - rm -rf "$tmp_dir" - fi - - echo "$override_switch" -} - -# args: -# input_files - stdin -# root_path - $1 -# out_path - $2 -# override - $3 -copy_files_or_dirs_from_list() { - eval $invocation - - local root_path="$(remove_trailing_slash "$1")" - local out_path="$(remove_trailing_slash "$2")" - local override="$3" - local override_switch="$(get_cp_options "$override")" - - cat | uniq | while read -r file_path; do - local path="$(remove_beginning_slash "${file_path#$root_path}")" - local target="$out_path/$path" - if [ "$override" = true ] || (! ([ -d "$target" ] || [ -e "$target" ])); then - mkdir -p "$out_path/$(dirname "$path")" - if [ -d "$target" ]; then - rm -rf "$target" - fi - cp -R $override_switch "$root_path/$path" "$target" - fi - done -} - -# args: -# zip_uri - $1 -get_remote_file_size() { - local zip_uri="$1" - - if machine_has "curl"; then - file_size=$(curl -sI "$zip_uri" | grep -i content-length | awk '{ num = $2 + 0; print num }') - elif machine_has "wget"; then - file_size=$(wget --spider --server-response -O /dev/null "$zip_uri" 2>&1 | grep -i 'Content-Length:' | awk '{ num = $2 + 0; print num }') - else - say "Neither curl nor wget is available on this system." - return - fi - - if [ -n "$file_size" ]; then - say "Remote file $zip_uri size is $file_size bytes." - echo "$file_size" - else - say_verbose "Content-Length header was not extracted for $zip_uri." - echo "" - fi -} - -# args: -# zip_path - $1 -# out_path - $2 -# remote_file_size - $3 -extract_dotnet_package() { - eval $invocation - - local zip_path="$1" - local out_path="$2" - local remote_file_size="$3" - - local temp_out_path="$(mktemp -d "$temporary_file_template")" - - local failed=false - tar -xzf "$zip_path" -C "$temp_out_path" > /dev/null || failed=true - - local folders_with_version_regex='^.*/[0-9]+\.[0-9]+[^/]+/' - find "$temp_out_path" -type f | grep -Eo "$folders_with_version_regex" | sort | copy_files_or_dirs_from_list "$temp_out_path" "$out_path" false - find "$temp_out_path" -type f | grep -Ev "$folders_with_version_regex" | copy_files_or_dirs_from_list "$temp_out_path" "$out_path" "$override_non_versioned_files" - - validate_remote_local_file_sizes "$zip_path" "$remote_file_size" - - rm -rf "$temp_out_path" - if [ -z ${keep_zip+x} ]; then - rm -f "$zip_path" && say_verbose "Temporary archive file $zip_path was removed" - fi - - if [ "$failed" = true ]; then - say_err "Extraction failed" - return 1 - fi - return 0 -} - -# args: -# remote_path - $1 -# disable_feed_credential - $2 -get_http_header() -{ - eval $invocation - local remote_path="$1" - local disable_feed_credential="$2" - - local failed=false - local response - if machine_has "curl"; then - get_http_header_curl $remote_path $disable_feed_credential || failed=true - elif machine_has "wget"; then - get_http_header_wget $remote_path $disable_feed_credential || failed=true - else - failed=true - fi - if [ "$failed" = true ]; then - say_verbose "Failed to get HTTP header: '$remote_path'." - return 1 - fi - return 0 -} - -# args: -# remote_path - $1 -# disable_feed_credential - $2 -get_http_header_curl() { - eval $invocation - local remote_path="$1" - local disable_feed_credential="$2" - - remote_path_with_credential="$remote_path" - if [ "$disable_feed_credential" = false ]; then - remote_path_with_credential+="$feed_credential" - fi - - curl_options="-I -sSL --retry 5 --retry-delay 2 --connect-timeout 15 " - curl $curl_options "$remote_path_with_credential" 2>&1 || return 1 - return 0 -} - -# args: -# remote_path - $1 -# disable_feed_credential - $2 -get_http_header_wget() { - eval $invocation - local remote_path="$1" - local disable_feed_credential="$2" - local wget_options="-q -S --spider --tries 5 " - - local wget_options_extra='' - - # Test for options that aren't supported on all wget implementations. - if [[ $(wget -h 2>&1 | grep -E 'waitretry|connect-timeout') ]]; then - wget_options_extra="--waitretry 2 --connect-timeout 15 " - else - say "wget extra options are unavailable for this environment" - fi - - remote_path_with_credential="$remote_path" - if [ "$disable_feed_credential" = false ]; then - remote_path_with_credential+="$feed_credential" - fi - - wget $wget_options $wget_options_extra "$remote_path_with_credential" 2>&1 - - return $? -} - -# args: -# remote_path - $1 -# [out_path] - $2 - stdout if not provided -download() { - eval $invocation - - local remote_path="$1" - local out_path="${2:-}" - - if [[ "$remote_path" != "http"* ]]; then - cp "$remote_path" "$out_path" - return $? - fi - - local failed=false - local attempts=0 - while [ $attempts -lt 3 ]; do - attempts=$((attempts+1)) - failed=false - if machine_has "curl"; then - downloadcurl "$remote_path" "$out_path" || failed=true - elif machine_has "wget"; then - downloadwget "$remote_path" "$out_path" || failed=true - else - say_err "Missing dependency: neither curl nor wget was found." - exit 1 - fi - - if [ "$failed" = false ] || [ $attempts -ge 3 ] || { [ ! -z $http_code ] && [ $http_code = "404" ]; }; then - break - fi - - say "Download attempt #$attempts has failed: $http_code $download_error_msg" - say "Attempt #$((attempts+1)) will start in $((attempts*10)) seconds." - sleep $((attempts*10)) - done - - if [ "$failed" = true ]; then - say_verbose "Download failed: $remote_path" - return 1 - fi - return 0 -} - -# Updates global variables $http_code and $download_error_msg -downloadcurl() { - eval $invocation - unset http_code - unset download_error_msg - local remote_path="$1" - local out_path="${2:-}" - # Append feed_credential as late as possible before calling curl to avoid logging feed_credential - # Avoid passing URI with credentials to functions: note, most of them echoing parameters of invocation in verbose output. - local remote_path_with_credential="${remote_path}${feed_credential}" - local curl_options="--retry 20 --retry-delay 2 --connect-timeout 15 -sSL -f --create-dirs " - local curl_exit_code=0; - if [ -z "$out_path" ]; then - curl_output=$(curl $curl_options "$remote_path_with_credential" 2>&1) - curl_exit_code=$? - echo "$curl_output" - else - curl_output=$(curl $curl_options -o "$out_path" "$remote_path_with_credential" 2>&1) - curl_exit_code=$? - fi - - # Regression in curl causes curl with --retry to return a 0 exit code even when it fails to download a file - https://github.com/curl/curl/issues/17554 - if [ $curl_exit_code -eq 0 ] && echo "$curl_output" | grep -q "^curl: ([0-9]*) "; then - curl_exit_code=$(echo "$curl_output" | sed 's/curl: (\([0-9]*\)).*/\1/') - fi - - if [ $curl_exit_code -gt 0 ]; then - download_error_msg="Unable to download $remote_path." - # Check for curl timeout codes - if [[ $curl_exit_code == 7 || $curl_exit_code == 28 ]]; then - download_error_msg+=" Failed to reach the server: connection timeout." - else - local disable_feed_credential=false - local response=$(get_http_header_curl $remote_path $disable_feed_credential) - http_code=$( echo "$response" | awk '/^HTTP/{print $2}' | tail -1 ) - if [[ ! -z $http_code && $http_code != 2* ]]; then - download_error_msg+=" Returned HTTP status code: $http_code." - fi - fi - say_verbose "$download_error_msg" - return 1 - fi - return 0 -} - - -# Updates global variables $http_code and $download_error_msg -downloadwget() { - eval $invocation - unset http_code - unset download_error_msg - local remote_path="$1" - local out_path="${2:-}" - # Append feed_credential as late as possible before calling wget to avoid logging feed_credential - local remote_path_with_credential="${remote_path}${feed_credential}" - local wget_options="--tries 20 " - - local wget_options_extra='' - local wget_result='' - - # Test for options that aren't supported on all wget implementations. - if [[ $(wget -h 2>&1 | grep -E 'waitretry|connect-timeout') ]]; then - wget_options_extra="--waitretry 2 --connect-timeout 15 " - else - say "wget extra options are unavailable for this environment" - fi - - if [ -z "$out_path" ]; then - wget -q $wget_options $wget_options_extra -O - "$remote_path_with_credential" 2>&1 - wget_result=$? - else - wget $wget_options $wget_options_extra -O "$out_path" "$remote_path_with_credential" 2>&1 - wget_result=$? - fi - - if [[ $wget_result != 0 ]]; then - local disable_feed_credential=false - local response=$(get_http_header_wget $remote_path $disable_feed_credential) - http_code=$( echo "$response" | awk '/^ HTTP/{print $2}' | tail -1 ) - download_error_msg="Unable to download $remote_path." - if [[ ! -z $http_code && $http_code != 2* ]]; then - download_error_msg+=" Returned HTTP status code: $http_code." - # wget exit code 4 stands for network-issue - elif [[ $wget_result == 4 ]]; then - download_error_msg+=" Failed to reach the server: connection timeout." - fi - say_verbose "$download_error_msg" - return 1 - fi - - return 0 -} - -get_download_link_from_aka_ms() { - eval $invocation - - #quality is not supported for LTS or STS channel - #STS maps to current - if [[ ! -z "$normalized_quality" && ("$normalized_channel" == "LTS" || "$normalized_channel" == "STS") ]]; then - normalized_quality="" - say_warning "Specifying quality for STS or LTS channel is not supported, the quality will be ignored." - fi - - say_verbose "Retrieving primary payload URL from aka.ms for channel: '$normalized_channel', quality: '$normalized_quality', product: '$normalized_product', os: '$normalized_os', architecture: '$normalized_architecture'." - - #construct aka.ms link - aka_ms_link="https://aka.ms/dotnet" - if [ "$internal" = true ]; then - aka_ms_link="$aka_ms_link/internal" - fi - aka_ms_link="$aka_ms_link/$normalized_channel" - if [[ ! -z "$normalized_quality" ]]; then - aka_ms_link="$aka_ms_link/$normalized_quality" - fi - aka_ms_link="$aka_ms_link/$normalized_product-$normalized_os-$normalized_architecture.tar.gz" - say_verbose "Constructed aka.ms link: '$aka_ms_link'." - - #get HTTP response - #do not pass credentials as a part of the $aka_ms_link and do not apply credentials in the get_http_header function - #otherwise the redirect link would have credentials as well - #it would result in applying credentials twice to the resulting link and thus breaking it, and in echoing credentials to the output as a part of redirect link - disable_feed_credential=true - response="$(get_http_header $aka_ms_link $disable_feed_credential)" - - say_verbose "Received response: $response" - # Get results of all the redirects. - http_codes=$( echo "$response" | awk '$1 ~ /^HTTP/ {print $2}' ) - # They all need to be 301, otherwise some links are broken (except for the last, which is not a redirect but 200 or 404). - broken_redirects=$( echo "$http_codes" | sed '$d' | grep -v '301' ) - # The response may end without final code 2xx/4xx/5xx somehow, e.g. network restrictions on www.bing.com causes redirecting to bing.com fails with connection refused. - # In this case it should not exclude the last. - last_http_code=$( echo "$http_codes" | tail -n 1 ) - if ! [[ $last_http_code =~ ^(2|4|5)[0-9][0-9]$ ]]; then - broken_redirects=$( echo "$http_codes" | grep -v '301' ) - fi - - # All HTTP codes are 301 (Moved Permanently), the redirect link exists. - if [[ -z "$broken_redirects" ]]; then - aka_ms_download_link=$( echo "$response" | awk '$1 ~ /^Location/{print $2}' | tail -1 | tr -d '\r') - - if [[ -z "$aka_ms_download_link" ]]; then - say_verbose "The aka.ms link '$aka_ms_link' is not valid: failed to get redirect location." - return 1 - fi - - say_verbose "The redirect location retrieved: '$aka_ms_download_link'." - return 0 - else - say_verbose "The aka.ms link '$aka_ms_link' is not valid: received HTTP code: $(echo "$broken_redirects" | paste -sd "," -)." - return 1 - fi -} - -get_feeds_to_use() -{ - feeds=( - "https://builds.dotnet.microsoft.com/dotnet" - "https://ci.dot.net/public" - ) - - if [[ -n "$azure_feed" ]]; then - feeds=("$azure_feed") - fi - - if [[ -n "$uncached_feed" ]]; then - feeds=("$uncached_feed") - fi -} - -# THIS FUNCTION MAY EXIT (if the determined version is already installed). -generate_download_links() { - - download_links=() - specific_versions=() - effective_versions=() - link_types=() - - # If generate_akams_links returns false, no fallback to old links. Just terminate. - # This function may also 'exit' (if the determined version is already installed). - generate_akams_links || return - - # Check other feeds only if we haven't been able to find an aka.ms link. - if [[ "${#download_links[@]}" -lt 1 ]]; then - for feed in ${feeds[@]} - do - # generate_regular_links may also 'exit' (if the determined version is already installed). - generate_regular_links $feed || return - done - fi - - if [[ "${#download_links[@]}" -eq 0 ]]; then - say_err "Failed to resolve the exact version number." - return 1 - fi - - say_verbose "Generated ${#download_links[@]} links." - for link_index in ${!download_links[@]} - do - say_verbose "Link $link_index: ${link_types[$link_index]}, ${effective_versions[$link_index]}, ${download_links[$link_index]}" - done -} - -# THIS FUNCTION MAY EXIT (if the determined version is already installed). -generate_akams_links() { - local valid_aka_ms_link=true; - - normalized_version="$(to_lowercase "$version")" - if [[ "$normalized_version" != "latest" ]] && [ -n "$normalized_quality" ]; then - say_err "Quality and Version options are not allowed to be specified simultaneously. See https://learn.microsoft.com/dotnet/core/tools/dotnet-install-script#options for details." - return 1 - fi - - if [[ -n "$json_file" || "$normalized_version" != "latest" ]]; then - # aka.ms links are not needed when exact version is specified via command or json file - return - fi - - get_download_link_from_aka_ms || valid_aka_ms_link=false - - if [[ "$valid_aka_ms_link" == true ]]; then - say_verbose "Retrieved primary payload URL from aka.ms link: '$aka_ms_download_link'." - say_verbose "Downloading using legacy url will not be attempted." - - download_link=$aka_ms_download_link - - #get version from the path - IFS='/' - read -ra pathElems <<< "$download_link" - count=${#pathElems[@]} - specific_version="${pathElems[count-2]}" - unset IFS; - say_verbose "Version: '$specific_version'." - - #Retrieve effective version - effective_version="$(get_specific_product_version "$azure_feed" "$specific_version" "$download_link")" - - # Add link info to arrays - download_links+=($download_link) - specific_versions+=($specific_version) - effective_versions+=($effective_version) - link_types+=("aka.ms") - - # Check if the SDK version is already installed. - if [[ "$dry_run" != true ]] && is_dotnet_package_installed "$install_root" "$asset_relative_path" "$effective_version"; then - say "$asset_name with version '$effective_version' is already installed." - exit 0 - fi - - return 0 - fi - - # if quality is specified - exit with error - there is no fallback approach - if [ ! -z "$normalized_quality" ]; then - say_err "Failed to locate the latest version in the channel '$normalized_channel' with '$normalized_quality' quality for '$normalized_product', os: '$normalized_os', architecture: '$normalized_architecture'." - say_err "Refer to: https://aka.ms/dotnet-os-lifecycle for information on .NET Core support." - return 1 - fi - say_verbose "Falling back to latest.version file approach." -} - -# THIS FUNCTION MAY EXIT (if the determined version is already installed) -# args: -# feed - $1 -generate_regular_links() { - local feed="$1" - local valid_legacy_download_link=true - - specific_version=$(get_specific_version_from_version "$feed" "$channel" "$normalized_architecture" "$version" "$json_file") || specific_version='0' - - if [[ "$specific_version" == '0' ]]; then - say_verbose "Failed to resolve the specific version number using feed '$feed'" - return - fi - - effective_version="$(get_specific_product_version "$feed" "$specific_version")" - say_verbose "specific_version=$specific_version" - - download_link="$(construct_download_link "$feed" "$channel" "$normalized_architecture" "$specific_version" "$normalized_os")" - say_verbose "Constructed primary named payload URL: $download_link" - - # Add link info to arrays - download_links+=($download_link) - specific_versions+=($specific_version) - effective_versions+=($effective_version) - link_types+=("primary") - - legacy_download_link="$(construct_legacy_download_link "$feed" "$channel" "$normalized_architecture" "$specific_version")" || valid_legacy_download_link=false - - if [ "$valid_legacy_download_link" = true ]; then - say_verbose "Constructed legacy named payload URL: $legacy_download_link" - - download_links+=($legacy_download_link) - specific_versions+=($specific_version) - effective_versions+=($effective_version) - link_types+=("legacy") - else - legacy_download_link="" - say_verbose "Could not construct a legacy_download_link; omitting..." - fi - - # Check if the SDK version is already installed. - if [[ "$dry_run" != true ]] && is_dotnet_package_installed "$install_root" "$asset_relative_path" "$effective_version"; then - say "$asset_name with version '$effective_version' is already installed." - exit 0 - fi -} - -print_dry_run() { - - say "Payload URLs:" - - for link_index in "${!download_links[@]}" - do - say "URL #$link_index - ${link_types[$link_index]}: ${download_links[$link_index]}" - done - - resolved_version=${specific_versions[0]} - repeatable_command="./$script_name --version "\""$resolved_version"\"" --install-dir "\""$install_root"\"" --architecture "\""$normalized_architecture"\"" --os "\""$normalized_os"\""" - - if [ ! -z "$normalized_quality" ]; then - repeatable_command+=" --quality "\""$normalized_quality"\""" - fi - - if [[ "$runtime" == "dotnet" ]]; then - repeatable_command+=" --runtime "\""dotnet"\""" - elif [[ "$runtime" == "aspnetcore" ]]; then - repeatable_command+=" --runtime "\""aspnetcore"\""" - fi - - repeatable_command+="$non_dynamic_parameters" - - if [ -n "$feed_credential" ]; then - repeatable_command+=" --feed-credential "\"""\""" - fi - - say "Repeatable invocation: $repeatable_command" -} - -calculate_vars() { - eval $invocation - - script_name=$(basename "$0") - normalized_architecture="$(get_normalized_architecture_from_architecture "$architecture")" - say_verbose "Normalized architecture: '$normalized_architecture'." - normalized_os="$(get_normalized_os "$user_defined_os")" - say_verbose "Normalized OS: '$normalized_os'." - normalized_quality="$(get_normalized_quality "$quality")" - say_verbose "Normalized quality: '$normalized_quality'." - normalized_channel="$(get_normalized_channel "$channel")" - say_verbose "Normalized channel: '$normalized_channel'." - normalized_product="$(get_normalized_product "$runtime")" - say_verbose "Normalized product: '$normalized_product'." - install_root="$(resolve_installation_path "$install_dir")" - say_verbose "InstallRoot: '$install_root'." - - normalized_architecture="$(get_normalized_architecture_for_specific_sdk_version "$version" "$normalized_channel" "$normalized_architecture")" - - if [[ "$runtime" == "dotnet" ]]; then - asset_relative_path="shared/Microsoft.NETCore.App" - asset_name=".NET Core Runtime" - elif [[ "$runtime" == "aspnetcore" ]]; then - asset_relative_path="shared/Microsoft.AspNetCore.App" - asset_name="ASP.NET Core Runtime" - elif [ -z "$runtime" ]; then - asset_relative_path="sdk" - asset_name=".NET Core SDK" - fi - - get_feeds_to_use -} - -install_dotnet() { - eval $invocation - local download_failed=false - local download_completed=false - local remote_file_size=0 - - mkdir -p "$install_root" - zip_path="${zip_path:-$(mktemp "$temporary_file_template")}" - say_verbose "Archive path: $zip_path" - - for link_index in "${!download_links[@]}" - do - download_link="${download_links[$link_index]}" - specific_version="${specific_versions[$link_index]}" - effective_version="${effective_versions[$link_index]}" - link_type="${link_types[$link_index]}" - - say "Attempting to download using $link_type link $download_link" - - # The download function will set variables $http_code and $download_error_msg in case of failure. - download_failed=false - download "$download_link" "$zip_path" 2>&1 || download_failed=true - - if [ "$download_failed" = true ]; then - case $http_code in - 404) - say "The resource at $link_type link '$download_link' is not available." - ;; - *) - say "Failed to download $link_type link '$download_link': $http_code $download_error_msg" - ;; - esac - rm -f "$zip_path" 2>&1 && say_verbose "Temporary archive file $zip_path was removed" - else - download_completed=true - break - fi - done - - if [[ "$download_completed" == false ]]; then - say_err "Could not find \`$asset_name\` with version = $specific_version" - say_err "Refer to: https://aka.ms/dotnet-os-lifecycle for information on .NET Core support" - return 1 - fi - - remote_file_size="$(get_remote_file_size "$download_link")" - - say "Extracting archive from $download_link" - extract_dotnet_package "$zip_path" "$install_root" "$remote_file_size" || return 1 - - # Check if the SDK version is installed; if not, fail the installation. - # if the version contains "RTM" or "servicing"; check if a 'release-type' SDK version is installed. - if [[ $specific_version == *"rtm"* || $specific_version == *"servicing"* ]]; then - IFS='-' - read -ra verArr <<< "$specific_version" - release_version="${verArr[0]}" - unset IFS; - say_verbose "Checking installation: version = $release_version" - if is_dotnet_package_installed "$install_root" "$asset_relative_path" "$release_version"; then - say "Installed version is $effective_version" - return 0 - fi - fi - - # Check if the standard SDK version is installed. - say_verbose "Checking installation: version = $effective_version" - if is_dotnet_package_installed "$install_root" "$asset_relative_path" "$effective_version"; then - say "Installed version is $effective_version" - return 0 - fi - - # Version verification failed. More likely something is wrong either with the downloaded content or with the verification algorithm. - say_err "Failed to verify the version of installed \`$asset_name\`.\nInstallation source: $download_link.\nInstallation location: $install_root.\nReport the bug at https://github.com/dotnet/install-scripts/issues." - say_err "\`$asset_name\` with version = $effective_version failed to install with an error." - return 1 -} - -args=("$@") - -local_version_file_relative_path="/.version" -bin_folder_relative_path="" -temporary_file_template="${TMPDIR:-/tmp}/dotnet.XXXXXXXXX" - -channel="LTS" -version="Latest" -json_file="" -install_dir="" -architecture="" -dry_run=false -no_path=false -azure_feed="" -uncached_feed="" -feed_credential="" -verbose=false -runtime="" -runtime_id="" -quality="" -internal=false -override_non_versioned_files=true -non_dynamic_parameters="" -user_defined_os="" - -while [ $# -ne 0 ] -do - name="$1" - case "$name" in - -c|--channel|-[Cc]hannel) - shift - channel="$1" - ;; - -v|--version|-[Vv]ersion) - shift - version="$1" - ;; - -q|--quality|-[Qq]uality) - shift - quality="$1" - ;; - --internal|-[Ii]nternal) - internal=true - non_dynamic_parameters+=" $name" - ;; - -i|--install-dir|-[Ii]nstall[Dd]ir) - shift - install_dir="$1" - ;; - --arch|--architecture|-[Aa]rch|-[Aa]rchitecture) - shift - architecture="$1" - ;; - --os|-[Oo][SS]) - shift - user_defined_os="$1" - ;; - --shared-runtime|-[Ss]hared[Rr]untime) - say_warning "The --shared-runtime flag is obsolete and may be removed in a future version of this script. The recommended usage is to specify '--runtime dotnet'." - if [ -z "$runtime" ]; then - runtime="dotnet" - fi - ;; - --runtime|-[Rr]untime) - shift - runtime="$1" - if [[ "$runtime" != "dotnet" ]] && [[ "$runtime" != "aspnetcore" ]]; then - say_err "Unsupported value for --runtime: '$1'. Valid values are 'dotnet' and 'aspnetcore'." - if [[ "$runtime" == "windowsdesktop" ]]; then - say_err "WindowsDesktop archives are manufactured for Windows platforms only." - fi - exit 1 - fi - ;; - --dry-run|-[Dd]ry[Rr]un) - dry_run=true - ;; - --no-path|-[Nn]o[Pp]ath) - no_path=true - non_dynamic_parameters+=" $name" - ;; - --verbose|-[Vv]erbose) - verbose=true - non_dynamic_parameters+=" $name" - ;; - --azure-feed|-[Aa]zure[Ff]eed) - shift - azure_feed="$1" - non_dynamic_parameters+=" $name "\""$1"\""" - ;; - --uncached-feed|-[Uu]ncached[Ff]eed) - shift - uncached_feed="$1" - non_dynamic_parameters+=" $name "\""$1"\""" - ;; - --feed-credential|-[Ff]eed[Cc]redential) - shift - feed_credential="$1" - #feed_credential should start with "?", for it to be added to the end of the link. - #adding "?" at the beginning of the feed_credential if needed. - [[ -z "$(echo $feed_credential)" ]] || [[ $feed_credential == \?* ]] || feed_credential="?$feed_credential" - ;; - --runtime-id|-[Rr]untime[Ii]d) - shift - runtime_id="$1" - non_dynamic_parameters+=" $name "\""$1"\""" - say_warning "Use of --runtime-id is obsolete and should be limited to the versions below 2.1. To override architecture, use --architecture option instead. To override OS, use --os option instead." - ;; - --jsonfile|-[Jj][Ss]on[Ff]ile) - shift - json_file="$1" - ;; - --skip-non-versioned-files|-[Ss]kip[Nn]on[Vv]ersioned[Ff]iles) - override_non_versioned_files=false - non_dynamic_parameters+=" $name" - ;; - --keep-zip|-[Kk]eep[Zz]ip) - keep_zip=true - non_dynamic_parameters+=" $name" - ;; - --zip-path|-[Zz]ip[Pp]ath) - shift - zip_path="$1" - ;; - -?|--?|-h|--help|-[Hh]elp) - script_name="dotnet-install.sh" - echo ".NET Tools Installer" - echo "Usage:" - echo " # Install a .NET SDK of a given Quality from a given Channel" - echo " $script_name [-c|--channel ] [-q|--quality ]" - echo " # Install a .NET SDK of a specific public version" - echo " $script_name [-v|--version ]" - echo " $script_name -h|-?|--help" - echo "" - echo "$script_name is a simple command line interface for obtaining dotnet cli." - echo " Note that the intended use of this script is for Continuous Integration (CI) scenarios, where:" - echo " - The SDK needs to be installed without user interaction and without admin rights." - echo " - The SDK installation doesn't need to persist across multiple CI runs." - echo " To set up a development environment or to run apps, use installers rather than this script. Visit https://dotnet.microsoft.com/download to get the installer." - echo "" - echo "Options:" - echo " -c,--channel Download from the channel specified, Defaults to \`$channel\`." - echo " -Channel" - echo " Possible values:" - echo " - STS - the most recent Standard Term Support release" - echo " - LTS - the most recent Long Term Support release" - echo " - 2-part version in a format A.B - represents a specific release" - echo " examples: 2.0; 1.0" - echo " - 3-part version in a format A.B.Cxx - represents a specific SDK release" - echo " examples: 5.0.1xx, 5.0.2xx." - echo " Supported since 5.0 release" - echo " Warning: Value 'Current' is deprecated for the Channel parameter. Use 'STS' instead." - echo " Note: The version parameter overrides the channel parameter when any version other than 'latest' is used." - echo " -v,--version Use specific VERSION, Defaults to \`$version\`." - echo " -Version" - echo " Possible values:" - echo " - latest - the latest build on specific channel" - echo " - 3-part version in a format A.B.C - represents specific version of build" - echo " examples: 2.0.0-preview2-006120; 1.1.0" - echo " -q,--quality Download the latest build of specified quality in the channel." - echo " -Quality" - echo " The possible values are: daily, preview, GA." - echo " Works only in combination with channel. Not applicable for STS and LTS channels and will be ignored if those channels are used." - echo " For SDK use channel in A.B.Cxx format. Using quality for SDK together with channel in A.B format is not supported." - echo " Supported since 5.0 release." - echo " Note: The version parameter overrides the channel parameter when any version other than 'latest' is used, and therefore overrides the quality." - echo " --internal,-Internal Download internal builds. Requires providing credentials via --feed-credential parameter." - echo " --feed-credential Token to access Azure feed. Used as a query string to append to the Azure feed." - echo " -FeedCredential This parameter typically is not specified." - echo " -i,--install-dir Install under specified location (see Install Location below)" - echo " -InstallDir" - echo " --architecture Architecture of dotnet binaries to be installed, Defaults to \`$architecture\`." - echo " --arch,-Architecture,-Arch" - echo " Possible values: x64, arm, arm64, s390x, ppc64le and loongarch64" - echo " --os Specifies operating system to be used when selecting the installer." - echo " Overrides the OS determination approach used by the script. Supported values: osx, linux, linux-musl, freebsd, rhel.6." - echo " In case any other value is provided, the platform will be determined by the script based on machine configuration." - echo " Not supported for legacy links. Use --runtime-id to specify platform for legacy links." - echo " Refer to: https://aka.ms/dotnet-os-lifecycle for more information." - echo " --runtime Installs a shared runtime only, without the SDK." - echo " -Runtime" - echo " Possible values:" - echo " - dotnet - the Microsoft.NETCore.App shared runtime" - echo " - aspnetcore - the Microsoft.AspNetCore.App shared runtime" - echo " --dry-run,-DryRun Do not perform installation. Display download link." - echo " --no-path, -NoPath Do not set PATH for the current process." - echo " --verbose,-Verbose Display diagnostics information." - echo " --azure-feed,-AzureFeed For internal use only." - echo " Allows using a different storage to download SDK archives from." - echo " --uncached-feed,-UncachedFeed For internal use only." - echo " Allows using a different storage to download SDK archives from." - echo " --skip-non-versioned-files Skips non-versioned files if they already exist, such as the dotnet executable." - echo " -SkipNonVersionedFiles" - echo " --jsonfile Determines the SDK version from a user specified global.json file." - echo " Note: global.json must have a value for 'SDK:Version'" - echo " --keep-zip,-KeepZip If set, downloaded file is kept." - echo " --zip-path, -ZipPath If set, downloaded file is stored at the specified path." - echo " -?,--?,-h,--help,-Help Shows this help message" - echo "" - echo "Install Location:" - echo " Location is chosen in following order:" - echo " - --install-dir option" - echo " - Environmental variable DOTNET_INSTALL_DIR" - echo " - $HOME/.dotnet" - exit 0 - ;; - *) - say_err "Unknown argument \`$name\`" - exit 1 - ;; - esac - - shift -done - -say_verbose "Note that the intended use of this script is for Continuous Integration (CI) scenarios, where:" -say_verbose "- The SDK needs to be installed without user interaction and without admin rights." -say_verbose "- The SDK installation doesn't need to persist across multiple CI runs." -say_verbose "To set up a development environment or to run apps, use installers rather than this script. Visit https://dotnet.microsoft.com/download to get the installer.\n" - -if [ "$internal" = true ] && [ -z "$(echo $feed_credential)" ]; then - message="Provide credentials via --feed-credential parameter." - if [ "$dry_run" = true ]; then - say_warning "$message" - else - say_err "$message" - exit 1 - fi -fi - -check_min_reqs -calculate_vars -# generate_regular_links call below will 'exit' if the determined version is already installed. -generate_download_links - -if [[ "$dry_run" = true ]]; then - print_dry_run - exit 0 -fi - -install_dotnet - -bin_path="$(get_absolute_path "$(combine_paths "$install_root" "$bin_folder_relative_path")")" -if [ "$no_path" = false ]; then - say "Adding to current process PATH: \`$bin_path\`. Note: This change will be visible only when sourcing script." - export PATH="$bin_path":"$PATH" -else - say "Binaries of dotnet can be found in $bin_path" -fi - -say "Note that the script does not resolve dependencies during installation." -say "To check the list of dependencies, go to https://learn.microsoft.com/dotnet/core/install, select your operating system and check the \"Dependencies\" section." -say "Installation finished successfully."