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.
Files changed (88) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +4 -4
  3. data/README.md +8 -5
  4. data/ext/kreuzberg_rb/native/Cargo.toml +2 -2
  5. data/ext/kreuzberg_rb/native/libpdfium.so +0 -0
  6. data/ext/kreuzberg_rb/native/src/config/types.rs +23 -13
  7. data/kreuzberg.gemspec +14 -2
  8. data/lib/kreuzberg/api_proxy.rb +0 -1
  9. data/lib/kreuzberg/cli_proxy.rb +0 -1
  10. data/lib/kreuzberg/config.rb +70 -35
  11. data/lib/kreuzberg/mcp_proxy.rb +0 -1
  12. data/lib/kreuzberg/version.rb +1 -1
  13. data/sig/kreuzberg.rbs +5 -1
  14. data/spec/binding/batch_operations_spec.rb +80 -0
  15. data/spec/binding/metadata_types_spec.rb +77 -57
  16. data/spec/serialization_spec.rb +134 -0
  17. data/spec/unit/config/output_format_spec.rb +380 -0
  18. data/vendor/Cargo.toml +1 -1
  19. data/vendor/kreuzberg/Cargo.toml +3 -3
  20. data/vendor/kreuzberg/README.md +1 -1
  21. data/vendor/kreuzberg/src/embeddings.rs +4 -4
  22. data/vendor/kreuzberg/src/mcp/format.rs +237 -39
  23. data/vendor/kreuzberg/src/mcp/params.rs +26 -33
  24. data/vendor/kreuzberg/src/mcp/server.rs +6 -3
  25. data/vendor/kreuzberg/src/mcp/tools/extraction.rs +16 -23
  26. data/vendor/kreuzberg/tests/api_chunk.rs +40 -30
  27. data/vendor/kreuzberg/tests/api_consistency.rs +349 -0
  28. data/vendor/kreuzberg/tests/api_embed.rs +84 -50
  29. data/vendor/kreuzberg/tests/api_large_pdf_extraction_diagnostics.rs +8 -2
  30. data/vendor/kreuzberg/tests/api_tests.rs +298 -139
  31. data/vendor/kreuzberg/tests/archive_integration.rs +63 -56
  32. data/vendor/kreuzberg/tests/batch_orchestration.rs +22 -14
  33. data/vendor/kreuzberg/tests/batch_pooling_benchmark.rs +13 -13
  34. data/vendor/kreuzberg/tests/batch_processing.rs +13 -9
  35. data/vendor/kreuzberg/tests/bibtex_parity_test.rs +10 -10
  36. data/vendor/kreuzberg/tests/concurrency_stress.rs +10 -6
  37. data/vendor/kreuzberg/tests/config_behavioral.rs +414 -0
  38. data/vendor/kreuzberg/tests/config_features.rs +19 -15
  39. data/vendor/kreuzberg/tests/config_integration_test.rs +68 -68
  40. data/vendor/kreuzberg/tests/config_loading_tests.rs +71 -62
  41. data/vendor/kreuzberg/tests/contract_mcp.rs +314 -0
  42. data/vendor/kreuzberg/tests/core_integration.rs +55 -53
  43. data/vendor/kreuzberg/tests/docbook_extractor_tests.rs +23 -23
  44. data/vendor/kreuzberg/tests/docx_metadata_extraction_test.rs +15 -14
  45. data/vendor/kreuzberg/tests/docx_vs_pandoc_comparison.rs +4 -4
  46. data/vendor/kreuzberg/tests/email_integration.rs +7 -7
  47. data/vendor/kreuzberg/tests/epub_native_extractor_tests.rs +2 -2
  48. data/vendor/kreuzberg/tests/error_handling.rs +13 -11
  49. data/vendor/kreuzberg/tests/fictionbook_extractor_tests.rs +2 -2
  50. data/vendor/kreuzberg/tests/html_table_test.rs +11 -11
  51. data/vendor/kreuzberg/tests/instrumentation_test.rs +18 -13
  52. data/vendor/kreuzberg/tests/jats_extractor_tests.rs +17 -17
  53. data/vendor/kreuzberg/tests/jupyter_extractor_tests.rs +9 -9
  54. data/vendor/kreuzberg/tests/keywords_integration.rs +25 -25
  55. data/vendor/kreuzberg/tests/keywords_quality.rs +9 -9
  56. data/vendor/kreuzberg/tests/latex_extractor_tests.rs +2 -2
  57. data/vendor/kreuzberg/tests/markdown_extractor_tests.rs +1 -1
  58. data/vendor/kreuzberg/tests/mcp_integration.rs +849 -0
  59. data/vendor/kreuzberg/tests/mime_detection.rs +72 -41
  60. data/vendor/kreuzberg/tests/ocr_errors.rs +10 -4
  61. data/vendor/kreuzberg/tests/ocr_language_registry.rs +1 -1
  62. data/vendor/kreuzberg/tests/ocr_stress.rs +3 -3
  63. data/vendor/kreuzberg/tests/odt_extractor_tests.rs +6 -6
  64. data/vendor/kreuzberg/tests/opml_extractor_tests.rs +2 -2
  65. data/vendor/kreuzberg/tests/orgmode_extractor_tests.rs +2 -2
  66. data/vendor/kreuzberg/tests/page_markers.rs +1 -1
  67. data/vendor/kreuzberg/tests/pdf_hierarchy_detection.rs +6 -6
  68. data/vendor/kreuzberg/tests/pdf_text_merging.rs +2 -2
  69. data/vendor/kreuzberg/tests/pipeline_integration.rs +77 -61
  70. data/vendor/kreuzberg/tests/plugin_ocr_backend_test.rs +97 -77
  71. data/vendor/kreuzberg/tests/plugin_postprocessor_test.rs +78 -61
  72. data/vendor/kreuzberg/tests/plugin_system.rs +49 -46
  73. data/vendor/kreuzberg/tests/plugin_validator_test.rs +109 -97
  74. data/vendor/kreuzberg/tests/pptx_regression_tests.rs +40 -30
  75. data/vendor/kreuzberg/tests/registry_integration_tests.rs +26 -23
  76. data/vendor/kreuzberg/tests/rst_extractor_tests.rs +1 -1
  77. data/vendor/kreuzberg/tests/rtf_extractor_tests.rs +18 -18
  78. data/vendor/kreuzberg/tests/security_validation.rs +20 -19
  79. data/vendor/kreuzberg/tests/serialization_integration.rs +112 -0
  80. data/vendor/kreuzberg/tests/stopwords_integration_test.rs +36 -36
  81. data/vendor/kreuzberg/tests/test_fastembed.rs +8 -8
  82. data/vendor/kreuzberg/tests/typst_extractor_tests.rs +9 -9
  83. data/vendor/kreuzberg/tests/xlsx_metadata_extraction_test.rs +12 -9
  84. data/vendor/kreuzberg-tesseract/Cargo.toml +3 -3
  85. data/vendor/kreuzberg-tesseract/build.rs +4 -4
  86. data/vendor/kreuzberg-tesseract/src/lib.rs +6 -6
  87. data/vendor/kreuzberg-tesseract/tests/integration_test.rs +3 -3
  88. metadata +13 -2
