Add cleanup service tests for word alignment #1400
451 passed, 1 failed and 0 skipped
✅ src/DataAccess/test/SIL.DataAccess.Tests/TestResults/test-results.trx
25 tests were completed in 3s with 25 passed, 0 failed and 0 skipped.
Test suite | Passed | Failed | Skipped | Time |
---|---|---|---|---|
SIL.DataAccess.MemoryRepositoryTests | 25✅ | 227ms |
✅ SIL.DataAccess.MemoryRepositoryTests
✅ DeleteAsync_DoesNotExist
✅ DeleteAsync_Exists
✅ GetAsync_DoesNotExist
✅ GetAsync_Exists
✅ InsertAsync_DoesNotExist
✅ InsertAsync_Exists
✅ InsertAsync_ReadOnlyCollectionExpression
✅ UpdateAsync_Add_Array
✅ UpdateAsync_Add_List
✅ UpdateAsync_Add_ReadOnlyCollection
✅ UpdateAsync_Add_ReadOnlyList
✅ UpdateAsync_DoesNotExist
✅ UpdateAsync_Remove_Array
✅ UpdateAsync_Remove_List
✅ UpdateAsync_Remove_ReadOnlyCollection
✅ UpdateAsync_Remove_ReadOnlyList
✅ UpdateAsync_RemoveAll_Array
✅ UpdateAsync_RemoveAll_List
✅ UpdateAsync_RemoveAll_ReadOnlyCollection
✅ UpdateAsync_RemoveAll_ReadOnlyList
✅ UpdateAsync_Set
✅ UpdateAsync_SetAll
✅ UpdateAsync_SetOnInsert
✅ UpdateAsync_Unset
✅ UpdateAsync_Upsert
✅ src/Machine/test/Serval.Machine.Shared.Tests/TestResults/test-results.trx
102 tests were completed in 31s with 102 passed, 0 failed and 0 skipped.
✅ Serval.Machine.Shared.Services.ClearMLServiceTests
✅ CreateTaskAsync
✅ Serval.Machine.Shared.Services.DistributedReaderWriterLockFactoryTests
✅ InitAsync_ReleaseReaderLocks
✅ InitAsync_ReleaseWriterLocks
✅ InitAsync_RemoveWaiters
✅ Serval.Machine.Shared.Services.DistributedReaderWriterLockTests
✅ ReaderLockAsync_Cancelled
✅ ReaderLockAsync_NoLockAcquired
✅ ReaderLockAsync_ReaderLockAcquired
✅ ReaderLockAsync_WriterLockAcquiredAndExpired
✅ ReaderLockAsync_WriterLockAcquiredAndNotReleased
✅ ReaderLockAsync_WriterLockAcquiredAndReleased
✅ WriterLockAsync_Cancelled
✅ WriterLockAsync_FirstWriterLockHasPriority
✅ WriterLockAsync_NoLockAcquired
✅ WriterLockAsync_ReaderLockAcquiredAndNotReleased
✅ WriterLockAsync_ReaderLockAcquiredAndReleased
✅ WriterLockAsync_WriterLockAcquiredAndExpired
✅ WriterLockAsync_WriterLockAcquiredAndNeverReleased
✅ WriterLockAsync_WriterLockAcquiredAndReleased
✅ WriterLockAsync_WriterLockTakesPriorityOverReaderLock
✅ Serval.Machine.Shared.Services.InMemoryStorageTests
✅ DeleteAsync
✅ ExistsAsync
✅ ListFilesAsync_DoNotRecurse
✅ ListFilesAsync_Recurse
✅ OpenReadAsync
✅ Serval.Machine.Shared.Services.LanguageTagServiceTests
✅ ConvertToFlores200CodeTest("arb","arb_Arab")
✅ ConvertToFlores200CodeTest("cmn-Hant","zho_Hant")
✅ ConvertToFlores200CodeTest("cmn","zho_Hans")
✅ ConvertToFlores200CodeTest("eng-Latn","eng_Latn")
✅ ConvertToFlores200CodeTest("eng","eng_Latn")
✅ ConvertToFlores200CodeTest("es","spa_Latn")
✅ ConvertToFlores200CodeTest("hne","hne_Deva")
✅ ConvertToFlores200CodeTest("kor_Kore","kor_Hang")
✅ ConvertToFlores200CodeTest("kor","kor_Hang")
✅ ConvertToFlores200CodeTest("ks-Arab","kas_Arab")
✅ ConvertToFlores200CodeTest("ms","zsm_Latn")
✅ ConvertToFlores200CodeTest("srp_Cyrl","srp_Cyrl")
✅ ConvertToFlores200CodeTest("zh-Hant","zho_Hant")
✅ ConvertToFlores200CodeTest("zh-TW","zho_Hant")
✅ ConvertToFlores200CodeTest("zh","zho_Hans")
✅ GetLanguageInfoAsync("cmn","zho_Hans",True)
✅ GetLanguageInfoAsync("en","eng_Latn",True)
✅ GetLanguageInfoAsync("ms","zsm_Latn",True)
✅ GetLanguageInfoAsync("xyz","xyz",False)
✅ Serval.Machine.Shared.Services.LocalStorageTests
✅ DeleteFileAsync
✅ ExistsAsync
✅ ListFilesAsync_DoNotRecurse
✅ ListFilesAsync_Recurse
✅ OpenReadAsync
✅ Serval.Machine.Shared.Services.MessageOutboxDeliveryServiceTests
✅ ProcessMessagesAsync
✅ ProcessMessagesAsync_File
✅ ProcessMessagesAsync_Timeout
✅ ProcessMessagesAsync_UnavailableFailure
✅ Serval.Machine.Shared.Services.MessageOutboxServiceTests
✅ EnqueueMessageAsync_ContentTooLarge
✅ EnqueueMessageAsync_ExistingOutbox
✅ EnqueueMessageAsync_HasContentStream
✅ EnqueueMessageAsync_NoContentStream
✅ Serval.Machine.Shared.Services.ModelCleanupServiceTests
✅ CheckModelsAsync_ValidFiles
✅ Serval.Machine.Shared.Services.NmtClearMLBuildJobFactoryTests
✅ CreateJobScriptAsync_BuildOptions
✅ CreateJobScriptAsync_NoBuildOptions
✅ Serval.Machine.Shared.Services.NmtEngineServiceTests
✅ CancelBuildAsync_Building
✅ CancelBuildAsync_NotBuilding
✅ DeleteAsync_WhileBuilding
✅ StartBuildAsync
✅ Serval.Machine.Shared.Services.PreprocessBuildJobTests
✅ ParallelCorpusAsync
✅ ParallelCorpusAsync_UseKeyTerms
✅ ParallelCorpusAsync_UseKeyTerms_TextIds
✅ RunAsync_DisableKeyTerms
✅ RunAsync_EnableKeyTerms
✅ RunAsync_FilterOutEverything
✅ RunAsync_InferenceChapters
✅ RunAsync_InferenceTextIds
✅ RunAsync_InferenceTextIdsOverlapWithTrainOnTextIds
✅ RunAsync_MixedSource_Paratext
✅ RunAsync_MixedSource_Text
✅ RunAsync_OnlyParseSelectedBooks_NoBadBooks
✅ RunAsync_OnlyParseSelectedBooks_PretranslateOnBadBook
✅ RunAsync_OnlyParseSelectedBooks_TrainOnBadBook
✅ RunAsync_PretranslateAll
✅ RunAsync_RemoveFreestandingEllipses
✅ RunAsync_TrainAndPretranslateAll
✅ RunAsync_TrainOnAll
✅ RunAsync_TrainOnChapters
✅ RunAsync_TrainOnTextIds
✅ RunAsync_UnknownLanguageTagsNoData
✅ RunAsync_UnknownLanguageTagsNoDataSmtTransfer
✅ Serval.Machine.Shared.Services.ServalPlatformOutboxMessageHandlerTests
✅ HandleMessageAsync_BuildStarted
✅ HandleMessageAsync_InsertInferences
✅ Serval.Machine.Shared.Services.SmtTransferEngineServiceTests
✅ CancelBuildAsync_Building(ClearML)
✅ CancelBuildAsync_Building(Hangfire)
✅ CancelBuildAsync_NotBuilding
✅ CommitAsync_LoadedActive
✅ CommitAsync_LoadedInactive
✅ CreateAsync
✅ DeleteAsync_WhileBuilding(ClearML)
✅ DeleteAsync_WhileBuilding(Hangfire)
✅ GetWordGraphAsync
✅ StartBuildAsync_RestartUnfinishedBuild
✅ StartBuildAsync(ClearML)
✅ StartBuildAsync(Hangfire)
✅ TrainSegmentPairAsync(ClearML)
✅ TrainSegmentPairAsync(Hangfire)
✅ TranslateAsync
❌ src/Serval/test/Serval.ApiServer.IntegrationTests/TestResults/test-results.trx
228 tests were completed in 766s with 227 passed, 1 failed and 0 skipped.
Test suite | Passed | Failed | Skipped | Time |
---|---|---|---|---|
Serval.ApiServer.DataFilesTests | 23✅ | 68s | ||
Serval.ApiServer.StatusTests | 4✅ | 10s | ||
Serval.ApiServer.TranslationEngineTests | 118✅ | 386s | ||
Serval.ApiServer.WebhooksTests | 11✅ | 25s | ||
Serval.ApiServer.WordAlignmentEngineTests | 71✅ | 1❌ | 268s |
✅ Serval.ApiServer.DataFilesTests
✅ CreateAsync(["create:files", "read:files"],201)
✅ CreateAsync(["create:files", "read:files"],400)
✅ CreateAsync(["read:files"],403)
✅ DeleteAsync(["delete:files", "read:files"],200,"000000000000000000000001")
✅ DeleteAsync(["delete:files", "read:files"],403,"000000000000000000000003")
✅ DeleteAsync(["delete:files", "read:files"],404,"000000000000000000000004")
✅ DeleteAsync(["read:files"],403,"000000000000000000000001")
✅ DownloadAsync(["create:files", "read:files"],200,"")
✅ DownloadAsync(["create:files", "read:files"],403,"000000000000000000000003")
✅ DownloadAsync(["create:files", "read:files"],404,"000000000000000000000004")
✅ DownloadAsync(["create:files", "update:files"],403,"")
✅ GetAllAsync(["create:translation_engines"],403)
✅ GetAllAsync(["read:files"],200)
✅ GetByIDAsync(["create:translation_engines"],403,"000000000000000000000001")
✅ GetByIDAsync(["read:files"],200,"000000000000000000000001")
✅ GetByIDAsync(["read:files"],403,"000000000000000000000003")
✅ GetByIDAsync(["read:files"],404,"000000000000000000000004")
✅ GetByIDAsync(["read:files"],404,"phony_id")
✅ UpdateAsync(["read:files"],403,"000000000000000000000001")
✅ UpdateAsync(["update:files", "read:files"],200,"000000000000000000000001")
✅ UpdateAsync(["update:files", "read:files"],400,"000000000000000000000001")
✅ UpdateAsync(["update:files", "read:files"],403,"000000000000000000000003")
✅ UpdateAsync(["update:files", "read:files"],404,"000000000000000000000004")
✅ Serval.ApiServer.StatusTests
✅ GetDeploymentAsync(["create:translation_engines"],403)
✅ GetDeploymentAsync(["read:status"],200)
✅ GetHealthAsync(["create:translation_engines"],403)
✅ GetHealthAsync(["read:status"],200)
✅ Serval.ApiServer.TranslationEngineTests
✅ AddCorpusToEngineByIdAsync(["read:files"],403,"e00000000000000000000001")
✅ AddCorpusToEngineByIdAsync(["update:translation_engines"],201,"e00000000000000000000001")
✅ AddCorpusToEngineByIdAsync(["update:translation_engines"],404,"e00000000000000000000004")
✅ AddParallelCorpusToEngineById_NotAuthorized
✅ AddParallelCorpusToEngineByIdAsync
✅ CancelCurrentBuildForEngineByIdAsync(["read:files"],403,"e00000000000000000000001",False)
✅ CancelCurrentBuildForEngineByIdAsync(["update:translation_engines"],200,"e00000000000000000000001")
✅ CancelCurrentBuildForEngineByIdAsync(["update:translation_engines"],204,"e00000000000000000000001",False)
✅ CancelCurrentBuildForEngineByIdAsync(["update:translation_engines"],404,"e00000000000000000000004",False)
✅ CreateEngineAsync(["create:translation_engines", "read:translation_engines"],201,"Echo")
✅ CreateEngineAsync(["create:translation_engines"],400,"NotARealKindOfMT")
✅ CreateEngineAsync(["read:files"],403,"Echo")
✅ DataFileUpdate_Propagated
✅ DeleteCorpusAndFilesAsync
✅ DeleteCorpusButNotFilesAsync
✅ DeleteCorpusByIdForEngineByIdAsync(["read:files"],403,"e00000000000000000000001")
✅ DeleteCorpusByIdForEngineByIdAsync(["update:translation_engines", "read:translation_engines"],200,"e00000000000000000000001")
✅ DeleteCorpusByIdForEngineByIdAsync(["update:translation_engines", "read:translation_engines"],404,"e00000000000000000000001")
✅ DeleteCorpusByIdForEngineByIdAsync(["update:translation_engines", "read:translation_engines"],404,"e00000000000000000000004")
✅ DeleteEngineByIdAsync(["delete:translation_engines", "read:translation_engines"],200,"e00000000000000000000001")
✅ DeleteEngineByIdAsync(["delete:translation_engines"],404,"e00000000000000000000004")
✅ DeleteEngineByIdAsync(["read:translation_engines"],403,"e00000000000000000000001")
✅ DeleteParallelCorpusByIdForEngineById_NoSuchCorpus
✅ DeleteParallelCorpusByIdForEngineById_NoSuchEngine
✅ DeleteParallelCorpusByIdForEngineById_NotAuthorized
✅ DeleteParallelCorpusByIdForEngineByIdAsync
✅ GetAllAsync(["read:files"],403)
✅ GetAllAsync(["read:translation_engines"],200)
✅ GetAllBuildsForEngineByIdAsync(["read:files"],403,"e00000000000000000000001")
✅ GetAllBuildsForEngineByIdAsync(["read:translation_engines"],200,"be0000000000000000000001")
✅ GetAllBuildsForEngineByIdAsync(["read:translation_engines"],404,"e00000000000000000000004",False)
✅ GetAllCorporaForEngineByIdAsync(["read:files"],403,"e00000000000000000000001")
✅ GetAllCorporaForEngineByIdAsync(["update:translation_engines", "create:translation_engines", "read:translation_engines"],200,"e00000000000000000000001")
✅ GetAllCorporaForEngineByIdAsync(["update:translation_engines", "create:translation_engines", "read:translation_engines"],404,"e00000000000000000000004")
✅ GetAllParallelCorporaForEngineById_NoSuchEngine
✅ GetAllParallelCorporaForEngineById_NotAuthorized
✅ GetAllParallelCorporaForEngineByIdAsync
✅ GetAllPretranslationsAsync_CorpusDoesNotExist
✅ GetAllPretranslationsAsync_EngineDoesNotExist
✅ GetAllPretranslationsAsync_EngineNotBuilt
✅ GetAllPretranslationsAsync_Exists
✅ GetAllPretranslationsAsync_TextIdDoesNotExist
✅ GetAllPretranslationsAsync_TextIdExists
✅ GetBuildByIdForEngineByIdAsync(["read:files"],403,"e00000000000000000000001")
✅ GetBuildByIdForEngineByIdAsync(["read:translation_engines"],200,"be0000000000000000000001")
✅ GetBuildByIdForEngineByIdAsync(["read:translation_engines"],404,"be0000000000000000000001",False)
✅ GetBuildByIdForEngineByIdAsync(["read:translation_engines"],404,"e00000000000000000000004",False)
✅ GetBuildByIdForEngineByIdAsync(["read:translation_engines"],408,"be0000000000000000000001",True)
✅ GetByIdAsync(["read:files"],403,"e00000000000000000000001")
✅ GetByIdAsync(["read:translation_engines"],200,"e00000000000000000000001")
✅ GetByIdAsync(["read:translation_engines"],403,"e00000000000000000000003")
✅ GetByIdAsync(["read:translation_engines"],404,"e00000000000000000000004")
✅ GetByIdAsync(["read:translation_engines"],404,"phony_id")
✅ GetCorpusByIdForEngineByIdAsync(["read:files"],403,"e00000000000000000000001")
✅ GetCorpusByIdForEngineByIdAsync(["update:translation_engines", "read:translation_engines"],200,"e00000000000000000000001",True)
✅ GetCorpusByIdForEngineByIdAsync(["update:translation_engines", "read:translation_engines"],404,"e00000000000000000000001",True)
✅ GetCorpusByIdForEngineByIdAsync(["update:translation_engines", "read:translation_engines"],404,"e00000000000000000000001")
✅ GetCorpusByIdForEngineByIdAsync(["update:translation_engines", "read:translation_engines"],404,"e00000000000000000000004")
✅ GetCurrentBuildForEngineByIdAsync(["read:files"],403,"e00000000000000000000001",False)
✅ GetCurrentBuildForEngineByIdAsync(["read:translation_engines"],200,"e00000000000000000000001")
✅ GetCurrentBuildForEngineByIdAsync(["read:translation_engines"],204,"e00000000000000000000001",False)
✅ GetCurrentBuildForEngineByIdAsync(["read:translation_engines"],404,"e00000000000000000000004",False)
✅ GetCurrentBuildForEngineByIdAsync(["read:translation_engines"],408,"e00000000000000000000001")
✅ GetDownloadableUrl(["read:files"],403,"e00000000000000000000001")
✅ GetDownloadableUrl(["read:translation_engines"],200,"e00000000000000000000001")
✅ GetDownloadableUrl(["read:translation_engines"],404,"e00000000000000000000004")
✅ GetLanguageInfo_Error
✅ GetLanguageInfoAsync
✅ GetParallelCorpusByIdForEngineById_NoCorpora
✅ GetParallelCorpusByIdForEngineById_NoSuchCorpus
✅ GetParallelCorpusByIdForEngineById_NoSuchEngine
✅ GetParallelCorpusByIdForEngineById_NotAuthorized
✅ GetParallelCorpusByIdForEngineByIdAsync
✅ GetPretranslatedUsfmAsync_BookDoesNotExist
✅ GetPretranslatedUsfmAsync_BookExists
✅ GetPretranslationsByTextId
✅ GetPretranslationsByTextId_EngineDoesNotExist
✅ GetQueueAsync_NotAuthorized
✅ GetQueueAsync("Echo")
✅ GetQueueAsync("Nmt")
✅ GetWordGraphForSegmentByIdAsync(["read:files"],403,"e00000000000000000000001")
✅ GetWordGraphForSegmentByIdAsync(["read:translation_engines", "update:translation_engines"],200,"e00000000000000000000001")
✅ GetWordGraphForSegmentByIdAsync(["read:translation_engines", "update:translation_engines"],404,"e00000000000000000000004")
✅ GetWordGraphForSegmentByIdAsync(["read:translation_engines", "update:translation_engines"],409,"e00000000000000000000001")
✅ StartBuildAsync_Corpus_NoFilter
✅ StartBuildAsync_ParallelCorpus
✅ StartBuildAsync_ParallelCorpus_NoFilter
✅ StartBuildAsync_ParallelCorpus_PretranslateFilterOnMultipleSources
✅ StartBuildAsync_ParallelCorpus_PretranslateNoCorpusSpecified
✅ StartBuildAsync_ParallelCorpus_PretranslateParallelAndNormalCorpus
✅ StartBuildAsync_ParallelCorpus_TrainOnNoCorpusSpecified
✅ StartBuildAsync_ParallelCorpus_TrainOnParallelAndNormalCorpus
✅ StartBuildForEngineAsync_UnparsableOptions()
✅ StartBuildForEngineByIdAsync(["read:files"],403,"e00000000000000000000001")
✅ StartBuildForEngineByIdAsync(["update:translation_engines", "create:translation_engines", "read:translation_engines"],201,"e00000000000000000000001")
✅ StartBuildForEngineByIdAsync(["update:translation_engines", "create:translation_engines", "read:translation_engines"],400,"e00000000000000000000001")
✅ StartBuildForEngineByIdAsync(["update:translation_engines", "create:translation_engines", "read:translation_engines"],404,"e00000000000000000000004")
✅ TrainEngineByIdOnSegmentPairAsync(["read:files"],403,"e00000000000000000000001")
✅ TrainEngineByIdOnSegmentPairAsync(["update:translation_engines"],200,"e00000000000000000000001")
✅ TrainEngineByIdOnSegmentPairAsync(["update:translation_engines"],404,"e00000000000000000000004")
✅ TrainEngineByIdOnSegmentPairAsync(["update:translation_engines"],409,"e00000000000000000000001")
✅ TranslateNSegmentWithEngineByIdAsync(["read:files"],403,"e00000000000000000000001")
✅ TranslateNSegmentWithEngineByIdAsync(["read:translation_engines", "update:translation_engines"],200,"e00000000000000000000001")
✅ TranslateNSegmentWithEngineByIdAsync(["read:translation_engines", "update:translation_engines"],409,"e00000000000000000000001")
✅ TranslateNSegmentWithEngineByIdAsync(["read:translation_engines"],404,"e00000000000000000000004")
✅ TranslateSegmentWithEngineByIdAsync(["read:files"],403,"e00000000000000000000001")
✅ TranslateSegmentWithEngineByIdAsync(["read:translation_engines", "update:translation_engines"],200,"e00000000000000000000001")
✅ TranslateSegmentWithEngineByIdAsync(["read:translation_engines", "update:translation_engines"],404,"e00000000000000000000004")
✅ TranslateSegmentWithEngineByIdAsync(["read:translation_engines", "update:translation_engines"],409,"e00000000000000000000001")
✅ TryToQueueMultipleBuildsPerSingleUser
✅ UpdateCorpusByIdForEngineByIdAsync(["read:files"],403,"e00000000000000000000001")
✅ UpdateCorpusByIdForEngineByIdAsync(["update:translation_engines", "create:translation_engines", "read:translation_engines"],200,"e00000000000000000000001")
✅ UpdateCorpusByIdForEngineByIdAsync(["update:translation_engines", "create:translation_engines", "read:translation_engines"],404,"e00000000000000000000001")
✅ UpdateCorpusByIdForEngineByIdAsync(["update:translation_engines", "create:translation_engines", "read:translation_engines"],404,"e00000000000000000000004")
✅ UpdateParallelCorpusByIdForEngineById_NoSuchCorpus
✅ UpdateParallelCorpusByIdForEngineById_NoSuchEngine
✅ UpdateParallelCorpusByIdForEngineById_NotAuthorized
✅ UpdateParallelCorpusByIdForEngineByIdAsync
✅ Serval.ApiServer.WebhooksTests
✅ CreateWebhookAsync(["read:files"],403)
✅ CreateWebhookAsync(null,201)
✅ DeleteWebhookByIdAsync(["read:files"],403,"000000000000000000000000")
✅ DeleteWebhookByIdAsync(null,200,"000000000000000000000000")
✅ DeleteWebhookByIdAsync(null,404,"000000000000000000000001")
✅ GetAllWebhooksAsync(["read:files"],403)
✅ GetAllWebhooksAsync(null,200)
✅ GetWebhookByIdAsync(["read:files"],403,"000000000000000000000000")
✅ GetWebhookByIdAsync(null,200,"000000000000000000000000")
✅ GetWebhookByIdAsync(null,404,"000000000000000000000001")
✅ GetWebhookByIdAsync(null,404,"phony_id")
❌ Serval.ApiServer.WordAlignmentEngineTests
✅ AddParallelCorpusToEngineById_NotAuthorized
✅ AddParallelCorpusToEngineByIdAsync
✅ CancelCurrentBuildForEngineByIdAsync(["read:files"],403,"e00000000000000000000001",False)
✅ CancelCurrentBuildForEngineByIdAsync(["update:word_alignment_engines"],200,"e00000000000000000000001")
✅ CancelCurrentBuildForEngineByIdAsync(["update:word_alignment_engines"],204,"e00000000000000000000001",False)
✅ CancelCurrentBuildForEngineByIdAsync(["update:word_alignment_engines"],404,"e00000000000000000000004",False)
✅ CreateEngineAsync(["create:word_alignment_engines", "read:word_alignment_engines"],201,"EchoWordAlignment")
✅ CreateEngineAsync(["create:word_alignment_engines"],400,"NotARealKindOfMT")
✅ CreateEngineAsync(["read:files"],403,"EchoWordAlignment")
✅ DataFileUpdate_Propagated
✅ DeleteEngineByIdAsync(["delete:word_alignment_engines", "read:word_alignment_engines"],200,"e00000000000000000000001")
✅ DeleteEngineByIdAsync(["delete:word_alignment_engines"],404,"e00000000000000000000004")
✅ DeleteEngineByIdAsync(["read:word_alignment_engines"],403,"e00000000000000000000001")
✅ DeleteParallelCorpusByIdForEngineById_NoSuchCorpus
✅ DeleteParallelCorpusByIdForEngineById_NoSuchEngine
✅ DeleteParallelCorpusByIdForEngineById_NotAuthorized
✅ DeleteParallelCorpusByIdForEngineByIdAsync
✅ GetAllAsync(["read:files"],403)
✅ GetAllAsync(["read:word_alignment_engines"],200)
✅ GetAllBuildsForEngineByIdAsync(["read:files"],403,"e00000000000000000000001")
✅ GetAllBuildsForEngineByIdAsync(["read:word_alignment_engines"],200,"be0000000000000000000001")
✅ GetAllBuildsForEngineByIdAsync(["read:word_alignment_engines"],404,"e00000000000000000000004",False)
✅ GetAllParallelCorporaForEngineById_NoSuchEngine
✅ GetAllParallelCorporaForEngineById_NotAuthorized
✅ GetAllParallelCorporaForEngineByIdAsync
✅ GetAllWordAlignmentsAsync_CorpusDoesNotExist
✅ GetAllWordAlignmentsAsync_EngineDoesNotExist
✅ GetAllWordAlignmentsAsync_EngineNotBuilt
✅ GetAllWordAlignmentsAsync_Exists
✅ GetAllWordAlignmentsAsync_TextIdDoesNotExist
✅ GetAllWordAlignmentsAsync_TextIdExists
✅ GetBuildByIdForEngineByIdAsync(["read:files"],403,"e00000000000000000000001")
✅ GetBuildByIdForEngineByIdAsync(["read:word_alignment_engines"],200,"be0000000000000000000001")
✅ GetBuildByIdForEngineByIdAsync(["read:word_alignment_engines"],404,"be0000000000000000000001",False)
✅ GetBuildByIdForEngineByIdAsync(["read:word_alignment_engines"],404,"e00000000000000000000004",False)
✅ GetBuildByIdForEngineByIdAsync(["read:word_alignment_engines"],408,"be0000000000000000000001",True)
✅ GetByIdAsync(["read:files"],403,"e00000000000000000000001")
✅ GetByIdAsync(["read:word_alignment_engines"],200,"e00000000000000000000001")
✅ GetByIdAsync(["read:word_alignment_engines"],403,"e00000000000000000000003")
✅ GetByIdAsync(["read:word_alignment_engines"],404,"e00000000000000000000004")
✅ GetByIdAsync(["read:word_alignment_engines"],404,"phony_id")
✅ GetCurrentBuildForEngineByIdAsync(["read:files"],403,"e00000000000000000000001",False)
✅ GetCurrentBuildForEngineByIdAsync(["read:word_alignment_engines"],200,"e00000000000000000000001")
✅ GetCurrentBuildForEngineByIdAsync(["read:word_alignment_engines"],204,"e00000000000000000000001",False)
✅ GetCurrentBuildForEngineByIdAsync(["read:word_alignment_engines"],404,"e00000000000000000000004",False)
✅ GetCurrentBuildForEngineByIdAsync(["read:word_alignment_engines"],408,"e00000000000000000000001")
✅ GetParallelCorpusByIdForEngineById_NoCorpora
✅ GetParallelCorpusByIdForEngineById_NoSuchCorpus
✅ GetParallelCorpusByIdForEngineById_NoSuchEngine
✅ GetParallelCorpusByIdForEngineById_NotAuthorized
✅ GetParallelCorpusByIdForEngineByIdAsync
✅ GetWordAlignmentsByTextId
✅ GetWordAlignmentsByTextId_EngineDoesNotExist
✅ StartBuildAsync_ParallelCorpus
✅ StartBuildAsync_ParallelCorpus_NoFilter
✅ StartBuildAsync_ParallelCorpus_PretranslateFilterOnMultipleSources
✅ StartBuildAsync_ParallelCorpus_PretranslateNoCorpusSpecified
✅ StartBuildAsync_ParallelCorpus_TrainOnNoCorpusSpecified
✅ StartBuildForEngineAsync_UnparsableOptions()
✅ StartBuildForEngineByIdAsync(["read:files"],403,"e00000000000000000000001")
✅ StartBuildForEngineByIdAsync(["update:word_alignment_engines", "create:word_alignment_engines", "read:word_alignment_engines"],201,"e00000000000000000000001")
✅ StartBuildForEngineByIdAsync(["update:word_alignment_engines", "create:word_alignment_engines", "read:word_alignment_engines"],400,"e00000000000000000000001")
✅ StartBuildForEngineByIdAsync(["update:word_alignment_engines", "create:word_alignment_engines", "read:word_alignment_engines"],404,"e00000000000000000000004")
✅ TranslateSegmentWithEngineByIdAsync(["read:files"],403,"e00000000000000000000001")
❌ TranslateSegmentWithEngineByIdAsync(["read:word_alignment_engines", "update:word_alignment_engines"],200,"e00000000000000000000001")
NSubstitute.Exceptions.RedundantArgumentMatcherException : Some argument specifications (e.g. Arg.Is, Arg.Any) were left over after the last call.
This is often caused by using an argument spec with a call to a member NSubstitute does not handle (such as a non-virtual member or a call to an instance which is not a substitute), or for a purpose other than specifying a call (such as using an arg spec as a return value). For example:
var sub = Substitute.For<SomeClass>();
var realType = new MyRealType(sub);
// INCORRECT, arg spec used on realType, not a substitute:
realType.SomeMethod(Arg.Any<int>()).Returns(2);
// INCORRECT, arg spec used as a return value, not to specify a call:
sub.VirtualMethod(2).Returns(Arg.Any<int>());
// INCORRECT, arg spec used with a non-virtual method:
sub.NonVirtualMethod(Arg.Any<int>()).Returns(2);
// CORRECT, arg spec used to specify virtual call on a substitute:
sub.VirtualMethod(Arg.Any<int>()).Returns(2);
To fix this make sure you only use argument specifications with calls to substitutes. If your substitute is a class, make sure the member is virtual.
Another possible cause is that the argument spec type does not match the actual argument type, but code compiles due to an implicit cast. For example, Arg.Any<int>() was used, but Arg.Any<double>() was required.
NOTE: the cause of this exception can be in a previously executed test. Use the diagnostics below to see the types of any redundant arg specs, then work out where they are being created.
Diagnostic information:
Remaining (non-bound) argument specifications:
any CancellationToken
All argument specifications:
any CancellationToken
✅ TranslateSegmentWithEngineByIdAsync(["read:word_alignment_engines", "update:word_alignment_engines"],404,"e00000000000000000000004")
✅ TranslateSegmentWithEngineByIdAsync(["read:word_alignment_engines", "update:word_alignment_engines"],409,"e00000000000000000000001")
✅ TryToQueueMultipleBuildsPerSingleUser
✅ UpdateParallelCorpusByIdForEngineById_NoSuchCorpus
✅ UpdateParallelCorpusByIdForEngineById_NoSuchEngine
✅ UpdateParallelCorpusByIdForEngineById_NotAuthorized
✅ UpdateParallelCorpusByIdForEngineByIdAsync
✅ src/Serval/test/Serval.DataFiles.Tests/TestResults/test-results.trx
11 tests were completed in 11s with 11 passed, 0 failed and 0 skipped.
Test suite | Passed | Failed | Skipped | Time |
---|---|---|---|---|
Serval.DataFiles.Services.CorpusServiceTests | 2✅ | 288ms | ||
Serval.DataFiles.Services.DataFileServiceTests | 8✅ | 104ms | ||
Serval.DataFiles.Services.DeletedFileCleanerTests | 1✅ | 2s |
✅ Serval.DataFiles.Services.CorpusServiceTests
✅ CreateAsync
✅ UpdateAsync
✅ Serval.DataFiles.Services.DataFileServiceTests
✅ CreateAsync_Error
✅ CreateAsync_NoError
✅ DeleteAsync_DoesNotExist
✅ DeleteAsync_Exists
✅ DownloadAsync_DoesNotExists
✅ DownloadAsync_Exists
✅ UpdateAsync_DoesNotExist
✅ UpdateAsync_Exists
✅ Serval.DataFiles.Services.DeletedFileCleanerTests
✅ Clean
✅ src/Serval/test/Serval.E2ETests/TestResults/test-results.trx
No tests found
✅ src/Serval/test/Serval.Shared.Tests/TestResults/test-results.trx
3 tests were completed in 6s with 3 passed, 0 failed and 0 skipped.
Test suite | Passed | Failed | Skipped | Time |
---|---|---|---|---|
Serval.Shared.Services.ScriptureDataFileServiceTests | 2✅ | 184ms | ||
Serval.Shared.Utils.ObjectToInferredTypesConverterTest | 1✅ | 62ms |
✅ Serval.Shared.Services.ScriptureDataFileServiceTests
✅ GetParatextProjectSettings
✅ GetZipParatextProjectTextUpdater
✅ Serval.Shared.Utils.ObjectToInferredTypesConverterTest
✅ Convert
✅ src/Serval/test/Serval.Translation.Tests/TestResults/test-results.trx
50 tests were completed in 10s with 50 passed, 0 failed and 0 skipped.
Test suite | Passed | Failed | Skipped | Time |
---|---|---|---|---|
Serval.Translation.Services.BuildCleanupServiceTests | 1✅ | 212ms | ||
Serval.Translation.Services.BuildServiceTests | 4✅ | 77ms | ||
Serval.Translation.Services.EngineCleanupServiceTests | 1✅ | 32ms | ||
Serval.Translation.Services.EngineServiceTests | 30✅ | 970ms | ||
Serval.Translation.Services.PlatformServiceTests | 3✅ | 229ms | ||
Serval.Translation.Services.PretranslationServiceTests | 11✅ | 823ms |
✅ Serval.Translation.Services.BuildCleanupServiceTests
✅ CleanupAsync
✅ Serval.Translation.Services.BuildServiceTests
✅ GetActiveNewerRevisionAsync_Insert
✅ GetNewerRevisionAsync_Delete
✅ GetNewerRevisionAsync_DoesNotExist
✅ GetNewerRevisionAsync_Update
✅ Serval.Translation.Services.EngineCleanupServiceTests
✅ CleanupAsync
✅ Serval.Translation.Services.EngineServiceTests
✅ CancelBuildAsync_EngineExistsNotBuilding
✅ CreateAsync
✅ DeleteAsync_EngineExists
✅ DeleteAsync_ProjectDoesNotExist
✅ GetWordGraphAsync_EngineDoesNotExist
✅ GetWordGraphAsync_EngineExists
✅ StartBuildAsync_MixedSourceAndTarget_ParallelCorpus
✅ StartBuildAsync_NoFilters_ParallelCorpus
✅ StartBuildAsync_NoTargetFilter_ParallelCorpus
✅ StartBuildAsync_OneOfMultipleCorpora
✅ StartBuildAsync_ParallelCorpus_OneOfMultipleCorpora
✅ StartBuildAsync_ParallelCorpus_TextFiles
✅ StartBuildAsync_ParallelCorpus_TrainOnOnePretranslateTheOther
✅ StartBuildAsync_ScriptureRange_ParallelCorpus
✅ StartBuildAsync_ScriptureRangeEmptyString
✅ StartBuildAsync_ScriptureRangeSpecified
✅ StartBuildAsync_TextFilesScriptureRangeSpecified
✅ StartBuildAsync_TextFilesScriptureRangeSpecified_ParallelCorpus
✅ StartBuildAsync_TextIds_ParallelCorpus
✅ StartBuildAsync_TextIdsEmpty
✅ StartBuildAsync_TextIdsNotSpecified
✅ StartBuildAsync_TextIdsPopulated
✅ StartBuildAsync_TrainOnNotSpecified
✅ StartBuildAsync_TrainOnNotSpecified_ParallelCorpus
✅ StartBuildAsync_TrainOnOnePretranslateTheOther
✅ TrainSegmentAsync_EngineDoesNotExist
✅ TrainSegmentAsync_EngineExists
✅ TranslateAsync_EngineDoesNotExist
✅ TranslateAsync_EngineExists
✅ UpdateCorpusAsync
✅ Serval.Translation.Services.PlatformServiceTests
✅ IncrementCorpusSizeAsync
✅ TestBuildStateTransitionsAsync
✅ UpdateBuildStatusAsync
✅ Serval.Translation.Services.PretranslationServiceTests
✅ GetUsfmAsync_Auto_TargetBookDoesNotExist
✅ GetUsfmAsync_Auto_TargetBookExists
✅ GetUsfmAsync_Source_OnlyExisting
✅ GetUsfmAsync_Source_OnlyPretranslated
✅ GetUsfmAsync_Source_PreferExisting
✅ GetUsfmAsync_Source_PreferPretranslated
✅ GetUsfmAsync_Target_OnlyExisting
✅ GetUsfmAsync_Target_OnlyPretranslated
✅ GetUsfmAsync_Target_PreferExisting
✅ GetUsfmAsync_Target_PreferPretranslated
✅ GetUsfmAsync_Target_TargetBookDoesNotExist
✅ src/Serval/test/Serval.Webhooks.Tests/TestResults/test-results.trx
5 tests were completed in 7s with 5 passed, 0 failed and 0 skipped.
Test suite | Passed | Failed | Skipped | Time |
---|---|---|---|---|
Serval.Webhooks.Services.WebhookJobTests | 5✅ | 131ms |
✅ Serval.Webhooks.Services.WebhookJobTests
✅ RunAsync_Exception
✅ RunAsync_MatchingHook
✅ RunAsync_NoHooks
✅ RunAsync_NoMatchingHook
✅ RunAsync_RequestTimeout
✅ src/Serval/test/Serval.WordAlignment.Tests/TestResults/test-results.trx
27 tests were completed in 7s with 27 passed, 0 failed and 0 skipped.
Test suite | Passed | Failed | Skipped | Time |
---|---|---|---|---|
Serval.WordAlignment.Services.BuildCleanupServiceTests | 1✅ | 141ms | ||
Serval.WordAlignment.Services.BuildServiceTests | 4✅ | 70ms | ||
Serval.WordAlignment.Services.EngineCleanupServiceTests | 1✅ | 29ms | ||
Serval.WordAlignment.Services.EngineServiceTests | 18✅ | 444ms | ||
Serval.WordAlignment.Services.PlatformServiceTests | 3✅ | 110ms |
✅ Serval.WordAlignment.Services.BuildCleanupServiceTests
✅ CleanupAsync
✅ Serval.WordAlignment.Services.BuildServiceTests
✅ GetActiveNewerRevisionAsync_Insert
✅ GetNewerRevisionAsync_Delete
✅ GetNewerRevisionAsync_DoesNotExist
✅ GetNewerRevisionAsync_Update
✅ Serval.WordAlignment.Services.EngineCleanupServiceTests
✅ CleanupAsync
✅ Serval.WordAlignment.Services.EngineServiceTests
✅ CancelBuildAsync_EngineExistsNotBuilding
✅ CreateAsync
✅ DeleteAsync_EngineExists
✅ DeleteAsync_ProjectDoesNotExist
✅ GetWordAlignmentAsync_EngineDoesNotExist
✅ GetWordAlignmentAsync_EngineExists
✅ StartBuildAsync_MixedSourceAndTarget
✅ StartBuildAsync_NoTargetFilter
✅ StartBuildAsync_OneOfMultipleCorpora
✅ StartBuildAsync_ScriptureRangeEmptyString
✅ StartBuildAsync_ScriptureRangeSpecified
✅ StartBuildAsync_TextFilesScriptureRangeSpecified
✅ StartBuildAsync_TextIdsEmpty
✅ StartBuildAsync_TextIdsNotSpecified
✅ StartBuildAsync_TextIdsPopulated
✅ StartBuildAsync_TrainOnNotSpecified
✅ StartBuildAsync_TrainOnOneWordAlignTheOther
✅ UpdateCorpusAsync
✅ Serval.WordAlignment.Services.PlatformServiceTests
✅ IncrementCorpusSizeAsync
✅ TestBuildStateTransitionsAsync
✅ UpdateBuildStatusAsync
✅ src/ServiceToolkit/test/SIL.ServiceToolkit.Tests/TestResults/test-results.trx
1 tests were completed in 5s with 1 passed, 0 failed and 0 skipped.
Test suite | Passed | Failed | Skipped | Time |
---|---|---|---|---|
SIL.ServiceToolkit.Services.ParallelCorpusPreprocessingServiceTests | 1✅ | 72ms |
✅ SIL.ServiceToolkit.Services.ParallelCorpusPreprocessingServiceTests
✅ TestParallelCorpusPreprocessor
Annotations
github-actions / NUnit Tests
Serval.ApiServer.WordAlignmentEngineTests ► TranslateSegmentWithEngineByIdAsync(["read:word_alignment_engines", "update:word_alignment_engines"],200,"e00000000000000000000001")
Failed test found in:
src/Serval/test/Serval.ApiServer.IntegrationTests/TestResults/test-results.trx
Error:
NSubstitute.Exceptions.RedundantArgumentMatcherException : Some argument specifications (e.g. Arg.Is, Arg.Any) were left over after the last call.
This is often caused by using an argument spec with a call to a member NSubstitute does not handle (such as a non-virtual member or a call to an instance which is not a substitute), or for a purpose other than specifying a call (such as using an arg spec as a return value). For example:
var sub = Substitute.For<SomeClass>();
var realType = new MyRealType(sub);
// INCORRECT, arg spec used on realType, not a substitute:
realType.SomeMethod(Arg.Any<int>()).Returns(2);
// INCORRECT, arg spec used as a return value, not to specify a call:
sub.VirtualMethod(2).Returns(Arg.Any<int>());
// INCORRECT, arg spec used with a non-virtual method:
sub.NonVirtualMethod(Arg.Any<int>()).Returns(2);
// CORRECT, arg spec used to specify virtual call on a substitute:
sub.VirtualMethod(Arg.Any<int>()).Returns(2);
To fix this make sure you only use argument specifications with calls to substitutes. If your substitute is a class, make sure the member is virtual.
Another possible cause is that the argument spec type does not match the actual argument type, but code compiles due to an implicit cast. For example, Arg.Any<int>() was used, but Arg.Any<double>() was required.
NOTE: the cause of this exception can be in a previously executed test. Use the diagnostics below to see the types of any redundant arg specs, then work out where they are being created.
Diagnostic information:
Remaining (non-bound) argument specifications:
any CancellationToken
All argument specifications:
any CancellationToken
Raw output
NSubstitute.Exceptions.RedundantArgumentMatcherException : Some argument specifications (e.g. Arg.Is, Arg.Any) were left over after the last call.
This is often caused by using an argument spec with a call to a member NSubstitute does not handle (such as a non-virtual member or a call to an instance which is not a substitute), or for a purpose other than specifying a call (such as using an arg spec as a return value). For example:
var sub = Substitute.For<SomeClass>();
var realType = new MyRealType(sub);
// INCORRECT, arg spec used on realType, not a substitute:
realType.SomeMethod(Arg.Any<int>()).Returns(2);
// INCORRECT, arg spec used as a return value, not to specify a call:
sub.VirtualMethod(2).Returns(Arg.Any<int>());
// INCORRECT, arg spec used with a non-virtual method:
sub.NonVirtualMethod(Arg.Any<int>()).Returns(2);
// CORRECT, arg spec used to specify virtual call on a substitute:
sub.VirtualMethod(Arg.Any<int>()).Returns(2);
To fix this make sure you only use argument specifications with calls to substitutes. If your substitute is a class, make sure the member is virtual.
Another possible cause is that the argument spec type does not match the actual argument type, but code compiles due to an implicit cast. For example, Arg.Any<int>() was used, but Arg.Any<double>() was required.
NOTE: the cause of this exception can be in a previously executed test. Use the diagnostics below to see the types of any redundant arg specs, then work out where they are being created.
Diagnostic information:
Remaining (non-bound) argument specifications:
any CancellationToken
All argument specifications:
any CancellationToken
at NSubstitute.Core.Arguments.ArgumentSpecificationsFactory.Create(IList`1 argumentSpecs, Object[] arguments, IParameterInfo[] parameterInfos, MethodInfo methodInfo, MatchArgs matchArgs)
at NSubstitute.Routing.Handlers.RecordCallSpecificationHandler.Handle(ICall call)
at NSubstitute.Proxies.CastleDynamicProxy.CastleForwardingInterceptor.Intercept(IInvocation invocation)
at Castle.DynamicProxy.AbstractInvocation.Proceed()
at Castle.DynamicProxy.AbstractInvocation.Proceed()
at Castle.Proxies.ObjectProxy.OpenZipFile(String path)
at Serval.ApiServer.WordAlignmentEngineTests.TestEnvironment.CreateFileSystem(IServiceProvider sp) in /home/runner/work/serval/serval/src/Serval/test/Serval.ApiServer.IntegrationTests/WordAlignmentEngineTests.cs:line 1667
at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSiteMain(ServiceCallSite callSite, TArgument argument)
at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(ServiceCallSite callSite, TArgument argument)
at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSiteMain(ServiceCallSite callSite, TArgument argument)
at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(ServiceCallSite callSite, TArgument argument)
at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSiteMain(ServiceCallSite callSite, TArgument argument)
at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitCache(ServiceCallSite callSite, RuntimeResolverContext context, ServiceProviderEngineScope serviceProviderEngine, RuntimeResolverLock lockType)
at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitScopeCache(ServiceCallSite callSite, RuntimeResolverContext context)
at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(ServiceCallSite callSite, TArgument argument)
at Microsoft.Extensions.DependencyInjection.ServiceLookup.DynamicServiceProviderEngine.<>c__DisplayClass2_0.<RealizeService>b__0(ServiceProviderEngineScope scope)
at Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope.GetService(Type serviceType)
at lambda_method5500(Closure, IServiceProvider, Object[])
at Microsoft.AspNetCore.Mvc.Controllers.ControllerFactoryProvider.<>c__DisplayClass6_0.<CreateControllerFactory>g__CreateController|0(ControllerContext controllerContext)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync()
--- End of stack trace from previous location ---
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextExceptionFilterAsync>g__Awaited|26_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ExceptionContextSealed context)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeFilterPipelineAsync()
--- End of stack trace from previous location ---
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Logged|17_1(ResourceInvoker invoker)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Logged|17_1(ResourceInvoker invoker)
at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
at Microsoft.AspNetCore.Http.Timeouts.RequestTimeoutsMiddleware.<>c__DisplayClass5_0.<<Invoke>g__SetTimeoutAsync|0>d.MoveNext()
--- End of stack trace from previous location ---
at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
at SIL.ServiceToolkit.Services.BugsnagMiddleware.Invoke(HttpContext context, IClient client) in /home/runner/work/serval/serval/src/ServiceToolkit/src/SIL.ServiceToolkit/Services/BugsnagMiddleware.cs:line 35
at Microsoft.AspNetCore.TestHost.HttpContextBuilder.<>c__DisplayClass23_0.<<SendAsync>g__RunRequestAsync|0>d.MoveNext()
--- End of stack trace from previous location ---
at Microsoft.AspNetCore.TestHost.ClientHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
at Microsoft.AspNetCore.Mvc.Testing.Handlers.CookieContainerHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
at Microsoft.AspNetCore.Mvc.Testing.Handlers.RedirectHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
at System.Net.Http.HttpClient.<SendAsync>g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)
at Serval.Client.WordAlignmentEnginesClient.GetWordAlignmentAsync(String id, WordAlignmentRequest wordAlignmentRequest, CancellationToken cancellationToken) in /home/runner/work/serval/serval/src/Serval/src/Serval.Client/Client.g.cs:line 7742
at Serval.ApiServer.WordAlignmentEngineTests.TranslateSegmentWithEngineByIdAsync(IEnumerable`1 scope, Int32 expectedStatusCode, String engineId) in /home/runner/work/serval/serval/src/Serval/test/Serval.ApiServer.IntegrationTests/WordAlignmentEngineTests.cs:line 351
at NUnit.Framework.Internal.AsyncToSyncAdapter.Await[TResult](Func`1 invoke)
at NUnit.Framework.Internal.Commands.TestMethodCommand.Execute(TestExecutionContext context)
at NUnit.Framework.Internal.Commands.DelegatingTestCommand.RunTestMethodInThreadAbortSafeZone(TestExecutionContext context, Action action)