fsprojects / TickSpec

Lean .NET BDD framework with powerful F# integration
Apache License 2.0
133 stars 23 forks source link

Enable linux build #22

Closed mchaloupka closed 5 years ago

mchaloupka commented 5 years ago

To enable linux build I had:

Moreover, I have enabled linux build for AppVeyor. It does not make sense to have multiple linux builds. It is just for consideration how it looks.

Disadvantage of this change is losing paket functionality (synchronization of nuget reference versions). Advantage is simplification of usage as now it is not anything extra needed to build it (except .NET Core SDK on all platforms and .NET 4.5.2 target on Windows). Moreover, it gives option mentioned by @bartelink to have various dependencies for targets.

What do you think about this change?

michalkovy commented 5 years ago

It is good to have Linux build working.

I wouldn't stop supporting Mono, I think it is still very valuable platform and usable in scenarios where .NET Core isn't. The proposed change removes it.

I like Paket, I agree that it's value is lower with .NET Core. I like that you fix by this the Linux build. However, it doesn't mean I wouldn't like to reintroduce it once Mono is fixed or there is .NET Core version of Paket. But it is just personal opinion, I am fine with it. And Paket supports different versions of dependencies for various targets (see https://github.com/fsprojects/Paket/pull/3046/files).

mchaloupka commented 5 years ago

First of all, this pull request is to open discussion.

To be honest, I think that if we will be able to rework the emits in a way that it will work similarly even under netstandard, then we can remove the net45 target completely. That means that mono will not be needed for anything.

Right now, it does not remove Mono support. It just removes the ability to compile net45 targets under Mono. The nuget still can be used under Mono.

The only question is whether we want to use paket or not. If so, then we need to have working paket under Mono again. Or we need to get paket running without Mono.

michalkovy commented 5 years ago

I think it is great that you opened the discussion.

You are right that Mono is still supported for client usage even with this change. However, I also value ability of being compiling and testing TickSpec itself using Mono. Even, if we had .NET Standard version of TickSpec only it is good to support using Mono for both .NET Standard compilation and .NET45 tests running.

mchaloupka commented 5 years ago

Another question is which builds we want to have enabled:

It probably does not make sense to have multiple Linux builds. From the speed perspective it looks that it works the best if we will have AppVeyor just for Windows and Travis for Linux. Do you agree @bartelink and @michalkovy ?

bartelink commented 5 years ago

You have more knowledge and context, but based on my knowledge, that makes sense so feel free to go ahead with that if you see fit.