Skip to content

Commit dd8bef4

Browse files
committed
Fix str.zfill
1 parent 199c75b commit dd8bef4

File tree

2 files changed

+11
-3
lines changed

2 files changed

+11
-3
lines changed

Lib/test/string_tests.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -833,8 +833,6 @@ def test_swapcase(self):
833833

834834
self.checkraises(TypeError, 'hello', 'swapcase', 42)
835835

836-
# TODO: RUSTPYTHON
837-
@unittest.expectedFailure
838836
def test_zfill(self):
839837
self.checkequal('123', '123', 'zfill', 2)
840838
self.checkequal('123', '123', 'zfill', 3)

vm/src/obj/objstr.rs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -993,7 +993,17 @@ impl PyString {
993993
if len <= value.len() {
994994
value.to_owned()
995995
} else {
996-
format!("{}{}", "0".repeat(len - value.len()), value)
996+
let first = value.bytes().next();
997+
let (sign, s) = match first {
998+
Some(b'+') | Some(b'-') => (
999+
std::str::from_utf8(&[first.unwrap(); 1])
1000+
.unwrap()
1001+
.to_owned(),
1002+
&value[1..],
1003+
),
1004+
_ => ("".to_owned(), value.as_str()),
1005+
};
1006+
format!("{}{}{}", sign, "0".repeat(len - value.len()), s,)
9971007
}
9981008
}
9991009

0 commit comments

Comments
 (0)