Skip to content
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

Decide what features will be supported in version 4.0 #65

Open
CharliePoole opened this issue Mar 15, 2022 · 13 comments
Open

Decide what features will be supported in version 4.0 #65

CharliePoole opened this issue Mar 15, 2022 · 13 comments
Labels
Design Decision A major decision we need to make before proceeding
Milestone

Comments

@CharliePoole
Copy link
Contributor

In fact, we don't yet know whether there will be a 4.0! However, in order to decide that, we first need to figure out what new features it would need to be viable and whether we can support them. A bit circular, but there you have it. :-)

@CharliePoole CharliePoole self-assigned this Mar 15, 2022
@CharliePoole CharliePoole added the Design Decision A major decision we need to make before proceeding label Mar 15, 2022
@CharliePoole CharliePoole added this to the 4.0 milestone Mar 15, 2022
@CharliePoole
Copy link
Contributor Author

CharliePoole commented Mar 15, 2022

File types currently supported by the extension (plus one we don't support):

  • .sln - Visual Studio Solution

  • .csproj - C# Project (See formats below)

  • .vbproj - Visual Basic Project (See formats below)

  • .fsproj - F# Project (See formats below)

  • .vjsproj - Visual J# Project (Product discontinued 2007, de-supported 2017)

  • .vcproj - Old-style Visual C++ Project (Superseded in 2010)

  • vcxproj - Used for Visual C++ since 2010 - UNSUPPORTED

File Formats

Some file types support multiple formats. Our current code identifies three formats:

  • Legacy - Root XML Element is VisualStudioProject
    Supported for C#, VB, F# and C++. Format is slightly different for C++, so we use separate code to parse it.

  • Non-Sdk - Root Element is Project and has no Sdk attribute
    Supported for C#, VB and F#. This was our "new format" through 2017.

  • SDK - Root Element is Project with an Sdk attribute
    Partially supported for C#, VB and F#. That is, we have added fixes to support SDK projects on an adhoc basis.

@nunit/engine-team @nunit/core-team Comments on what we should continue to support / remove / add ?

@jnm2
Copy link

jnm2 commented Mar 15, 2022

Seen, but no comments in particular. I haven't used the project loader.

@rprouse
Copy link
Member

rprouse commented Mar 16, 2022

To be honest, I don't think I've used the project loader in more than a decade and I don't think many people do. All modern CI/CD systems use explicit names or globs to find test assemblies and every project that I've seen uses a standard naming convention for tests because of that.

I wish this project wasn't included by default so we could get some true download numbers, but my vote would be to deprecate it.

@CharliePoole
Copy link
Contributor Author

I have seen a number of console questions or issues where people use the project (or solution) on the command-line. I used to reply "just don't do that" but I found that the answer was not terribly well received. :-)

If we deprecate the the extension rather than dropping it, we will still need to make some set of features work for the 4.0 engine. I was trying to define the minimal set we need to support if we support it at all.

Are you actually suggesting we should drop it? That's a valid point of view, but I'd like to be clear what you mean.

@manfred-brands
Copy link
Member

I also think it is outside scope. It is impossible to support for complex project.
At work we have one big solution (500+ project) using rake (ruby make), nunit uses cake others custom scripts. Even those that do use msbuild, might require dotnet tools installed or .target files from referenced nuget packages.

@CharliePoole
Copy link
Contributor Author

@manfred-brands Same question as to Rob... are you saying we shouldn't do a 4.0 at all? That is, cancel the project as it's already a given that the 3.x builds won't work with the 4.0 engine? I want to be really clear about what we're deciding here.

@manfred-brands
Copy link
Member

@CharliePoole Yes. NUnit should be about testing, not about building.
We should integrate with dotnet test and allow testing on already compiled binaries.

@CharliePoole
Copy link
Contributor Author

@manfred-brands OK that's clear. Let's see what others say.

@CharliePoole
Copy link
Contributor Author

@manfred-brands Just noticed something in your last comment, which I should answer...

There is no thought of having NUnit run against anything other than compiled binaries. The project loader extension doesn't build anything, and I agree that would be out of scope. It merely examines a project to ascertain what output assemblies it creates and tells the engine about them. Frankly, that's complicated enough.

@manfred-brands
Copy link
Member

It merely examines a project to ascertain what output assemblies it creates and tells the engine about them

@CharliePoole good to know, but my opinion hasn't changed. There are many different ways to define the output directory, including in files not referenced like Directory.Build.props.

@CharliePoole
Copy link
Contributor Author

I guess we have all the comments we're going to have, so here's a plan...

As has been separately discussed, we will not continue to supply this extension unless the approach proposed by @rprouse in #25 can be made to work. I'm currently working on a spike to try it out. Consequently, there are two possible paths here:

  1. The Spike Doesn't work or is not practical

    In that case, I'll do a final release of the extension (version 4.0) with no improvements but capable of running under the 4.0 engine. There will be no further maintenance of the extension.

  2. The Spike Works

    In that case, we'll use MsBuild and support only the languages and format it supports. Anyone using legacy formats that MsBuild does not support will need to stick with the 3.0 console.

Either outcome will significantly reduce our level of effort in supporting extensions.

@mikkelbu
Copy link
Member

I can live with both paths. I think I've used this extension at my old company (a couple of years ago), but only for .sln-files (in the SDK format I think). That being said I think it is fine to accept that we don't have time to solve every problem.

@CharliePoole CharliePoole removed their assignment Jan 19, 2023
@CharliePoole
Copy link
Contributor Author

Leaving this for the new lead to handle

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Design Decision A major decision we need to make before proceeding
Projects
None yet
Development

No branches or pull requests

5 participants