Skip to content

Optimize quoting and handle other data types

43d8e0a
Select commit
Loading
Failed to load commit list.
Sign in for the full log view
Draft

Tests: Upgrade to xUnit v3 + Misc fixes #689

Optimize quoting and handle other data types
43d8e0a
Select commit
Loading
Failed to load commit list.
GitHub Actions / .NET Test Results succeeded Aug 3, 2025 in 0s

230 passed, 0 failed and 12 skipped

Tests passed successfully

Report Passed Failed Skipped Time
test-results/_pkrvmjbmru5nbw0_2025-08-03_00_33_20.trx 31✅ 5s
test-results/_pkrvmjbmru5nbw0_2025-08-03_00_33_20[1].trx 199✅ 12⚪ 6s

✅ test-results/_pkrvmjbmru5nbw0_2025-08-03_00_33_20.trx

31 tests were completed in 5s with 31 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
StackExchange.Profiling.Tests.Middleware 21✅ 3s
StackExchange.Profiling.Tests.Storage.MemoryCacheStorageTests 10✅ 258ms

✅ StackExchange.Profiling.Tests.Middleware

✅ BasicProfiling
✅ ResultsAuthorization(name: "All allowed - Async", auth: null, authAsync: True, listAuth: null, listAuthAsync: null, indexExpected: OK, listExpected: OK, singleExpected: OK)
✅ ResultsAuthorization(name: "All allowed - Both", auth: True, authAsync: True, listAuth: True, listAuthAsync: True, indexExpected: OK, listExpected: OK, singleExpected: OK)
✅ ResultsAuthorization(name: "All allowed - No config", auth: null, authAsync: null, listAuth: null, listAuthAsync: null, indexExpected: OK, listExpected: OK, singleExpected: OK)
✅ ResultsAuthorization(name: "All allowed - Sync", auth: True, authAsync: null, listAuth: null, listAuthAsync: null, indexExpected: OK, listExpected: OK, singleExpected: OK)
✅ ResultsAuthorization(name: "Denied - Async Wins", auth: True, authAsync: False, listAuth: null, listAuthAsync: null, indexExpected: Unauthorized, listExpected: Unauthorized, singleExpected: Unauthorized)
✅ ResultsAuthorization(name: "Denied - Async", auth: null, authAsync: False, listAuth: null, listAuthAsync: null, indexExpected: Unauthorized, listExpected: Unauthorized, singleExpected: Unauthorized)
✅ ResultsAuthorization(name: "Denied - Both", auth: False, authAsync: False, listAuth: False, listAuthAsync: False, indexExpected: Unauthorized, listExpected: Unauthorized, singleExpected: Unauthorized)
✅ ResultsAuthorization(name: "Denied - Sync Wins", auth: False, authAsync: True, listAuth: null, listAuthAsync: null, indexExpected: Unauthorized, listExpected: Unauthorized, singleExpected: Unauthorized)
✅ ResultsAuthorization(name: "Denied - Sync", auth: False, authAsync: null, listAuth: null, listAuthAsync: null, indexExpected: Unauthorized, listExpected: Unauthorized, singleExpected: Unauthorized)
✅ ResultsAuthorization(name: "No lists because no single - Async", auth: null, authAsync: False, listAuth: null, listAuthAsync: True, indexExpected: Unauthorized, listExpected: Unauthorized, singleExpected: Unauthorized)
✅ ResultsAuthorization(name: "No lists because no single - Both", auth: False, authAsync: False, listAuth: True, listAuthAsync: True, indexExpected: Unauthorized, listExpected: Unauthorized, singleExpected: Unauthorized)
✅ ResultsAuthorization(name: "No lists because no single - Mix 1", auth: null, authAsync: False, listAuth: True, listAuthAsync: null, indexExpected: Unauthorized, listExpected: Unauthorized, singleExpected: Unauthorized)
✅ ResultsAuthorization(name: "No lists because no single - Mix 2", auth: False, authAsync: null, listAuth: null, listAuthAsync: True, indexExpected: Unauthorized, listExpected: Unauthorized, singleExpected: Unauthorized)
✅ ResultsAuthorization(name: "No lists because no single - Sync", auth: False, authAsync: null, listAuth: True, listAuthAsync: null, indexExpected: Unauthorized, listExpected: Unauthorized, singleExpected: Unauthorized)
✅ ResultsAuthorization(name: "ResultsAuthorize can only deny access - Async", auth: null, authAsync: True, listAuth: null, listAuthAsync: False, indexExpected: Unauthorized, listExpected: Unauthorized, singleExpected: OK)
✅ ResultsAuthorization(name: "ResultsAuthorize can only deny access - Both", auth: True, authAsync: True, listAuth: False, listAuthAsync: False, indexExpected: Unauthorized, listExpected: Unauthorized, singleExpected: OK)
✅ ResultsAuthorization(name: "ResultsAuthorize can only deny access - Mix 1", auth: null, authAsync: True, listAuth: False, listAuthAsync: null, indexExpected: Unauthorized, listExpected: Unauthorized, singleExpected: OK)
✅ ResultsAuthorization(name: "ResultsAuthorize can only deny access - Mix 2", auth: True, authAsync: null, listAuth: null, listAuthAsync: False, indexExpected: Unauthorized, listExpected: Unauthorized, singleExpected: OK)
✅ ResultsAuthorization(name: "ResultsAuthorize can only deny access - Sync", auth: True, authAsync: null, listAuth: False, listAuthAsync: null, indexExpected: Unauthorized, listExpected: Unauthorized, singleExpected: OK)
✅ StaticFileFetch

