kreuzberg 4.1.1 → 4.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile.lock +4 -4
- data/README.md +8 -5
- data/ext/kreuzberg_rb/native/Cargo.toml +2 -2
- data/ext/kreuzberg_rb/native/libpdfium.so +0 -0
- data/ext/kreuzberg_rb/native/src/config/types.rs +23 -13
- data/kreuzberg.gemspec +14 -2
- data/lib/kreuzberg/api_proxy.rb +0 -1
- data/lib/kreuzberg/cli_proxy.rb +0 -1
- data/lib/kreuzberg/config.rb +70 -35
- data/lib/kreuzberg/mcp_proxy.rb +0 -1
- data/lib/kreuzberg/version.rb +1 -1
- data/sig/kreuzberg.rbs +5 -1
- data/spec/binding/batch_operations_spec.rb +80 -0
- data/spec/binding/metadata_types_spec.rb +77 -57
- data/spec/serialization_spec.rb +134 -0
- data/spec/unit/config/output_format_spec.rb +380 -0
- data/vendor/Cargo.toml +1 -1
- data/vendor/kreuzberg/Cargo.toml +3 -3
- data/vendor/kreuzberg/README.md +1 -1
- data/vendor/kreuzberg/src/embeddings.rs +4 -4
- data/vendor/kreuzberg/src/mcp/format.rs +237 -39
- data/vendor/kreuzberg/src/mcp/params.rs +26 -33
- data/vendor/kreuzberg/src/mcp/server.rs +6 -3
- data/vendor/kreuzberg/src/mcp/tools/extraction.rs +16 -23
- data/vendor/kreuzberg/tests/api_chunk.rs +40 -30
- data/vendor/kreuzberg/tests/api_consistency.rs +349 -0
- data/vendor/kreuzberg/tests/api_embed.rs +84 -50
- data/vendor/kreuzberg/tests/api_large_pdf_extraction_diagnostics.rs +8 -2
- data/vendor/kreuzberg/tests/api_tests.rs +298 -139
- data/vendor/kreuzberg/tests/archive_integration.rs +63 -56
- data/vendor/kreuzberg/tests/batch_orchestration.rs +22 -14
- data/vendor/kreuzberg/tests/batch_pooling_benchmark.rs +13 -13
- data/vendor/kreuzberg/tests/batch_processing.rs +13 -9
- data/vendor/kreuzberg/tests/bibtex_parity_test.rs +10 -10
- data/vendor/kreuzberg/tests/concurrency_stress.rs +10 -6
- data/vendor/kreuzberg/tests/config_behavioral.rs +414 -0
- data/vendor/kreuzberg/tests/config_features.rs +19 -15
- data/vendor/kreuzberg/tests/config_integration_test.rs +68 -68
- data/vendor/kreuzberg/tests/config_loading_tests.rs +71 -62
- data/vendor/kreuzberg/tests/contract_mcp.rs +314 -0
- data/vendor/kreuzberg/tests/core_integration.rs +55 -53
- data/vendor/kreuzberg/tests/docbook_extractor_tests.rs +23 -23
- data/vendor/kreuzberg/tests/docx_metadata_extraction_test.rs +15 -14
- data/vendor/kreuzberg/tests/docx_vs_pandoc_comparison.rs +4 -4
- data/vendor/kreuzberg/tests/email_integration.rs +7 -7
- data/vendor/kreuzberg/tests/epub_native_extractor_tests.rs +2 -2
- data/vendor/kreuzberg/tests/error_handling.rs +13 -11
- data/vendor/kreuzberg/tests/fictionbook_extractor_tests.rs +2 -2
- data/vendor/kreuzberg/tests/html_table_test.rs +11 -11
- data/vendor/kreuzberg/tests/instrumentation_test.rs +18 -13
- data/vendor/kreuzberg/tests/jats_extractor_tests.rs +17 -17
- data/vendor/kreuzberg/tests/jupyter_extractor_tests.rs +9 -9
- data/vendor/kreuzberg/tests/keywords_integration.rs +25 -25
- data/vendor/kreuzberg/tests/keywords_quality.rs +9 -9
- data/vendor/kreuzberg/tests/latex_extractor_tests.rs +2 -2
- data/vendor/kreuzberg/tests/markdown_extractor_tests.rs +1 -1
- data/vendor/kreuzberg/tests/mcp_integration.rs +849 -0
- data/vendor/kreuzberg/tests/mime_detection.rs +72 -41
- data/vendor/kreuzberg/tests/ocr_errors.rs +10 -4
- data/vendor/kreuzberg/tests/ocr_language_registry.rs +1 -1
- data/vendor/kreuzberg/tests/ocr_stress.rs +3 -3
- data/vendor/kreuzberg/tests/odt_extractor_tests.rs +6 -6
- data/vendor/kreuzberg/tests/opml_extractor_tests.rs +2 -2
- data/vendor/kreuzberg/tests/orgmode_extractor_tests.rs +2 -2
- data/vendor/kreuzberg/tests/page_markers.rs +1 -1
- data/vendor/kreuzberg/tests/pdf_hierarchy_detection.rs +6 -6
- data/vendor/kreuzberg/tests/pdf_text_merging.rs +2 -2
- data/vendor/kreuzberg/tests/pipeline_integration.rs +77 -61
- data/vendor/kreuzberg/tests/plugin_ocr_backend_test.rs +97 -77
- data/vendor/kreuzberg/tests/plugin_postprocessor_test.rs +78 -61
- data/vendor/kreuzberg/tests/plugin_system.rs +49 -46
- data/vendor/kreuzberg/tests/plugin_validator_test.rs +109 -97
- data/vendor/kreuzberg/tests/pptx_regression_tests.rs +40 -30
- data/vendor/kreuzberg/tests/registry_integration_tests.rs +26 -23
- data/vendor/kreuzberg/tests/rst_extractor_tests.rs +1 -1
- data/vendor/kreuzberg/tests/rtf_extractor_tests.rs +18 -18
- data/vendor/kreuzberg/tests/security_validation.rs +20 -19
- data/vendor/kreuzberg/tests/serialization_integration.rs +112 -0
- data/vendor/kreuzberg/tests/stopwords_integration_test.rs +36 -36
- data/vendor/kreuzberg/tests/test_fastembed.rs +8 -8
- data/vendor/kreuzberg/tests/typst_extractor_tests.rs +9 -9
- data/vendor/kreuzberg/tests/xlsx_metadata_extraction_test.rs +12 -9
- data/vendor/kreuzberg-tesseract/Cargo.toml +3 -3
- data/vendor/kreuzberg-tesseract/build.rs +4 -4
- data/vendor/kreuzberg-tesseract/src/lib.rs +6 -6
- data/vendor/kreuzberg-tesseract/tests/integration_test.rs +3 -3
- metadata +13 -2
|
@@ -48,7 +48,7 @@ impl OcrBackend for MockOcrBackend {
|
|
|
48
48
|
async fn process_image(&self, image_bytes: &[u8], config: &OcrConfig) -> Result<ExtractionResult> {
|
|
49
49
|
self.call_count.fetch_add(1, Ordering::SeqCst);
|
|
50
50
|
|
|
51
|
-
*self.last_language.lock().
|
|
51
|
+
*self.last_language.lock().expect("Operation failed") = config.language.clone();
|
|
52
52
|
|
|
53
53
|
if image_bytes.is_empty() {
|
|
54
54
|
return Err(KreuzbergError::validation("Empty image data".to_string()));
|
|
@@ -240,8 +240,8 @@ fn test_register_custom_ocr_backend() {
|
|
|
240
240
|
let registry = get_ocr_backend_registry();
|
|
241
241
|
|
|
242
242
|
{
|
|
243
|
-
let mut reg = registry.write().
|
|
244
|
-
reg.shutdown_all().
|
|
243
|
+
let mut reg = registry.write().expect("Operation failed");
|
|
244
|
+
reg.shutdown_all().expect("Operation failed");
|
|
245
245
|
}
|
|
246
246
|
|
|
247
247
|
let backend = Arc::new(MockOcrBackend {
|
|
@@ -253,7 +253,7 @@ fn test_register_custom_ocr_backend() {
|
|
|
253
253
|
});
|
|
254
254
|
|
|
255
255
|
{
|
|
256
|
-
let mut reg = registry.write().
|
|
256
|
+
let mut reg = registry.write().expect("Operation failed");
|
|
257
257
|
let result = reg.register(Arc::clone(&backend) as Arc<dyn OcrBackend>);
|
|
258
258
|
assert!(result.is_ok(), "Failed to register OCR backend: {:?}", result.err());
|
|
259
259
|
}
|
|
@@ -264,15 +264,15 @@ fn test_register_custom_ocr_backend() {
|
|
|
264
264
|
);
|
|
265
265
|
|
|
266
266
|
let list = {
|
|
267
|
-
let reg = registry.read().
|
|
267
|
+
let reg = registry.read().expect("Operation failed");
|
|
268
268
|
reg.list()
|
|
269
269
|
};
|
|
270
270
|
|
|
271
271
|
assert!(list.contains(&"test-ocr".to_string()));
|
|
272
272
|
|
|
273
273
|
{
|
|
274
|
-
let mut reg = registry.write().
|
|
275
|
-
reg.shutdown_all().
|
|
274
|
+
let mut reg = registry.write().expect("Operation failed");
|
|
275
|
+
reg.shutdown_all().expect("Operation failed");
|
|
276
276
|
}
|
|
277
277
|
}
|
|
278
278
|
|
|
@@ -283,8 +283,8 @@ fn test_ocr_backend_used_for_image_extraction() {
|
|
|
283
283
|
let registry = get_ocr_backend_registry();
|
|
284
284
|
|
|
285
285
|
{
|
|
286
|
-
let mut reg = registry.write().
|
|
287
|
-
reg.shutdown_all().
|
|
286
|
+
let mut reg = registry.write().expect("Operation failed");
|
|
287
|
+
reg.shutdown_all().expect("Operation failed");
|
|
288
288
|
}
|
|
289
289
|
|
|
290
290
|
let backend = Arc::new(MockOcrBackend {
|
|
@@ -296,8 +296,9 @@ fn test_ocr_backend_used_for_image_extraction() {
|
|
|
296
296
|
});
|
|
297
297
|
|
|
298
298
|
{
|
|
299
|
-
let mut reg = registry.write().
|
|
300
|
-
reg.register(Arc::clone(&backend) as Arc<dyn OcrBackend>)
|
|
299
|
+
let mut reg = registry.write().expect("Operation failed");
|
|
300
|
+
reg.register(Arc::clone(&backend) as Arc<dyn OcrBackend>)
|
|
301
|
+
.expect("Operation failed");
|
|
301
302
|
}
|
|
302
303
|
|
|
303
304
|
let ocr_config = OcrConfig {
|
|
@@ -317,7 +318,7 @@ fn test_ocr_backend_used_for_image_extraction() {
|
|
|
317
318
|
|
|
318
319
|
assert!(result.is_ok(), "Extraction failed: {:?}", result.err());
|
|
319
320
|
|
|
320
|
-
let extraction_result = result.
|
|
321
|
+
let extraction_result = result.expect("Operation failed");
|
|
321
322
|
assert!(
|
|
322
323
|
extraction_result.content.contains("CUSTOM OCR TEXT"),
|
|
323
324
|
"Custom OCR backend was not used. Content: {}",
|
|
@@ -331,8 +332,8 @@ fn test_ocr_backend_used_for_image_extraction() {
|
|
|
331
332
|
);
|
|
332
333
|
|
|
333
334
|
{
|
|
334
|
-
let mut reg = registry.write().
|
|
335
|
-
reg.shutdown_all().
|
|
335
|
+
let mut reg = registry.write().expect("Operation failed");
|
|
336
|
+
reg.shutdown_all().expect("Operation failed");
|
|
336
337
|
}
|
|
337
338
|
}
|
|
338
339
|
|
|
@@ -343,8 +344,8 @@ fn test_ocr_backend_receives_correct_parameters() {
|
|
|
343
344
|
let registry = get_ocr_backend_registry();
|
|
344
345
|
|
|
345
346
|
{
|
|
346
|
-
let mut reg = registry.write().
|
|
347
|
-
reg.shutdown_all().
|
|
347
|
+
let mut reg = registry.write().expect("Operation failed");
|
|
348
|
+
reg.shutdown_all().expect("Operation failed");
|
|
348
349
|
}
|
|
349
350
|
|
|
350
351
|
let backend = Arc::new(MockOcrBackend {
|
|
@@ -356,8 +357,9 @@ fn test_ocr_backend_receives_correct_parameters() {
|
|
|
356
357
|
});
|
|
357
358
|
|
|
358
359
|
{
|
|
359
|
-
let mut reg = registry.write().
|
|
360
|
-
reg.register(Arc::clone(&backend) as Arc<dyn OcrBackend>)
|
|
360
|
+
let mut reg = registry.write().expect("Operation failed");
|
|
361
|
+
reg.register(Arc::clone(&backend) as Arc<dyn OcrBackend>)
|
|
362
|
+
.expect("Operation failed");
|
|
361
363
|
}
|
|
362
364
|
|
|
363
365
|
let ocr_config = OcrConfig {
|
|
@@ -377,15 +379,15 @@ fn test_ocr_backend_receives_correct_parameters() {
|
|
|
377
379
|
|
|
378
380
|
assert!(result.is_ok());
|
|
379
381
|
|
|
380
|
-
let last_lang = backend.last_language.lock().
|
|
382
|
+
let last_lang = backend.last_language.lock().expect("Operation failed");
|
|
381
383
|
assert_eq!(*last_lang, "deu", "Language parameter not passed correctly");
|
|
382
384
|
|
|
383
|
-
let extraction_result = result.
|
|
385
|
+
let extraction_result = result.expect("Operation failed");
|
|
384
386
|
assert!(extraction_result.content.contains("(lang: deu)"));
|
|
385
387
|
|
|
386
388
|
{
|
|
387
|
-
let mut reg = registry.write().
|
|
388
|
-
reg.shutdown_all().
|
|
389
|
+
let mut reg = registry.write().expect("Operation failed");
|
|
390
|
+
reg.shutdown_all().expect("Operation failed");
|
|
389
391
|
}
|
|
390
392
|
}
|
|
391
393
|
|
|
@@ -396,8 +398,8 @@ fn test_ocr_backend_returns_correct_format() {
|
|
|
396
398
|
let registry = get_ocr_backend_registry();
|
|
397
399
|
|
|
398
400
|
{
|
|
399
|
-
let mut reg = registry.write().
|
|
400
|
-
reg.shutdown_all().
|
|
401
|
+
let mut reg = registry.write().expect("Operation failed");
|
|
402
|
+
reg.shutdown_all().expect("Operation failed");
|
|
401
403
|
}
|
|
402
404
|
|
|
403
405
|
let backend = Arc::new(MetadataOcrBackend {
|
|
@@ -405,8 +407,8 @@ fn test_ocr_backend_returns_correct_format() {
|
|
|
405
407
|
});
|
|
406
408
|
|
|
407
409
|
{
|
|
408
|
-
let mut reg = registry.write().
|
|
409
|
-
reg.register(backend as Arc<dyn OcrBackend>).
|
|
410
|
+
let mut reg = registry.write().expect("Operation failed");
|
|
411
|
+
reg.register(backend as Arc<dyn OcrBackend>).expect("Operation failed");
|
|
410
412
|
}
|
|
411
413
|
|
|
412
414
|
let ocr_config = OcrConfig {
|
|
@@ -426,7 +428,7 @@ fn test_ocr_backend_returns_correct_format() {
|
|
|
426
428
|
|
|
427
429
|
assert!(result.is_ok());
|
|
428
430
|
|
|
429
|
-
let extraction_result = result.
|
|
431
|
+
let extraction_result = result.expect("Operation failed");
|
|
430
432
|
|
|
431
433
|
assert!(!extraction_result.content.is_empty());
|
|
432
434
|
assert_eq!(extraction_result.mime_type, "image/png");
|
|
@@ -435,8 +437,8 @@ fn test_ocr_backend_returns_correct_format() {
|
|
|
435
437
|
assert!(extraction_result.metadata.additional.contains_key("ocr_language"));
|
|
436
438
|
|
|
437
439
|
{
|
|
438
|
-
let mut reg = registry.write().
|
|
439
|
-
reg.shutdown_all().
|
|
440
|
+
let mut reg = registry.write().expect("Operation failed");
|
|
441
|
+
reg.shutdown_all().expect("Operation failed");
|
|
440
442
|
}
|
|
441
443
|
}
|
|
442
444
|
|
|
@@ -447,8 +449,8 @@ fn test_ocr_backend_error_handling() {
|
|
|
447
449
|
let registry = get_ocr_backend_registry();
|
|
448
450
|
|
|
449
451
|
{
|
|
450
|
-
let mut reg = registry.write().
|
|
451
|
-
reg.shutdown_all().
|
|
452
|
+
let mut reg = registry.write().expect("Operation failed");
|
|
453
|
+
reg.shutdown_all().expect("Operation failed");
|
|
452
454
|
}
|
|
453
455
|
|
|
454
456
|
let backend = Arc::new(FailingOcrBackend {
|
|
@@ -456,8 +458,8 @@ fn test_ocr_backend_error_handling() {
|
|
|
456
458
|
});
|
|
457
459
|
|
|
458
460
|
{
|
|
459
|
-
let mut reg = registry.write().
|
|
460
|
-
reg.register(backend as Arc<dyn OcrBackend>).
|
|
461
|
+
let mut reg = registry.write().expect("Operation failed");
|
|
462
|
+
reg.register(backend as Arc<dyn OcrBackend>).expect("Operation failed");
|
|
461
463
|
}
|
|
462
464
|
|
|
463
465
|
let ocr_config = OcrConfig {
|
|
@@ -477,7 +479,7 @@ fn test_ocr_backend_error_handling() {
|
|
|
477
479
|
|
|
478
480
|
assert!(result.is_err(), "Expected OCR to fail");
|
|
479
481
|
|
|
480
|
-
match result.
|
|
482
|
+
match result.expect_err("Operation failed") {
|
|
481
483
|
KreuzbergError::Ocr { message, .. } => {
|
|
482
484
|
assert!(message.contains("intentionally failed"));
|
|
483
485
|
}
|
|
@@ -485,8 +487,8 @@ fn test_ocr_backend_error_handling() {
|
|
|
485
487
|
}
|
|
486
488
|
|
|
487
489
|
{
|
|
488
|
-
let mut reg = registry.write().
|
|
489
|
-
reg.shutdown_all().
|
|
490
|
+
let mut reg = registry.write().expect("Operation failed");
|
|
491
|
+
reg.shutdown_all().expect("Operation failed");
|
|
490
492
|
}
|
|
491
493
|
}
|
|
492
494
|
|
|
@@ -497,8 +499,8 @@ fn test_ocr_backend_validation_error() {
|
|
|
497
499
|
let registry = get_ocr_backend_registry();
|
|
498
500
|
|
|
499
501
|
{
|
|
500
|
-
let mut reg = registry.write().
|
|
501
|
-
reg.shutdown_all().
|
|
502
|
+
let mut reg = registry.write().expect("Operation failed");
|
|
503
|
+
reg.shutdown_all().expect("Operation failed");
|
|
502
504
|
}
|
|
503
505
|
|
|
504
506
|
let backend = Arc::new(ValidatingOcrBackend {
|
|
@@ -507,8 +509,8 @@ fn test_ocr_backend_validation_error() {
|
|
|
507
509
|
});
|
|
508
510
|
|
|
509
511
|
{
|
|
510
|
-
let mut reg = registry.write().
|
|
511
|
-
reg.register(backend as Arc<dyn OcrBackend>).
|
|
512
|
+
let mut reg = registry.write().expect("Operation failed");
|
|
513
|
+
reg.register(backend as Arc<dyn OcrBackend>).expect("Operation failed");
|
|
512
514
|
}
|
|
513
515
|
|
|
514
516
|
let ocr_config = OcrConfig {
|
|
@@ -528,7 +530,7 @@ fn test_ocr_backend_validation_error() {
|
|
|
528
530
|
|
|
529
531
|
assert!(result.is_err(), "Expected validation to fail");
|
|
530
532
|
|
|
531
|
-
match result.
|
|
533
|
+
match result.expect_err("Operation failed") {
|
|
532
534
|
KreuzbergError::Validation { message, .. } => {
|
|
533
535
|
assert!(message.contains("Image too small"));
|
|
534
536
|
}
|
|
@@ -536,8 +538,8 @@ fn test_ocr_backend_validation_error() {
|
|
|
536
538
|
}
|
|
537
539
|
|
|
538
540
|
{
|
|
539
|
-
let mut reg = registry.write().
|
|
540
|
-
reg.shutdown_all().
|
|
541
|
+
let mut reg = registry.write().expect("Operation failed");
|
|
542
|
+
reg.shutdown_all().expect("Operation failed");
|
|
541
543
|
}
|
|
542
544
|
}
|
|
543
545
|
|
|
@@ -548,8 +550,8 @@ fn test_switching_between_ocr_backends() {
|
|
|
548
550
|
let registry = get_ocr_backend_registry();
|
|
549
551
|
|
|
550
552
|
{
|
|
551
|
-
let mut reg = registry.write().
|
|
552
|
-
reg.shutdown_all().
|
|
553
|
+
let mut reg = registry.write().expect("Operation failed");
|
|
554
|
+
reg.shutdown_all().expect("Operation failed");
|
|
553
555
|
}
|
|
554
556
|
|
|
555
557
|
let backend1 = Arc::new(MockOcrBackend {
|
|
@@ -569,9 +571,11 @@ fn test_switching_between_ocr_backends() {
|
|
|
569
571
|
});
|
|
570
572
|
|
|
571
573
|
{
|
|
572
|
-
let mut reg = registry.write().
|
|
573
|
-
reg.register(Arc::clone(&backend1) as Arc<dyn OcrBackend>)
|
|
574
|
-
|
|
574
|
+
let mut reg = registry.write().expect("Operation failed");
|
|
575
|
+
reg.register(Arc::clone(&backend1) as Arc<dyn OcrBackend>)
|
|
576
|
+
.expect("Operation failed");
|
|
577
|
+
reg.register(Arc::clone(&backend2) as Arc<dyn OcrBackend>)
|
|
578
|
+
.expect("Operation failed");
|
|
575
579
|
}
|
|
576
580
|
|
|
577
581
|
let ocr_config1 = OcrConfig {
|
|
@@ -589,7 +593,12 @@ fn test_switching_between_ocr_backends() {
|
|
|
589
593
|
|
|
590
594
|
let result1 = extract_file_sync(test_image, None, &config1);
|
|
591
595
|
assert!(result1.is_ok());
|
|
592
|
-
assert!(
|
|
596
|
+
assert!(
|
|
597
|
+
result1
|
|
598
|
+
.expect("Operation failed")
|
|
599
|
+
.content
|
|
600
|
+
.contains("BACKEND ONE OUTPUT")
|
|
601
|
+
);
|
|
593
602
|
assert_eq!(backend1.call_count.load(Ordering::SeqCst), 1);
|
|
594
603
|
assert_eq!(backend2.call_count.load(Ordering::SeqCst), 0);
|
|
595
604
|
|
|
@@ -608,13 +617,18 @@ fn test_switching_between_ocr_backends() {
|
|
|
608
617
|
|
|
609
618
|
let result2 = extract_file_sync(test_image, None, &config2);
|
|
610
619
|
assert!(result2.is_ok());
|
|
611
|
-
assert!(
|
|
620
|
+
assert!(
|
|
621
|
+
result2
|
|
622
|
+
.expect("Operation failed")
|
|
623
|
+
.content
|
|
624
|
+
.contains("BACKEND TWO OUTPUT")
|
|
625
|
+
);
|
|
612
626
|
assert_eq!(backend1.call_count.load(Ordering::SeqCst), 1);
|
|
613
627
|
assert_eq!(backend2.call_count.load(Ordering::SeqCst), 1);
|
|
614
628
|
|
|
615
629
|
{
|
|
616
|
-
let mut reg = registry.write().
|
|
617
|
-
reg.shutdown_all().
|
|
630
|
+
let mut reg = registry.write().expect("Operation failed");
|
|
631
|
+
reg.shutdown_all().expect("Operation failed");
|
|
618
632
|
}
|
|
619
633
|
}
|
|
620
634
|
|
|
@@ -624,8 +638,8 @@ fn test_ocr_backend_language_support() {
|
|
|
624
638
|
let registry = get_ocr_backend_registry();
|
|
625
639
|
|
|
626
640
|
{
|
|
627
|
-
let mut reg = registry.write().
|
|
628
|
-
reg.shutdown_all().
|
|
641
|
+
let mut reg = registry.write().expect("Operation failed");
|
|
642
|
+
reg.shutdown_all().expect("Operation failed");
|
|
629
643
|
}
|
|
630
644
|
|
|
631
645
|
let backend = Arc::new(MockOcrBackend {
|
|
@@ -637,8 +651,9 @@ fn test_ocr_backend_language_support() {
|
|
|
637
651
|
});
|
|
638
652
|
|
|
639
653
|
{
|
|
640
|
-
let mut reg = registry.write().
|
|
641
|
-
reg.register(Arc::clone(&backend) as Arc<dyn OcrBackend>)
|
|
654
|
+
let mut reg = registry.write().expect("Operation failed");
|
|
655
|
+
reg.register(Arc::clone(&backend) as Arc<dyn OcrBackend>)
|
|
656
|
+
.expect("Operation failed");
|
|
642
657
|
}
|
|
643
658
|
|
|
644
659
|
assert!(backend.supports_language("eng"));
|
|
@@ -653,8 +668,8 @@ fn test_ocr_backend_language_support() {
|
|
|
653
668
|
assert!(supported.contains(&"fra".to_string()));
|
|
654
669
|
|
|
655
670
|
{
|
|
656
|
-
let mut reg = registry.write().
|
|
657
|
-
reg.shutdown_all().
|
|
671
|
+
let mut reg = registry.write().expect("Operation failed");
|
|
672
|
+
reg.shutdown_all().expect("Operation failed");
|
|
658
673
|
}
|
|
659
674
|
}
|
|
660
675
|
|
|
@@ -678,8 +693,8 @@ fn test_ocr_backend_invalid_name() {
|
|
|
678
693
|
let registry = get_ocr_backend_registry();
|
|
679
694
|
|
|
680
695
|
{
|
|
681
|
-
let mut reg = registry.write().
|
|
682
|
-
reg.shutdown_all().
|
|
696
|
+
let mut reg = registry.write().expect("Operation failed");
|
|
697
|
+
reg.shutdown_all().expect("Operation failed");
|
|
683
698
|
}
|
|
684
699
|
|
|
685
700
|
let backend = Arc::new(MockOcrBackend {
|
|
@@ -691,16 +706,19 @@ fn test_ocr_backend_invalid_name() {
|
|
|
691
706
|
});
|
|
692
707
|
|
|
693
708
|
{
|
|
694
|
-
let mut reg = registry.write().
|
|
709
|
+
let mut reg = registry.write().expect("Operation failed");
|
|
695
710
|
let result = reg.register(backend);
|
|
696
711
|
|
|
697
712
|
assert!(result.is_err());
|
|
698
|
-
assert!(matches!(
|
|
713
|
+
assert!(matches!(
|
|
714
|
+
result.expect_err("Operation failed"),
|
|
715
|
+
KreuzbergError::Validation { .. }
|
|
716
|
+
));
|
|
699
717
|
}
|
|
700
718
|
|
|
701
719
|
{
|
|
702
|
-
let mut reg = registry.write().
|
|
703
|
-
reg.shutdown_all().
|
|
720
|
+
let mut reg = registry.write().expect("Operation failed");
|
|
721
|
+
reg.shutdown_all().expect("Operation failed");
|
|
704
722
|
}
|
|
705
723
|
}
|
|
706
724
|
|
|
@@ -710,8 +728,8 @@ fn test_ocr_backend_initialization_lifecycle() {
|
|
|
710
728
|
let registry = get_ocr_backend_registry();
|
|
711
729
|
|
|
712
730
|
{
|
|
713
|
-
let mut reg = registry.write().
|
|
714
|
-
reg.shutdown_all().
|
|
731
|
+
let mut reg = registry.write().expect("Operation failed");
|
|
732
|
+
reg.shutdown_all().expect("Operation failed");
|
|
715
733
|
}
|
|
716
734
|
|
|
717
735
|
let backend = Arc::new(MockOcrBackend {
|
|
@@ -728,8 +746,9 @@ fn test_ocr_backend_initialization_lifecycle() {
|
|
|
728
746
|
);
|
|
729
747
|
|
|
730
748
|
{
|
|
731
|
-
let mut reg = registry.write().
|
|
732
|
-
reg.register(Arc::clone(&backend) as Arc<dyn OcrBackend>)
|
|
749
|
+
let mut reg = registry.write().expect("Operation failed");
|
|
750
|
+
reg.register(Arc::clone(&backend) as Arc<dyn OcrBackend>)
|
|
751
|
+
.expect("Operation failed");
|
|
733
752
|
}
|
|
734
753
|
|
|
735
754
|
assert!(
|
|
@@ -738,8 +757,8 @@ fn test_ocr_backend_initialization_lifecycle() {
|
|
|
738
757
|
);
|
|
739
758
|
|
|
740
759
|
{
|
|
741
|
-
let mut reg = registry.write().
|
|
742
|
-
reg.shutdown_all().
|
|
760
|
+
let mut reg = registry.write().expect("Operation failed");
|
|
761
|
+
reg.shutdown_all().expect("Operation failed");
|
|
743
762
|
}
|
|
744
763
|
|
|
745
764
|
assert!(
|
|
@@ -754,8 +773,8 @@ fn test_unregister_ocr_backend() {
|
|
|
754
773
|
let registry = get_ocr_backend_registry();
|
|
755
774
|
|
|
756
775
|
{
|
|
757
|
-
let mut reg = registry.write().
|
|
758
|
-
reg.shutdown_all().
|
|
776
|
+
let mut reg = registry.write().expect("Operation failed");
|
|
777
|
+
reg.shutdown_all().expect("Operation failed");
|
|
759
778
|
}
|
|
760
779
|
|
|
761
780
|
let backend = Arc::new(MockOcrBackend {
|
|
@@ -767,17 +786,18 @@ fn test_unregister_ocr_backend() {
|
|
|
767
786
|
});
|
|
768
787
|
|
|
769
788
|
{
|
|
770
|
-
let mut reg = registry.write().
|
|
771
|
-
reg.register(Arc::clone(&backend) as Arc<dyn OcrBackend>)
|
|
789
|
+
let mut reg = registry.write().expect("Operation failed");
|
|
790
|
+
reg.register(Arc::clone(&backend) as Arc<dyn OcrBackend>)
|
|
791
|
+
.expect("Operation failed");
|
|
772
792
|
}
|
|
773
793
|
|
|
774
794
|
{
|
|
775
|
-
let mut reg = registry.write().
|
|
776
|
-
reg.remove("unregister-ocr").
|
|
795
|
+
let mut reg = registry.write().expect("Operation failed");
|
|
796
|
+
reg.remove("unregister-ocr").expect("Operation failed");
|
|
777
797
|
}
|
|
778
798
|
|
|
779
799
|
let list = {
|
|
780
|
-
let reg = registry.read().
|
|
800
|
+
let reg = registry.read().expect("Operation failed");
|
|
781
801
|
reg.list()
|
|
782
802
|
};
|
|
783
803
|
|