forked from extern/nushell
Return error early if seconds part of timestamp is invalid (#6193)
Signed-off-by: nibon7 <nibon7@163.com>
This commit is contained in:
parent
dd2a0e35f4
commit
26caf7e1b2
@ -121,7 +121,15 @@ impl Command for Touch {
|
||||
|
||||
// Checks for the seconds stamp and removes the '.' delimiter if any
|
||||
let (val, has_sec): (String, bool) = match stamp.split_once('.') {
|
||||
Some((dtime, sec)) => (format!("{}{}", dtime, sec), true),
|
||||
Some((dtime, sec)) => match sec.parse::<u8>() {
|
||||
Ok(sec) if sec < 60 => (format!("{}{}", dtime, sec), true),
|
||||
_ => {
|
||||
return Err(ShellError::UnsupportedInput(
|
||||
"input has an invalid timestamp".to_string(),
|
||||
span,
|
||||
))
|
||||
}
|
||||
},
|
||||
None => (stamp.to_string(), false),
|
||||
};
|
||||
|
||||
|
@ -180,6 +180,34 @@ fn errors_if_change_modified_time_of_file_with_invalid_timestamp() {
|
||||
);
|
||||
|
||||
assert!(outcome.err.contains("input has an invalid timestamp"));
|
||||
|
||||
outcome = nu!(
|
||||
cwd: dirs.test(),
|
||||
"touch -m -t 082412.3012 file.txt"
|
||||
);
|
||||
|
||||
assert!(outcome.err.contains("input has an invalid timestamp"));
|
||||
|
||||
outcome = nu!(
|
||||
cwd: dirs.test(),
|
||||
"touch -m -t 0824.123012 file.txt"
|
||||
);
|
||||
|
||||
assert!(outcome.err.contains("input has an invalid timestamp"));
|
||||
|
||||
outcome = nu!(
|
||||
cwd: dirs.test(),
|
||||
"touch -m -t 08.24123012 file.txt"
|
||||
);
|
||||
|
||||
assert!(outcome.err.contains("input has an invalid timestamp"));
|
||||
|
||||
outcome = nu!(
|
||||
cwd: dirs.test(),
|
||||
"touch -m -t 0.824123012 file.txt"
|
||||
);
|
||||
|
||||
assert!(outcome.err.contains("input has an invalid timestamp"));
|
||||
})
|
||||
}
|
||||
|
||||
@ -401,6 +429,34 @@ fn errors_if_change_access_time_of_file_with_invalid_timestamp() {
|
||||
);
|
||||
|
||||
assert!(outcome.err.contains("input has an invalid timestamp"));
|
||||
|
||||
outcome = nu!(
|
||||
cwd: dirs.test(),
|
||||
"touch -a -t 082412.3012 file.txt"
|
||||
);
|
||||
|
||||
assert!(outcome.err.contains("input has an invalid timestamp"));
|
||||
|
||||
outcome = nu!(
|
||||
cwd: dirs.test(),
|
||||
"touch -a -t 0824.123012 file.txt"
|
||||
);
|
||||
|
||||
assert!(outcome.err.contains("input has an invalid timestamp"));
|
||||
|
||||
outcome = nu!(
|
||||
cwd: dirs.test(),
|
||||
"touch -a -t 08.24123012 file.txt"
|
||||
);
|
||||
|
||||
assert!(outcome.err.contains("input has an invalid timestamp"));
|
||||
|
||||
outcome = nu!(
|
||||
cwd: dirs.test(),
|
||||
"touch -a -t 0.824123012 file.txt"
|
||||
);
|
||||
|
||||
assert!(outcome.err.contains("input has an invalid timestamp"));
|
||||
})
|
||||
}
|
||||
|
||||
@ -634,6 +690,34 @@ fn errors_if_change_modified_and_access_time_of_file_with_invalid_timestamp() {
|
||||
);
|
||||
|
||||
assert!(outcome.err.contains("input has an invalid timestamp"));
|
||||
|
||||
outcome = nu!(
|
||||
cwd: dirs.test(),
|
||||
"touch -m -a -t 082412.3012 file.txt"
|
||||
);
|
||||
|
||||
assert!(outcome.err.contains("input has an invalid timestamp"));
|
||||
|
||||
outcome = nu!(
|
||||
cwd: dirs.test(),
|
||||
"touch -m -a -t 0824.123012 file.txt"
|
||||
);
|
||||
|
||||
assert!(outcome.err.contains("input has an invalid timestamp"));
|
||||
|
||||
outcome = nu!(
|
||||
cwd: dirs.test(),
|
||||
"touch -m -a -t 08.24123012 file.txt"
|
||||
);
|
||||
|
||||
assert!(outcome.err.contains("input has an invalid timestamp"));
|
||||
|
||||
outcome = nu!(
|
||||
cwd: dirs.test(),
|
||||
"touch -m -a -t 0.824123012 file.txt"
|
||||
);
|
||||
|
||||
assert!(outcome.err.contains("input has an invalid timestamp"));
|
||||
})
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user