P10.5: fix 4 pre-existing test failures (output + validation)
outputUtils.formatMsg: fall back to \`<softwareType>_<id>\` when config.general.name is unset — restores the convention the original test expected; safer for nodes whose name isn't required at registration. collectionValidators.validateArray + validateSet: replace \`|| 1\` with \`?? 1\` so explicit minLength: 0 lets through empty arrays. Was swallowing the 0 as falsy and clamping minimum to 1. validationUtils: add public validateCurve wrapper around the helper so callers can validate raw curves without going through validateSchema. Test suite: 170 total / 170 pass (was 4 fail). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -37,7 +37,10 @@ class OutputUtils {
|
|||||||
const changedFields = this.checkForChanges(output,format);
|
const changedFields = this.checkForChanges(output,format);
|
||||||
|
|
||||||
if (Object.keys(changedFields).length > 0) {
|
if (Object.keys(changedFields).length > 0) {
|
||||||
const measurement = config.general.name;
|
// Fall back to `<softwareType>_<id>` when `general.name` is unset —
|
||||||
|
// the original convention before name became a registered config field.
|
||||||
|
const measurement = config.general.name
|
||||||
|
|| `${config.functionality?.softwareType}_${config.general.id}`;
|
||||||
const flatTags = this.flattenTags(this.extractRelevantConfig(config));
|
const flatTags = this.flattenTags(this.extractRelevantConfig(config));
|
||||||
const formatterName = this.resolveFormatterName(config, format);
|
const formatterName = this.resolveFormatterName(config, format);
|
||||||
const formatter = getFormatter(formatterName);
|
const formatter = getFormatter(formatterName);
|
||||||
|
|||||||
@@ -233,6 +233,13 @@ class ValidationUtils {
|
|||||||
return fieldSchema.default;
|
return fieldSchema.default;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Public wrapper for the curve validator — exposes the helper so
|
||||||
|
// callers (and tests) can validate a raw curve without going
|
||||||
|
// through validateSchema.
|
||||||
|
validateCurve(input, defaultCurve) {
|
||||||
|
return validateCurve(input, defaultCurve, this.logger);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = ValidationUtils;
|
module.exports = ValidationUtils;
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ function validateArray(configValue, rules, fieldSchema, name, key, logger) {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
.slice(0, rules.maxLength || Infinity);
|
.slice(0, rules.maxLength || Infinity);
|
||||||
if (validatedArray.length < (rules.minLength || 1)) {
|
if (validatedArray.length < (rules.minLength ?? 1)) {
|
||||||
logger.warn(
|
logger.warn(
|
||||||
`${name}.${key} contains fewer items than allowed (${rules.minLength}). Using default value.`
|
`${name}.${key} contains fewer items than allowed (${rules.minLength}). Using default value.`
|
||||||
);
|
);
|
||||||
@@ -41,7 +41,7 @@ function validateSet(configValue, rules, fieldSchema, name, key, logger) {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
.slice(0, rules.maxLength || Infinity);
|
.slice(0, rules.maxLength || Infinity);
|
||||||
if (validatedArray.length < (rules.minLength || 1)) {
|
if (validatedArray.length < (rules.minLength ?? 1)) {
|
||||||
logger.warn(
|
logger.warn(
|
||||||
`${name}.${key} contains fewer items than allowed (${rules.minLength}). Using default value.`
|
`${name}.${key} contains fewer items than allowed (${rules.minLength}). Using default value.`
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user