✅ StackExchange.Profiling.Tests.Storage.MemoryCacheStorageTests

✅ GetUnviewedIds
✅ GetUnviewedIdsAsync
✅ List
✅ ListAsync
✅ SaveAndLoad
✅ SaveAndLoadAsync
✅ SetUnviewed
✅ SetUnviewedAsync
✅ SetViewed
✅ SetViewedAsync

✅ test-results/_pkrvmjbmru5nbw0_2025-08-03_00_33_20[1].trx

211 tests were completed in 6s with 199 passed, 0 failed and 12 skipped.

Test suite Passed Failed Skipped Time
StackExchange.Profiling.Tests.Async.AsyncRealTimeTests 2⚪ 2ms
StackExchange.Profiling.Tests.Async.AsyncTests 2✅ 269ms
StackExchange.Profiling.Tests.DbProfilerTests 17✅ 173ms
StackExchange.Profiling.Tests.InternalErrorTests 1✅ 31ms
StackExchange.Profiling.Tests.ProtobufSerializationTests 2✅ 18ms
StackExchange.Profiling.Tests.RenderTests 21✅ 238ms
StackExchange.Profiling.Tests.SerializationTests 1✅ 168ms
StackExchange.Profiling.Tests.ServerTimingTests 1✅ 11ms
StackExchange.Profiling.Tests.SqlFormatterTests 94✅ 273ms
StackExchange.Profiling.Tests.Storage.MongoDbStorageTests 11✅ 606ms
StackExchange.Profiling.Tests.Storage.MultiStorageProviderTests 3✅ 2ms
StackExchange.Profiling.Tests.Storage.MySqlStorageTests 10✅ 559ms
StackExchange.Profiling.Tests.Storage.PostgreSqlStorageTests 10✅ 391ms
StackExchange.Profiling.Tests.Storage.RedisStorageTests 15✅ 2s
StackExchange.Profiling.Tests.Storage.SqliteStorageTests 10✅ 955ms
StackExchange.Profiling.Tests.Storage.SqlServerStorageTests 10⚪ 10ms
StackExchange.Profiling.Tests.TimingInstrumentationTest 1✅ 1ms

✅ StackExchange.Profiling.Tests.Async.AsyncRealTimeTests

⚪ Step_WithParallelTasks_RealTime
⚪ Step_WithParallelThreads_RealTime

✅ StackExchange.Profiling.Tests.Async.AsyncTests

✅ SimpleAsync
✅ Step_WithParallelTasks_SimulatedTime

✅ StackExchange.Profiling.Tests.DbProfilerTests

✅ AlwaysWrapReaders
✅ DataReader
✅ DataReaderAsync
✅ DataReaderViaProfiledDbCommandWithNullConnection
✅ Errors
✅ ErrorsAsync
✅ NonQuery
✅ NonQueryAsync
✅ Scalar
✅ ScalarAsync
✅ ShimProfiler
✅ TrackingOptions(track: False)
✅ TrackingOptions(track: True)
✅ TrackingOptionsAsync(track: False)
✅ TrackingOptionsAsync(track: True)
✅ TrackingOptionsExplicitClose(track: False)
✅ TrackingOptionsExplicitClose(track: True)

