fsprojects / TickSpec

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

Xunit wiring #48

Closed deyanp closed 3 years ago

deyanp commented 3 years ago

The problem with TickSpec.Xunit is that I get an error afterwards if I have

open TickSpec
open Xunit

It thinks Xunit is from TickSpec.Xunit...

bartelink commented 3 years ago

The problem with TickSpec.Xunit is that I get an error afterwards if I have It thinks Xunit is from TickSpec.Xunit...

Hm, the technical answer is to do open global.Xunit to disambiguation

However I suspect the best middle way may thus be to go with TickSpec.Xunit2 as the name as a way to sidestep that?

I really hope others have better, less ugly, ideas though ;)

deyanp commented 3 years ago

I have no issue renaming whatever is not fine

deyanp commented 3 years ago

@bartelink , I see an issue with TickSpec.Xunit2 ... I guess this XunitSerializableScenario will be also in use for Xunit3 (I do not see there any hint they would be decommissioning it, just they want to go to exe/separate process) ... so then people using Xunit3 will need to reference TickSpec.Xunit2 or?

bartelink commented 3 years ago

I see an issue with TickSpec.Xunit2 ... I guess this XunitSerializableScenario will be also in use for Xunit3 (I do not see there any hint they would be decommissioning it, just they want to go to exe/separate process) ... so then people using Xunit3 will need to reference TickSpec.Xunit2 or?

Well in that case, I'd tend to go back to TickSpec.Xunit as the name, even if people need to do the global. (same happens for FsCheck.Xunit and probably other things

deyanp commented 3 years ago

@mchaloupka @bartelink can someone tell me what is this build error we are getting? Did I destroy something? Is it looking for a UnitTest project for TickSpec.Xunit, or sth else?

mchaloupka commented 3 years ago

@mchaloupka @bartelink can someone tell me what is this build error we are getting? Did I destroy something? Is it looking for a UnitTest project for TickSpec.Xunit, or sth else?

The build is failing because you have created a library only for .net 5, but you use it from project that targets also .net 4.5. You can change all test projects that reference xunit to target only .net 5.

Other problem is that our build process looks for projects referencing one of the test frameworks and considers them as test projects. That is not the case for the wiring project. Take a look at: https://github.com/fsprojects/TickSpec/blob/master/build.fsx#L75

Please move the wiring project into specific "wiring" folder and exclude that folder from the patterns.

mchaloupka commented 3 years ago

Please update also the following project to use the new wiring: https://github.com/fsprojects/TickSpec/blob/master/Examples/ByFeature/CustomContainer/CustomContainer.fsproj

deyanp commented 3 years ago

The build is failing because you have created a library only for .net 5, but you use it from project that targets also .net 4.5. You can change all test projects that reference xunit to target only .net 5.

@mchaloupka , not sure what you mean, I have this in TickSpec.Xunit.fsproj - like all other fsprojs ...:

<?xml version="1.0" encoding="utf-8"?>
<Project Sdk="Microsoft.NET.Sdk">
  <Import Project="../../netfx.props" />
  <PropertyGroup>
    <TargetFrameworks>net5.0;net452</TargetFrameworks>
    <RootNamespace>TickSpec.Xunit</RootNamespace>
  </PropertyGroup>

changed TargetFrameworks to netstandard2.0;net452 but still to no avail ..

deyanp commented 3 years ago

exclude that folder from the patterns

@mchaloupka , how to do that?

-- "Wiring/*.fsproj"

does not seem to work ..

mchaloupka commented 3 years ago

I am happy with how it looks. @bartelink do you have any further comments?

After merging, it will be needed to make necessary changes to change the nuget publishing. However, that will be a separate commit (and I expect that it may be simplest if I do it).

bartelink commented 3 years ago

Nope, no further comments. Nice work @deyanp

deyanp commented 3 years ago

Hmm, @mchaloupka , getting another build error now, only for the ubuntu build:

NotSupportedException: Unsupported log file format. Latest supported version is 10, the log file has version 13

Any idea what I have done wrong this time?

mchaloupka commented 3 years ago

Hmm, @mchaloupka , getting another build error now, only for the ubuntu build:

NotSupportedException: Unsupported log file format. Latest supported version is 10, the log file has version 13

Any idea what I have done wrong this time?

That is unrelated issue with your changes. I tried to rebuild the last commit in main branch and it failed on Ubuntu too. See https://ci.appveyor.com/project/sergey-tihon/tickspec/build/job/aj3ugabns1s46u40

I have tried googling it and it seems that it happens time to time when msbuild changes logging version but it is not yet supported by fake. I have created PR to fix it: https://github.com/fsprojects/TickSpec/pull/50 Unless anyone shouts that there is some issue, I will merge it tomorrow and that should fix also the build in this PR (after merging the changes in).

mchaloupka commented 3 years ago

I have merged the changes in. Please merge it in this PR and that should resolve your build issue. After that, I will merge your changes in.

mchaloupka commented 3 years ago

The changes have been merged. Thanks for your contribution!