New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
TestFilter does not support test cases with spaces and special characters #876
Comments
This is a known issue, part of the FQN issues. |
any plans for adding support for such characters? |
@plainionist See repro here: https://github.com/nunit/nunit3-vs-adapter.issues/tree/master/Issue711 Note that the '.' in the name causes Test Explorer to add an extra hierarchy node. The Test Explorer uses the '.' in the testname as a node separator. Works both with and without Real-time Test Discovery |
@OsirisTerje An exception occurred while invoking executor 'executor://nunit3testexecutor/': Unexpected Word 'work' at position 64 in selection expression. ==> pls reopen the issue thx |
Reopened. @plainionist Can you confirm the repro at https://github.com/nunit/nunit3-vs-adapter.issues/tree/master/Issue711 reproduces your issue? If not, can you update it so that it does? |
as far as i can see in the code the repro would probably sufficient to reproduce the issue, at least i see spaces in the test cases. "--filter "FullyQualifiedName="" then we would probably get the same issue. dotnet test --filter "FullyQualifiedName=Unit To Test Input A equals itself" results in
putting the test name in quotes gives similar issues
|
Hi, we have the same problem with version 4.1.0. |
Hello, I'm facing a similar issue where my test name is having spaces. nunit3-vs-adapter/src/NUnitTestAdapter/TestFilterConverter/Tokenizer.cs Lines 297 to 301 in 0b118ec
Is there any reason for this? Perhaps, we can make it more context aware and not always skip the spaces. |
The problem with spaces in names is that the test names are very close to FQN for classes and namespaces, and as they can't have spaces, the test names can't either. The real time discovery in Visual Studio would not be able to handle them. For categories using string parameters, it can in principle have spaces, but once they are made like typed categories, they can't. |
Well, I'm running this from the command line, so I wonder if there could be a later point in time where the spaces could be stripped for Visual Studio. |
The adapter tries to deduct from where it is being called, there are properties being set to that effect. But you then have to bring that information all the way down through the code, or it could swap in different tokenizers based on that, so surely, it could be doable. Would you like to give it a try? |
I might want to give this a try, could you point me in the right direction where the call site deduction is done? |
You should not pass the information to the tokenizer, but create a new (derived) class for it, so that you change the method there. That way the existing code is not changed. |
Hello. I have a similar issue ##[error]An exception occurred while invoking executor 'executor://nunit3testexecutor/': Unexpected Word 'test' at position 15 in selection expression. |
@AnastasiaDen16 And what is your test expression ? |
@OsirisTerje |
@AnastasiaDen16 OK, but your test expression ? What is it ? There are known FQN issues, is yours different and what is it? |
@OsirisTerje I don't understand, what do you mean. I have this issue the first time. |
@AnastasiaDen16 This issue is about testfilters with spaces and special characters. Does your situation have the same? The error message says you have an unexpected word "test" in the selection expression. How does your selection expression look like? You say you run from Visual Studio, then I expect you have something in the Search part of the Test Explorer window, right? What is that? Next, Is there something special about the test code you have, can you shorten down that code and show how the method definition there look like, or even better, provide a very small repro solution. Does this help? |
@OsirisTerje Thank you, I understand what the problem is. Yes, I have a space in the category. As I understand, this way of describing the category is unacceptable, right? |
Yes, it will not work for now. We'll see if we can fix this over time, but the workaround is to make it into a single word. |
@OsirisTerje Ok, thank you for answer. |
@NastassiaDzianisava A small tip: When I create categories, I normally make them as typesafe classes, as shown in the figure below: |
Tried to use new libraries again, but it still hasn't been fixed |
In F# i can use spaces in class and method names like this: [<TestFixture>]
module ``Calculating team availabilities (Fruits)`` = if i then use dnSpy to look into the compiled code it looks like this
|
@plainionist Good point! Now where that is failing, is then the question. ........ |
@OsirisTerje i think the missing support is in the parser of the filter at least as far as i understood the callstack of the error i posted at the beginning of this thread |
@plainionist I am a bit out of available time at the moment, but if you feel you see where it is, a and how it could be fixed, a PR would be very appreciated. |
The problem seems to be in the Till then, a workaround is to AND together all the valid parts of the rhs value, like this: --filter "testcase&with&spaces" (reported also in this SO) |
Running "dotnet test" with a test filter for a test case with spaces the following exception occurs:
dotnet test --settings ../../../build/.runsettings --no-build --logger "trx;LogFileName=C:\Temp\0.trx" --filter "FullyQualifiedName="BackLook.Apps.WorkInProgress.Specs.Computing work in progress Project.No Workpackages exist"" --no-build
Test run for C:\ws\BackLook\system\App.WorkInProgress\BackLook.Apps.WorkInProgress.Specs\bin\Debug\net48\BackLook.Apps.WorkInProgress.Specs.dll (.NETFramework,Version=v4.8)
Microsoft (R) Test Execution Command Line Tool Version 16.10.0
Copyright (c) Microsoft Corporation. All rights reserved.
Starting test execution, please wait...
A total of 1 test files matched the specified pattern.
An exception occurred while invoking executor 'executor://nunit3testexecutor/': Unexpected Word 'work' at position 64 in selection expression.
Stack trace:
at NUnit.VisualStudio.TestAdapter.TestFilterConverter.TestFilterParser.Expect(Token[] valid) in D:\repos\NUnit\nunit3-vs-adapter\src\NUnitTestAdapter\TestFilterConverter\TestFilterParser.cs:line 252
at NUnit.VisualStudio.TestAdapter.TestFilterConverter.TestFilterParser.Parse(String input) in D:\repos\NUnit\nunit3-vs-adapter\src\NUnitTestAdapter\TestFilterConverter\TestFilterParser.cs:line 66
at NUnit.VisualStudio.TestAdapter.NUnitTestFilterBuilder.ConvertVsTestFilterToNUnitFilter(IVsTestFilter vsFilter) in D:\repos\NUnit\nunit3-vs-adapter\src\NUnitTestAdapter\NUnitTestFilterBuilder.cs:line 72
at NUnit.VisualStudio.TestAdapter.NUnit3TestExecutor.RunTests(IEnumerable
1 sources, IRunContext runContext, IFrameworkHandle frameworkHandle) in D:\repos\NUnit\nunit3-vs-adapter\src\NUnitTestAdapter\NUnit3TestExecutor.cs:line 116 at Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Execution.RunTestsWithSources.InvokeExecutor(LazyExtension
2 executor, Tuple2 executorUriExtensionTuple, RunContext runContext, IFrameworkHandle frameworkHandle) at Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Execution.BaseRunTests.<>c__DisplayClass48_0.<RunTestInternalWithExecutors>b__0() at Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.PlatformThread.<>c__DisplayClass0_0.<Run>b__0() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.PlatformThread.Run(Action action, PlatformApartmentState apartmentState, Boolean waitForCompletion) at Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Execution.BaseRunTests.TryToRunInSTAThread(Action action, Boolean waitForCompletion) at Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Execution.BaseRunTests.RunTestInternalWithExecutors(IEnumerable
1 executorUriExtensionMap, Int64 totalTests)according to https://docs.microsoft.com/de-de/dotnet/core/testing/selective-unit-tests?pivots=mstest spaces and special characters can be encoded using "url style encoding" but that causes the same exception.
example: --filter "FullyQualifiedName=BackLook.Apps.WorkInProgress.Specs.Computing%20work%20in%20progress%20Project.No%20Workpackages%20exist"
i am using
and "dotnet cli" version 5.0.301
The text was updated successfully, but these errors were encountered: