diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json
index 831d039..da200cd 100644
--- a/.config/dotnet-tools.json
+++ b/.config/dotnet-tools.json
@@ -3,7 +3,7 @@
"isRoot": true,
"tools": {
"cake.tool": {
- "version": "3.0.0",
+ "version": "4.0.0",
"commands": [
"dotnet-cake"
]
diff --git a/Source/HttpMultipartParser.Benchmark/HttpMultipartParser.Benchmark.csproj b/Source/HttpMultipartParser.Benchmark/HttpMultipartParser.Benchmark.csproj
index 84e9779..f0b5551 100644
--- a/Source/HttpMultipartParser.Benchmark/HttpMultipartParser.Benchmark.csproj
+++ b/Source/HttpMultipartParser.Benchmark/HttpMultipartParser.Benchmark.csproj
@@ -6,7 +6,7 @@
-
+
diff --git a/Source/HttpMultipartParser.UnitTests/HttpMultipartFormParserUnitTests.cs b/Source/HttpMultipartParser.UnitTests/HttpMultipartFormParserUnitTests.cs
index 99474b2..2674893 100644
--- a/Source/HttpMultipartParser.UnitTests/HttpMultipartFormParserUnitTests.cs
+++ b/Source/HttpMultipartParser.UnitTests/HttpMultipartFormParserUnitTests.cs
@@ -46,7 +46,7 @@ public void ConstructingWithNullStreamFails()
[Fact]
public async Task ConstructingWithNullStreamFailsAsync()
{
- await Assert.ThrowsAsync(() => MultipartFormDataParser.ParseAsync(Stream.Null)).ConfigureAwait(false);
+ await Assert.ThrowsAsync(() => MultipartFormDataParser.ParseAsync(Stream.Null));
}
///
@@ -89,7 +89,7 @@ line 3
using (Stream stream = TestUtil.StringToStream(request, Encoding.UTF8))
{
- var parser = await MultipartFormDataParser.ParseAsync(stream, Encoding.UTF8).ConfigureAwait(false);
+ var parser = await MultipartFormDataParser.ParseAsync(stream, Encoding.UTF8);
Assert.Equal($"line 1{Environment.NewLine}line 2{Environment.NewLine}line 3", parser.GetParameterValue("multilined"));
Assert.Equal($"line 1{Environment.NewLine}line 2{Environment.NewLine}line 3", parser.GetParameterValues("multilined").First());
}
@@ -139,7 +139,7 @@ public async Task HandlesFileWithLastCrLfAtBufferLengthAsync()
using (Stream stream = TestUtil.StringToStream(request, Encoding.UTF8))
{
- var parser = await MultipartFormDataParser.ParseAsync(stream, Encoding.UTF8).ConfigureAwait(false);
+ var parser = await MultipartFormDataParser.ParseAsync(stream, Encoding.UTF8);
}
}
@@ -187,7 +187,7 @@ public async Task HandlesFileWithLastCrLfImmediatlyAfterBufferLengthAsync()
using (Stream stream = TestUtil.StringToStream(request, Encoding.UTF8))
{
- var parser = await MultipartFormDataParser.ParseAsync(stream, Encoding.UTF8).ConfigureAwait(false);
+ var parser = await MultipartFormDataParser.ParseAsync(stream, Encoding.UTF8);
}
}
@@ -211,7 +211,7 @@ public async Task HandlesFileWithoutFilename()
using (Stream stream = TestUtil.StringToStream(request, Encoding.UTF8))
{
- var parser = await MultipartFormDataParser.ParseAsync(stream, Encoding.UTF8).ConfigureAwait(false);
+ var parser = await MultipartFormDataParser.ParseAsync(stream, Encoding.UTF8);
Assert.Single(parser.Files);
}
}
diff --git a/Source/HttpMultipartParser.UnitTests/HttpMultipartParser.UnitTests.csproj b/Source/HttpMultipartParser.UnitTests/HttpMultipartParser.UnitTests.csproj
index e2a59f7..9a92979 100644
--- a/Source/HttpMultipartParser.UnitTests/HttpMultipartParser.UnitTests.csproj
+++ b/Source/HttpMultipartParser.UnitTests/HttpMultipartParser.UnitTests.csproj
@@ -7,13 +7,13 @@
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
-
+
+
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/Source/HttpMultipartParser.UnitTests/ParserScenarios/BlankLinesBeforeFirstBoundary.cs b/Source/HttpMultipartParser.UnitTests/ParserScenarios/BlankLinesBeforeFirstBoundary.cs
index 2d6597b..6fcf0d2 100644
--- a/Source/HttpMultipartParser.UnitTests/ParserScenarios/BlankLinesBeforeFirstBoundary.cs
+++ b/Source/HttpMultipartParser.UnitTests/ParserScenarios/BlankLinesBeforeFirstBoundary.cs
@@ -56,7 +56,7 @@ public async Task CanAutoDetectBoundaryAsync()
{
using (Stream stream = TestUtil.StringToStream(_testCase.Request, Encoding.UTF8))
{
- var parser = await MultipartFormDataParser.ParseAsync(stream, Encoding.UTF8).ConfigureAwait(false);
+ var parser = await MultipartFormDataParser.ParseAsync(stream, Encoding.UTF8);
Assert.True(_testCase.Validate(parser));
}
}
diff --git a/Source/HttpMultipartParser.UnitTests/ParserScenarios/EmptyForm.cs b/Source/HttpMultipartParser.UnitTests/ParserScenarios/EmptyForm.cs
index af366ef..c53f5a6 100644
--- a/Source/HttpMultipartParser.UnitTests/ParserScenarios/EmptyForm.cs
+++ b/Source/HttpMultipartParser.UnitTests/ParserScenarios/EmptyForm.cs
@@ -51,7 +51,7 @@ public async Task Parse_empty_form_boundary_specified_async()
{
using (Stream stream = TestUtil.StringToStream(_testCase.Request, Encoding.UTF8))
{
- var parser = await MultipartFormDataParser.ParseAsync(stream, "----WebKitFormBoundaryb4SfPlH9Bv7c2PKS").ConfigureAwait(false);
+ var parser = await MultipartFormDataParser.ParseAsync(stream, "----WebKitFormBoundaryb4SfPlH9Bv7c2PKS");
Assert.True(_testCase.Validate(parser));
}
}
@@ -61,7 +61,7 @@ public async Task Parse_empty_form_boundary_omitted_async()
{
using (Stream stream = TestUtil.StringToStream(_testCase.Request, Encoding.UTF8))
{
- var parser = await MultipartFormDataParser.ParseAsync(stream).ConfigureAwait(false);
+ var parser = await MultipartFormDataParser.ParseAsync(stream);
Assert.True(_testCase.Validate(parser));
}
}
diff --git a/Source/HttpMultipartParser.UnitTests/ParserScenarios/ExactBufferTruncate.cs b/Source/HttpMultipartParser.UnitTests/ParserScenarios/ExactBufferTruncate.cs
index 5ca0ab4..1c99ef6 100644
--- a/Source/HttpMultipartParser.UnitTests/ParserScenarios/ExactBufferTruncate.cs
+++ b/Source/HttpMultipartParser.UnitTests/ParserScenarios/ExactBufferTruncate.cs
@@ -67,7 +67,7 @@ public async Task CanHandleFinalDashesInSeperateBufferFromEndBinaryAsync()
{
using (Stream stream = TestUtil.StringToStream(_testCase.Request, Encoding.UTF8))
{
- var parser = await MultipartFormDataParser.ParseAsync(stream, "boundary", Encoding.UTF8, 16).ConfigureAwait(false);
+ var parser = await MultipartFormDataParser.ParseAsync(stream, "boundary", Encoding.UTF8, 16);
Assert.True(_testCase.Validate(parser));
}
}
diff --git a/Source/HttpMultipartParser.UnitTests/ParserScenarios/FileIsLast.cs b/Source/HttpMultipartParser.UnitTests/ParserScenarios/FileIsLast.cs
index a1fbfe2..1fa167c 100644
--- a/Source/HttpMultipartParser.UnitTests/ParserScenarios/FileIsLast.cs
+++ b/Source/HttpMultipartParser.UnitTests/ParserScenarios/FileIsLast.cs
@@ -57,7 +57,7 @@ public async Task CanHandleFileAsLastSectionAsync()
{
using (Stream stream = TestUtil.StringToStream(_testCase.Request, Encoding.UTF8))
{
- var parser = await MultipartFormDataParser.ParseAsync(stream, Encoding.UTF8).ConfigureAwait(false);
+ var parser = await MultipartFormDataParser.ParseAsync(stream, Encoding.UTF8);
Assert.True(_testCase.Validate(parser));
}
}
diff --git a/Source/HttpMultipartParser.UnitTests/ParserScenarios/FileWithAdditionalParameter.cs b/Source/HttpMultipartParser.UnitTests/ParserScenarios/FileWithAdditionalParameter.cs
index 404fa57..06a1349 100644
--- a/Source/HttpMultipartParser.UnitTests/ParserScenarios/FileWithAdditionalParameter.cs
+++ b/Source/HttpMultipartParser.UnitTests/ParserScenarios/FileWithAdditionalParameter.cs
@@ -56,7 +56,7 @@ public async Task FileWithAdditionalParameterTest_Async()
{
using (Stream stream = TestUtil.StringToStream(_testCase.Request, Encoding.UTF8))
{
- var parser = await MultipartFormDataParser.ParseAsync(stream, Encoding.UTF8).ConfigureAwait(false);
+ var parser = await MultipartFormDataParser.ParseAsync(stream, Encoding.UTF8);
Assert.True(_testCase.Validate(parser));
}
}
diff --git a/Source/HttpMultipartParser.UnitTests/ParserScenarios/FullPathAsFileName.cs b/Source/HttpMultipartParser.UnitTests/ParserScenarios/FullPathAsFileName.cs
index bab5d44..0917c21 100644
--- a/Source/HttpMultipartParser.UnitTests/ParserScenarios/FullPathAsFileName.cs
+++ b/Source/HttpMultipartParser.UnitTests/ParserScenarios/FullPathAsFileName.cs
@@ -48,7 +48,7 @@ public async Task HandlesFullPathAsFileNameWithSemicolonCorrectlyAsync()
{
using (Stream stream = TestUtil.StringToStream(_testCase.Request, Encoding.UTF8))
{
- var parser = await MultipartFormDataParser.ParseAsync(stream, Encoding.UTF8).ConfigureAwait(false);
+ var parser = await MultipartFormDataParser.ParseAsync(stream, Encoding.UTF8);
Assert.True(_testCase.Validate(parser));
}
}
diff --git a/Source/HttpMultipartParser.UnitTests/ParserScenarios/InvalidPart.cs b/Source/HttpMultipartParser.UnitTests/ParserScenarios/InvalidPart.cs
index 5fb2c7e..1bb320f 100644
--- a/Source/HttpMultipartParser.UnitTests/ParserScenarios/InvalidPart.cs
+++ b/Source/HttpMultipartParser.UnitTests/ParserScenarios/InvalidPart.cs
@@ -44,7 +44,7 @@ public async Task Exception_is_thrown_when_attempting_to_parse_async()
// The default behavior is to throw an exception when the form contains an invalid section.
using (Stream stream = TestUtil.StringToStream(_testCase.Request, Encoding.UTF8))
{
- await Assert.ThrowsAsync(() => MultipartFormDataParser.ParseAsync(stream)).ConfigureAwait(false);
+ await Assert.ThrowsAsync(() => MultipartFormDataParser.ParseAsync(stream));
}
}
@@ -54,8 +54,8 @@ public void Invalid_part_is_ignored()
using (Stream stream = TestUtil.StringToStream(_testCase.Request, Encoding.UTF8))
{
var parser = MultipartFormDataParser.Parse(stream, ignoreInvalidParts: true);
- Assert.Equal(0, parser.Files.Count);
- Assert.Equal(0, parser.Parameters.Count);
+ Assert.Empty(parser.Files);
+ Assert.Empty(parser.Parameters);
}
}
@@ -64,9 +64,9 @@ public async Task Invalid_part_is_ignored_async()
{
using (Stream stream = TestUtil.StringToStream(_testCase.Request, Encoding.UTF8))
{
- var parser = await MultipartFormDataParser.ParseAsync(stream, ignoreInvalidParts: true).ConfigureAwait(false);
- Assert.Equal(0, parser.Files.Count);
- Assert.Equal(0, parser.Parameters.Count);
+ var parser = await MultipartFormDataParser.ParseAsync(stream, ignoreInvalidParts: true);
+ Assert.Empty(parser.Files);
+ Assert.Empty(parser.Parameters);
}
}
}
diff --git a/Source/HttpMultipartParser.UnitTests/ParserScenarios/MixedSingleByteAndMultiByteWidth.cs b/Source/HttpMultipartParser.UnitTests/ParserScenarios/MixedSingleByteAndMultiByteWidth.cs
index be0956f..3f0fc16 100644
--- a/Source/HttpMultipartParser.UnitTests/ParserScenarios/MixedSingleByteAndMultiByteWidth.cs
+++ b/Source/HttpMultipartParser.UnitTests/ParserScenarios/MixedSingleByteAndMultiByteWidth.cs
@@ -58,7 +58,7 @@ public async Task CanHandleMixedSingleByteAndMultiByteWidthCharactersAsync()
Stream stream = TestUtil.StringToStream(_testCase.Request, Encoding.UTF8)
)
{
- var parser = await MultipartFormDataParser.ParseAsync(stream, Encoding.UTF8).ConfigureAwait(false);
+ var parser = await MultipartFormDataParser.ParseAsync(stream, Encoding.UTF8);
Assert.True(_testCase.Validate(parser));
}
}
diff --git a/Source/HttpMultipartParser.UnitTests/ParserScenarios/MixedUnicodeWidthAndAsciiWidthCharacters.cs b/Source/HttpMultipartParser.UnitTests/ParserScenarios/MixedUnicodeWidthAndAsciiWidthCharacters.cs
index 87d35d3..fae54fd 100644
--- a/Source/HttpMultipartParser.UnitTests/ParserScenarios/MixedUnicodeWidthAndAsciiWidthCharacters.cs
+++ b/Source/HttpMultipartParser.UnitTests/ParserScenarios/MixedUnicodeWidthAndAsciiWidthCharacters.cs
@@ -49,7 +49,7 @@ public async Task CanHandleUnicodeWidthAndAsciiWidthCharactersAsync()
using (
Stream stream = TestUtil.StringToStream(_testCase.Request, Encoding.UTF8))
{
- var parser = await MultipartFormDataParser.ParseAsync(stream, Encoding.UTF8).ConfigureAwait(false);
+ var parser = await MultipartFormDataParser.ParseAsync(stream, Encoding.UTF8);
Assert.True(_testCase.Validate(parser));
}
}
diff --git a/Source/HttpMultipartParser.UnitTests/ParserScenarios/MjpegStream.cs b/Source/HttpMultipartParser.UnitTests/ParserScenarios/MjpegStream.cs
index 0e06910..f0e8169 100644
--- a/Source/HttpMultipartParser.UnitTests/ParserScenarios/MjpegStream.cs
+++ b/Source/HttpMultipartParser.UnitTests/ParserScenarios/MjpegStream.cs
@@ -64,7 +64,7 @@ public async Task MjpegStreamTest_Async()
{
using (Stream stream = TestUtil.StringToStream(_testCase.Request, Encoding.UTF8))
{
- var parser = await MultipartFormDataParser.ParseAsync(stream, "MOBOTIX_Fast_Serverpush", Encoding.UTF8, 32).ConfigureAwait(false);
+ var parser = await MultipartFormDataParser.ParseAsync(stream, "MOBOTIX_Fast_Serverpush", Encoding.UTF8, 32);
Assert.True(_testCase.Validate(parser));
}
}
diff --git a/Source/HttpMultipartParser.UnitTests/ParserScenarios/MultipleFilesWithEmptyName.cs b/Source/HttpMultipartParser.UnitTests/ParserScenarios/MultipleFilesWithEmptyName.cs
index d82b3ec..e9a25b7 100644
--- a/Source/HttpMultipartParser.UnitTests/ParserScenarios/MultipleFilesWithEmptyName.cs
+++ b/Source/HttpMultipartParser.UnitTests/ParserScenarios/MultipleFilesWithEmptyName.cs
@@ -64,7 +64,7 @@ public async Task MultipleFilesWithNoNameAsync()
{
using (Stream stream = TestUtil.StringToStream(_testCase.Request, Encoding.UTF8))
{
- var parser = await MultipartFormDataParser.ParseAsync(stream, "boundary", Encoding.UTF8, 16).ConfigureAwait(false);
+ var parser = await MultipartFormDataParser.ParseAsync(stream, "boundary", Encoding.UTF8, 16);
Assert.True(_testCase.Validate(parser));
}
}
diff --git a/Source/HttpMultipartParser.UnitTests/ParserScenarios/MultipleFilesWithOmittedName.cs b/Source/HttpMultipartParser.UnitTests/ParserScenarios/MultipleFilesWithOmittedName.cs
index 713463e..ff10e81 100644
--- a/Source/HttpMultipartParser.UnitTests/ParserScenarios/MultipleFilesWithOmittedName.cs
+++ b/Source/HttpMultipartParser.UnitTests/ParserScenarios/MultipleFilesWithOmittedName.cs
@@ -64,7 +64,7 @@ public async Task MultipleFilesWithOmittedNameAsync()
{
using (Stream stream = TestUtil.StringToStream(_testCase.Request, Encoding.UTF8))
{
- var parser = await MultipartFormDataParser.ParseAsync(stream, "boundary", Encoding.UTF8, 16).ConfigureAwait(false);
+ var parser = await MultipartFormDataParser.ParseAsync(stream, "boundary", Encoding.UTF8, 16);
Assert.True(_testCase.Validate(parser));
}
}
diff --git a/Source/HttpMultipartParser.UnitTests/ParserScenarios/MultipleFilesWithSameName.cs b/Source/HttpMultipartParser.UnitTests/ParserScenarios/MultipleFilesWithSameName.cs
index 354b8ea..b2ee78b 100644
--- a/Source/HttpMultipartParser.UnitTests/ParserScenarios/MultipleFilesWithSameName.cs
+++ b/Source/HttpMultipartParser.UnitTests/ParserScenarios/MultipleFilesWithSameName.cs
@@ -64,7 +64,7 @@ public async Task MultipleFilesWithSameNameTestAsync()
{
using (Stream stream = TestUtil.StringToStream(_testCase.Request, Encoding.UTF8))
{
- var parser = await MultipartFormDataParser.ParseAsync(stream, "boundary", Encoding.UTF8, 16).ConfigureAwait(false);
+ var parser = await MultipartFormDataParser.ParseAsync(stream, "boundary", Encoding.UTF8, 16);
Assert.True(_testCase.Validate(parser));
}
}
diff --git a/Source/HttpMultipartParser.UnitTests/ParserScenarios/MultipleParamsAndFiles.cs b/Source/HttpMultipartParser.UnitTests/ParserScenarios/MultipleParamsAndFiles.cs
index f0da85b..1d6716c 100644
--- a/Source/HttpMultipartParser.UnitTests/ParserScenarios/MultipleParamsAndFiles.cs
+++ b/Source/HttpMultipartParser.UnitTests/ParserScenarios/MultipleParamsAndFiles.cs
@@ -78,7 +78,7 @@ public async Task MultipleFilesAndParamsTestAsync()
{
using (Stream stream = TestUtil.StringToStream(_testCase.Request, Encoding.UTF8))
{
- var parser = await MultipartFormDataParser.ParseAsync(stream, "boundary", Encoding.UTF8, 16).ConfigureAwait(false);
+ var parser = await MultipartFormDataParser.ParseAsync(stream, "boundary", Encoding.UTF8, 16);
Assert.True(_testCase.Validate(parser));
}
}
diff --git a/Source/HttpMultipartParser.UnitTests/ParserScenarios/SeveralValuesWithSameProperty.cs b/Source/HttpMultipartParser.UnitTests/ParserScenarios/SeveralValuesWithSameProperty.cs
index 583e961..12df270 100644
--- a/Source/HttpMultipartParser.UnitTests/ParserScenarios/SeveralValuesWithSameProperty.cs
+++ b/Source/HttpMultipartParser.UnitTests/ParserScenarios/SeveralValuesWithSameProperty.cs
@@ -57,7 +57,7 @@ public async Task AcceptSeveralValuesWithSamePropertyAsync()
{
using (Stream stream = TestUtil.StringToStream(_testCase.Request, Encoding.UTF8))
{
- var parser = await MultipartFormDataParser.ParseAsync(stream, Encoding.UTF8).ConfigureAwait(false);
+ var parser = await MultipartFormDataParser.ParseAsync(stream, Encoding.UTF8);
Assert.True(_testCase.Validate(parser));
}
}
diff --git a/Source/HttpMultipartParser.UnitTests/ParserScenarios/SingleFile.cs b/Source/HttpMultipartParser.UnitTests/ParserScenarios/SingleFile.cs
index 8b1e2b5..a57e86c 100644
--- a/Source/HttpMultipartParser.UnitTests/ParserScenarios/SingleFile.cs
+++ b/Source/HttpMultipartParser.UnitTests/ParserScenarios/SingleFile.cs
@@ -55,7 +55,7 @@ public async Task SingleFileTest_Async()
{
using (Stream stream = TestUtil.StringToStream(_testCase.Request, Encoding.UTF8))
{
- var parser = await MultipartFormDataParser.ParseAsync(stream, "boundary", Encoding.UTF8, 16).ConfigureAwait(false);
+ var parser = await MultipartFormDataParser.ParseAsync(stream, "boundary", Encoding.UTF8, 16);
Assert.True(_testCase.Validate(parser));
}
}
diff --git a/Source/HttpMultipartParser.UnitTests/ParserScenarios/SmallData.cs b/Source/HttpMultipartParser.UnitTests/ParserScenarios/SmallData.cs
index 4c218a4..26f405a 100644
--- a/Source/HttpMultipartParser.UnitTests/ParserScenarios/SmallData.cs
+++ b/Source/HttpMultipartParser.UnitTests/ParserScenarios/SmallData.cs
@@ -73,8 +73,8 @@ public async Task SmallDataTestAsync()
{
// The boundary is missing the first two -- in accordance with the multipart
// spec. (A -- is added by the parser, this boundary is what would be sent in the
- // requset header)
- var parser = await MultipartFormDataParser.ParseAsync(stream, "---------------------------265001916915724").ConfigureAwait(false);
+ // request header)
+ var parser = await MultipartFormDataParser.ParseAsync(stream, "---------------------------265001916915724");
Assert.True(_testCase.Validate(parser));
}
}
diff --git a/Source/HttpMultipartParser.UnitTests/ParserScenarios/StreamPositionHasBeenMoved.cs b/Source/HttpMultipartParser.UnitTests/ParserScenarios/StreamPositionHasBeenMoved.cs
index d73101f..bb0ff9a 100644
--- a/Source/HttpMultipartParser.UnitTests/ParserScenarios/StreamPositionHasBeenMoved.cs
+++ b/Source/HttpMultipartParser.UnitTests/ParserScenarios/StreamPositionHasBeenMoved.cs
@@ -96,12 +96,12 @@ public async Task End_of_stream_and_boundary_is_known_async()
{
// Move the Position to the end of the stream
var sr = new StreamReader(stream);
- var content = await sr.ReadToEndAsync().ConfigureAwait(false);
+ var content = await sr.ReadToEndAsync();
// When the developer provides the boundary, the parser does not have to determine the boundary
// and therefore the DetectBoundary method is not invoked which avoids the problem altogether.
// However, the parser is unable to find the provided boundary and throws a meaningful exception.
- await Assert.ThrowsAsync(() => MultipartFormDataParser.ParseAsync(stream, "MyBoundary")).ConfigureAwait(false);
+ await Assert.ThrowsAsync(() => MultipartFormDataParser.ParseAsync(stream, "MyBoundary"));
}
}
@@ -112,10 +112,10 @@ public async Task End_of_stream_and_boundary_is_unknown_async()
{
// Move the Position to the end of the stream
var sr = new StreamReader(stream);
- var content = await sr.ReadToEndAsync().ConfigureAwait(false);
+ var content = await sr.ReadToEndAsync();
// As of March 2022, the problem was resolved by throwing a more descriptive exception
- await Assert.ThrowsAsync(() => MultipartFormDataParser.ParseAsync(stream)).ConfigureAwait(false);
+ await Assert.ThrowsAsync(() => MultipartFormDataParser.ParseAsync(stream));
}
}
@@ -130,7 +130,7 @@ public async Task Middle_of_stream_and_boundary_is_known_async()
// When the developer provides the boundary, the parser does not have to determine the boundary
// and therefore the DetectBoundary method is not invoked which avoids the problem altogether.
// However, the parser is unable to find the provided boundary and throws a meaningful exception.
- await Assert.ThrowsAsync(() => MultipartFormDataParser.ParseAsync(stream, "MyBoundary")).ConfigureAwait(false);
+ await Assert.ThrowsAsync(() => MultipartFormDataParser.ParseAsync(stream, "MyBoundary"));
}
}
@@ -143,7 +143,7 @@ public async Task Middle_of_stream_and_boundary_is_unknown_async()
stream.Position = 3;
// As of March 2022, the problem was resolved by throwing a more descriptive exception
- await Assert.ThrowsAsync(() => MultipartFormDataParser.ParseAsync(stream)).ConfigureAwait(false);
+ await Assert.ThrowsAsync(() => MultipartFormDataParser.ParseAsync(stream));
}
}
}
diff --git a/Source/HttpMultipartParser.UnitTests/ParserScenarios/TinyData.cs b/Source/HttpMultipartParser.UnitTests/ParserScenarios/TinyData.cs
index e5104b3..dac5432 100644
--- a/Source/HttpMultipartParser.UnitTests/ParserScenarios/TinyData.cs
+++ b/Source/HttpMultipartParser.UnitTests/ParserScenarios/TinyData.cs
@@ -67,7 +67,7 @@ public async Task CanAutoDetectBoundaryAsync()
{
using (Stream stream = TestUtil.StringToStream(_testCase.Request, Encoding.UTF8))
{
- var parser = await MultipartFormDataParser.ParseAsync(stream).ConfigureAwait(false);
+ var parser = await MultipartFormDataParser.ParseAsync(stream);
Assert.True(_testCase.Validate(parser));
}
}
@@ -95,7 +95,7 @@ public async Task CanDetectBoundariesCrossBufferAsync()
{
using (Stream stream = TestUtil.StringToStream(_testCase.Request, Encoding.UTF8))
{
- var parser = await MultipartFormDataParser.ParseAsync(stream, "boundary", Encoding.UTF8, 16).ConfigureAwait(false);
+ var parser = await MultipartFormDataParser.ParseAsync(stream, "boundary", Encoding.UTF8, 16);
Assert.True(_testCase.Validate(parser));
}
}
@@ -127,7 +127,7 @@ public async Task CorrectlyHandleMixedNewlineFormatsAsync()
string request = regex.Replace(_testCase.Request, "\r\n", 1);
using (Stream stream = TestUtil.StringToStream(request, Encoding.UTF8))
{
- var parser = await MultipartFormDataParser.ParseAsync(stream, "boundary", Encoding.UTF8).ConfigureAwait(false);
+ var parser = await MultipartFormDataParser.ParseAsync(stream, "boundary", Encoding.UTF8);
Assert.True(_testCase.Validate(parser));
}
}
@@ -155,7 +155,7 @@ public async Task CorrectlyHandlesCRLFAsync()
string request = _testCase.Request.Replace("\n", "\r\n");
using (Stream stream = TestUtil.StringToStream(request, Encoding.UTF8))
{
- var parser = await MultipartFormDataParser.ParseAsync(stream, "boundary", Encoding.UTF8).ConfigureAwait(false);
+ var parser = await MultipartFormDataParser.ParseAsync(stream, "boundary", Encoding.UTF8);
Assert.True(_testCase.Validate(parser));
}
}
@@ -181,7 +181,7 @@ public async Task TinyDataTestAsync()
{
using (Stream stream = TestUtil.StringToStream(_testCase.Request, Encoding.UTF8))
{
- var parser = await MultipartFormDataParser.ParseAsync(stream, "boundary", Encoding.UTF8).ConfigureAwait(false);
+ var parser = await MultipartFormDataParser.ParseAsync(stream, "boundary", Encoding.UTF8);
Assert.True(_testCase.Validate(parser));
}
}
@@ -204,7 +204,7 @@ public async Task DoesNotCloseTheStreamAsync()
{
using (Stream stream = TestUtil.StringToStream(_testCase.Request, Encoding.UTF8))
{
- var parser = await MultipartFormDataParser.ParseAsync(stream, "boundary", Encoding.UTF8).ConfigureAwait(false);
+ var parser = await MultipartFormDataParser.ParseAsync(stream, "boundary", Encoding.UTF8);
Assert.True(_testCase.Validate(parser));
stream.Position = 0;
@@ -227,7 +227,7 @@ public async Task GetParameterValueReturnsNullIfNoParameterFoundAsync()
{
using (Stream stream = TestUtil.StringToStream(_testCase.Request, Encoding.UTF8))
{
- var parser = await MultipartFormDataParser.ParseAsync(stream, "boundary", Encoding.UTF8).ConfigureAwait(false);
+ var parser = await MultipartFormDataParser.ParseAsync(stream, "boundary", Encoding.UTF8);
Assert.Null(parser.GetParameterValue("does not exist"));
}
}
@@ -296,7 +296,7 @@ public async Task CanDetectBoundriesWithNewLineInNextBufferAsync()
{
using (Stream stream = TestUtil.StringToStream(_testCase.Request, Encoding.UTF8))
{
- var parser = await MultipartFormDataParser.ParseAsync(stream, "boundary", Encoding.UTF8, i).ConfigureAwait(false);
+ var parser = await MultipartFormDataParser.ParseAsync(stream, "boundary", Encoding.UTF8, i);
Assert.True(_testCase.Validate(parser), $"Failure in buffer length {i}");
}
}
diff --git a/Source/HttpMultipartParser.UnitTests/ParserScenarios/UnclosedBoundary.cs b/Source/HttpMultipartParser.UnitTests/ParserScenarios/UnclosedBoundary.cs
index b963732..d865aeb 100644
--- a/Source/HttpMultipartParser.UnitTests/ParserScenarios/UnclosedBoundary.cs
+++ b/Source/HttpMultipartParser.UnitTests/ParserScenarios/UnclosedBoundary.cs
@@ -48,7 +48,7 @@ public async Task DoesntInfiniteLoopOnUnclosedInputAsync()
using (Stream stream = TestUtil.StringToStream(_testCase.Request, Encoding.UTF8))
{
// We expect this to throw!
- await Assert.ThrowsAsync(() => MultipartFormDataParser.ParseAsync(stream, Encoding.UTF8)).ConfigureAwait(false);
+ await Assert.ThrowsAsync(() => MultipartFormDataParser.ParseAsync(stream, Encoding.UTF8));
}
}
}
diff --git a/Source/HttpMultipartParser.UnitTests/RebufferableBinaryReaderUnitTests.cs b/Source/HttpMultipartParser.UnitTests/RebufferableBinaryReaderUnitTests.cs
index 111028a..dceb7ae 100644
--- a/Source/HttpMultipartParser.UnitTests/RebufferableBinaryReaderUnitTests.cs
+++ b/Source/HttpMultipartParser.UnitTests/RebufferableBinaryReaderUnitTests.cs
@@ -76,9 +76,9 @@ public async Task CanReadSingleCharacterBufferAsync()
{
var reader = new RebufferableBinaryReader(TestUtil.StringToStreamNoBom("abc"), Encoding.UTF8);
- Assert.Equal('a', await reader.ReadAsync().ConfigureAwait(false));
- Assert.Equal('b', await reader.ReadAsync().ConfigureAwait(false));
- Assert.Equal('c', await reader.ReadAsync().ConfigureAwait(false));
+ Assert.Equal('a', await reader.ReadAsync());
+ Assert.Equal('b', await reader.ReadAsync());
+ Assert.Equal('c', await reader.ReadAsync());
}
[Fact]
@@ -87,12 +87,12 @@ public async Task CanReadSingleCharacterOverBuffersAsync()
var reader = new RebufferableBinaryReader(TestUtil.StringToStreamNoBom("def"), Encoding.UTF8);
reader.Buffer(TestUtil.StringToByteNoBom("abc"));
- Assert.Equal('a', await reader.ReadAsync().ConfigureAwait(false));
- Assert.Equal('b', await reader.ReadAsync().ConfigureAwait(false));
- Assert.Equal('c', await reader.ReadAsync().ConfigureAwait(false));
- Assert.Equal('d', await reader.ReadAsync().ConfigureAwait(false));
- Assert.Equal('e', await reader.ReadAsync().ConfigureAwait(false));
- Assert.Equal('f', await reader.ReadAsync().ConfigureAwait(false));
+ Assert.Equal('a', await reader.ReadAsync());
+ Assert.Equal('b', await reader.ReadAsync());
+ Assert.Equal('c', await reader.ReadAsync());
+ Assert.Equal('d', await reader.ReadAsync());
+ Assert.Equal('e', await reader.ReadAsync());
+ Assert.Equal('f', await reader.ReadAsync());
}
[Fact]
@@ -100,13 +100,13 @@ public async Task CanReadMixedAsciiAndUTFCharactersAsync()
{
var reader = new RebufferableBinaryReader(TestUtil.StringToStreamNoBom("abcdèfg"), Encoding.UTF8);
- Assert.Equal('a', await reader.ReadAsync().ConfigureAwait(false));
- Assert.Equal('b', await reader.ReadAsync().ConfigureAwait(false));
- Assert.Equal('c', await reader.ReadAsync().ConfigureAwait(false));
- Assert.Equal('d', await reader.ReadAsync().ConfigureAwait(false));
- Assert.Equal('è', await reader.ReadAsync().ConfigureAwait(false));
- Assert.Equal('f', await reader.ReadAsync().ConfigureAwait(false));
- Assert.Equal('g', await reader.ReadAsync().ConfigureAwait(false));
+ Assert.Equal('a', await reader.ReadAsync());
+ Assert.Equal('b', await reader.ReadAsync());
+ Assert.Equal('c', await reader.ReadAsync());
+ Assert.Equal('d', await reader.ReadAsync());
+ Assert.Equal('è', await reader.ReadAsync());
+ Assert.Equal('f', await reader.ReadAsync());
+ Assert.Equal('g', await reader.ReadAsync());
}
[Fact]
@@ -115,13 +115,13 @@ public async Task CanReadMixedAsciiAndUTFCharactersOverBuffersAsync()
var reader = new RebufferableBinaryReader(TestUtil.StringToStreamNoBom("dèfg"), Encoding.UTF8);
reader.Buffer(TestUtil.StringToByteNoBom("abc"));
- Assert.Equal('a', await reader.ReadAsync().ConfigureAwait(false));
- Assert.Equal('b', await reader.ReadAsync().ConfigureAwait(false));
- Assert.Equal('c', await reader.ReadAsync().ConfigureAwait(false));
- Assert.Equal('d', await reader.ReadAsync().ConfigureAwait(false));
- Assert.Equal('è', await reader.ReadAsync().ConfigureAwait(false));
- Assert.Equal('f', await reader.ReadAsync().ConfigureAwait(false));
- Assert.Equal('g', await reader.ReadAsync().ConfigureAwait(false));
+ Assert.Equal('a', await reader.ReadAsync());
+ Assert.Equal('b', await reader.ReadAsync());
+ Assert.Equal('c', await reader.ReadAsync());
+ Assert.Equal('d', await reader.ReadAsync());
+ Assert.Equal('è', await reader.ReadAsync());
+ Assert.Equal('f', await reader.ReadAsync());
+ Assert.Equal('g', await reader.ReadAsync());
}
#endregion
@@ -251,7 +251,7 @@ public async Task CanReadSingleBufferAsync()
var reader = new RebufferableBinaryReader(TestUtil.StringToStreamNoBom("6chars"), Encoding.UTF8);
var buffer = new byte[Encoding.UTF8.GetByteCount("6chars")];
- await reader.ReadAsync(buffer, 0, buffer.Length).ConfigureAwait(false);
+ await reader.ReadAsync(buffer, 0, buffer.Length);
string result = Encoding.UTF8.GetString(buffer);
Assert.Equal("6chars", result);
}
@@ -263,7 +263,7 @@ public async Task CanReadAcrossMultipleBuffersAsync()
reader.Buffer(TestUtil.StringToByteNoBom("6ch"));
var buffer = new byte[6];
- await reader.ReadAsync(buffer, 0, buffer.Length).ConfigureAwait(false);
+ await reader.ReadAsync(buffer, 0, buffer.Length);
Assert.Equal("6chars", Encoding.UTF8.GetString(buffer));
}
@@ -273,7 +273,7 @@ public async Task CanReadMixedAsciiAndUTF8Async()
var reader = new RebufferableBinaryReader(TestUtil.StringToStreamNoBom("5èats"), Encoding.UTF8);
var buffer = new byte[Encoding.UTF8.GetByteCount("5èats")];
- await reader.ReadAsync(buffer, 0, buffer.Length).ConfigureAwait(false);
+ await reader.ReadAsync(buffer, 0, buffer.Length);
string result = Encoding.UTF8.GetString(buffer);
Assert.Equal("5èats", result);
}
@@ -285,7 +285,7 @@ public async Task CanReadMixedAsciiAndUTF8AcrossMultipleBuffersAsync()
reader.Buffer(TestUtil.StringToByteNoBom(("5èa")));
var buffer = new byte[Encoding.UTF8.GetByteCount("5èats")];
- await reader.ReadAsync(buffer, 0, buffer.Length).ConfigureAwait(false);
+ await reader.ReadAsync(buffer, 0, buffer.Length);
string result = Encoding.UTF8.GetString(buffer);
Assert.Equal("5èats", result);
}
@@ -296,11 +296,11 @@ public async Task ReadCorrectlyHandlesSmallerBufferThenStreamAsync()
var reader = new RebufferableBinaryReader(TestUtil.StringToStreamNoBom("6chars"), Encoding.UTF8);
var buffer = new byte[4];
- await reader.ReadAsync(buffer, 0, buffer.Length).ConfigureAwait(false);
+ await reader.ReadAsync(buffer, 0, buffer.Length);
Assert.Equal("6cha", Encoding.UTF8.GetString(buffer));
buffer = new byte[2];
- await reader.ReadAsync(buffer, 0, buffer.Length).ConfigureAwait(false);
+ await reader.ReadAsync(buffer, 0, buffer.Length);
Assert.Equal("rs", Encoding.UTF8.GetString(buffer));
}
@@ -310,7 +310,7 @@ public async Task ReadCorrectlyHandlesLargerBufferThenStreamAsync()
var reader = new RebufferableBinaryReader(TestUtil.StringToStreamNoBom("6chars"), Encoding.UTF8);
var buffer = new byte[10];
- int amountRead = await reader.ReadAsync(buffer, 0, buffer.Length).ConfigureAwait(false);
+ int amountRead = await reader.ReadAsync(buffer, 0, buffer.Length);
Assert.Equal("6chars\0\0\0\0", Encoding.UTF8.GetString(buffer));
Assert.Equal(6, amountRead);
}
@@ -321,7 +321,7 @@ public async Task ReadReturnsZeroOnNoDataAsync()
var reader = new RebufferableBinaryReader(new MemoryStream(), Encoding.UTF8);
var buffer = new byte[6];
- int amountRead = await reader.ReadAsync(buffer, 0, buffer.Length).ConfigureAwait(false);
+ int amountRead = await reader.ReadAsync(buffer, 0, buffer.Length);
Assert.Equal("\0\0\0\0\0\0", Encoding.UTF8.GetString(buffer));
Assert.Equal(0, amountRead);
}
@@ -331,9 +331,9 @@ public async Task ReadLineReturnsNullOnNoDataAsync()
{
var reader = new RebufferableBinaryReader(new MemoryStream(new byte[6]), Encoding.UTF8);
- var s = await reader.ReadLineAsync().ConfigureAwait(false);
+ var s = await reader.ReadLineAsync();
Assert.Equal("\0\0\0\0\0\0", s);
- Assert.Null(await reader.ReadLineAsync().ConfigureAwait(false));
+ Assert.Null(await reader.ReadLineAsync());
}
[Fact]
@@ -342,18 +342,18 @@ public async Task ReadCanResumeInterruptedStreamAsync()
var reader = new RebufferableBinaryReader(TestUtil.StringToStreamNoBom("6chars"), Encoding.UTF8);
var buffer = new byte[4];
- int amountRead = await reader.ReadAsync(buffer, 0, buffer.Length).ConfigureAwait(false);
+ int amountRead = await reader.ReadAsync(buffer, 0, buffer.Length);
Assert.Equal("6cha", Encoding.UTF8.GetString(buffer));
Assert.Equal(4, amountRead);
reader.Buffer(TestUtil.StringToByteNoBom("14intermission"));
buffer = new byte[14];
- amountRead = await reader.ReadAsync(buffer, 0, buffer.Length).ConfigureAwait(false);
+ amountRead = await reader.ReadAsync(buffer, 0, buffer.Length);
Assert.Equal("14intermission", Encoding.UTF8.GetString(buffer));
Assert.Equal(14, amountRead);
buffer = new byte[2];
- amountRead = await reader.ReadAsync(buffer, 0, buffer.Length).ConfigureAwait(false);
+ amountRead = await reader.ReadAsync(buffer, 0, buffer.Length);
Assert.Equal("rs", Encoding.UTF8.GetString(buffer));
Assert.Equal(2, amountRead);
}
@@ -383,7 +383,7 @@ public void CanReadByteLineOnMixedAsciiAndUTF8Text()
public async Task CanReadByteLineOnMixedAsciiAndUTF8TextAsync()
{
var reader = new RebufferableBinaryReader(TestUtil.StringToStreamNoBom("Bonjour poignée"), Encoding.UTF8);
- byte[] bytes = await reader.ReadByteLineAsync().ConfigureAwait(false);
+ byte[] bytes = await reader.ReadByteLineAsync();
var expected = new byte[] { 66, 111, 110, 106, 111, 117, 114, 32, 112, 111, 105, 103, 110, 195, 169, 101 };
foreach (var pair in expected.Zip(bytes, Tuple.Create))
diff --git a/Source/HttpMultipartParser/HttpMultipartParser.csproj b/Source/HttpMultipartParser/HttpMultipartParser.csproj
index baf12d0..e423228 100644
--- a/Source/HttpMultipartParser/HttpMultipartParser.csproj
+++ b/Source/HttpMultipartParser/HttpMultipartParser.csproj
@@ -41,7 +41,7 @@
-
+
diff --git a/appveyor.psm1 b/appveyor.psm1
index aa39548..40eb9f0 100644
--- a/appveyor.psm1
+++ b/appveyor.psm1
@@ -42,6 +42,11 @@ function Invoke-AppVeyorInstall {
# I spent a whole day trying to find a solution but ultimately the only reliable solution
# I was able to come up with is to install in the default location (which is /usr/share/dotnet)
# using 'sudo' because you need admin privileges to access the default install location.
+ #
+ # November 2022: I tried removing this workaround since GetVersion.Tool was updated more
+ # than 2 years ago but it led to another problem: https://ci.appveyor.com/project/Jericho/zoomnet/builds/48579496/job/pymt60j9b53ayxta#L78
+ #
+ # Therefore this workaround seems like a permanent solution.
sudo bash dotnet-install.sh --version $desiredDotNetCoreSDKVersion --install-dir /usr/share/dotnet
}
diff --git a/appveyor.yml b/appveyor.yml
index a0f1b09..93c0eef 100644
--- a/appveyor.yml
+++ b/appveyor.yml
@@ -17,7 +17,7 @@ before_build:
# to run your custom scripts instead of automatic MSBuild
build_script:
- - ps: .\build.ps1 --target=AppVeyor
+ - ps: .\build.ps1 build.cake --target=AppVeyor
# scripts to run after build
after_build:
diff --git a/build.cake b/build.cake
index 0be4ba7..74ca0e8 100644
--- a/build.cake
+++ b/build.cake
@@ -1,10 +1,10 @@
// Install tools.
#tool dotnet:?package=GitVersion.Tool&version=5.12.0
#tool dotnet:?package=coveralls.net&version=4.0.1
-#tool nuget:?package=GitReleaseManager&version=0.13.0
-#tool nuget:?package=ReportGenerator&version=5.1.22
-#tool nuget:?package=xunit.runner.console&version=2.4.2
-#tool nuget:?package=CodecovUploader&version=0.5.0
+#tool nuget:https://f.feedz.io/jericho/jericho/nuget/?package=GitReleaseManager&version=0.17.0-collaborators0003
+#tool nuget:?package=ReportGenerator&version=5.2.0
+#tool nuget:?package=xunit.runner.console&version=2.6.5
+#tool nuget:?package=CodecovUploader&version=0.7.1
// Install addins.
#addin nuget:?package=Cake.Coveralls&version=1.1.0
@@ -51,9 +51,6 @@ var testCoverageExcludeFiles = new[]
var nuGetApiUrl = Argument("NUGET_API_URL", EnvironmentVariable("NUGET_API_URL"));
var nuGetApiKey = Argument("NUGET_API_KEY", EnvironmentVariable("NUGET_API_KEY"));
-var myGetApiUrl = Argument("MYGET_API_URL", EnvironmentVariable("MYGET_API_URL"));
-var myGetApiKey = Argument("MYGET_API_KEY", EnvironmentVariable("MYGET_API_KEY"));
-
var gitHubToken = Argument("GITHUB_TOKEN", EnvironmentVariable("GITHUB_TOKEN"));
var gitHubUserName = Argument("GITHUB_USERNAME", EnvironmentVariable("GITHUB_USERNAME"));
var gitHubPassword = Argument("GITHUB_PASSWORD", EnvironmentVariable("GITHUB_PASSWORD"));
@@ -74,12 +71,16 @@ var integrationTestsProject = $"{sourceFolder}{libraryName}.IntegrationTests/{li
var unitTestsProject = $"{sourceFolder}{libraryName}.UnitTests/{libraryName}.UnitTests.csproj";
var benchmarkProject = $"{sourceFolder}{libraryName}.Benchmark/{libraryName}.Benchmark.csproj";
-var versionInfo = GitVersion(new GitVersionSettings() { OutputType = GitVersionOutput.Json });
-var milestone = versionInfo.MajorMinorPatch;
+var buildBranch = Context.GetBuildBranch();
+var repoName = Context.GetRepoName();
+
+var versionInfo = (GitVersion)null; // Will be calculated in SETUP
+var milestone = string.Empty; // Will be calculated in SETUP
+
var cakeVersion = typeof(ICakeContext).Assembly.GetName().Version.ToString();
var isLocalBuild = BuildSystem.IsLocalBuild;
-var isMainBranch = StringComparer.OrdinalIgnoreCase.Equals("main", BuildSystem.AppVeyor.Environment.Repository.Branch);
-var isMainRepo = StringComparer.OrdinalIgnoreCase.Equals($"{gitHubRepoOwner}/{gitHubRepo}", BuildSystem.AppVeyor.Environment.Repository.Name);
+var isMainBranch = StringComparer.OrdinalIgnoreCase.Equals("main", buildBranch);
+var isMainRepo = StringComparer.OrdinalIgnoreCase.Equals($"{gitHubRepoOwner}/{gitHubRepo}", repoName);
var isPullRequest = BuildSystem.AppVeyor.Environment.PullRequest.IsPullRequest;
var isTagged = BuildSystem.AppVeyor.Environment.Repository.Tag.IsTag && !string.IsNullOrWhiteSpace(BuildSystem.AppVeyor.Environment.Repository.Tag.Name);
var isIntegrationTestsProjectPresent = FileExists(integrationTestsProject);
@@ -116,6 +117,10 @@ Setup(context =>
context.Log.Verbosity = Verbosity.Diagnostic;
}
+ Information("Calculating version info...");
+ versionInfo = GitVersion(new GitVersionSettings() { OutputType = GitVersionOutput.Json });
+ milestone = versionInfo.MajorMinorPatch;
+
Information("Building version {0} of {1} ({2}, {3}) using version {4} of Cake",
versionInfo.LegacySemVerPadded,
libraryName,
@@ -132,11 +137,6 @@ Setup(context =>
isTagged
);
- Information("Myget Info:\r\n\tApi Url: {0}\r\n\tApi Key: {1}",
- myGetApiUrl,
- string.IsNullOrEmpty(myGetApiKey) ? "[NULL]" : new string('*', myGetApiKey.Length)
- );
-
Information("Nuget Info:\r\n\tApi Url: {0}\r\n\tApi Key: {1}",
nuGetApiUrl,
string.IsNullOrEmpty(nuGetApiKey) ? "[NULL]" : new string('*', nuGetApiKey.Length)
@@ -308,14 +308,13 @@ Task("Upload-Coverage-Result-Coveralls")
.WithCriteria(() => isMainRepo)
.Does(() =>
{
- using (DiagnosticVerbosity())
+ if(string.IsNullOrEmpty(coverallsToken)) throw new InvalidOperationException("Could not resolve Coveralls token.");
+
+ CoverallsNet(new FilePath(coverageFile), CoverallsNetReportType.OpenCover, new CoverallsNetSettings()
{
- CoverallsNet(new FilePath(coverageFile), CoverallsNetReportType.OpenCover, new CoverallsNetSettings()
- {
- RepoToken = coverallsToken,
- UseRelativePaths = true
- });
- }
+ RepoToken = coverallsToken,
+ UseRelativePaths = true
+ });
}).OnError (exception =>
{
Information(exception.Message);
@@ -331,16 +330,13 @@ Task("Upload-Coverage-Result-Codecov")
.WithCriteria(() => isMainRepo)
.Does(() =>
{
- var codecovSettings = new CodecovSettings
+ if(string.IsNullOrEmpty(codecovToken)) throw new InvalidOperationException("Could not resolve CodeCov token.");
+
+ Codecov(new CodecovSettings
{
Files = new[] { coverageFile },
Token = codecovToken
- };
-
- using (DiagnosticVerbosity())
- {
- Codecov(codecovSettings);
- }
+ });
}).OnError (exception =>
{
Information(exception.Message);
@@ -413,33 +409,15 @@ Task("Publish-NuGet")
if(string.IsNullOrEmpty(nuGetApiKey)) throw new InvalidOperationException("Could not resolve NuGet API key.");
if(string.IsNullOrEmpty(nuGetApiUrl)) throw new InvalidOperationException("Could not resolve NuGet API url.");
- foreach(var package in GetFiles(outputDir + "*.nupkg"))
+ var settings = new DotNetNuGetPushSettings
{
- // Push the package.
- NuGetPush(package, new NuGetPushSettings {
- ApiKey = nuGetApiKey,
- Source = nuGetApiUrl
- });
- }
-});
-
-Task("Publish-MyGet")
- .IsDependentOn("Create-NuGet-Package")
- .WithCriteria(() => !isLocalBuild)
- .WithCriteria(() => !isPullRequest)
- .WithCriteria(() => isMainRepo)
- .Does(() =>
-{
- if(string.IsNullOrEmpty(myGetApiKey)) throw new InvalidOperationException("Could not resolve MyGet API key.");
- if(string.IsNullOrEmpty(myGetApiUrl)) throw new InvalidOperationException("Could not resolve MyGet API url.");
+ Source = nuGetApiUrl,
+ ApiKey = nuGetApiKey
+ };
foreach(var package in GetFiles(outputDir + "*.nupkg"))
{
- // Push the package.
- NuGetPush(package, new NuGetPushSettings {
- ApiKey = myGetApiKey,
- Source = myGetApiUrl
- });
+ DotNetNuGetPush(package, settings);
}
});
@@ -545,7 +523,6 @@ Task("AppVeyor")
.IsDependentOn("Upload-Coverage-Result-Codecov")
.IsDependentOn("Create-NuGet-Package")
.IsDependentOn("Upload-AppVeyor-Artifacts")
- .IsDependentOn("Publish-MyGet")
.IsDependentOn("Publish-NuGet")
.IsDependentOn("Publish-GitHub-Release")
.Finally(() =>
@@ -588,3 +565,49 @@ private static string TrimStart(this string source, string value, StringComparis
return source.Substring(startIndex);
}
+
+private static List ExecuteCommand(this ICakeContext context, FilePath exe, string args)
+{
+ context.StartProcess(exe, new ProcessSettings { Arguments = args, RedirectStandardOutput = true }, out var redirectedOutput);
+
+ return redirectedOutput.ToList();
+}
+
+private static List ExecGitCmd(this ICakeContext context, string cmd)
+{
+ var gitExe = context.Tools.Resolve(context.IsRunningOnWindows() ? "git.exe" : "git");
+ return context.ExecuteCommand(gitExe, cmd);
+}
+
+private static string GetBuildBranch(this ICakeContext context)
+{
+ var buildSystem = context.BuildSystem();
+ string repositoryBranch = null;
+
+ if (buildSystem.IsRunningOnAppVeyor) repositoryBranch = buildSystem.AppVeyor.Environment.Repository.Branch;
+ else if (buildSystem.IsRunningOnAzurePipelines) repositoryBranch = buildSystem.AzurePipelines.Environment.Repository.SourceBranchName;
+ else if (buildSystem.IsRunningOnBamboo) repositoryBranch = buildSystem.Bamboo.Environment.Repository.Branch;
+ else if (buildSystem.IsRunningOnBitbucketPipelines) repositoryBranch = buildSystem.BitbucketPipelines.Environment.Repository.Branch;
+ else if (buildSystem.IsRunningOnBitrise) repositoryBranch = buildSystem.Bitrise.Environment.Repository.GitBranch;
+ else if (buildSystem.IsRunningOnGitHubActions) repositoryBranch = buildSystem.GitHubActions.Environment.Workflow.Ref.Replace("refs/heads/", "");
+ else if (buildSystem.IsRunningOnGitLabCI) repositoryBranch = buildSystem.GitLabCI.Environment.Build.RefName;
+ else if (buildSystem.IsRunningOnTeamCity) repositoryBranch = buildSystem.TeamCity.Environment.Build.BranchName;
+ else if (buildSystem.IsRunningOnTravisCI) repositoryBranch = buildSystem.TravisCI.Environment.Build.Branch;
+ else repositoryBranch = ExecGitCmd(context, "rev-parse --abbrev-ref HEAD").Single();
+
+ return repositoryBranch;
+}
+
+public static string GetRepoName(this ICakeContext context)
+{
+ var buildSystem = context.BuildSystem();
+
+ if (buildSystem.IsRunningOnAppVeyor) return buildSystem.AppVeyor.Environment.Repository.Name;
+ else if (buildSystem.IsRunningOnAzurePipelines) return buildSystem.AzurePipelines.Environment.Repository.RepoName;
+ else if (buildSystem.IsRunningOnTravisCI) return buildSystem.TravisCI.Environment.Repository.Slug;
+ else if (buildSystem.IsRunningOnGitHubActions) return buildSystem.GitHubActions.Environment.Workflow.Repository;
+
+ var originUrl = ExecGitCmd(context, "config --get remote.origin.url").Single();
+ var parts = originUrl.Split('/', StringSplitOptions.RemoveEmptyEntries);
+ return $"{parts[parts.Length - 2]}/{parts[parts.Length - 1].Replace(".git", "")}";
+}
diff --git a/global.json b/global.json
index eb5317a..8e621ca 100644
--- a/global.json
+++ b/global.json
@@ -1,6 +1,6 @@
{
"sdk": {
- "version": "7.0.304",
+ "version": "8.0.100",
"rollForward": "patch",
"allowPrerelease": false
}