@@ -240,8 +240,8 @@ fn test_register_custom_validator() {
240
240
  let registry = get_validator_registry();
241
241
 
242
242
  {
243
- let mut reg = registry.write().unwrap();
244
- reg.shutdown_all().unwrap();
243
+ let mut reg = registry.write().expect("Operation failed");
244
+ reg.shutdown_all().expect("Operation failed");
245
245
  }
246
246
 
247
247
  let validator = Arc::new(PassingValidator {
@@ -250,7 +250,7 @@ fn test_register_custom_validator() {
250
250
  });
251
251
 
252
252
  {
253
- let mut reg = registry.write().unwrap();
253
+ let mut reg = registry.write().expect("Operation failed");
254
254
  let result = reg.register(Arc::clone(&validator) as Arc<dyn Validator>);
255
255
  assert!(result.is_ok(), "Failed to register validator: {:?}", result.err());
256
256
  }
@@ -261,15 +261,15 @@ fn test_register_custom_validator() {
261
261
  );
262
262
 
263
263
  let list = {
264
- let reg = registry.read().unwrap();
264
+ let reg = registry.read().expect("Operation failed");
265
265
  reg.list()
266
266
  };
267
267
 
268
268
  assert!(list.contains(&"test-validator".to_string()));
269
269
 
270
270
  {
271
- let mut reg = registry.write().unwrap();
272
- reg.shutdown_all().unwrap();
271
+ let mut reg = registry.write().expect("Operation failed");
272
+ reg.shutdown_all().expect("Operation failed");
273
273
  }
274
274
  }
275
275
 
@@ -280,8 +280,8 @@ fn test_validator_called_during_extraction() {
280
280
  let registry = get_validator_registry();
281
281
 
282
282
  {
283
- let mut reg = registry.write().unwrap();
284
- reg.shutdown_all().unwrap();
283
+ let mut reg = registry.write().expect("Operation failed");
284
+ reg.shutdown_all().expect("Operation failed");
285
285
  }
286
286
 
287
287
  let validator = Arc::new(MinLengthValidator {
@@ -291,8 +291,9 @@ fn test_validator_called_during_extraction() {
291
291
  });
292
292
 
293
293
  {
294
- let mut reg = registry.write().unwrap();
295
- reg.register(Arc::clone(&validator) as Arc<dyn Validator>).unwrap();
294
+ let mut reg = registry.write().expect("Operation failed");
295
+ reg.register(Arc::clone(&validator) as Arc<dyn Validator>)
296
+ .expect("Operation failed");
296
297
  }
297
298
 
298
299
  let config = ExtractionConfig::default();
@@ -307,8 +308,8 @@ fn test_validator_called_during_extraction() {
307
308
  );
308
309
 
309
310
  {
310
- let mut reg = registry.write().unwrap();
311
- reg.shutdown_all().unwrap();
311
+ let mut reg = registry.write().expect("Operation failed");
312
+ reg.shutdown_all().expect("Operation failed");
312
313
  }
313
314
  }
314
315
 
@@ -319,8 +320,8 @@ fn test_validator_can_reject_invalid_input() {
319
320
  let registry = get_validator_registry();
320
321
 
321
322
  {
322
- let mut reg = registry.write().unwrap();
323
- reg.shutdown_all().unwrap();
323
+ let mut reg = registry.write().expect("Operation failed");
324
+ reg.shutdown_all().expect("Operation failed");
324
325
  }
325
326
 
326
327
  let validator = Arc::new(MinLengthValidator {
@@ -330,8 +331,8 @@ fn test_validator_can_reject_invalid_input() {
330
331
  });
331
332
 
332
333
  {
333
- let mut reg = registry.write().unwrap();
334
- reg.register(validator as Arc<dyn Validator>).unwrap();
334
+ let mut reg = registry.write().expect("Operation failed");
335
+ reg.register(validator as Arc<dyn Validator>).expect("Operation failed");
335
336
  }
336
337
 
337
338
  let config = ExtractionConfig::default();
@@ -339,7 +340,7 @@ fn test_validator_can_reject_invalid_input() {
339
340
 
340
341
  assert!(result.is_err(), "Expected validation to fail");
341
342
 
342
- match result.err().unwrap() {
343
+ match result.expect_err("Operation failed") {
343
344
  KreuzbergError::Validation { message, .. } => {
344
345
  assert!(message.contains("Content too short"));
345
346
  }
@@ -347,8 +348,8 @@ fn test_validator_can_reject_invalid_input() {
347
348
  }
348
349
 
349
350
  {
350
- let mut reg = registry.write().unwrap();
351
- reg.shutdown_all().unwrap();
351
+ let mut reg = registry.write().expect("Operation failed");
352
+ reg.shutdown_all().expect("Operation failed");
352
353
  }
353
354
  }
354
355
 
@@ -359,8 +360,8 @@ fn test_validator_can_pass_valid_input() {
359
360
  let registry = get_validator_registry();
360
361
 
361
362
  {
362
- let mut reg = registry.write().unwrap();
363
- reg.shutdown_all().unwrap();
363
+ let mut reg = registry.write().expect("Operation failed");
364
+ reg.shutdown_all().expect("Operation failed");
364
365
  }
365
366
 
366
367
  let validator = Arc::new(MinLengthValidator {
@@ -370,8 +371,8 @@ fn test_validator_can_pass_valid_input() {
370
371
  });
371
372
 
372
373
  {
373
- let mut reg = registry.write().unwrap();
374
- reg.register(validator as Arc<dyn Validator>).unwrap();
374
+ let mut reg = registry.write().expect("Operation failed");
375
+ reg.register(validator as Arc<dyn Validator>).expect("Operation failed");
375
376
  }
376
377
 
377
378
  let config = ExtractionConfig::default();
@@ -380,8 +381,8 @@ fn test_validator_can_pass_valid_input() {
380
381
  assert!(result.is_ok(), "Validation should have passed: {:?}", result.err());
381
382
 
382
383
  {
383
- let mut reg = registry.write().unwrap();
384
- reg.shutdown_all().unwrap();
384
+ let mut reg = registry.write().expect("Operation failed");
385
+ reg.shutdown_all().expect("Operation failed");
385
386
  }
386
387
  }
387
388
 
@@ -392,8 +393,8 @@ fn test_validator_receives_correct_parameters() {
392
393
  let registry = get_validator_registry();
393
394
 
394
395
  {
395
- let mut reg = registry.write().unwrap();
396
- reg.shutdown_all().unwrap();
396
+ let mut reg = registry.write().expect("Operation failed");
397
+ reg.shutdown_all().expect("Operation failed");
397
398
  }
398
399
 
399
400
  let validator = Arc::new(MimeTypeValidator {
@@ -402,8 +403,8 @@ fn test_validator_receives_correct_parameters() {
402
403
  });
403
404
 
404
405
  {
405
- let mut reg = registry.write().unwrap();
406
- reg.register(validator as Arc<dyn Validator>).unwrap();
406
+ let mut reg = registry.write().expect("Operation failed");
407
+ reg.register(validator as Arc<dyn Validator>).expect("Operation failed");
407
408
  }
408
409
 
409
410
  let config = ExtractionConfig::default();
@@ -411,12 +412,12 @@ fn test_validator_receives_correct_parameters() {
411
412
 
412
413
  assert!(result.is_ok(), "Validation failed: {:?}", result.err());
413
414
 
414
- let extraction_result = result.unwrap();
415
+ let extraction_result = result.expect("Operation failed");
415
416
  assert_eq!(extraction_result.mime_type, "text/plain");
416
417
 
417
418
  {
418
- let mut reg = registry.write().unwrap();
419
- reg.shutdown_all().unwrap();
419
+ let mut reg = registry.write().expect("Operation failed");
420
+ reg.shutdown_all().expect("Operation failed");
420
421
  }
421
422
  }
422
423
 
@@ -427,8 +428,8 @@ fn test_validator_rejects_wrong_mime_type() {
427
428
  let registry = get_validator_registry();
428
429
 
429
430
  {
430
- let mut reg = registry.write().unwrap();
431
- reg.shutdown_all().unwrap();
431
+ let mut reg = registry.write().expect("Operation failed");
432
+ reg.shutdown_all().expect("Operation failed");
432
433
  }
433
434
 
434
435
  let validator = Arc::new(MimeTypeValidator {
@@ -437,8 +438,8 @@ fn test_validator_rejects_wrong_mime_type() {
437
438
  });
438
439
 
439
440
  {
440
- let mut reg = registry.write().unwrap();
441
- reg.register(validator as Arc<dyn Validator>).unwrap();
441
+ let mut reg = registry.write().expect("Operation failed");
442
+ reg.register(validator as Arc<dyn Validator>).expect("Operation failed");
442
443
  }
443
444
 
444
445
  let config = ExtractionConfig::default();
@@ -446,7 +447,7 @@ fn test_validator_rejects_wrong_mime_type() {
446
447
 
447
448
  assert!(result.is_err(), "Expected MIME type validation to fail");
448
449
 
449
- match result.err().unwrap() {
450
+ match result.expect_err("Operation failed") {
450
451
  KreuzbergError::Validation { message, .. } => {
451
452
  assert!(message.contains("MIME type"));
452
453
  assert!(message.contains("not allowed"));
@@ -455,8 +456,8 @@ fn test_validator_rejects_wrong_mime_type() {
455
456
  }
456
457
 
457
458
  {
458
- let mut reg = registry.write().unwrap();
459
- reg.shutdown_all().unwrap();
459
+ let mut reg = registry.write().expect("Operation failed");
460
+ reg.shutdown_all().expect("Operation failed");
460
461
  }
461
462
  }
462
463
 
@@ -466,8 +467,8 @@ fn test_unregister_validator() {
466
467
  let registry = get_validator_registry();
467
468
 
468
469
  {
469
- let mut reg = registry.write().unwrap();
470
- reg.shutdown_all().unwrap();
470
+ let mut reg = registry.write().expect("Operation failed");
471
+ reg.shutdown_all().expect("Operation failed");
471
472
  }
472
473
 
473
474
  let validator = Arc::new(FailingValidator {
@@ -475,17 +476,17 @@ fn test_unregister_validator() {
475
476
  });
476
477
 
477
478
  {
478
- let mut reg = registry.write().unwrap();
479
- reg.register(validator as Arc<dyn Validator>).unwrap();
479
+ let mut reg = registry.write().expect("Operation failed");
480
+ reg.register(validator as Arc<dyn Validator>).expect("Operation failed");
480
481
  }
481
482
 
482
483
  {
483
- let mut reg = registry.write().unwrap();
484
- reg.remove("unregister-test").unwrap();
484
+ let mut reg = registry.write().expect("Operation failed");
485
+ reg.remove("unregister-test").expect("Operation failed");
485
486
  }
486
487
 
487
488
  let list = {
488
- let reg = registry.read().unwrap();
489
+ let reg = registry.read().expect("Operation failed");
489
490
  reg.list()
490
491
  };
491
492
 
@@ -501,8 +502,8 @@ fn test_unregister_validator() {
501
502
  );
502
503
 
503
504
  {
504
- let mut reg = registry.write().unwrap();
505
- reg.shutdown_all().unwrap();
505
+ let mut reg = registry.write().expect("Operation failed");
506
+ reg.shutdown_all().expect("Operation failed");
506
507
  }
507
508
  }
508
509
 
@@ -512,8 +513,8 @@ fn test_clear_all_validators() {
512
513
  let registry = get_validator_registry();
513
514
 
514
515
  {
515
- let mut reg = registry.write().unwrap();
516
- reg.shutdown_all().unwrap();
516
+ let mut reg = registry.write().expect("Operation failed");
517
+ reg.shutdown_all().expect("Operation failed");
517
518
  }
518
519
 
519
520
  let validator1 = Arc::new(FailingValidator {
@@ -525,18 +526,20 @@ fn test_clear_all_validators() {
525
526
  });
526
527
 
527
528
  {
528
- let mut reg = registry.write().unwrap();
529
- reg.register(validator1 as Arc<dyn Validator>).unwrap();
530
- reg.register(validator2 as Arc<dyn Validator>).unwrap();
529
+ let mut reg = registry.write().expect("Operation failed");
530
+ reg.register(validator1 as Arc<dyn Validator>)
531
+ .expect("Operation failed");
532
+ reg.register(validator2 as Arc<dyn Validator>)
533
+ .expect("Operation failed");
531
534
  }
532
535
 
533
536
  {
534
- let mut reg = registry.write().unwrap();
535
- reg.shutdown_all().unwrap();
537
+ let mut reg = registry.write().expect("Operation failed");
538
+ reg.shutdown_all().expect("Operation failed");
536
539
  }
537
540
 
538
541
  let list = {
539
- let reg = registry.read().unwrap();
542
+ let reg = registry.read().expect("Operation failed");
540
543
  reg.list()
541
544
  };
542
545
 
@@ -555,8 +558,8 @@ fn test_validator_invalid_name() {
555
558
  let registry = get_validator_registry();
556
559
 
557
560
  {
558
- let mut reg = registry.write().unwrap();
559
- reg.shutdown_all().unwrap();
561
+ let mut reg = registry.write().expect("Operation failed");
562
+ reg.shutdown_all().expect("Operation failed");
560
563
  }
561
564
 
562
565
  let validator = Arc::new(PassingValidator {
@@ -565,16 +568,19 @@ fn test_validator_invalid_name() {
565
568
  });
566
569
 
567
570
  {
568
- let mut reg = registry.write().unwrap();
571
+ let mut reg = registry.write().expect("Operation failed");
569
572
  let result = reg.register(validator);
570
573
 
571
574
  assert!(result.is_err());
572
- assert!(matches!(result.err().unwrap(), KreuzbergError::Validation { .. }));
575
+ assert!(matches!(
576
+ result.expect_err("Operation failed"),
577
+ KreuzbergError::Validation { .. }
578
+ ));
573
579
  }
574
580
 
575
581
  {
576
- let mut reg = registry.write().unwrap();
577
- reg.shutdown_all().unwrap();
582
+ let mut reg = registry.write().expect("Operation failed");
583
+ reg.shutdown_all().expect("Operation failed");
578
584
  }
579
585
  }
580
586
 
@@ -584,8 +590,8 @@ fn test_validator_initialization_lifecycle() {
584
590
  let registry = get_validator_registry();
585
591
 
586
592
  {
587
- let mut reg = registry.write().unwrap();
588
- reg.shutdown_all().unwrap();
593
+ let mut reg = registry.write().expect("Operation failed");
594
+ reg.shutdown_all().expect("Operation failed");
589
595
  }
590
596
 
591
597
  let validator = Arc::new(PassingValidator {
@@ -599,8 +605,9 @@ fn test_validator_initialization_lifecycle() {
599
605
  );
600
606
 
601
607
  {
602
- let mut reg = registry.write().unwrap();
603
- reg.register(Arc::clone(&validator) as Arc<dyn Validator>).unwrap();
608
+ let mut reg = registry.write().expect("Operation failed");
609
+ reg.register(Arc::clone(&validator) as Arc<dyn Validator>)
610
+ .expect("Operation failed");
604
611
  }
605
612
 
606
613
  assert!(
@@ -609,8 +616,8 @@ fn test_validator_initialization_lifecycle() {
609
616
  );
610
617
 
611
618
  {
612
- let mut reg = registry.write().unwrap();
613
- reg.shutdown_all().unwrap();
619
+ let mut reg = registry.write().expect("Operation failed");
620
+ reg.shutdown_all().expect("Operation failed");
614
621
  }
615
622
 
616
623
  assert!(
@@ -626,8 +633,8 @@ fn test_multiple_validators_execution() {
626
633
  let registry = get_validator_registry();
627
634
 
628
635
  {
629
- let mut reg = registry.write().unwrap();
630
- reg.shutdown_all().unwrap();
636
+ let mut reg = registry.write().expect("Operation failed");
637
+ reg.shutdown_all().expect("Operation failed");
631
638
  }
632
639
 
633
640
  let validator1 = Arc::new(MinLengthValidator {
@@ -642,9 +649,11 @@ fn test_multiple_validators_execution() {
642
649
  });
643
650
 
644
651
  {
645
- let mut reg = registry.write().unwrap();
646
- reg.register(Arc::clone(&validator1) as Arc<dyn Validator>).unwrap();
647
- reg.register(validator2 as Arc<dyn Validator>).unwrap();
652
+ let mut reg = registry.write().expect("Operation failed");
653
+ reg.register(Arc::clone(&validator1) as Arc<dyn Validator>)
654
+ .expect("Operation failed");
655
+ reg.register(validator2 as Arc<dyn Validator>)
656
+ .expect("Operation failed");
648
657
  }
649
658
 
650
659
  let config = ExtractionConfig::default();
@@ -654,8 +663,8 @@ fn test_multiple_validators_execution() {
654
663
  assert_eq!(validator1.call_count.load(Ordering::SeqCst), 1);
655
664
 
656
665
  {
657
- let mut reg = registry.write().unwrap();
658
- reg.shutdown_all().unwrap();
666
+ let mut reg = registry.write().expect("Operation failed");
667
+ reg.shutdown_all().expect("Operation failed");
659
668
  }
660
669
  }
661
670
 
@@ -666,8 +675,8 @@ fn test_validator_priority_execution_order() {
666
675
  let registry = get_validator_registry();
667
676
 
668
677
  {
669
- let mut reg = registry.write().unwrap();
670
- reg.shutdown_all().unwrap();
678
+ let mut reg = registry.write().expect("Operation failed");
679
+ reg.shutdown_all().expect("Operation failed");
671
680
  }
672
681
 
673
682
  let high_priority = Arc::new(MetadataValidator {
@@ -681,9 +690,11 @@ fn test_validator_priority_execution_order() {
681
690
  });
682
691
 
683
692
  {
684
- let mut reg = registry.write().unwrap();
685
- reg.register(high_priority as Arc<dyn Validator>).unwrap();
686
- reg.register(low_priority as Arc<dyn Validator>).unwrap();
693
+ let mut reg = registry.write().expect("Operation failed");
694
+ reg.register(high_priority as Arc<dyn Validator>)
695
+ .expect("Operation failed");
696
+ reg.register(low_priority as Arc<dyn Validator>)
697
+ .expect("Operation failed");
687
698
  }
688
699
 
689
700
  let config = ExtractionConfig::default();
@@ -691,7 +702,7 @@ fn test_validator_priority_execution_order() {
691
702
 
692
703
  assert!(result.is_err(), "Expected high-priority validator to fail");
693
704
 
694
- match result.err().unwrap() {
705
+ match result.expect_err("Operation failed") {
695
706
  KreuzbergError::Validation { message, .. } => {
696
707
  assert!(message.contains("Required metadata key"));
697
708
  }
@@ -699,8 +710,8 @@ fn test_validator_priority_execution_order() {
699
710
  }
700
711
 
701
712
  {
702
- let mut reg = registry.write().unwrap();
703
- reg.shutdown_all().unwrap();
713
+ let mut reg = registry.write().expect("Operation failed");
714
+ reg.shutdown_all().expect("Operation failed");
704
715
  }
705
716
  }
706
717
 
@@ -711,8 +722,8 @@ fn test_validator_always_fails() {
711
722
  let registry = get_validator_registry();
712
723
 
713
724
  {
714
- let mut reg = registry.write().unwrap();
715
- reg.shutdown_all().unwrap();
725
+ let mut reg = registry.write().expect("Operation failed");
726
+ reg.shutdown_all().expect("Operation failed");
716
727
  }
717
728
 
718
729
  let validator = Arc::new(FailingValidator {
@@ -720,8 +731,8 @@ fn test_validator_always_fails() {
720
731
  });
721
732
 
722
733
  {
723
- let mut reg = registry.write().unwrap();
724
- reg.register(validator as Arc<dyn Validator>).unwrap();
734
+ let mut reg = registry.write().expect("Operation failed");
735
+ reg.register(validator as Arc<dyn Validator>).expect("Operation failed");
725
736
  }
726
737
 
727
738
  let config = ExtractionConfig::default();
@@ -729,7 +740,7 @@ fn test_validator_always_fails() {
729
740
 
730
741
  assert!(result.is_err(), "Validator should always fail");
731
742
 
732
- match result.err().unwrap() {
743
+ match result.expect_err("Operation failed") {
733
744
  KreuzbergError::Validation { message, .. } => {
734
745
  assert!(message.contains("intentionally failed"));
735
746
  }
@@ -737,8 +748,8 @@ fn test_validator_always_fails() {
737
748
  }
738
749
 
739
750
  {
740
- let mut reg = registry.write().unwrap();
741
- reg.shutdown_all().unwrap();
751
+ let mut reg = registry.write().expect("Operation failed");
752
+ reg.shutdown_all().expect("Operation failed");
742
753
  }
743
754
  }
744
755
 
@@ -749,8 +760,8 @@ fn test_validator_registration_order_preserved_for_same_priority() {
749
760
  let registry = get_validator_registry();
750
761
 
751
762
  {
752
- let mut reg = registry.write().unwrap();
753
- reg.shutdown_all().unwrap();
763
+ let mut reg = registry.write().expect("Operation failed");
764
+ reg.shutdown_all().expect("Operation failed");
754
765
  }
755
766
 
756
767
  let tracker = Arc::new(TrackingValidator {
@@ -759,12 +770,13 @@ fn test_validator_registration_order_preserved_for_same_priority() {
759
770
  });
760
771
 
761
772
  {
762
- let mut reg = registry.write().unwrap();
773
+ let mut reg = registry.write().expect("Operation failed");
763
774
  reg.register(Arc::new(FailingValidator {
764
775
  name: "order-first".to_string(),
765
776
  }) as Arc<dyn Validator>)
766
- .unwrap();
767
- reg.register(tracker.clone() as Arc<dyn Validator>).unwrap();
777
+ .expect("Operation failed");
778
+ reg.register(tracker.clone() as Arc<dyn Validator>)
779
+ .expect("Operation failed");
768
780
  }
769
781
 
770
782
  let config = ExtractionConfig::default();
@@ -777,7 +789,7 @@ fn test_validator_registration_order_preserved_for_same_priority() {
777
789
  );
778
790
 
779
791
  {
780
- let mut reg = registry.write().unwrap();
781
- reg.shutdown_all().unwrap();
792
+ let mut reg = registry.write().expect("Operation failed");
793
+ reg.shutdown_all().expect("Operation failed");
782
794
  }
783
795
  }