diff --git a/eng/verify-nupkgs.ps1 b/eng/verify-nupkgs.ps1 index 96f5e560f3..aa50dec024 100644 --- a/eng/verify-nupkgs.ps1 +++ b/eng/verify-nupkgs.ps1 @@ -21,7 +21,7 @@ function Confirm-NugetPackages { $expectedNumOfFiles = @{ "MSTest.Sdk" = 15 "MSTest.TestFramework" = 105 - "MSTest.TestAdapter" = 53 + "MSTest.TestAdapter" = 66 "MSTest" = 10 "MSTest.Analyzers" = 56 } diff --git a/src/Adapter/MSTest.TestAdapter/Resources/PlatformAdapterResources.resx b/src/Adapter/MSTest.TestAdapter/Resources/PlatformAdapterResources.resx new file mode 100644 index 0000000000..c682da555c --- /dev/null +++ b/src/Adapter/MSTest.TestAdapter/Resources/PlatformAdapterResources.resx @@ -0,0 +1,164 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + runsettings file '{0}' cannot be read + 0 is the {Locked="runsettings"} file path. + + + runsettings file '{0}' does not exist + 0 is the {Locked="runsettings"} file path. + + + The bridged framework supports only one session at a time. A session with UID {0} is already open. + {0} is the session {Locked="UID"}. + + + Filters tests using the given expression. For more information, see the Filter option details section. For more information and examples on how to use selective unit test filtering, see https://learn.microsoft.com/dotnet/core/testing/selective-unit-tests. + Do not localize link {Locked="https://learn.microsoft.com/dotnet/core/testing/selective-unit-tests"}. + + + The path, relative or absolute, to the .runsettings file. For more information and examples on how to configure test run, see https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#the-runsettings-file + Do not localize file extension {Locked=".runsettings"} or link {Locked="https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#the-runsettings-file"}. + + + Specify or override a key-value pair parameter. For more information and examples, see https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#testrunparameters + Do not localize link {Locked="https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#testrunparameters"}. + + + argument '{0}' is not a parameter. Parameters arguments are matching the following pattern 'key=value'. + 0 is the invalid argument. Do not localize pattern {Locked="key=value"}. + + + Invalid .runsettings file, '<RunSettings>' attribute is missing + Do not localize file extension {Locked=".runsettings"} or element {Locked="<RunSettings>"}. + + + Runsettings loggers are not supported by Microsoft.Testing.Platform and will be ignored + Do not localize {Locked="Runsettings"} or {Locked="Microsoft.Testing.Platform"}. + + + Runsettings datacollectors are not supported by Microsoft.Testing.Platform and will be ignored + Do not localize {Locked="Runsettings"} or {Locked="Microsoft.Testing.Platform"}. + + + Runsettings attribute '{0}' is not supported by Microsoft.Testing.Platform and will be ignored + 0 is the unsupported {Locked="Runsettings"} attribute name. Do not localize {Locked="Microsoft.Testing.Platform"}. + + \ No newline at end of file diff --git a/src/Adapter/MSTest.TestAdapter/Resources/xlf/PlatformAdapterResources.cs.xlf b/src/Adapter/MSTest.TestAdapter/Resources/xlf/PlatformAdapterResources.cs.xlf new file mode 100644 index 0000000000..1c55430bd7 --- /dev/null +++ b/src/Adapter/MSTest.TestAdapter/Resources/xlf/PlatformAdapterResources.cs.xlf @@ -0,0 +1,62 @@ + + + + + + Invalid .runsettings file, '<RunSettings>' attribute is missing + Neplatný soubor .runsettings. Chybí atribut <RunSettings>. + Do not localize file extension {Locked=".runsettings"} or element {Locked="<RunSettings>"}. + + + The path, relative or absolute, to the .runsettings file. For more information and examples on how to configure test run, see https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#the-runsettings-file + Relativní nebo absolutní cesta k souboru .runsettings. Další informace a příklady konfigurace testovacího běhu najdete v tématu https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#the-runsettings-file + Do not localize file extension {Locked=".runsettings"} or link {Locked="https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#the-runsettings-file"}. + + + runsettings file '{0}' cannot be read + Soubor runsettings „{0}“ nejde přečíst + 0 is the {Locked="runsettings"} file path. + + + runsettings file '{0}' does not exist + Soubor runsettings „{0}“ neexistuje + 0 is the {Locked="runsettings"} file path. + + + Filters tests using the given expression. For more information, see the Filter option details section. For more information and examples on how to use selective unit test filtering, see https://learn.microsoft.com/dotnet/core/testing/selective-unit-tests. + Filtruje testy pomocí daného výrazu. Další informace najdete v části s podrobnostmi o možnosti filtru. Další informace a příklady použití selektivního filtrování testů jednotek najdete v tématu https://learn.microsoft.com/dotnet/core/testing/selective-unit-tests. + Do not localize link {Locked="https://learn.microsoft.com/dotnet/core/testing/selective-unit-tests"}. + + + argument '{0}' is not a parameter. Parameters arguments are matching the following pattern 'key=value'. + argument {0} není parametr. Argumenty parametrů odpovídají následujícímu vzoru key=value (klíč=hodnota). + 0 is the invalid argument. Do not localize pattern {Locked="key=value"}. + + + Specify or override a key-value pair parameter. For more information and examples, see https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#testrunparameters + Zadejte nebo přepište parametr páru klíč-hodnota. Další informace a příklady najdete tady: https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#testrunparameters + Do not localize link {Locked="https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#testrunparameters"}. + + + Runsettings attribute '{0}' is not supported by Microsoft.Testing.Platform and will be ignored + Microsoft.Testing.Platform nepodporuje atribut Runsettings {0}. Bude ho proto ignorovat. + 0 is the unsupported {Locked="Runsettings"} attribute name. Do not localize {Locked="Microsoft.Testing.Platform"}. + + + Runsettings datacollectors are not supported by Microsoft.Testing.Platform and will be ignored + Microsoft.Testing.Platform nepodporuje kolekce dat Runsettings. Bude je proto ignorovat. + Do not localize {Locked="Runsettings"} or {Locked="Microsoft.Testing.Platform"}. + + + Runsettings loggers are not supported by Microsoft.Testing.Platform and will be ignored + Microsoft.Testing.Platform nepodporuje protokolovače Runsettings. Bude je proto ignorovat. + Do not localize {Locked="Runsettings"} or {Locked="Microsoft.Testing.Platform"}. + + + The bridged framework supports only one session at a time. A session with UID {0} is already open. + Přemostěná architektura podporuje najednou pouze jednu relaci. Relace s UID {0} je už otevřená. + {0} is the session {Locked="UID"}. + + + + \ No newline at end of file diff --git a/src/Adapter/MSTest.TestAdapter/Resources/xlf/PlatformAdapterResources.de.xlf b/src/Adapter/MSTest.TestAdapter/Resources/xlf/PlatformAdapterResources.de.xlf new file mode 100644 index 0000000000..8572c88570 --- /dev/null +++ b/src/Adapter/MSTest.TestAdapter/Resources/xlf/PlatformAdapterResources.de.xlf @@ -0,0 +1,62 @@ + + + + + + Invalid .runsettings file, '<RunSettings>' attribute is missing + Ungültige .runsettings-Datei, "<RunSettings>"-Attribut fehlt. + Do not localize file extension {Locked=".runsettings"} or element {Locked="<RunSettings>"}. + + + The path, relative or absolute, to the .runsettings file. For more information and examples on how to configure test run, see https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#the-runsettings-file + Der relative oder absolute Pfad zur Datei „.runsettings“. Weitere Informationen und Beispiele zum Konfigurieren des Testlaufs finden Sie unter https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#the-runsettings-file + Do not localize file extension {Locked=".runsettings"} or link {Locked="https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#the-runsettings-file"}. + + + runsettings file '{0}' cannot be read + runsettings-Datei „{0}“ kann nicht gelesen werden. + 0 is the {Locked="runsettings"} file path. + + + runsettings file '{0}' does not exist + runsettings-Datei „{0}“ ist nicht vorhanden. + 0 is the {Locked="runsettings"} file path. + + + Filters tests using the given expression. For more information, see the Filter option details section. For more information and examples on how to use selective unit test filtering, see https://learn.microsoft.com/dotnet/core/testing/selective-unit-tests. + Filtert Tests mithilfe des angegebenen Ausdrucks. Weitere Informationen finden Sie im Abschnitt „Filteroptionsdetails“. Weitere Informationen und Beispiele zur Verwendung der selektiven Komponententestfilterung finden Sie unter https://learn.microsoft.com/dotnet/core/testing/selective-unit-tests. + Do not localize link {Locked="https://learn.microsoft.com/dotnet/core/testing/selective-unit-tests"}. + + + argument '{0}' is not a parameter. Parameters arguments are matching the following pattern 'key=value'. + Das Argument „{0}“ ist kein Parameter. Parameterargumente stimmen mit dem folgenden Muster „key=value“ überein. + 0 is the invalid argument. Do not localize pattern {Locked="key=value"}. + + + Specify or override a key-value pair parameter. For more information and examples, see https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#testrunparameters + Geben Sie einen Schlüssel-Wert-Paarparameter an, oder überschreiben Sie diesen. Weitere Informationen und Beispiele finden Sie unter https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#testrunparameters + Do not localize link {Locked="https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#testrunparameters"}. + + + Runsettings attribute '{0}' is not supported by Microsoft.Testing.Platform and will be ignored + Runsettings-Attribut "{0}" wird von Microsoft.Testing.Platform nicht unterstützt und wird ignoriert. + 0 is the unsupported {Locked="Runsettings"} attribute name. Do not localize {Locked="Microsoft.Testing.Platform"}. + + + Runsettings datacollectors are not supported by Microsoft.Testing.Platform and will be ignored + Runsettings-Datacollectors werden von Microsoft.Testing.Platform nicht unterstützt und werden ignoriert. + Do not localize {Locked="Runsettings"} or {Locked="Microsoft.Testing.Platform"}. + + + Runsettings loggers are not supported by Microsoft.Testing.Platform and will be ignored + Runsettings-Protokollierungen werden von Microsoft.Testing.Platform nicht unterstützt und werden ignoriert. + Do not localize {Locked="Runsettings"} or {Locked="Microsoft.Testing.Platform"}. + + + The bridged framework supports only one session at a time. A session with UID {0} is already open. + Das Brückenframework unterstützt jeweils nur eine Sitzung. Eine Sitzung mit UID {0} ist bereits geöffnet. + {0} is the session {Locked="UID"}. + + + + \ No newline at end of file diff --git a/src/Adapter/MSTest.TestAdapter/Resources/xlf/PlatformAdapterResources.es.xlf b/src/Adapter/MSTest.TestAdapter/Resources/xlf/PlatformAdapterResources.es.xlf new file mode 100644 index 0000000000..886679c323 --- /dev/null +++ b/src/Adapter/MSTest.TestAdapter/Resources/xlf/PlatformAdapterResources.es.xlf @@ -0,0 +1,62 @@ + + + + + + Invalid .runsettings file, '<RunSettings>' attribute is missing + Archivo .runsettings no válido, falta el atributo "<RunSettings>" + Do not localize file extension {Locked=".runsettings"} or element {Locked="<RunSettings>"}. + + + The path, relative or absolute, to the .runsettings file. For more information and examples on how to configure test run, see https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#the-runsettings-file + Ruta de acceso, relativa o absoluta, al archivo .runsettings. Para obtener más información y ejemplos sobre cómo configurar la serie de pruebas, consulte https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#the-runsettings-file + Do not localize file extension {Locked=".runsettings"} or link {Locked="https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#the-runsettings-file"}. + + + runsettings file '{0}' cannot be read + No se puede leer el archivo '{0}' de runsettings + 0 is the {Locked="runsettings"} file path. + + + runsettings file '{0}' does not exist + El archivo '{0}' de runsettings no existe + 0 is the {Locked="runsettings"} file path. + + + Filters tests using the given expression. For more information, see the Filter option details section. For more information and examples on how to use selective unit test filtering, see https://learn.microsoft.com/dotnet/core/testing/selective-unit-tests. + Filtra las pruebas mediante la expresión especificada. Para obtener más información, consulte la sección Detalles de la opción Filtrar. Para obtener más información y ejemplos sobre cómo usar el filtrado de pruebas unitarias selectivas, consulte https://learn.microsoft.com/dotnet/core/testing/selective-unit-tests. + Do not localize link {Locked="https://learn.microsoft.com/dotnet/core/testing/selective-unit-tests"}. + + + argument '{0}' is not a parameter. Parameters arguments are matching the following pattern 'key=value'. + el argumento "{0}" no es un parámetro. Los argumentos de parámetros coinciden con el patrón "key=value" siguiente. + 0 is the invalid argument. Do not localize pattern {Locked="key=value"}. + + + Specify or override a key-value pair parameter. For more information and examples, see https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#testrunparameters + Especifique o invalide un parámetro de par clave-valor. Para más información y ejemplos, consulte https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#testrunparameters + Do not localize link {Locked="https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#testrunparameters"}. + + + Runsettings attribute '{0}' is not supported by Microsoft.Testing.Platform and will be ignored + Microsoft.Testing.Platform no admite el atributo "{0}" de Runsettings y se omitirá + 0 is the unsupported {Locked="Runsettings"} attribute name. Do not localize {Locked="Microsoft.Testing.Platform"}. + + + Runsettings datacollectors are not supported by Microsoft.Testing.Platform and will be ignored + Microsoft.Testing.Platform no admite los recopiladores de datos de Runsettings y se omitirán + Do not localize {Locked="Runsettings"} or {Locked="Microsoft.Testing.Platform"}. + + + Runsettings loggers are not supported by Microsoft.Testing.Platform and will be ignored + Microsoft.Testing.Platform no admite los registradores de Runsettings y se omitirán + Do not localize {Locked="Runsettings"} or {Locked="Microsoft.Testing.Platform"}. + + + The bridged framework supports only one session at a time. A session with UID {0} is already open. + El marco puente solo admite una sesión a la vez. Ya hay abierta una sesión con {0} UID. + {0} is the session {Locked="UID"}. + + + + \ No newline at end of file diff --git a/src/Adapter/MSTest.TestAdapter/Resources/xlf/PlatformAdapterResources.fr.xlf b/src/Adapter/MSTest.TestAdapter/Resources/xlf/PlatformAdapterResources.fr.xlf new file mode 100644 index 0000000000..e337095d28 --- /dev/null +++ b/src/Adapter/MSTest.TestAdapter/Resources/xlf/PlatformAdapterResources.fr.xlf @@ -0,0 +1,62 @@ + + + + + + Invalid .runsettings file, '<RunSettings>' attribute is missing + Fichier .runsettings non valide, « <RunSettings> » attribut est manquant + Do not localize file extension {Locked=".runsettings"} or element {Locked="<RunSettings>"}. + + + The path, relative or absolute, to the .runsettings file. For more information and examples on how to configure test run, see https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#the-runsettings-file + Chemin d’accès, relatif ou absolu, au fichier .runsettings. Pour plus d’informations et d’exemples sur la configuration de la série de tests, consultez https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#the-runsettings-file + Do not localize file extension {Locked=".runsettings"} or link {Locked="https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#the-runsettings-file"}. + + + runsettings file '{0}' cannot be read + impossible de lire le fichier runsettings « {0} » + 0 is the {Locked="runsettings"} file path. + + + runsettings file '{0}' does not exist + Le fichier .runsettings n’existe pas sur « {0} » + 0 is the {Locked="runsettings"} file path. + + + Filters tests using the given expression. For more information, see the Filter option details section. For more information and examples on how to use selective unit test filtering, see https://learn.microsoft.com/dotnet/core/testing/selective-unit-tests. + Filtre les tests à l’aide de l’expression donnée. Pour plus d’informations, consultez la section des détails de l’option Filtrer. Pour plus d’informations et d’exemples sur l’utilisation du filtrage sélectif des tests unitaires, consultez https://learn.microsoft.com/dotnet/core/testing/selective-unit-tests. + Do not localize link {Locked="https://learn.microsoft.com/dotnet/core/testing/selective-unit-tests"}. + + + argument '{0}' is not a parameter. Parameters arguments are matching the following pattern 'key=value'. + l’argument « {0} » n’est pas un paramètre. Les arguments de paramètres correspondent au modèle suivant « key=value ». + 0 is the invalid argument. Do not localize pattern {Locked="key=value"}. + + + Specify or override a key-value pair parameter. For more information and examples, see https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#testrunparameters + Spécifiez ou remplacez un paramètre de paire clé-valeur. Pour découvrir plus d’informations et d’exemples, voir https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#testrunparameters + Do not localize link {Locked="https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#testrunparameters"}. + + + Runsettings attribute '{0}' is not supported by Microsoft.Testing.Platform and will be ignored + Les attributs Runsettings « {0} » ne sont pas pris en charge par Microsoft.Testing.Platform et seront ignorés + 0 is the unsupported {Locked="Runsettings"} attribute name. Do not localize {Locked="Microsoft.Testing.Platform"}. + + + Runsettings datacollectors are not supported by Microsoft.Testing.Platform and will be ignored + Les datacollecteurs Runsettings ne sont pas pris en charge par Microsoft.Testing.Platform et seront ignorés + Do not localize {Locked="Runsettings"} or {Locked="Microsoft.Testing.Platform"}. + + + Runsettings loggers are not supported by Microsoft.Testing.Platform and will be ignored + Les loggers Runsettings ne sont pas pris en charge par Microsoft.Testing.Platform et seront ignorés + Do not localize {Locked="Runsettings"} or {Locked="Microsoft.Testing.Platform"}. + + + The bridged framework supports only one session at a time. A session with UID {0} is already open. + Le framework ponté ne prend en charge qu’une seule session à la fois. Une session avec UID {0} est déjà ouverte. + {0} is the session {Locked="UID"}. + + + + \ No newline at end of file diff --git a/src/Adapter/MSTest.TestAdapter/Resources/xlf/PlatformAdapterResources.it.xlf b/src/Adapter/MSTest.TestAdapter/Resources/xlf/PlatformAdapterResources.it.xlf new file mode 100644 index 0000000000..f246accfd3 --- /dev/null +++ b/src/Adapter/MSTest.TestAdapter/Resources/xlf/PlatformAdapterResources.it.xlf @@ -0,0 +1,62 @@ + + + + + + Invalid .runsettings file, '<RunSettings>' attribute is missing + File .runsettings non valido. Attributo '<RunSettings>' mancante + Do not localize file extension {Locked=".runsettings"} or element {Locked="<RunSettings>"}. + + + The path, relative or absolute, to the .runsettings file. For more information and examples on how to configure test run, see https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#the-runsettings-file + Percorso, relativo o assoluto, del file .runsettings. Per altre informazioni ed esempi su come configurare l'esecuzione dei test, vedere https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#the-runsettings-file + Do not localize file extension {Locked=".runsettings"} or link {Locked="https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#the-runsettings-file"}. + + + runsettings file '{0}' cannot be read + Non è possibile leggere il file runsettings '{0}' + 0 is the {Locked="runsettings"} file path. + + + runsettings file '{0}' does not exist + Il file runsettings '{0}' non esiste + 0 is the {Locked="runsettings"} file path. + + + Filters tests using the given expression. For more information, see the Filter option details section. For more information and examples on how to use selective unit test filtering, see https://learn.microsoft.com/dotnet/core/testing/selective-unit-tests. + Filtra i test usando l'espressione specificata. Per ulteriori informazioni, vedere la sezione dei dettagli dell'opzione Filtro. Per altre informazioni ed esempi su come usare il filtro selettivo unit test, vedere https://learn.microsoft.com/dotnet/core/testing/selective-unit-tests. + Do not localize link {Locked="https://learn.microsoft.com/dotnet/core/testing/selective-unit-tests"}. + + + argument '{0}' is not a parameter. Parameters arguments are matching the following pattern 'key=value'. + l'argomento '{0}' non è un parametro. Gli argomenti dei parametri corrispondono al criterio 'key=value' seguente. + 0 is the invalid argument. Do not localize pattern {Locked="key=value"}. + + + Specify or override a key-value pair parameter. For more information and examples, see https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#testrunparameters + Specificare o eseguire l'override di un parametro di coppia chiave-valore. Per altre informazioni ed esempi, vedere https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#testrunparameters + Do not localize link {Locked="https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#testrunparameters"}. + + + Runsettings attribute '{0}' is not supported by Microsoft.Testing.Platform and will be ignored + L’attributo Runsettings ‘{0}’ non è supportato da Microsoft.Testing.Platform e verrà ignorato + 0 is the unsupported {Locked="Runsettings"} attribute name. Do not localize {Locked="Microsoft.Testing.Platform"}. + + + Runsettings datacollectors are not supported by Microsoft.Testing.Platform and will be ignored + I datacollector Runsettings non sono supportati da Microsoft.Testing.Platform e verranno ignorati + Do not localize {Locked="Runsettings"} or {Locked="Microsoft.Testing.Platform"}. + + + Runsettings loggers are not supported by Microsoft.Testing.Platform and will be ignored + I logger Runsettings non sono supportati da Microsoft.Testing.Platform e verranno ignorati + Do not localize {Locked="Runsettings"} or {Locked="Microsoft.Testing.Platform"}. + + + The bridged framework supports only one session at a time. A session with UID {0} is already open. + Il framework bridged supporta solo una sessione alla volta. Una sessione con UID {0} è già aperta. + {0} is the session {Locked="UID"}. + + + + \ No newline at end of file diff --git a/src/Adapter/MSTest.TestAdapter/Resources/xlf/PlatformAdapterResources.ja.xlf b/src/Adapter/MSTest.TestAdapter/Resources/xlf/PlatformAdapterResources.ja.xlf new file mode 100644 index 0000000000..707ee8e681 --- /dev/null +++ b/src/Adapter/MSTest.TestAdapter/Resources/xlf/PlatformAdapterResources.ja.xlf @@ -0,0 +1,62 @@ + + + + + + Invalid .runsettings file, '<RunSettings>' attribute is missing + .runsettings ファイルが無効です。'<RunSettings>' 属性がありません + Do not localize file extension {Locked=".runsettings"} or element {Locked="<RunSettings>"}. + + + The path, relative or absolute, to the .runsettings file. For more information and examples on how to configure test run, see https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#the-runsettings-file + .runsettings ファイルへの相対パスまたは絶対パス。テストの実行を構成する方法の詳細と例については、https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#the-runsettings-file を参照してください + Do not localize file extension {Locked=".runsettings"} or link {Locked="https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#the-runsettings-file"}. + + + runsettings file '{0}' cannot be read + runsettings ファイル '{0}' を読み取れません + 0 is the {Locked="runsettings"} file path. + + + runsettings file '{0}' does not exist + runsettings ファイル '{0}' が存在しません + 0 is the {Locked="runsettings"} file path. + + + Filters tests using the given expression. For more information, see the Filter option details section. For more information and examples on how to use selective unit test filtering, see https://learn.microsoft.com/dotnet/core/testing/selective-unit-tests. + 指定された式を使用してテストをフィルター処理します。詳細については、「フィルター オプションの詳細」セクションを参照してください。選択的単体テスト フィルターの使用方法の詳細と例については、https://learn.microsoft.com/dotnet/core/testing/selective-unit-tests を参照してください。 + Do not localize link {Locked="https://learn.microsoft.com/dotnet/core/testing/selective-unit-tests"}. + + + argument '{0}' is not a parameter. Parameters arguments are matching the following pattern 'key=value'. + 引数 '{0}' はパラメーターではありません。パラメーター引数は、次のパターン 'key=value' と一致しています。 + 0 is the invalid argument. Do not localize pattern {Locked="key=value"}. + + + Specify or override a key-value pair parameter. For more information and examples, see https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#testrunparameters + キーと値のペア パラメーターを指定またはオーバーライドします。詳細情報と例については、「https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#testrunparameters」を参照してください。 + Do not localize link {Locked="https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#testrunparameters"}. + + + Runsettings attribute '{0}' is not supported by Microsoft.Testing.Platform and will be ignored + Runsettings 属性 '{0}' は Microsoft.Testing.Platform でサポートされていないため、無視されます + 0 is the unsupported {Locked="Runsettings"} attribute name. Do not localize {Locked="Microsoft.Testing.Platform"}. + + + Runsettings datacollectors are not supported by Microsoft.Testing.Platform and will be ignored + Runsettings datacollectors は Microsoft.Testing.Platform でサポートされていないため、無視されます + Do not localize {Locked="Runsettings"} or {Locked="Microsoft.Testing.Platform"}. + + + Runsettings loggers are not supported by Microsoft.Testing.Platform and will be ignored + Runsettings loggers は Microsoft.Testing.Platform でサポートされていないため、無視されます + Do not localize {Locked="Runsettings"} or {Locked="Microsoft.Testing.Platform"}. + + + The bridged framework supports only one session at a time. A session with UID {0} is already open. + ブリッジ されたフレームワークは、一度に 1 つのセッションのみをサポートします。UID{0} のセッションは既に開かれています。 + {0} is the session {Locked="UID"}. + + + + \ No newline at end of file diff --git a/src/Adapter/MSTest.TestAdapter/Resources/xlf/PlatformAdapterResources.ko.xlf b/src/Adapter/MSTest.TestAdapter/Resources/xlf/PlatformAdapterResources.ko.xlf new file mode 100644 index 0000000000..bf2bc8c1c8 --- /dev/null +++ b/src/Adapter/MSTest.TestAdapter/Resources/xlf/PlatformAdapterResources.ko.xlf @@ -0,0 +1,62 @@ + + + + + + Invalid .runsettings file, '<RunSettings>' attribute is missing + .runsettings 파일이 잘못되었습니다. '<RunSettings>' 특성이 없습니다. + Do not localize file extension {Locked=".runsettings"} or element {Locked="<RunSettings>"}. + + + The path, relative or absolute, to the .runsettings file. For more information and examples on how to configure test run, see https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#the-runsettings-file + .runsettings 파일에 대한 상대 또는 절대 경로입니다. 테스트 실행을 구성하는 방법에 관한 자세한 내용 및 예시는 https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#the-runsettings-file을 참조하세요. + Do not localize file extension {Locked=".runsettings"} or link {Locked="https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#the-runsettings-file"}. + + + runsettings file '{0}' cannot be read + runsettings 파일 '{0}'을(를) 읽을 수 없습니다. + 0 is the {Locked="runsettings"} file path. + + + runsettings file '{0}' does not exist + runsettings 파일 '{0}'이(가) 없습니다. + 0 is the {Locked="runsettings"} file path. + + + Filters tests using the given expression. For more information, see the Filter option details section. For more information and examples on how to use selective unit test filtering, see https://learn.microsoft.com/dotnet/core/testing/selective-unit-tests. + 지정된 식을 사용하여 테스트를 필터링합니다. 자세한 내용은 필터 옵션 세부 정보 섹션을 참조하세요. 선택적 단위 테스트 필터링을 사용하는 방법에 관한 자세한 내용과 예시는 https://learn.microsoft.com/dotnet/core/testing/selective-unit-tests를 참조하세요. + Do not localize link {Locked="https://learn.microsoft.com/dotnet/core/testing/selective-unit-tests"}. + + + argument '{0}' is not a parameter. Parameters arguments are matching the following pattern 'key=value'. + '{0}' 인수는 매개 변수가 아닙니다. 매개 변수 인수가 다음 패턴 'key=value'와 일치합니다. + 0 is the invalid argument. Do not localize pattern {Locked="key=value"}. + + + Specify or override a key-value pair parameter. For more information and examples, see https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#testrunparameters + 키-값 쌍 매개 변수를 지정하거나 재정의합니다. 자세한 내용 및 예제는 https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#testrunparameters를 참조하세요. + Do not localize link {Locked="https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#testrunparameters"}. + + + Runsettings attribute '{0}' is not supported by Microsoft.Testing.Platform and will be ignored + Runsettings 특성 '{0}'은(는) Microsoft.Testing.Platform에서 지원되지 않으며 무시됩니다. + 0 is the unsupported {Locked="Runsettings"} attribute name. Do not localize {Locked="Microsoft.Testing.Platform"}. + + + Runsettings datacollectors are not supported by Microsoft.Testing.Platform and will be ignored + Runsettings datacollectors는 Microsoft.Testing.Platform에서 지원되지 않으며 무시됩니다. + Do not localize {Locked="Runsettings"} or {Locked="Microsoft.Testing.Platform"}. + + + Runsettings loggers are not supported by Microsoft.Testing.Platform and will be ignored + Runsettings 로거는 Microsoft.Testing.Platform에서 지원되지 않으며 무시됩니다. + Do not localize {Locked="Runsettings"} or {Locked="Microsoft.Testing.Platform"}. + + + The bridged framework supports only one session at a time. A session with UID {0} is already open. + 브리지된 프레임워크는 한 번에 하나의 세션만 지원합니다. UID가 {0}인 세션이 이미 열려 있습니다. + {0} is the session {Locked="UID"}. + + + + \ No newline at end of file diff --git a/src/Adapter/MSTest.TestAdapter/Resources/xlf/PlatformAdapterResources.pl.xlf b/src/Adapter/MSTest.TestAdapter/Resources/xlf/PlatformAdapterResources.pl.xlf new file mode 100644 index 0000000000..97e68a0893 --- /dev/null +++ b/src/Adapter/MSTest.TestAdapter/Resources/xlf/PlatformAdapterResources.pl.xlf @@ -0,0 +1,62 @@ + + + + + + Invalid .runsettings file, '<RunSettings>' attribute is missing + Nieprawidłowy plik .runsettings, brak atrybutu „<RunSettings>” + Do not localize file extension {Locked=".runsettings"} or element {Locked="<RunSettings>"}. + + + The path, relative or absolute, to the .runsettings file. For more information and examples on how to configure test run, see https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#the-runsettings-file + Ścieżka względna lub bezwzględna pliku .runsettings. Aby uzyskać więcej informacji i przykładów dotyczących konfigurowania przebiegu testu, zobacz: https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#the-runsettings-file + Do not localize file extension {Locked=".runsettings"} or link {Locked="https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#the-runsettings-file"}. + + + runsettings file '{0}' cannot be read + nie można odczytać pliku runsettings „{0}” + 0 is the {Locked="runsettings"} file path. + + + runsettings file '{0}' does not exist + plik runsettings „{0}” nie istnieje + 0 is the {Locked="runsettings"} file path. + + + Filters tests using the given expression. For more information, see the Filter option details section. For more information and examples on how to use selective unit test filtering, see https://learn.microsoft.com/dotnet/core/testing/selective-unit-tests. + Filtruje testy przy użyciu danego wyrażenia. Aby uzyskać więcej informacji, zobacz sekcję szczegółów opcji filtru. Aby uzyskać więcej informacji i przykładów dotyczących używania selektywnego filtrowania testów jednostkowych, zobacz: https://learn.microsoft.com/dotnet/core/testing/selective-unit-tests. + Do not localize link {Locked="https://learn.microsoft.com/dotnet/core/testing/selective-unit-tests"}. + + + argument '{0}' is not a parameter. Parameters arguments are matching the following pattern 'key=value'. + argument „{0}” nie jest parametrem. Argumenty parametrów pasują do następującego wzorca „key=value”. + 0 is the invalid argument. Do not localize pattern {Locked="key=value"}. + + + Specify or override a key-value pair parameter. For more information and examples, see https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#testrunparameters + Określ lub zastąp parametr pary klucz-wartość. Aby uzyskać więcej informacji i przykładów, zobacz stronę https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#testrunparameters + Do not localize link {Locked="https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#testrunparameters"}. + + + Runsettings attribute '{0}' is not supported by Microsoft.Testing.Platform and will be ignored + Atrybut Runsettings „{0}” nie jest obsługiwany przez element Microsoft.Testing.Platform i zostanie zignorowany. + 0 is the unsupported {Locked="Runsettings"} attribute name. Do not localize {Locked="Microsoft.Testing.Platform"}. + + + Runsettings datacollectors are not supported by Microsoft.Testing.Platform and will be ignored + Kolektory danych Runsettings nie są obsługiwane przez element Microsoft.Testing.Platform i będą ignorowane + Do not localize {Locked="Runsettings"} or {Locked="Microsoft.Testing.Platform"}. + + + Runsettings loggers are not supported by Microsoft.Testing.Platform and will be ignored + Rejestratory Runsettings nie są obsługiwane przez element Microsoft.Testing.Platform i będą ignorowane. + Do not localize {Locked="Runsettings"} or {Locked="Microsoft.Testing.Platform"}. + + + The bridged framework supports only one session at a time. A session with UID {0} is already open. + Platforma mostkowania obsługuje tylko jedną sesję naraz. Sesja z identyfikatorem UID {0} jest już otwarta. + {0} is the session {Locked="UID"}. + + + + \ No newline at end of file diff --git a/src/Adapter/MSTest.TestAdapter/Resources/xlf/PlatformAdapterResources.pt-BR.xlf b/src/Adapter/MSTest.TestAdapter/Resources/xlf/PlatformAdapterResources.pt-BR.xlf new file mode 100644 index 0000000000..9c54058367 --- /dev/null +++ b/src/Adapter/MSTest.TestAdapter/Resources/xlf/PlatformAdapterResources.pt-BR.xlf @@ -0,0 +1,62 @@ + + + + + + Invalid .runsettings file, '<RunSettings>' attribute is missing + Arquivo .runsettings inválido, o atributo "<RunSettings>" está ausente + Do not localize file extension {Locked=".runsettings"} or element {Locked="<RunSettings>"}. + + + The path, relative or absolute, to the .runsettings file. For more information and examples on how to configure test run, see https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#the-runsettings-file + O caminho, relativo ou absoluto, para o arquivo .runsettings. Para obter mais informações e exemplos sobre como configurar a execução de teste, consulte https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#the-runsettings-file + Do not localize file extension {Locked=".runsettings"} or link {Locked="https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#the-runsettings-file"}. + + + runsettings file '{0}' cannot be read + o arquivo runsettings "{0}" não pode ser lido + 0 is the {Locked="runsettings"} file path. + + + runsettings file '{0}' does not exist + o arquivo runsettings "{0}" não existe + 0 is the {Locked="runsettings"} file path. + + + Filters tests using the given expression. For more information, see the Filter option details section. For more information and examples on how to use selective unit test filtering, see https://learn.microsoft.com/dotnet/core/testing/selective-unit-tests. + Filtra testes usando a expressão fornecida. Para obter mais informações, consulte a seção detalhes da opção Filtro. Para obter mais informações e exemplos sobre como usar a filtragem de teste de unidade seletiva, consulte https://learn.microsoft.com/dotnet/core/testing/selective-unit-tests. + Do not localize link {Locked="https://learn.microsoft.com/dotnet/core/testing/selective-unit-tests"}. + + + argument '{0}' is not a parameter. Parameters arguments are matching the following pattern 'key=value'. + o argumento '{0}' não é um parâmetro. Os argumentos de parâmetros correspondem ao padrão 'key=value' a seguir. + 0 is the invalid argument. Do not localize pattern {Locked="key=value"}. + + + Specify or override a key-value pair parameter. For more information and examples, see https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#testrunparameters + Especifique ou substitua um parâmetro de par chave-valor. Para obter mais informações e exemplos, consulte https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#testrunparameters + Do not localize link {Locked="https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#testrunparameters"}. + + + Runsettings attribute '{0}' is not supported by Microsoft.Testing.Platform and will be ignored + O atributo Runsettings "{0}" não tem suporte no Microsoft.Testing.Platform e será ignorado + 0 is the unsupported {Locked="Runsettings"} attribute name. Do not localize {Locked="Microsoft.Testing.Platform"}. + + + Runsettings datacollectors are not supported by Microsoft.Testing.Platform and will be ignored + Os coletores de dados de arquivos Runsettings não são compatíveis com Microsoft.Testing.Platform e serão ignorados + Do not localize {Locked="Runsettings"} or {Locked="Microsoft.Testing.Platform"}. + + + Runsettings loggers are not supported by Microsoft.Testing.Platform and will be ignored + Os registradores de arquivos Runsettings não têm suporte no Microsoft.Testing.Platform e serão ignorados + Do not localize {Locked="Runsettings"} or {Locked="Microsoft.Testing.Platform"}. + + + The bridged framework supports only one session at a time. A session with UID {0} is already open. + A estrutura em ponte dá suporte a apenas uma sessão por vez. Uma sessão com UID {0} já está aberta. + {0} is the session {Locked="UID"}. + + + + \ No newline at end of file diff --git a/src/Adapter/MSTest.TestAdapter/Resources/xlf/PlatformAdapterResources.ru.xlf b/src/Adapter/MSTest.TestAdapter/Resources/xlf/PlatformAdapterResources.ru.xlf new file mode 100644 index 0000000000..63f0fe22d8 --- /dev/null +++ b/src/Adapter/MSTest.TestAdapter/Resources/xlf/PlatformAdapterResources.ru.xlf @@ -0,0 +1,62 @@ + + + + + + Invalid .runsettings file, '<RunSettings>' attribute is missing + Недопустимый файл .runsettings, отсутствует атрибут "<RunSettings>" + Do not localize file extension {Locked=".runsettings"} or element {Locked="<RunSettings>"}. + + + The path, relative or absolute, to the .runsettings file. For more information and examples on how to configure test run, see https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#the-runsettings-file + Относительный или абсолютный путь к файлу .runsettings. Дополнительные сведения и примеры настройки тестового запуска см. на странице https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#the-runsettings-file + Do not localize file extension {Locked=".runsettings"} or link {Locked="https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#the-runsettings-file"}. + + + runsettings file '{0}' cannot be read + не удается прочитать файл runsettings "{0}" + 0 is the {Locked="runsettings"} file path. + + + runsettings file '{0}' does not exist + файл runsettings "{0}" не существует + 0 is the {Locked="runsettings"} file path. + + + Filters tests using the given expression. For more information, see the Filter option details section. For more information and examples on how to use selective unit test filtering, see https://learn.microsoft.com/dotnet/core/testing/selective-unit-tests. + Фильтрация тестов с использованием заданного выражения. Дополнительные сведения см. в разделе сведений о параметрах фильтра. Дополнительные сведения и примеры использования выборочной фильтрации модульных тестов см. на странице https://learn.microsoft.com/dotnet/core/testing/selective-unit-tests. + Do not localize link {Locked="https://learn.microsoft.com/dotnet/core/testing/selective-unit-tests"}. + + + argument '{0}' is not a parameter. Parameters arguments are matching the following pattern 'key=value'. + аргумент "{0}" не является параметром. Аргументы параметров соответствуют следующему шаблону: "key=value". + 0 is the invalid argument. Do not localize pattern {Locked="key=value"}. + + + Specify or override a key-value pair parameter. For more information and examples, see https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#testrunparameters + Укажите или переопределите параметр пары "ключ-значение". Дополнительные сведения и примеры см. на странице https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#testrunparameters + Do not localize link {Locked="https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#testrunparameters"}. + + + Runsettings attribute '{0}' is not supported by Microsoft.Testing.Platform and will be ignored + Атрибут Runsettings "{0}" не поддерживается в Microsoft.Testing.Platform и будет пропущен + 0 is the unsupported {Locked="Runsettings"} attribute name. Do not localize {Locked="Microsoft.Testing.Platform"}. + + + Runsettings datacollectors are not supported by Microsoft.Testing.Platform and will be ignored + Сборщики данных Runsettings не поддерживаются в Microsoft.Testing.Platform и будут пропущены + Do not localize {Locked="Runsettings"} or {Locked="Microsoft.Testing.Platform"}. + + + Runsettings loggers are not supported by Microsoft.Testing.Platform and will be ignored + Средства ведения журналов Runsettings не поддерживаются в Microsoft.Testing.Platform и будут пропущены + Do not localize {Locked="Runsettings"} or {Locked="Microsoft.Testing.Platform"}. + + + The bridged framework supports only one session at a time. A session with UID {0} is already open. + Интегрированная среда Bridged Framework поддерживает только один сеанс одновременно. Сеанс с UID {0} уже открыт. + {0} is the session {Locked="UID"}. + + + + \ No newline at end of file diff --git a/src/Adapter/MSTest.TestAdapter/Resources/xlf/PlatformAdapterResources.tr.xlf b/src/Adapter/MSTest.TestAdapter/Resources/xlf/PlatformAdapterResources.tr.xlf new file mode 100644 index 0000000000..643a979008 --- /dev/null +++ b/src/Adapter/MSTest.TestAdapter/Resources/xlf/PlatformAdapterResources.tr.xlf @@ -0,0 +1,62 @@ + + + + + + Invalid .runsettings file, '<RunSettings>' attribute is missing + Geçersiz .runsettings dosyası, '<RunSettings>' özniteliği eksik + Do not localize file extension {Locked=".runsettings"} or element {Locked="<RunSettings>"}. + + + The path, relative or absolute, to the .runsettings file. For more information and examples on how to configure test run, see https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#the-runsettings-file + .runsettings dosyasının göreli veya mutlak yolu. Test çalıştırmasını yapılandırma hakkında daha fazla bilgi ve örnek için şu sayfaya bakın: https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#the-runsettings-file + Do not localize file extension {Locked=".runsettings"} or link {Locked="https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#the-runsettings-file"}. + + + runsettings file '{0}' cannot be read + '{0}' runsettings dosyası okunamıyor + 0 is the {Locked="runsettings"} file path. + + + runsettings file '{0}' does not exist + '{0}' runsettings dosyası mevcut değil + 0 is the {Locked="runsettings"} file path. + + + Filters tests using the given expression. For more information, see the Filter option details section. For more information and examples on how to use selective unit test filtering, see https://learn.microsoft.com/dotnet/core/testing/selective-unit-tests. + Belirtilen ifadeyi kullanarak testleri filtreler. Daha fazla bilgi için Filtre seçeneği ayrıntıları bölümüne bakın. Seçici birim testi filtreleme hakkında daha fazla bilgi ve örnek için şu sayfaya bakın: https://learn.microsoft.com/dotnet/core/testing/selective-unit-tests. + Do not localize link {Locked="https://learn.microsoft.com/dotnet/core/testing/selective-unit-tests"}. + + + argument '{0}' is not a parameter. Parameters arguments are matching the following pattern 'key=value'. + '{0}' bağımsız değişkeni bir parametre değil. Parametre bağımsız değişkenleri aşağıdaki 'key=value' deseniyle eşleşiyor. + 0 is the invalid argument. Do not localize pattern {Locked="key=value"}. + + + Specify or override a key-value pair parameter. For more information and examples, see https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#testrunparameters + Anahtar-değer çifti parametresi belirtin veya geçersiz kılın. Daha fazla bilgi ve örnek için şu sayfaya bakın: https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#testrunparameters + Do not localize link {Locked="https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#testrunparameters"}. + + + Runsettings attribute '{0}' is not supported by Microsoft.Testing.Platform and will be ignored + '{0}' Runsettings özniteliği Microsoft.Testing.Platform tarafından desteklenmiyor ve yoksayılacak + 0 is the unsupported {Locked="Runsettings"} attribute name. Do not localize {Locked="Microsoft.Testing.Platform"}. + + + Runsettings datacollectors are not supported by Microsoft.Testing.Platform and will be ignored + Runsettings veri toplayıcıları Microsoft.Testing.Platform tarafından desteklenmiyor ve yoksayılacak + Do not localize {Locked="Runsettings"} or {Locked="Microsoft.Testing.Platform"}. + + + Runsettings loggers are not supported by Microsoft.Testing.Platform and will be ignored + Runsettings günlükçüleri Microsoft.Testing.Platform tarafından desteklenmiyor ve yoksayılacak + Do not localize {Locked="Runsettings"} or {Locked="Microsoft.Testing.Platform"}. + + + The bridged framework supports only one session at a time. A session with UID {0} is already open. + Köprülü çerçeve aynı anda yalnızca bir oturumu destekler. UID'si {0} olan bir oturum zaten açık. + {0} is the session {Locked="UID"}. + + + + \ No newline at end of file diff --git a/src/Adapter/MSTest.TestAdapter/Resources/xlf/PlatformAdapterResources.zh-Hans.xlf b/src/Adapter/MSTest.TestAdapter/Resources/xlf/PlatformAdapterResources.zh-Hans.xlf new file mode 100644 index 0000000000..00d6f1cce8 --- /dev/null +++ b/src/Adapter/MSTest.TestAdapter/Resources/xlf/PlatformAdapterResources.zh-Hans.xlf @@ -0,0 +1,62 @@ + + + + + + Invalid .runsettings file, '<RunSettings>' attribute is missing + .runsettings 文件无效,缺少 '<RunSettings>' 属性 + Do not localize file extension {Locked=".runsettings"} or element {Locked="<RunSettings>"}. + + + The path, relative or absolute, to the .runsettings file. For more information and examples on how to configure test run, see https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#the-runsettings-file + .runsettings 文件的相对路径或绝对路径。有关如何配置测试运行的详细信息和示例,请参阅 https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#the-runsettings-file + Do not localize file extension {Locked=".runsettings"} or link {Locked="https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#the-runsettings-file"}. + + + runsettings file '{0}' cannot be read + 无法读取 runsettings 文件“{0}” + 0 is the {Locked="runsettings"} file path. + + + runsettings file '{0}' does not exist + runsettings 文件“{0}”不存在 + 0 is the {Locked="runsettings"} file path. + + + Filters tests using the given expression. For more information, see the Filter option details section. For more information and examples on how to use selective unit test filtering, see https://learn.microsoft.com/dotnet/core/testing/selective-unit-tests. + 使用给定的表达式筛选测试。有关详细信息,请参阅“筛选器选项详细信息”部分。有关如何使用选择性单元测试筛选的详细信息和示例,请参阅 https://learn.microsoft.com/dotnet/core/testing/selective-unit-tests。 + Do not localize link {Locked="https://learn.microsoft.com/dotnet/core/testing/selective-unit-tests"}. + + + argument '{0}' is not a parameter. Parameters arguments are matching the following pattern 'key=value'. + 自变量“{0}”不是参数。参数自变量与以下模式“key=value”相匹配。 + 0 is the invalid argument. Do not localize pattern {Locked="key=value"}. + + + Specify or override a key-value pair parameter. For more information and examples, see https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#testrunparameters + 指定或替代键值对参数。有关详细信息和示例,请参阅 https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#testrunparameters + Do not localize link {Locked="https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#testrunparameters"}. + + + Runsettings attribute '{0}' is not supported by Microsoft.Testing.Platform and will be ignored + Microsoft.Testing.Platform 不支持 Runsettings 属性“{0}”,将被忽略 + 0 is the unsupported {Locked="Runsettings"} attribute name. Do not localize {Locked="Microsoft.Testing.Platform"}. + + + Runsettings datacollectors are not supported by Microsoft.Testing.Platform and will be ignored + Microsoft.Testing.Platform 不支持 Runsettings 数据收集器,将被忽略 + Do not localize {Locked="Runsettings"} or {Locked="Microsoft.Testing.Platform"}. + + + Runsettings loggers are not supported by Microsoft.Testing.Platform and will be ignored + Microsoft.Testing.Platform 不支持 Runsettings 记录器,将被忽略 + Do not localize {Locked="Runsettings"} or {Locked="Microsoft.Testing.Platform"}. + + + The bridged framework supports only one session at a time. A session with UID {0} is already open. + 桥接框架一次仅支持一个会话。已打开具有 UID {0} 的会话。 + {0} is the session {Locked="UID"}. + + + + \ No newline at end of file diff --git a/src/Adapter/MSTest.TestAdapter/Resources/xlf/PlatformAdapterResources.zh-Hant.xlf b/src/Adapter/MSTest.TestAdapter/Resources/xlf/PlatformAdapterResources.zh-Hant.xlf new file mode 100644 index 0000000000..a505d399a0 --- /dev/null +++ b/src/Adapter/MSTest.TestAdapter/Resources/xlf/PlatformAdapterResources.zh-Hant.xlf @@ -0,0 +1,62 @@ + + + + + + Invalid .runsettings file, '<RunSettings>' attribute is missing + .runsettings 檔案無效,遺漏 '<RunSettings>' 屬性 + Do not localize file extension {Locked=".runsettings"} or element {Locked="<RunSettings>"}. + + + The path, relative or absolute, to the .runsettings file. For more information and examples on how to configure test run, see https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#the-runsettings-file + .runsettings 檔案的相對或絕對路徑。如需如何設定測試回合的詳細資訊和範例,請參閱 https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#the-runsettings-file + Do not localize file extension {Locked=".runsettings"} or link {Locked="https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#the-runsettings-file"}. + + + runsettings file '{0}' cannot be read + 無法讀取 runsettings 檔案 '{0}' + 0 is the {Locked="runsettings"} file path. + + + runsettings file '{0}' does not exist + .runsettings 檔案 '{0}' 不存在 + 0 is the {Locked="runsettings"} file path. + + + Filters tests using the given expression. For more information, see the Filter option details section. For more information and examples on how to use selective unit test filtering, see https://learn.microsoft.com/dotnet/core/testing/selective-unit-tests. + 使用指定運算式的篩選測試。如需詳細資訊,請參閱篩選選項詳細資料區段。如需如何使用選擇性單元測試篩選的詳細資訊和範例,請參閱 https://learn.microsoft.com/dotnet/core/testing/selective-unit-tests。 + Do not localize link {Locked="https://learn.microsoft.com/dotnet/core/testing/selective-unit-tests"}. + + + argument '{0}' is not a parameter. Parameters arguments are matching the following pattern 'key=value'. + 引數 '{0}' 不是參數。參數引數符合下列模式 'key=value'。 + 0 is the invalid argument. Do not localize pattern {Locked="key=value"}. + + + Specify or override a key-value pair parameter. For more information and examples, see https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#testrunparameters + 指定或覆寫機碼值組參數。如需詳細資訊和範例,請參閱 https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#testrunparameters + Do not localize link {Locked="https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#testrunparameters"}. + + + Runsettings attribute '{0}' is not supported by Microsoft.Testing.Platform and will be ignored + Runsettings 屬性 '{0}' 不受 Microsoft.Testing.Platform 支援,將會予以忽略 + 0 is the unsupported {Locked="Runsettings"} attribute name. Do not localize {Locked="Microsoft.Testing.Platform"}. + + + Runsettings datacollectors are not supported by Microsoft.Testing.Platform and will be ignored + Runsettings 資料收集器不受 Microsoft.Testing.Platform 支援,將會予以忽略 + Do not localize {Locked="Runsettings"} or {Locked="Microsoft.Testing.Platform"}. + + + Runsettings loggers are not supported by Microsoft.Testing.Platform and will be ignored + Runsettings 記錄器不受 Microsoft.Testing.Platform 支援,將會予以忽略 + Do not localize {Locked="Runsettings"} or {Locked="Microsoft.Testing.Platform"}. + + + The bridged framework supports only one session at a time. A session with UID {0} is already open. + 橋接器架構一次只支援一個工作階段。已開啟具有 UID {0} 的工作階段。 + {0} is the session {Locked="UID"}. + + + + \ No newline at end of file diff --git a/src/Adapter/MSTest.TestAdapter/TestingPlatformAdapter/IMSTestTrxReportCapability.cs b/src/Adapter/MSTest.TestAdapter/TestingPlatformAdapter/IMSTestTrxReportCapability.cs new file mode 100644 index 0000000000..7c87f0fcaa --- /dev/null +++ b/src/Adapter/MSTest.TestAdapter/TestingPlatformAdapter/IMSTestTrxReportCapability.cs @@ -0,0 +1,18 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +#if !WINDOWS_UWP +using Microsoft.Testing.Extensions.TrxReport.Abstractions; + +namespace Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.TestingPlatformAdapter; + +/// +/// MSTest-native TRX report capability that also exposes whether TRX reporting has been enabled for the run. +/// This mirrors the VSTest bridge's internal capability so the native framework can determine TRX enablement +/// without depending on the bridge. +/// +internal interface IMSTestTrxReportCapability : ITrxReportCapability +{ + bool IsTrxEnabled { get; } +} +#endif diff --git a/src/Adapter/MSTest.TestAdapter/TestingPlatformAdapter/MSTestFilterContext.cs b/src/Adapter/MSTest.TestAdapter/TestingPlatformAdapter/MSTestFilterContext.cs index ca393aefe4..4cac88b90a 100644 --- a/src/Adapter/MSTest.TestAdapter/TestingPlatformAdapter/MSTestFilterContext.cs +++ b/src/Adapter/MSTest.TestAdapter/TestingPlatformAdapter/MSTestFilterContext.cs @@ -26,8 +26,8 @@ namespace Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.TestingPlatform [SuppressMessage("ApiDesign", "RS0030:Do not use banned APIs", Justification = "We can use MTP from this folder")] internal abstract class MSTestFilterContextBase { - // Keep in sync with the bridge's TestCaseFilterCommandLineOptionsProvider.TestCaseFilterOptionName. - private const string TestCaseFilterOptionName = "filter"; + // References the native --filter option provider's name. + private const string TestCaseFilterOptionName = MSTestTestCaseFilterCommandLineOptionsProvider.TestCaseFilterOptionName; protected MSTestFilterContextBase(ICommandLineOptions commandLineOptions, IRunSettings runSettings, ITestExecutionFilter filter) { diff --git a/src/Adapter/MSTest.TestAdapter/TestingPlatformAdapter/MSTestRunSettings.cs b/src/Adapter/MSTest.TestAdapter/TestingPlatformAdapter/MSTestRunSettings.cs index 65f5f63851..d3fdc80f83 100644 --- a/src/Adapter/MSTest.TestAdapter/TestingPlatformAdapter/MSTestRunSettings.cs +++ b/src/Adapter/MSTest.TestAdapter/TestingPlatformAdapter/MSTestRunSettings.cs @@ -2,11 +2,11 @@ // Licensed under the MIT license. See LICENSE file in the project root for full license information. #if !WINDOWS_UWP -using Microsoft.Testing.Extensions.VSTestBridge.Resources; using Microsoft.Testing.Platform.CommandLine; using Microsoft.Testing.Platform.Configurations; using Microsoft.Testing.Platform.Services; using Microsoft.Testing.Platform.TestHost; +using Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.Resources; using Microsoft.VisualStudio.TestPlatform.ObjectModel.Adapter; using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; @@ -24,10 +24,6 @@ namespace Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.TestingPlatform [SuppressMessage("ApiDesign", "RS0030:Do not use banned APIs", Justification = "We can use MTP from this folder")] internal sealed class MSTestRunSettings : IRunSettings { - // Keep in sync with the bridge's option provider constants (options are still registered by the bridge). - private const string RunSettingsOptionName = "settings"; - private const string TestRunParameterOptionName = "test-parameter"; - private static readonly char[] TestRunParameterSeparator = ['=']; private static readonly string[] UnsupportedRunConfigurationSettings = @@ -49,7 +45,8 @@ public MSTestRunSettings( IClientInfo client, IMessageLogger messageLogger) { - string runSettingsXml = ReadRunSettings(commandLineOptions, fileSystem); + _ = commandLineOptions.TryGetOptionArgumentList(MSTestRunSettingsCommandLineOptionsProvider.RunSettingsOptionName, out string[]? fileNames); + string runSettingsXml = ReadRunSettings(fileNames, fileSystem); XDocument runSettingsDocument = Patch(runSettingsXml, configuration, client, commandLineOptions); WarnOnUnsupportedEntries(runSettingsDocument, messageLogger); @@ -62,13 +59,11 @@ public MSTestRunSettings( // Not used by MSTest (matches the bridge's RunSettingsAdapter). public ISettingsProvider? GetSettings(string? settingsName) => throw new NotImplementedException(); - internal static string ReadRunSettings(ICommandLineOptions commandLineOptions, IFileSystem fileSystem) + internal static string ReadRunSettings(string[]? fileNames, IFileSystem fileSystem) { - _ = commandLineOptions.TryGetOptionArgumentList(RunSettingsOptionName, out string[]? fileNames); - - // Match the runsettings environment-variable provider (which reads the same --settings option): use the - // first provided path rather than requiring exactly one, so a valid value is not ignored when more than - // one argument is present. + // Use the first provided --settings path rather than requiring exactly one, matching the runsettings + // environment-variable provider that reads the same option, so a valid value is not ignored when more + // than one argument is present. if (fileNames is { Length: > 0 } && fileSystem.ExistFile(fileNames[0])) { return fileSystem.ReadAllText(fileNames[0]); @@ -106,7 +101,7 @@ private static XDocument PatchSettingsWithDefaults(string? runSettingsXml, bool var document = XDocument.Parse(runSettingsXml); if (document.Element("RunSettings") is not { } runSettingsElement) { - throw new InvalidOperationException(ExtensionResources.MissingRunSettingsAttribute); + throw new InvalidOperationException(PlatformAdapterResources.MissingRunSettingsAttribute); } bool isPatchingCommentAdded = false; @@ -156,7 +151,7 @@ private static void AddPatchingCommentIfNeeded(XElement element, ref bool isPatc private static void PatchTestRunParameters(XDocument runSettingsDocument, ICommandLineOptions commandLineOptions) { - if (!commandLineOptions.TryGetOptionArgumentList(TestRunParameterOptionName, out string[]? testRunParameters)) + if (!commandLineOptions.TryGetOptionArgumentList(MSTestTestRunParametersCommandLineOptionsProvider.TestRunParameterOptionName, out string[]? testRunParameters)) { return; } @@ -196,12 +191,12 @@ private static void WarnOnUnsupportedEntries(XDocument document, IMessageLogger if (runSettingsElement.Element("LoggerRunSettings") is not null) { - messageLogger.SendMessage(TestMessageLevel.Warning, ExtensionResources.UnsupportedRunsettingsLoggers); + messageLogger.SendMessage(TestMessageLevel.Warning, PlatformAdapterResources.UnsupportedRunsettingsLoggers); } if (runSettingsElement.Element("DataCollectionRunSettings") is not null) { - messageLogger.SendMessage(TestMessageLevel.Warning, ExtensionResources.UnsupportedRunsettingsDatacollectors); + messageLogger.SendMessage(TestMessageLevel.Warning, PlatformAdapterResources.UnsupportedRunsettingsDatacollectors); } if (runSettingsElement.Element("RunConfiguration") is not { } runConfigurationElement) @@ -211,7 +206,7 @@ private static void WarnOnUnsupportedEntries(XDocument document, IMessageLogger foreach (string unsupportedRunConfigurationSetting in UnsupportedRunConfigurationSettings.Where(setting => runConfigurationElement.Element(setting) is not null)) { - messageLogger.SendMessage(TestMessageLevel.Warning, string.Format(CultureInfo.InvariantCulture, ExtensionResources.UnsupportedRunconfigurationSetting, unsupportedRunConfigurationSetting)); + messageLogger.SendMessage(TestMessageLevel.Warning, string.Format(CultureInfo.InvariantCulture, PlatformAdapterResources.UnsupportedRunconfigurationSetting, unsupportedRunConfigurationSetting)); } } } diff --git a/src/Adapter/MSTest.TestAdapter/TestingPlatformAdapter/MSTestRunSettingsCommandLineOptionsProvider.cs b/src/Adapter/MSTest.TestAdapter/TestingPlatformAdapter/MSTestRunSettingsCommandLineOptionsProvider.cs new file mode 100644 index 0000000000..bccf259cf4 --- /dev/null +++ b/src/Adapter/MSTest.TestAdapter/TestingPlatformAdapter/MSTestRunSettingsCommandLineOptionsProvider.cs @@ -0,0 +1,59 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +#if !WINDOWS_UWP +using Microsoft.Testing.Platform.CommandLine; +using Microsoft.Testing.Platform.Extensions; +using Microsoft.Testing.Platform.Extensions.CommandLine; +using Microsoft.Testing.Platform.Helpers; +using Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.Resources; + +using IFileSystem = Microsoft.Testing.Platform.Helpers.IFileSystem; + +namespace Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.TestingPlatformAdapter; + +/// +/// MSTest-native command-line provider for the VSTest --settings (.runsettings) option. Mirrors the VSTest +/// bridge's RunSettingsCommandLineOptionsProvider (identical option name, description and validation) so the +/// --help surface is unchanged. +/// +[SuppressMessage("ApiDesign", "RS0030:Do not use banned APIs", Justification = "We can use MTP from this folder")] +internal sealed class MSTestRunSettingsCommandLineOptionsProvider : CommandLineOptionsProviderBase +{ + public const string RunSettingsOptionName = "settings"; + private readonly IFileSystem _fileSystem; + + public MSTestRunSettingsCommandLineOptionsProvider(IExtension extension) + : this(extension, new SystemFileSystem()) + { + } + + internal MSTestRunSettingsCommandLineOptionsProvider(IExtension extension, IFileSystem fileSystem) + : base(extension, [new CommandLineOption(RunSettingsOptionName, PlatformAdapterResources.RunSettingsOptionDescription, ArgumentArity.ExactlyOne, false)]) + => _fileSystem = fileSystem; + + public override Task ValidateOptionArgumentsAsync(CommandLineOption commandOption, string[] arguments) + { + string filePath = arguments[0]; + + return !_fileSystem.ExistFile(filePath) + ? ValidationResult.InvalidTask(string.Format(CultureInfo.InvariantCulture, PlatformAdapterResources.RunsettingsFileDoesNotExist, filePath)) + : !CanReadFile(filePath) + ? ValidationResult.InvalidTask(string.Format(CultureInfo.InvariantCulture, PlatformAdapterResources.RunsettingsFileCannotBeRead, filePath)) + : ValidationResult.ValidTask; + } + + private bool CanReadFile(string filePath) + { + try + { + using IFileStream stream = _fileSystem.NewFileStream(filePath, FileMode.Open, FileAccess.Read); + return true; + } + catch (IOException) + { + return false; + } + } +} +#endif diff --git a/src/Adapter/MSTest.TestAdapter/TestingPlatformAdapter/MSTestRunSettingsConfigurationProvider.cs b/src/Adapter/MSTest.TestAdapter/TestingPlatformAdapter/MSTestRunSettingsConfigurationProvider.cs new file mode 100644 index 0000000000..c23e7b217c --- /dev/null +++ b/src/Adapter/MSTest.TestAdapter/TestingPlatformAdapter/MSTestRunSettingsConfigurationProvider.cs @@ -0,0 +1,74 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +#if !WINDOWS_UWP +using Microsoft.Testing.Platform.CommandLine; +using Microsoft.Testing.Platform.Configurations; +using Microsoft.Testing.Platform.Extensions; + +using IFileSystem = Microsoft.Testing.Platform.Helpers.IFileSystem; + +namespace Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.TestingPlatformAdapter; + +/// +/// MSTest-native configuration source that bridges the <ResultsDirectory> from a .runsettings file into +/// the Microsoft.Testing.Platform configuration model. Mirrors the VSTest bridge's +/// RunSettingsConfigurationProvider without depending on the bridge. +/// +[SuppressMessage("ApiDesign", "RS0030:Do not use banned APIs", Justification = "We can use MTP from this folder")] +internal sealed class MSTestRunSettingsConfigurationProvider : IConfigurationSource, IConfigurationProvider +{ + private readonly IExtension _extension; + private readonly IFileSystem _fileSystem; + private string? _runSettingsFileContent; + + public MSTestRunSettingsConfigurationProvider(IExtension extension, IFileSystem fileSystem) + { + _extension = extension; + _fileSystem = fileSystem; + } + + public string Uid => nameof(MSTestRunSettingsConfigurationProvider); + + public string Version => _extension.Version; + + public string DisplayName => "MSTest: runsettings configuration"; + + public string Description => "Configuration source to bridge VSTest xml runsettings configuration into Microsoft Testing Platform configuration model."; + + public int Order => 2; + + public Task IsEnabledAsync() => Task.FromResult(true); + + public Task LoadAsync() => Task.CompletedTask; + + public bool TryGet(string key, out string? value) + { + if (string.IsNullOrEmpty(_runSettingsFileContent)) + { + value = null; + return false; + } + + if (key == PlatformConfigurationConstants.PlatformResultDirectory) + { + var document = XDocument.Parse(_runSettingsFileContent); + value = document.Element("RunSettings")?.Element("RunConfiguration")?.Element("ResultsDirectory")?.Value; + if (value is not null) + { + return true; + } + } + + value = null; + return false; + } + + public Task BuildAsync(CommandLineParseResult commandLineParseResult) + { + _ = commandLineParseResult.TryGetOptionArgumentList(MSTestRunSettingsCommandLineOptionsProvider.RunSettingsOptionName, out string[]? fileNames); + _runSettingsFileContent = MSTestRunSettings.ReadRunSettings(fileNames, _fileSystem); + return Task.FromResult(this); + } +} +#endif diff --git a/src/Adapter/MSTest.TestAdapter/TestingPlatformAdapter/MSTestRunSettingsEnvironmentVariableProvider.cs b/src/Adapter/MSTest.TestAdapter/TestingPlatformAdapter/MSTestRunSettingsEnvironmentVariableProvider.cs new file mode 100644 index 0000000000..c1ae378e91 --- /dev/null +++ b/src/Adapter/MSTest.TestAdapter/TestingPlatformAdapter/MSTestRunSettingsEnvironmentVariableProvider.cs @@ -0,0 +1,106 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +#if !WINDOWS_UWP +using Microsoft.Testing.Platform.CommandLine; +using Microsoft.Testing.Platform.Extensions; +using Microsoft.Testing.Platform.Extensions.TestHostControllers; + +using IEnvironment = Microsoft.Testing.Platform.Helpers.IEnvironment; +using IFileStream = Microsoft.Testing.Platform.Helpers.IFileStream; +using IFileSystem = Microsoft.Testing.Platform.Helpers.IFileSystem; + +namespace Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.TestingPlatformAdapter; + +/// +/// MSTest-native test host environment-variable provider that applies the <EnvironmentVariables> from a +/// .runsettings file to the test host. Mirrors the VSTest bridge's RunSettingsEnvironmentVariableProvider +/// without depending on the bridge. +/// +[SuppressMessage("ApiDesign", "RS0030:Do not use banned APIs", Justification = "We can use MTP from this folder")] +internal sealed class MSTestRunSettingsEnvironmentVariableProvider : ITestHostEnvironmentVariableProvider +{ + private readonly IExtension _extension; + private readonly ICommandLineOptions _commandLineOptions; + private readonly IFileSystem _fileSystem; + private readonly IEnvironment _environment; + private XDocument? _runSettings; + + public MSTestRunSettingsEnvironmentVariableProvider(IExtension extension, ICommandLineOptions commandLineOptions, IFileSystem fileSystem, IEnvironment environment) + { + _extension = extension; + _commandLineOptions = commandLineOptions; + _fileSystem = fileSystem; + _environment = environment; + } + + public string Uid => _extension.Uid; + + public string Version => _extension.Version; + + public string DisplayName => _extension.DisplayName; + + public string Description => _extension.Description; + + public async Task IsEnabledAsync() + { + string? runSettingsFilePath = null; + string? runSettingsContent = null; + + if (_commandLineOptions.TryGetOptionArgumentList(MSTestRunSettingsCommandLineOptionsProvider.RunSettingsOptionName, out string[]? runsettings) + && runsettings.Length > 0 + && _fileSystem.ExistFile(runsettings[0])) + { + runSettingsFilePath = runsettings[0]; + } + + if (runSettingsFilePath is null) + { + runSettingsContent = _environment.GetEnvironmentVariable("TESTINGPLATFORM_EXPERIMENTAL_VSTEST_RUNSETTINGS"); + } + + if (runSettingsFilePath is null && string.IsNullOrEmpty(runSettingsContent)) + { + string? envVarFilePath = _environment.GetEnvironmentVariable("TESTINGPLATFORM_VSTESTBRIDGE_RUNSETTINGS_FILE"); + if (!string.IsNullOrEmpty(envVarFilePath) && _fileSystem.ExistFile(envVarFilePath!)) + { + runSettingsFilePath = envVarFilePath; + } + } + + if (runSettingsFilePath is not null) + { + using IFileStream fileStream = _fileSystem.NewFileStream(runSettingsFilePath, FileMode.Open, FileAccess.Read); +#if NETCOREAPP + _runSettings = await XDocument.LoadAsync(fileStream.Stream, LoadOptions.None, CancellationToken.None).ConfigureAwait(false); +#else + using StreamReader streamReader = new(fileStream.Stream); + _runSettings = XDocument.Parse(await streamReader.ReadToEndAsync().ConfigureAwait(false)); +#endif + } + else if (!string.IsNullOrEmpty(runSettingsContent)) + { + _runSettings = XDocument.Parse(runSettingsContent); + } + else + { + return false; + } + + return _runSettings.Element("RunSettings")?.Element("RunConfiguration")?.Element("EnvironmentVariables") is not null; + } + + public Task UpdateAsync(IEnvironmentVariables environmentVariables) + { + foreach (XElement element in _runSettings!.Element("RunSettings")!.Element("RunConfiguration")!.Element("EnvironmentVariables")!.Elements()) + { + environmentVariables.SetVariable(new(element.Name.ToString(), element.Value, true, true)); + } + + return Task.CompletedTask; + } + + public Task ValidateTestHostEnvironmentVariablesAsync(IReadOnlyEnvironmentVariables environmentVariables) + => ValidationResult.ValidTask; +} +#endif diff --git a/src/Adapter/MSTest.TestAdapter/TestingPlatformAdapter/MSTestTestCaseFilterCommandLineOptionsProvider.cs b/src/Adapter/MSTest.TestAdapter/TestingPlatformAdapter/MSTestTestCaseFilterCommandLineOptionsProvider.cs new file mode 100644 index 0000000000..566d9f122e --- /dev/null +++ b/src/Adapter/MSTest.TestAdapter/TestingPlatformAdapter/MSTestTestCaseFilterCommandLineOptionsProvider.cs @@ -0,0 +1,26 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +#if !WINDOWS_UWP +using Microsoft.Testing.Platform.CommandLine; +using Microsoft.Testing.Platform.Extensions; +using Microsoft.Testing.Platform.Extensions.CommandLine; +using Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.Resources; + +namespace Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.TestingPlatformAdapter; + +/// +/// MSTest-native command-line provider for the VSTest --filter (test case filter) option. Mirrors the VSTest +/// bridge's TestCaseFilterCommandLineOptionsProvider (identical option name and description). +/// +[SuppressMessage("ApiDesign", "RS0030:Do not use banned APIs", Justification = "We can use MTP from this folder")] +internal sealed class MSTestTestCaseFilterCommandLineOptionsProvider : CommandLineOptionsProviderBase +{ + public const string TestCaseFilterOptionName = "filter"; + + public MSTestTestCaseFilterCommandLineOptionsProvider(IExtension extension) + : base(extension, [new CommandLineOption(TestCaseFilterOptionName, PlatformAdapterResources.TestCaseFilterOptionDescription, ArgumentArity.ExactlyOne, false)]) + { + } +} +#endif diff --git a/src/Adapter/MSTest.TestAdapter/TestingPlatformAdapter/MSTestTestFramework.cs b/src/Adapter/MSTest.TestAdapter/TestingPlatformAdapter/MSTestTestFramework.cs index 7768de015f..3d27a9eb09 100644 --- a/src/Adapter/MSTest.TestAdapter/TestingPlatformAdapter/MSTestTestFramework.cs +++ b/src/Adapter/MSTest.TestAdapter/TestingPlatformAdapter/MSTestTestFramework.cs @@ -3,8 +3,6 @@ #if !WINDOWS_UWP using Microsoft.Testing.Extensions.TrxReport.Abstractions; -using Microsoft.Testing.Extensions.VSTestBridge.Capabilities; -using Microsoft.Testing.Extensions.VSTestBridge.Resources; using Microsoft.Testing.Platform.Capabilities.TestFramework; using Microsoft.Testing.Platform.Extensions.Messages; using Microsoft.Testing.Platform.Extensions.TestFramework; @@ -16,6 +14,7 @@ using Microsoft.Testing.Platform.Telemetry; using Microsoft.Testing.Platform.TestHost; using Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter; +using Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.Resources; using Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.TestingPlatformAdapter; using Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices; @@ -79,7 +78,7 @@ public MSTestTestFramework(MSTestExtension extension, Func ]; private bool IsTrxEnabled - => _isTrxEnabled ??= _trxReportCapability is IInternalVSTestBridgeTrxReportCapability internalCapability + => _isTrxEnabled ??= _trxReportCapability is IMSTestTrxReportCapability internalCapability ? internalCapability.IsTrxEnabled : _trxReportCapability is { IsSupported: true }; @@ -91,7 +90,7 @@ public Task CreateTestSessionAsync(CreateTestSessionCon if (_sessionUid is not null) { - throw new InvalidOperationException(string.Format(CultureInfo.CurrentCulture, ExtensionResources.VSTestBridgedTestFrameworkSessionAlreadyCreatedErrorMessage, _sessionUid.Value.Value)); + throw new InvalidOperationException(string.Format(CultureInfo.CurrentCulture, PlatformAdapterResources.VSTestBridgedTestFrameworkSessionAlreadyCreatedErrorMessage, _sessionUid.Value.Value)); } _sessionUid = context.SessionUid; diff --git a/src/Adapter/MSTest.TestAdapter/TestingPlatformAdapter/MSTestTestRunParametersCommandLineOptionsProvider.cs b/src/Adapter/MSTest.TestAdapter/TestingPlatformAdapter/MSTestTestRunParametersCommandLineOptionsProvider.cs new file mode 100644 index 0000000000..7a37545b2f --- /dev/null +++ b/src/Adapter/MSTest.TestAdapter/TestingPlatformAdapter/MSTestTestRunParametersCommandLineOptionsProvider.cs @@ -0,0 +1,40 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +#if !WINDOWS_UWP +using Microsoft.Testing.Platform.CommandLine; +using Microsoft.Testing.Platform.Extensions; +using Microsoft.Testing.Platform.Extensions.CommandLine; +using Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.Resources; + +namespace Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.TestingPlatformAdapter; + +/// +/// MSTest-native command-line provider for the VSTest --test-parameter (TestRunParameters) option. Mirrors +/// the VSTest bridge's TestRunParametersCommandLineOptionsProvider (identical option name, description and +/// validation). +/// +[SuppressMessage("ApiDesign", "RS0030:Do not use banned APIs", Justification = "We can use MTP from this folder")] +internal sealed class MSTestTestRunParametersCommandLineOptionsProvider : CommandLineOptionsProviderBase +{ + public const string TestRunParameterOptionName = "test-parameter"; + + public MSTestTestRunParametersCommandLineOptionsProvider(IExtension extension) + : base(extension, [new CommandLineOption(TestRunParameterOptionName, PlatformAdapterResources.TestRunParameterOptionDescription, ArgumentArity.OneOrMore, false)]) + { + } + + public override Task ValidateOptionArgumentsAsync(CommandLineOption commandOption, string[] arguments) + { + foreach (string argument in arguments) + { + if (!argument.Contains('=')) + { + return ValidationResult.InvalidTask(string.Format(CultureInfo.CurrentCulture, PlatformAdapterResources.TestRunParameterOptionArgumentIsNotParameter, argument)); + } + } + + return ValidationResult.ValidTask; + } +} +#endif diff --git a/src/Adapter/MSTest.TestAdapter/TestingPlatformAdapter/TestApplicationBuilderExtensions.cs b/src/Adapter/MSTest.TestAdapter/TestingPlatformAdapter/TestApplicationBuilderExtensions.cs index eda3811103..7d56e5213e 100644 --- a/src/Adapter/MSTest.TestAdapter/TestingPlatformAdapter/TestApplicationBuilderExtensions.cs +++ b/src/Adapter/MSTest.TestAdapter/TestingPlatformAdapter/TestApplicationBuilderExtensions.cs @@ -4,11 +4,11 @@ #if !WINDOWS_UWP using Microsoft.Testing.Extensions.TrxReport.Abstractions; using Microsoft.Testing.Extensions.VSTestBridge.Capabilities; -using Microsoft.Testing.Extensions.VSTestBridge.Helpers; using Microsoft.Testing.Platform.Builder; using Microsoft.Testing.Platform.Capabilities.TestFramework; using Microsoft.Testing.Platform.Helpers; using Microsoft.Testing.Platform.Services; +using Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.TestingPlatformAdapter; namespace Microsoft.VisualStudio.TestTools.UnitTesting; @@ -18,9 +18,11 @@ namespace Microsoft.VisualStudio.TestTools.UnitTesting; [SuppressMessage("ApiDesign", "RS0030:Do not use banned APIs", Justification = "We can use MTP from this folder")] public static class TestApplicationBuilderExtensions { - // NOTE: We intentionally use this class and not VSTestBridgeExtensionBaseCapabilities because - // we don't want MSTest to use vstestProvider capability - private sealed class MSTestCapabilities : IInternalVSTestBridgeTrxReportCapability + // NOTE: We intentionally do not use the bridge's VSTestBridgeExtensionBaseCapabilities because we don't want + // MSTest to use the vstestProvider capability. This implements BOTH the bridge's TRX capability interface (read + // by MSTestBridgedTestFramework, the current default) and MSTest's native one (read by MSTestTestFramework), so + // both frameworks observe the same TRX enablement. + private sealed class MSTestCapabilities : IInternalVSTestBridgeTrxReportCapability, IMSTestTrxReportCapability { public bool IsTrxEnabled { get; private set; } @@ -38,11 +40,21 @@ void ITrxReportCapability.Enable() public static void AddMSTest(this ITestApplicationBuilder testApplicationBuilder, Func> getTestAssemblies) { MSTestExtension extension = new(); - testApplicationBuilder.AddRunSettingsService(extension); - testApplicationBuilder.AddTestCaseFilterService(extension); - testApplicationBuilder.AddTestRunParametersService(extension); + + // Register MSTest's own command-line options, runsettings configuration source and environment-variable + // provider natively (identical option names/descriptions to the VSTest bridge), so both the native and the + // bridged framework read them by name. + if (testApplicationBuilder is TestApplicationBuilder concreteBuilder) + { + concreteBuilder.Configuration.AddConfigurationSource(() => new MSTestRunSettingsConfigurationProvider(extension, new SystemFileSystem())); + } + + testApplicationBuilder.CommandLine.AddProvider(() => new MSTestRunSettingsCommandLineOptionsProvider(extension)); + testApplicationBuilder.CommandLine.AddProvider(() => new MSTestTestCaseFilterCommandLineOptionsProvider(extension)); + testApplicationBuilder.CommandLine.AddProvider(() => new MSTestTestRunParametersCommandLineOptionsProvider(extension)); testApplicationBuilder.AddMaximumFailedTestsService(extension); - testApplicationBuilder.AddRunSettingsEnvironmentVariableProvider(extension); + testApplicationBuilder.TestHostControllers.AddEnvironmentVariableProvider(serviceProvider + => new MSTestRunSettingsEnvironmentVariableProvider(extension, serviceProvider.GetCommandLineOptions(), serviceProvider.GetFileSystem(), serviceProvider.GetEnvironment())); // When the experimental native MTP integration is enabled, MSTest plugs into Microsoft.Testing.Platform // directly (no VSTest bridge object model on the request path). Off by default, so shipping behavior is diff --git a/src/Adapter/MSTest.TestAdapter/buildTransitive/common/MSTest.TestAdapter.targets b/src/Adapter/MSTest.TestAdapter/buildTransitive/common/MSTest.TestAdapter.targets index 04cfa32158..c0fa96f247 100644 --- a/src/Adapter/MSTest.TestAdapter/buildTransitive/common/MSTest.TestAdapter.targets +++ b/src/Adapter/MSTest.TestAdapter/buildTransitive/common/MSTest.TestAdapter.targets @@ -48,13 +48,29 @@ + + + + + %(RecursiveDir) + + + + - + @@ -67,9 +83,9 @@ This is populated here (rather than inside CopyMSTestV2Resources) so the item group is available when the Inputs/Outputs of CopyMSTestV2Resources are evaluated for incremental build. --> - + - %(CurrentUICultureHierarchy.Identity) + %(CurrentUICultureHierarchy.Identity)\ @@ -79,12 +95,12 @@ Condition=" '$(EnableMSTestV2CopyResources)' == 'true' " DependsOnTargets="GetMSTestV2CultureHierarchy" Inputs="@(MSTestV2Files)" - Outputs="@(MSTestV2Files->'$(TargetDir)%(UICulture)\%(FileName)%(Extension)')"> + Outputs="@(MSTestV2Files->'$(TargetDir)%(UICulture)%(FileName)%(Extension)')"> - %(MSTestV2Files.UICulture)\%(FileName).dll + %(MSTestV2Files.UICulture)%(FileName).dll PreserveNewest %(FullPath) False