_validateOne = function(t, validator, schemas) {

  const ret = {file: t, isValid: false, status: 'unknown', schema: '-----'};

  try {

    // Read and parse the resume JSON. Won't throw.
    const obj = safeLoadJSON(t);

    // If success, validate the resume against the schema
    if (!obj.ex) {
      if (obj.json.basics) { ret.schema = 'jars'; } else { ret.schema = 'fresh'; }
      const validate = validator(schemas[ ret.schema ], // Note [1]
        {formats: { date: /^\d{4}(?:-(?:0[0-9]{1}|1[0-2]{1})(?:-[0-9]{2})?)?$/ }});
      ret.isValid = validate(obj.json);
      ret.status = ret.isValid ? 'valid' : 'invalid';
      if (!ret.isValid) { ret.violations = validate.errors; }

    // If failure, package JSON read/parse errors
    } else {
      let errCode;
      if (obj.ex.op === 'parse') {
        errCode = HMSTATUS.parseError;
        ret.status = 'broken';
      } else {
        errCode = HMSTATUS.readError;
        ret.status = 'missing';
      }
      ret.error = {
        fluenterror: errCode,
        inner: obj.ex.inner,
        quiet: errCode === HMSTATUS.readError
      };
    }

  } catch (err) {
    // Package any unexpected exceptions
    ret.error = {fluenterror: HMSTATUS.validateError, inner: err};
  }

  this.stat(HMEVENT.afterValidate, ret);
  return ret;
}
Validate a single resume.
@returns {
  file: <fileName>,
  isValid: <validFlag>,
  status: <validationStatus>,
  violations: <validationErrors>,
  schema: <schemaType>,
  error: <errorObject>
}