Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion documentation/documentation/exceptions/throw.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ Func<Task> doSomething = async () =>
};
var exception = await Should.ThrowAsync<DivideByZeroException>(() => doSomething());
```
<sup><a href='/src/Shouldly.Tests/ShouldThrowAsync/FuncOfTaskScenarioAsync.cs#L107-L113' title='Snippet source file'>snippet source</a> | <a href='#snippet-shouldthrowasync' title='Start of snippet'>anchor</a></sup>
<sup><a href='/src/Shouldly.Tests/ShouldThrowAsync/FuncOfTaskScenarioAsync.cs#L103-L109' title='Snippet source file'>snippet source</a> | <a href='#snippet-shouldthrowasync' title='Start of snippet'>anchor</a></sup>
<!-- endSnippet -->

**Exception**
Expand Down
2 changes: 1 addition & 1 deletion src/DeterministicTests/DeterministicTests.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.10.0" />
<PackageReference Include="Xunit" Version="2.4.2" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.5" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.8.1" PrivateAssets="all" />
<ProjectReference Include="..\Shouldly\Shouldly.csproj" />
<PackageReference Include="DotNet.ReproducibleBuilds" Version="1.1.1">
<PrivateAssets>all</PrivateAssets>
Expand Down
4 changes: 2 additions & 2 deletions src/DocumentationExamples/DocumentationExamples.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@
<Compile Include="..\Shouldly.Tests\ConventionTests\IgnoreOnAppVeyorLinuxFact.cs" Link="IgnoreOnAppVeyorLinuxFact.cs" />
<ProjectReference Include="..\Shouldly\Shouldly.csproj" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.10.0" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.5" />
<PackageReference Include="xunit" Version="2.4.2" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.8.1" PrivateAssets="all" />
<PackageReference Include="xunit" Version="2.8.1" />
<PackageReference Include="PublicApiGenerator" Version="11.1.0" />
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="4.10.0" />
</ItemGroup>
Expand Down
4 changes: 2 additions & 2 deletions src/Shouldly.Tests/ShouldCompleteInTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ public void ShouldCompleteInTask_WhenFinishAfterTimeout()
{
var ex = Should.Throw<ShouldlyTimeoutException>(() =>
Should.CompleteIn(
() => Task.Factory.StartNew(
() => Task.Run(
() => Thread.Sleep(LongWait)),
ShortWait,
"Some additional context"));
Expand Down Expand Up @@ -108,7 +108,7 @@ public void ShouldCompleteInTaskT_WhenFinishAfterTimeout()
var ex = Should.Throw<ShouldlyTimeoutException>(
() => Should.CompleteIn(() =>
{
return Task.Factory.StartNew(
return Task.Run(
() =>
{
Thread.Sleep(LongWait);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,7 @@ public class FuncOfTaskOfStringScenario
[UseCulture("en-US")]
public void FuncOfTaskOfStringScenarioShouldFail()
{
var task = Task.Factory.StartNew<string>(() => throw new RankException(),
CancellationToken.None, TaskCreationOptions.None,
TaskScheduler.Default);
var task = Task.Run(() => throw new RankException());
Verify.ShouldFail(() =>
task.ShouldNotThrow("Some additional context"),

Expand Down Expand Up @@ -40,9 +38,7 @@ Some additional context
[Fact]
public void ShouldPass()
{
var task = Task.Factory.StartNew(() => "Foo",
CancellationToken.None, TaskCreationOptions.None,
TaskScheduler.Default);
var task = Task.Run(() => "Foo");

var result = task.ShouldNotThrow();
result.ShouldBe("Foo");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,11 +30,9 @@ Some additional context
[Fact]
public void ShouldPass()
{
var task = Task.Factory.StartNew(() => "foo",
CancellationToken.None, TaskCreationOptions.None,
TaskScheduler.Default);
var task = Task.Run(() => "foo");

var result = task.ShouldNotThrow(TimeSpan.FromSeconds(2.0));
var result = task.ShouldNotThrow(TimeSpan.FromSeconds(15));
result.ShouldBe("foo");
}
}
8 changes: 2 additions & 6 deletions src/Shouldly.Tests/ShouldNotThrow/FuncOfTaskScenario.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,7 @@ public class FuncOfTaskScenario
[UseCulture("en-US")]
public void FuncOfTaskScenarioShouldFail()
{
var task = Task.Factory.StartNew(() => throw new RankException(),
CancellationToken.None, TaskCreationOptions.None,
TaskScheduler.Default);
var task = Task.Run(() => throw new RankException());

Verify.ShouldFail(() =>
task.ShouldNotThrow("Some additional context"),
Expand Down Expand Up @@ -41,9 +39,7 @@ Some additional context
[Fact]
public void ShouldPass()
{
var task = Task.Factory.StartNew(() => { },
CancellationToken.None, TaskCreationOptions.None,
TaskScheduler.Default);
var task = Task.Run(() => { });

task.ShouldNotThrow();
}
Expand Down
8 changes: 2 additions & 6 deletions src/Shouldly.Tests/ShouldNotThrow/TaskOfTScenario.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,7 @@ public class TaskOfTScenario
[UseCulture("en-US")]
public void TaskOfTScenarioShouldFail()
{
var task = Task.Factory.StartNew<string>(() => throw new RankException(),
CancellationToken.None, TaskCreationOptions.None,
TaskScheduler.Default);
var task = Task.Run(() => throw new RankException());

Verify.ShouldFail(() =>
task.ShouldNotThrow("Some additional context"),
Expand Down Expand Up @@ -41,9 +39,7 @@ Some additional context
[Fact]
public void ShouldPass()
{
var task = Task.Factory.StartNew(() => "foo",
CancellationToken.None, TaskCreationOptions.None,
TaskScheduler.Default);
var task = Task.Run(() => "foo");

var result = task.ShouldNotThrow();
result.ShouldBe("foo");
Expand Down
10 changes: 3 additions & 7 deletions src/Shouldly.Tests/ShouldNotThrow/TaskOfTWithTimeoutScenario.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,11 @@ public class TaskOfTWithTimeoutScenario
[Fact]
public void ShouldThrowAWobbly()
{
var task = Task.Factory.StartNew(() =>
var task = Task.Run(() =>
{
Task.Delay(5000).Wait();
return "foo";
},
CancellationToken.None, TaskCreationOptions.None,
TaskScheduler.Default);
});

var ex = Should.Throw<ShouldCompleteInException>(() => task.ShouldNotThrow(TimeSpan.FromSeconds(0.5), "Some additional context"));

Expand All @@ -31,9 +29,7 @@ Some additional context
[Fact]
public void ShouldPass()
{
var task = Task.Factory.StartNew(() => "foo",
CancellationToken.None, TaskCreationOptions.None,
TaskScheduler.Default);
var task = Task.Run(() => "foo");

var result = task.ShouldNotThrow(TimeSpan.FromSeconds(3));
result.ShouldBe("foo");
Expand Down
8 changes: 2 additions & 6 deletions src/Shouldly.Tests/ShouldNotThrow/TaskScenario.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,7 @@ public class TaskScenario
[UseCulture("en-US")]
public void TaskScenarioShouldFail()
{
var task = Task.Factory.StartNew(() => throw new RankException(),
CancellationToken.None, TaskCreationOptions.None,
TaskScheduler.Default);
var task = Task.Run(() => throw new RankException());

Verify.ShouldFail(() =>
task.ShouldNotThrow("Some additional context"),
Expand Down Expand Up @@ -41,9 +39,7 @@ Some additional context
[Fact]
public void ShouldPass()
{
var task = Task.Factory.StartNew(() => { },
CancellationToken.None, TaskCreationOptions.None,
TaskScheduler.Default);
var task = Task.Run(() => { });

task.ShouldNotThrow();
}
Expand Down
42 changes: 17 additions & 25 deletions src/Shouldly.Tests/ShouldNotThrowAsync/FuncOfTaskScenarioAsync.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,50 +3,44 @@
public class FuncOfTaskScenarioAsync
{
[Fact]
public void ShouldThrowAWobbly()
public async Task ShouldThrowAWobbly()
{
try
{
var task = Task.Factory.StartNew(() => throw new InvalidOperationException("exception message"),
CancellationToken.None, TaskCreationOptions.None,
TaskScheduler.Default);
var task = Task.Run(() => throw new InvalidOperationException("exception message"));

task.ShouldNotThrowAsync("Some additional context").Wait();
await task.ShouldNotThrowAsync("Some additional context");
}
catch (AggregateException e)
catch (ShouldAssertException ex)
{
var inner = e.Flatten().InnerException;
var ex = inner.ShouldBeOfType<ShouldAssertException>();
ex.Message.ShouldContainWithoutWhitespace(
"""
`task` should not throw but threw System.InvalidOperationException with message "exception message"
`await task` should not throw but threw System.InvalidOperationException with message "exception message"
Additional Info: Some additional context
""");
}
}

[Fact]
public void ShouldThrowAWobbly_WithNestedTasks()
public async Task ShouldThrowAWobbly_WithNestedTasks()
{
try
{
var task = Task.Factory.StartNew(() => {
var child1 = Task.Factory.StartNew(() => {
var child2 = Task.Factory.StartNew(() =>
throw new InvalidOperationException(), TaskCreationOptions.AttachedToParent);
var task = Task.Run(() => {
var child1 = Task.Run(() => {
var child2 = Task.Run(() =>
throw new InvalidOperationException());
throw new InvalidOperationException();
}, TaskCreationOptions.AttachedToParent);
});
});

task.ShouldNotThrowAsync("Some additional context").Wait();
await task.ShouldNotThrowAsync("Some additional context");
}
catch (AggregateException e)
catch (ShouldAssertException ex)
{
var inner = e.Flatten().InnerException;
var ex = inner.ShouldBeOfType<ShouldAssertException>();
ex.Message.ShouldContainWithoutWhitespace(
"""
`task`
`await task`
should not throw but threw
System.AggregateException
""");
Expand All @@ -59,12 +53,10 @@ Some additional context
}

[Fact]
public void ShouldPass()
public async Task ShouldPass()
{
var task = Task.Factory.StartNew(() => { },
CancellationToken.None, TaskCreationOptions.None,
TaskScheduler.Default);
var task = Task.Run(() => { });

task.ShouldNotThrowAsync().Wait();
await task.ShouldNotThrowAsync();
}
}
16 changes: 4 additions & 12 deletions src/Shouldly.Tests/ShouldThrow/FuncOfTaskOfStringScenario.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,7 @@ public class FuncOfTaskOfStringScenario
[Fact]
public void FuncOfTaskOfStringScenarioShouldFail()
{
var task = Task.Factory.StartNew(() => "Foo",
CancellationToken.None, TaskCreationOptions.None,
TaskScheduler.Default);
var task = Task.Run(() => "Foo");

Verify.ShouldFail(() =>
task.ShouldThrow<InvalidOperationException>("Some additional context"),
Expand Down Expand Up @@ -38,9 +36,7 @@ Some additional context
[Fact]
public void FuncOfTaskOfStringScenarioShouldFail_ExceptionTypePassedIn()
{
var task = Task.Factory.StartNew(() => "Foo",
CancellationToken.None, TaskCreationOptions.None,
TaskScheduler.Default);
var task = Task.Run(() => "Foo");

Verify.ShouldFail(() =>
task.ShouldThrow("Some additional context", typeof(InvalidOperationException)),
Expand Down Expand Up @@ -71,9 +67,7 @@ Some additional context
[Fact]
public void ShouldPass()
{
var task = Task.Factory.StartNew<string>(() => throw new InvalidOperationException(),
CancellationToken.None, TaskCreationOptions.None,
TaskScheduler.Default);
var task = Task.Run(() => throw new InvalidOperationException());

var ex = task.ShouldThrow<InvalidOperationException>();

Expand All @@ -84,9 +78,7 @@ public void ShouldPass()
[Fact]
public void ShouldPass_ExceptionTypePassedIn()
{
var task = Task.Factory.StartNew<string>(() => throw new InvalidOperationException(),
CancellationToken.None, TaskCreationOptions.None,
TaskScheduler.Default);
var task = Task.Run(() => throw new InvalidOperationException());

var ex = task.ShouldThrow(typeof(InvalidOperationException));

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,9 +71,7 @@ Some additional context
[Fact]
public void ShouldPass()
{
var task = Task.Factory.StartNew<string>(() => throw new InvalidOperationException(),
CancellationToken.None, TaskCreationOptions.None,
TaskScheduler.Default);
var task = Task.Run(() => throw new InvalidOperationException());

var ex = task.ShouldThrow<InvalidOperationException>();

Expand All @@ -84,9 +82,7 @@ public void ShouldPass()
[Fact]
public void ShouldPass_ExceptionTypePassedIn()
{
var task = Task.Factory.StartNew<string>(() => throw new InvalidOperationException(),
CancellationToken.None, TaskCreationOptions.None,
TaskScheduler.Default);
var task = Task.Run(() => throw new InvalidOperationException());

var ex = task.ShouldThrow(typeof(InvalidOperationException));

Expand Down
16 changes: 4 additions & 12 deletions src/Shouldly.Tests/ShouldThrow/FuncOfTaskScenario.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,7 @@ public class FuncOfTaskScenario
[Fact]
public void FuncOfTaskScenarioShouldFail()
{
var task = Task.Factory.StartNew(() => { },
CancellationToken.None, TaskCreationOptions.None,
TaskScheduler.Default);
var task = Task.Run(() => { });

Verify.ShouldFail(() =>
task.ShouldThrow<InvalidOperationException>("Some additional context"),
Expand Down Expand Up @@ -38,9 +36,7 @@ Some additional context
[Fact]
public void FuncOfTaskScenarioShouldFail_ExceptionTypePassedIn()
{
var task = Task.Factory.StartNew(() => { },
CancellationToken.None, TaskCreationOptions.None,
TaskScheduler.Default);
var task = Task.Run(() => { });

Verify.ShouldFail(() =>
task.ShouldThrow("Some additional context", typeof(InvalidOperationException)),
Expand Down Expand Up @@ -71,9 +67,7 @@ Some additional context
[Fact]
public void ShouldPass()
{
var task = Task.Factory.StartNew(() => throw new InvalidOperationException(),
CancellationToken.None, TaskCreationOptions.None,
TaskScheduler.Default);
var task = Task.Run(() => throw new InvalidOperationException());

var ex = task.ShouldThrow<InvalidOperationException>();

Expand All @@ -84,9 +78,7 @@ public void ShouldPass()
[Fact]
public void ShouldPass_ExceptionTypePassedIn()
{
var task = Task.Factory.StartNew(() => throw new InvalidOperationException(),
CancellationToken.None, TaskCreationOptions.None,
TaskScheduler.Default);
var task = Task.Run(() => throw new InvalidOperationException());

var ex = task.ShouldThrow(typeof(InvalidOperationException));

Expand Down
Loading