kreuzberg 4.1.2 → 4.2.1
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 +2 -2
- data/README.md +1 -1
- data/ext/kreuzberg_rb/native/Cargo.lock +26 -17
- data/ext/kreuzberg_rb/native/libpdfium.so +0 -0
- data/kreuzberg.gemspec +13 -1
- data/lib/kreuzberg/cli.rb +16 -6
- data/lib/kreuzberg/cli_proxy.rb +3 -1
- data/lib/kreuzberg/config.rb +121 -39
- data/lib/kreuzberg/djot_content.rb +225 -0
- data/lib/kreuzberg/extraction_api.rb +20 -4
- data/lib/kreuzberg/result.rb +12 -2
- data/lib/kreuzberg/version.rb +1 -1
- data/lib/kreuzberg.rb +1 -0
- data/sig/kreuzberg.rbs +28 -12
- data/spec/binding/batch_operations_spec.rb +80 -0
- data/spec/binding/batch_spec.rb +6 -5
- data/spec/binding/error_recovery_spec.rb +3 -3
- data/spec/binding/metadata_types_spec.rb +77 -57
- data/spec/binding/tables_spec.rb +11 -2
- 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 +1 -1
- data/vendor/kreuzberg/README.md +1 -1
- data/vendor/kreuzberg/src/api/startup.rs +15 -1
- data/vendor/kreuzberg/src/core/config_validation/sections.rs +16 -4
- data/vendor/kreuzberg/src/core/extractor/file.rs +1 -2
- data/vendor/kreuzberg/src/core/extractor/mod.rs +2 -1
- data/vendor/kreuzberg/src/core/io.rs +7 -7
- data/vendor/kreuzberg/src/core/mime.rs +4 -4
- data/vendor/kreuzberg/src/embeddings.rs +4 -4
- data/vendor/kreuzberg/src/extraction/pptx/parser.rs +6 -0
- 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/src/plugins/mod.rs +1 -0
- data/vendor/kreuzberg/src/plugins/registry/extractor.rs +251 -5
- data/vendor/kreuzberg/src/plugins/registry/ocr.rs +150 -2
- data/vendor/kreuzberg/src/plugins/registry/processor.rs +213 -5
- data/vendor/kreuzberg/src/plugins/registry/validator.rs +220 -4
- data/vendor/kreuzberg/src/plugins/startup_validation.rs +385 -0
- 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 +416 -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 +57 -57
- 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 +75 -43
- 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 +324 -31
- 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 +1 -1
- metadata +12 -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().
|
|
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 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().
|
|
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().
|
|
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().
|
|
272
|
-
reg.shutdown_all().
|
|
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().
|
|
284
|
-
reg.shutdown_all().
|
|
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().
|
|
295
|
-
reg.register(Arc::clone(&validator) as Arc<dyn Validator>)
|
|
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().
|
|
311
|
-
reg.shutdown_all().
|
|
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().
|
|
323
|
-
reg.shutdown_all().
|
|
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().
|
|
334
|
-
reg.register(validator as Arc<dyn Validator>).
|
|
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.
|
|
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().
|
|
351
|
-
reg.shutdown_all().
|
|
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().
|
|
363
|
-
reg.shutdown_all().
|
|
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().
|
|
374
|
-
reg.register(validator as Arc<dyn Validator>).
|
|
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().
|
|
384
|
-
reg.shutdown_all().
|
|
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().
|
|
396
|
-
reg.shutdown_all().
|
|
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().
|
|
406
|
-
reg.register(validator as Arc<dyn Validator>).
|
|
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.
|
|
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().
|
|
419
|
-
reg.shutdown_all().
|
|
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().
|
|
431
|
-
reg.shutdown_all().
|
|
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().
|
|
441
|
-
reg.register(validator as Arc<dyn Validator>).
|
|
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.
|
|
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().
|
|
459
|
-
reg.shutdown_all().
|
|
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().
|
|
470
|
-
reg.shutdown_all().
|
|
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().
|
|
479
|
-
reg.register(validator as Arc<dyn Validator>).
|
|
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().
|
|
484
|
-
reg.remove("unregister-test").
|
|
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().
|
|
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().
|
|
505
|
-
reg.shutdown_all().
|
|
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().
|
|
516
|
-
reg.shutdown_all().
|
|
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().
|
|
529
|
-
reg.register(validator1 as Arc<dyn Validator>)
|
|
530
|
-
|
|
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().
|
|
535
|
-
reg.shutdown_all().
|
|
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().
|
|
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().
|
|
559
|
-
reg.shutdown_all().
|
|
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().
|
|
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!(
|
|
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().
|
|
577
|
-
reg.shutdown_all().
|
|
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().
|
|
588
|
-
reg.shutdown_all().
|
|
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().
|
|
603
|
-
reg.register(Arc::clone(&validator) as Arc<dyn Validator>)
|
|
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().
|
|
613
|
-
reg.shutdown_all().
|
|
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().
|
|
630
|
-
reg.shutdown_all().
|
|
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().
|
|
646
|
-
reg.register(Arc::clone(&validator1) as Arc<dyn Validator>)
|
|
647
|
-
|
|
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().
|
|
658
|
-
reg.shutdown_all().
|
|
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().
|
|
670
|
-
reg.shutdown_all().
|
|
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().
|
|
685
|
-
reg.register(high_priority as Arc<dyn Validator>)
|
|
686
|
-
|
|
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.
|
|
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().
|
|
703
|
-
reg.shutdown_all().
|
|
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().
|
|
715
|
-
reg.shutdown_all().
|
|
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().
|
|
724
|
-
reg.register(validator as Arc<dyn Validator>).
|
|
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.
|
|
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().
|
|
741
|
-
reg.shutdown_all().
|
|
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().
|
|
753
|
-
reg.shutdown_all().
|
|
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().
|
|
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
|
-
.
|
|
767
|
-
reg.register(tracker.clone() as Arc<dyn Validator>)
|
|
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().
|
|
781
|
-
reg.shutdown_all().
|
|
792
|
+
let mut reg = registry.write().expect("Operation failed");
|
|
793
|
+
reg.shutdown_all().expect("Operation failed");
|
|
782
794
|
}
|
|
783
795
|
}
|