D10133: rhg: Align with Python on some more error messages
SimonSapin
phabricator at mercurial-scm.org
Tue Mar 9 09:42:42 UTC 2021
SimonSapin created this revision.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.
REPOSITORY
rHG Mercurial
BRANCH
default
REVISION DETAIL
https://phab.mercurial-scm.org/D10133
AFFECTED FILES
rust/Cargo.lock
rust/hg-core/Cargo.toml
rust/hg-core/src/config/layer.rs
rust/hg-core/src/errors.rs
rust/hg-core/src/repo.rs
rust/rhg/src/error.rs
tests/test-rhg.t
CHANGE DETAILS
diff --git a/tests/test-rhg.t b/tests/test-rhg.t
--- a/tests/test-rhg.t
+++ b/tests/test-rhg.t
@@ -187,7 +187,7 @@
$ echo -e '\xFF' >> .hg/requires
$ rhg $NO_FALLBACK debugrequirements
- abort: corrupted repository: parse error in 'requires' file
+ abort: parse error in 'requires' file
[255]
Persistent nodemap
diff --git a/rust/rhg/src/error.rs b/rust/rhg/src/error.rs
--- a/rust/rhg/src/error.rs
+++ b/rust/rhg/src/error.rs
@@ -72,7 +72,7 @@
match error {
RepoError::NotFound { at } => CommandError::Abort {
message: format_bytes!(
- b"repository {} not found",
+ b"abort: repository {} not found",
get_bytes_from_path(at)
),
},
diff --git a/rust/hg-core/src/repo.rs b/rust/hg-core/src/repo.rs
--- a/rust/hg-core/src/repo.rs
+++ b/rust/hg-core/src/repo.rs
@@ -141,20 +141,22 @@
if share_safe && !source_is_share_safe {
return Err(match config
- .get(b"safe-mismatch", b"source-not-safe")
+ .get(b"share", b"safe-mismatch.source-not-safe")
{
Some(b"abort") | None => HgError::abort(
- "share source does not support share-safe requirement",
+ "abort: share source does not support share-safe requirement\n\
+ (see `hg help config.format.use-share-safe` for more information)",
),
_ => HgError::unsupported("share-safe downgrade"),
}
.into());
} else if source_is_share_safe && !share_safe {
return Err(
- match config.get(b"safe-mismatch", b"source-safe") {
+ match config.get(b"share", b"safe-mismatch.source-safe") {
Some(b"abort") | None => HgError::abort(
- "version mismatch: source uses share-safe \
- functionality while the current share does not",
+ "abort: version mismatch: source uses share-safe \
+ functionality while the current share does not\n\
+ (see `hg help config.format.use-share-safe` for more information)",
),
_ => HgError::unsupported("share-safe upgrade"),
}
diff --git a/rust/hg-core/src/errors.rs b/rust/hg-core/src/errors.rs
--- a/rust/hg-core/src/errors.rs
+++ b/rust/hg-core/src/errors.rs
@@ -81,7 +81,7 @@
write!(f, "abort: {}: {}", context, error)
}
HgError::CorruptedRepository(explanation) => {
- write!(f, "abort: corrupted repository: {}", explanation)
+ write!(f, "abort: {}", explanation)
}
HgError::UnsupportedFeature(explanation) => {
write!(f, "unsupported feature: {}", explanation)
diff --git a/rust/hg-core/src/config/layer.rs b/rust/hg-core/src/config/layer.rs
--- a/rust/hg-core/src/config/layer.rs
+++ b/rust/hg-core/src/config/layer.rs
@@ -7,7 +7,7 @@
// This software may be used and distributed according to the terms of the
// GNU General Public License version 2 or any later version.
-use crate::errors::{HgError, IoResultExt};
+use crate::errors::HgError;
use crate::utils::files::{get_bytes_from_path, get_path_from_bytes};
use format_bytes::{format_bytes, write_bytes, DisplayBytes};
use lazy_static::lazy_static;
@@ -74,7 +74,7 @@
layer.add(section, item, value, None);
} else {
Err(HgError::abort(format!(
- "malformed --config option: '{}' \
+ "abort: malformed --config option: '{}' \
(use --config section.name=value)",
String::from_utf8_lossy(arg),
)))?
@@ -147,6 +147,7 @@
let mut section = b"".to_vec();
while let Some((index, bytes)) = lines_iter.next() {
+ let line = Some(index + 1);
if let Some(m) = INCLUDE_RE.captures(&bytes) {
let filename_bytes = &m[1];
// `Path::parent` only fails for the root directory,
@@ -158,8 +159,17 @@
// `Path::join` with an absolute argument correctly ignores the
// base path
let filename = dir.join(&get_path_from_bytes(&filename_bytes));
- let data =
- std::fs::read(&filename).when_reading_file(&filename)?;
+ let data = std::fs::read(&filename).map_err(|io_error| {
+ ConfigParseError {
+ origin: ConfigOrigin::File(src.to_owned()),
+ line,
+ message: format_bytes!(
+ b"cannot include {} ({})",
+ filename_bytes,
+ format_bytes::Utf8(io_error)
+ ),
+ }
+ })?;
layers.push(current_layer);
layers.extend(Self::parse(&filename, &data)?);
current_layer = Self::new(ConfigOrigin::File(src.to_owned()));
@@ -184,12 +194,7 @@
};
lines_iter.next();
}
- current_layer.add(
- section.clone(),
- item,
- value,
- Some(index + 1),
- );
+ current_layer.add(section.clone(), item, value, line);
} else if let Some(m) = UNSET_RE.captures(&bytes) {
if let Some(map) = current_layer.sections.get_mut(§ion) {
map.remove(&m[1]);
@@ -202,7 +207,7 @@
};
return Err(ConfigParseError {
origin: ConfigOrigin::File(src.to_owned()),
- line: Some(index + 1),
+ line,
message,
}
.into());
diff --git a/rust/hg-core/Cargo.toml b/rust/hg-core/Cargo.toml
--- a/rust/hg-core/Cargo.toml
+++ b/rust/hg-core/Cargo.toml
@@ -28,7 +28,7 @@
memmap = "0.7.0"
zstd = "0.5.3"
rust-crypto = "0.2.36"
-format-bytes = "0.2.0"
+format-bytes = "0.2.2"
# We don't use the `miniz-oxide` backend to not change rhg benchmarks and until
# we have a clearer view of which backend is the fastest.
diff --git a/rust/Cargo.lock b/rust/Cargo.lock
--- a/rust/Cargo.lock
+++ b/rust/Cargo.lock
@@ -256,7 +256,7 @@
[[package]]
name = "format-bytes"
-version = "0.2.1"
+version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"format-bytes-macros 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -317,7 +317,7 @@
"crossbeam-channel 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)",
"derive_more 0.99.11 (registry+https://github.com/rust-lang/crates.io-index)",
"flate2 1.0.19 (registry+https://github.com/rust-lang/crates.io-index)",
- "format-bytes 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "format-bytes 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
"home 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)",
"im-rc 15.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -740,7 +740,7 @@
"clap 2.33.3 (registry+https://github.com/rust-lang/crates.io-index)",
"derive_more 0.99.11 (registry+https://github.com/rust-lang/crates.io-index)",
"env_logger 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "format-bytes 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "format-bytes 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
"hg-core 0.1.0",
"log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)",
"micro-timer 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -998,7 +998,7 @@
"checksum either 1.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457"
"checksum env_logger 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "44533bbbb3bb3c1fa17d9f2e4e38bbbaf8396ba82193c4cb1b6445d711445d36"
"checksum flate2 1.0.19 (registry+https://github.com/rust-lang/crates.io-index)" = "7411863d55df97a419aa64cb4d2f167103ea9d767e2c54a1868b7ac3f6b47129"
-"checksum format-bytes 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8030ff4b04f0ca1c612d6fe49f2fc18caf56fb01497cb370b41cfd36d89b3b06"
+"checksum format-bytes 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1c4e89040c7fd7b4e6ba2820ac705a45def8a0c098ec78d170ae88f1ef1d5762"
"checksum format-bytes-macros 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b05089e341a0460449e2210c3bf7b61597860b07f0deae58da38dbed0a4c6b6d"
"checksum fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba"
"checksum gcc 0.3.55 (registry+https://github.com/rust-lang/crates.io-index)" = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2"
To: SimonSapin, #hg-reviewers
Cc: mercurial-patches, mercurial-devel
More information about the Mercurial-devel
mailing list