Add adapter timeouts and drop unreachable spec-merge code
- Barcode- und OCR-Adapter erhalten je eine eigene, ueberschreibbare Zeitobergrenze (deps.barcodeTimeoutMs / deps.ocrTimeoutMs). Ein Adapter, der nie einloest, blockiert recognize() damit nicht mehr dauerhaft und faellt stattdessen auf den Ersatzwert zurueck, genau wie bei einem geworfenen Fehler. Kein offener Timer bleibt zurueck. - mergeCompatibleSpecs entfernt: vertraegliche verwertbare Barcode-Treffer sind wegen der Kopplung von partNumber und den uebrigen Feldern ohnehin identisch, der erste Treffer genuegt. Test entsprechend umbenannt, um das tatsaechlich gepruefte Verhalten zu benennen statt eine nicht mehr vorhandene Auffuell-Semantik zu behaupten. - Kommentar in pn-tables.js von einer inhaltlichen Wiederholung befreit.
This commit is contained in:
+24
-1
@@ -115,7 +115,7 @@ test('mehrere unvertraegliche Barcodes ergeben rot statt eines ungeprueften erst
|
||||
assert.equal(ocrAufgerufen, false, 'bei mehrdeutigem Barcode-Ergebnis soll nicht geraten werden');
|
||||
});
|
||||
|
||||
test('mehrere untereinander vertraegliche Barcodes werden zusammengefuehrt und bleiben gruen', async () => {
|
||||
test('mehrere untereinander vertraegliche Barcodes ergeben gruen (der erste Treffer entscheidet, es gibt nichts zusammenzufuehren)', async () => {
|
||||
let ocrAufgerufen = false;
|
||||
const result = await recognize({}, {
|
||||
// Zwei Lesungen desselben Etiketts (z.B. Mehrfachtreffer durch
|
||||
@@ -132,3 +132,26 @@ test('mehrere untereinander vertraegliche Barcodes werden zusammengefuehrt und b
|
||||
assert.equal(result.spec.speed, 'PC4-2400');
|
||||
assert.equal(ocrAufgerufen, false, 'OCR darf bei gruenem Mehrfachtreffer nicht laufen');
|
||||
});
|
||||
|
||||
// --- Beanstandung 1: haengender Adapter darf die Erkennung nicht dauerhaft blockieren ---
|
||||
|
||||
test('haengender Barcode-Adapter blockiert nicht dauerhaft, OCR uebernimmt', { timeout: 500 }, async () => {
|
||||
const result = await recognize({}, {
|
||||
decodeBarcodes: () => new Promise(() => {}), // loest nie ein und wirft nie
|
||||
runOcr: async () => OCR_TEXT,
|
||||
barcodeTimeoutMs: 20,
|
||||
});
|
||||
assert.equal(result.source, 'ocr');
|
||||
assert.equal(result.confidence, 'yellow');
|
||||
assert.equal(result.spec.capacityGb, 64);
|
||||
});
|
||||
|
||||
test('haengender OCR-Adapter blockiert nicht dauerhaft, Erkennung ergibt rot', { timeout: 500 }, async () => {
|
||||
const result = await recognize({}, {
|
||||
decodeBarcodes: async () => [],
|
||||
runOcr: () => new Promise(() => {}), // loest nie ein und wirft nie
|
||||
ocrTimeoutMs: 20,
|
||||
});
|
||||
assert.equal(result.source, 'none');
|
||||
assert.equal(result.confidence, 'red');
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user