✅ StackExchange.Profiling.Tests.InternalErrorTests

✅ StopErrorLogging

✅ StackExchange.Profiling.Tests.ProtobufSerializationTests

✅ CustomTimings
✅ Simple

✅ StackExchange.Profiling.Tests.RenderTests

✅ ColorSchemes(scheme: Auto, expected: "data-scheme=\"Auto\"")
✅ ColorSchemes(scheme: Dark, expected: "data-scheme=\"Dark\"")
✅ ColorSchemes(scheme: Light, expected: "data-scheme=\"Light\"")
✅ ColorSchemes(scheme: null, expected: "data-scheme=\"Light\"")
✅ DecimalPlaces(decimalPlaces: 0, expected: "data-decimal-places=\"0\"")
✅ DecimalPlaces(decimalPlaces: 1, expected: "data-decimal-places=\"1\"")
✅ DecimalPlaces(decimalPlaces: 2, expected: "data-decimal-places=\"2\"")
✅ DecimalPlaces(decimalPlaces: null, expected: "data-decimal-places=\"2\"")
✅ DefaultRender
✅ Nonce
✅ NonceEncoding(nonce: "\udadb\udca2L軾\udb7e\udf83\uda7a\udf1bŝ\udad6\udee4\ud9d3\uddcc\ud9db\udc03\ud93d\udd7a\udbdb\uddc0;鮡ƾ\udb51\udd75ԁf'\"&23", expected: "nonce=\"\udadb\udca2L軾\udb7e\udf83\uda7a\udf1bŝ\udad6\udee4\ud9d3\uddcc\ud9db\udc03\ud93d\udd7a\udbdb\uddc0;鮡ƾ\udb51\udd75ԁf'"&amp"···)
✅ NonceEncoding(nonce: "e31df82b-5102-4134-af97-f29bf724bedd", expected: "nonce=\"e31df82b-5102-4134-af97-f29bf724bedd\"")
✅ NonceEncoding(nonce: "f\"oo", expected: "nonce=\"f"oo\"")
✅ NonceEncoding(nonce: "foo!@#$%", expected: "nonce=\"foo!@#$%\"")
✅ NonceEncoding(nonce: "foo", expected: "nonce=\"foo\"")
✅ OptionsSet
✅ Positions(position: BottomLeft, expected: "data-position=\"BottomLeft\"")
✅ Positions(position: BottomRight, expected: "data-position=\"BottomRight\"")
✅ Positions(position: Left, expected: "data-position=\"Left\"")
✅ Positions(position: null, expected: "data-position=\"Left\"")
✅ Positions(position: Right, expected: "data-position=\"Right\"")

✅ StackExchange.Profiling.Tests.SerializationTests

✅ ParentMapping

✅ StackExchange.Profiling.Tests.ServerTimingTests

✅ ServerTimingFormat

✅ StackExchange.Profiling.Tests.SqlFormatterTests

✅ EnsureVerboseSqlServerFormatterOnlyAddsInformation
✅ InlineDatesQuoted
✅ InlineGuidsQuoted
✅ InlineParameterFormatting(dbType: AnsiString, input: "test ansi", expected: "'test ansi'")
✅ InlineParameterFormatting(dbType: AnsiStringFixedLength, input: "ansi fixed", expected: "'ansi fixed'")
✅ InlineParameterFormatting(dbType: Binary, input: "0x0123456789ABCDEF", expected: "0x0123456789ABCDEF")
✅ InlineParameterFormatting(dbType: Boolean, input: False, expected: "0")
✅ InlineParameterFormatting(dbType: Boolean, input: True, expected: "1")
✅ InlineParameterFormatting(dbType: Byte, input: 255, expected: "255")
✅ InlineParameterFormatting(dbType: Currency, input: 1234.5599999999999, expected: "1234.56")
✅ InlineParameterFormatting(dbType: Date, input: "2023-01-01", expected: "'2023-01-01'")
✅ InlineParameterFormatting(dbType: DateTime, input: "2023-01-01T12:00:00", expected: "'2023-01-01T12:00:00'")
✅ InlineParameterFormatting(dbType: DateTime2, input: "2023-01-01T12:00:00.0000000", expected: "'2023-01-01T12:00:00.0000000'")
✅ InlineParameterFormatting(dbType: DateTimeOffset, input: "2023-01-01T12:00:00+00:00", expected: "'2023-01-01T12:00:00+00:00'")
✅ InlineParameterFormatting(dbType: Decimal, input: 0.01, expected: "0.01")
✅ InlineParameterFormatting(dbType: Double, input: 3.1415920000000002, expected: "3.141592")
✅ InlineParameterFormatting(dbType: Guid, input: "12345678-1234-1234-1234-123456789012", expected: "'12345678-1234-1234-1234-123456789012'")
✅ InlineParameterFormatting(dbType: Int16, input: -32768, expected: "-32768")
✅ InlineParameterFormatting(dbType: Int32, input: 2147483647, expected: "2147483647")
✅ InlineParameterFormatting(dbType: Int64, input: 9223372036854775807, expected: "9223372036854775807")
✅ InlineParameterFormatting(dbType: SByte, input: -128, expected: "-128")
✅ InlineParameterFormatting(dbType: Single, input: 3.1415899999999999, expected: "3.14159")
✅ InlineParameterFormatting(dbType: String, input: "test string", expected: "'test string'")
✅ InlineParameterFormatting(dbType: StringFixedLength, input: "fixed", expected: "'fixed'")
✅ InlineParameterFormatting(dbType: Time, input: "12:00:00", expected: "'12:00:00'")
✅ InlineParameterFormatting(dbType: UInt16, input: 65535, expected: "65535")
✅ InlineParameterFormatting(dbType: UInt32, input: 4294967295, expected: "4294967295")
✅ InlineParameterFormatting(dbType: UInt64, input: 18446744073709551615, expected: "18446744073709551615")
✅ InlineParameterFormatting(dbType: Xml, input: "<root><node>value</node></root>", expected: "'<root><node>value</node></root>'")
✅ InlineParameterNamesInParameterValues
✅ InlineParameterValuesDisplayNullForStrings
✅ InlineSpacesAfterCommasDisabled
✅ InlineSpacesAfterCommasEnabled
✅ StoredProcedureCallWithInOutputParameter(at: "")
✅ StoredProcedureCallWithInOutputParameter(at: "@")
✅ StoredProcedureCallWithNormalAndReturnParameter(at: "")
✅ StoredProcedureCallWithNormalAndReturnParameter(at: "@")
✅ StoredProcedureCallWithNormalAndReturnParameterDisabled(at: "")
✅ StoredProcedureCallWithNormalAndReturnParameterDisabled(at: "@")
✅ StoredProcedureCallWithOneOutputParameter(at: "")
✅ StoredProcedureCallWithOneOutputParameter(at: "@")
✅ StoredProcedureCallWithOneOutputParameterAndOneReturnParameter(at: "")
✅ StoredProcedureCallWithOneOutputParameterAndOneReturnParameter(at: "@")
✅ StoredProcedureCallWithOneParameter(at: "")
✅ StoredProcedureCallWithOneParameter(at: "@")
✅ StoredProcedureCallWithOneReturnParameter(at: "")
✅ StoredProcedureCallWithOneReturnParameter(at: "@")
✅ StoredProcedureCallWithoutParameters
✅ StoredProcedureCallWithTwoOutputParameter(at: "")
✅ StoredProcedureCallWithTwoOutputParameter(at: "@")
✅ StoredProcedureCallWithTwoParameter(at: "")
✅ StoredProcedureCallWithTwoParameter(at: "@")
✅ TabelQueryWithoutParameters
✅ TableQueryWithBit(at: "")
✅ TableQueryWithBit(at: "@")
✅ TableQueryWithCurrency(at: "")
✅ TableQueryWithCurrency(at: "@")
✅ TableQueryWithDate(at: "")
✅ TableQueryWithDate(at: "@")
✅ TableQueryWithDateTime(at: "")
✅ TableQueryWithDateTime(at: "@")
✅ TableQueryWithDateTime2(at: "")
✅ TableQueryWithDateTime2(at: "@")
✅ TableQueryWithDateTimeOffset(at: "")
✅ TableQueryWithDateTimeOffset(at: "@")
✅ TableQueryWithDecimal(at: "")
✅ TableQueryWithDecimal(at: "@")
✅ TableQueryWithDecimalNullable(at: "")
✅ TableQueryWithDecimalNullable(at: "@")
✅ TableQueryWithDecimalZeroPrecision(at: "")
✅ TableQueryWithDecimalZeroPrecision(at: "@")
✅ TableQueryWithDouble(at: "")
✅ TableQueryWithDouble(at: "@")
✅ TableQueryWithOneParameter(at: "")
✅ TableQueryWithOneParameter(at: "@")
✅ TableQueryWithOneParameterDisabled(at: "")
✅ TableQueryWithOneParameterDisabled(at: "@")
✅ TableQueryWithSingle(at: "")
✅ TableQueryWithSingle(at: "@")
✅ TableQueryWithSpacesAfterCommasDisabled(at: "")
✅ TableQueryWithSpacesAfterCommasDisabled(at: "@")
✅ TableQueryWithSpacesAfterCommasEnabled(at: "")
✅ TableQueryWithSpacesAfterCommasEnabled(at: "@")
✅ TableQueryWithTime(at: "")
✅ TableQueryWithTime(at: "@")
✅ TableQueryWithTwoParameters(at: "")
✅ TableQueryWithTwoParameters(at: "@")
✅ TableQueryWithTwoParametersDisabled(at: "")
✅ TableQueryWithTwoParametersDisabled(at: "@")
✅ TableQueryWithVarchar(at: "")
✅ TableQueryWithVarchar(at: "@")
✅ TableQueryWithXml(at: "")
✅ TableQueryWithXml(at: "@")
✅ VerboseSqlServerFormatterAddsTransactionInformation

✅ StackExchange.Profiling.Tests.Storage.MongoDbStorageTests

✅ GetUnviewedIds
✅ GetUnviewedIdsAsync
✅ List
✅ ListAsync
✅ RecreationHandling
✅ SaveAndLoad
✅ SaveAndLoadAsync
✅ SetUnviewed
✅ SetUnviewedAsync
✅ SetViewed
✅ SetViewedAsync

✅ StackExchange.Profiling.Tests.Storage.MultiStorageProviderTests

✅ Constructor_LoadStores_MaintainOrder
✅ Constructor_LoadWithNoStores_ThrowsError
✅ Constructor_LoadWithNullStores_ThrowsError

✅ StackExchange.Profiling.Tests.Storage.MySqlStorageTests

✅ GetUnviewedIds
✅ GetUnviewedIdsAsync
✅ List
✅ ListAsync
✅ SaveAndLoad
✅ SaveAndLoadAsync
✅ SetUnviewed
✅ SetUnviewedAsync
✅ SetViewed
✅ SetViewedAsync

✅ StackExchange.Profiling.Tests.Storage.PostgreSqlStorageTests

✅ GetUnviewedIds
✅ GetUnviewedIdsAsync
✅ List
✅ ListAsync
✅ SaveAndLoad
✅ SaveAndLoadAsync
✅ SetUnviewed
✅ SetUnviewedAsync
✅ SetViewed
✅ SetViewedAsync

✅ StackExchange.Profiling.Tests.Storage.RedisStorageTests

✅ ConnectionOptions
✅ ConnectionString
✅ GetUnviewedIds
✅ GetUnviewedIdsAsync
✅ IDatabase
✅ List
✅ ListAsync
✅ Multiplexer
✅ SaveAndLoad
✅ SaveAndLoadAsync
✅ Serialization
✅ SetUnviewed
✅ SetUnviewedAsync
✅ SetViewed
✅ SetViewedAsync

✅ StackExchange.Profiling.Tests.Storage.SqliteStorageTests

✅ GetUnviewedIds
✅ GetUnviewedIdsAsync
✅ List
✅ ListAsync
✅ SaveAndLoad
✅ SaveAndLoadAsync
✅ SetUnviewed
✅ SetUnviewedAsync
✅ SetViewed
✅ SetViewedAsync

✅ StackExchange.Profiling.Tests.Storage.SqlServerStorageTests

⚪ GetUnviewedIds
⚪ GetUnviewedIdsAsync
⚪ List
⚪ ListAsync
⚪ SaveAndLoad
⚪ SaveAndLoadAsync
⚪ SetUnviewed
⚪ SetUnviewedAsync
⚪ SetViewed
⚪ SetViewedAsync

✅ StackExchange.Profiling.Tests.TimingInstrumentationTest

✅ IsInstrumented