From ff97ac5133ad5e9472679c423f71192e89d45bbc Mon Sep 17 00:00:00 2001 From: coolreader18 <33094578+coolreader18@users.noreply.github.com> Date: Fri, 24 Jan 2020 17:45:17 -0600 Subject: [PATCH] Fix subprocess test and byte{s,array}.{,l,r}strip --- tests/snippets/bytearray.py | 6 +++--- tests/snippets/bytes.py | 6 +++--- tests/snippets/stdlib_subprocess.py | 11 ++--------- vm/src/obj/objbyteinner.rs | 22 ++++++++++++---------- 4 files changed, 20 insertions(+), 25 deletions(-) diff --git a/tests/snippets/bytearray.py b/tests/snippets/bytearray.py index 889c34056..02331a598 100644 --- a/tests/snippets/bytearray.py +++ b/tests/snippets/bytearray.py @@ -352,11 +352,11 @@ assert bytearray(b"hjhtuyfjtyhuhjuyj").translate(None, delete=b"ht") == bytearra # strip lstrip rstrip -assert bytearray(b" spacious ").strip() == bytearray(b"spacious") +assert bytearray(b" \n spacious \n ").strip() == bytearray(b"spacious") assert bytearray(b"www.example.com").strip(b"cmowz.") == bytearray(b"example") -assert bytearray(b" spacious ").lstrip() == bytearray(b"spacious ") +assert bytearray(b" \n spacious ").lstrip() == bytearray(b"spacious ") assert bytearray(b"www.example.com").lstrip(b"cmowz.") == bytearray(b"example.com") -assert bytearray(b" spacious ").rstrip() == bytearray(b" spacious") +assert bytearray(b" spacious \n ").rstrip() == bytearray(b" spacious") assert bytearray(b"mississippi").rstrip(b"ipz") == bytearray(b"mississ") diff --git a/tests/snippets/bytes.py b/tests/snippets/bytes.py index 59fdb40b7..1f54c0454 100644 --- a/tests/snippets/bytes.py +++ b/tests/snippets/bytes.py @@ -341,11 +341,11 @@ assert b"hjhtuyfjtyhuhjuyj".translate(None, delete=b"ht") == b"juyfjyujuyj" # strip lstrip rstrip -assert b" spacious ".strip() == b"spacious" +assert b" \n spacious \n ".strip() == b"spacious" assert b"www.example.com".strip(b"cmowz.") == b"example" -assert b" spacious ".lstrip() == b"spacious " +assert b" \n spacious ".lstrip() == b"spacious " assert b"www.example.com".lstrip(b"cmowz.") == b"example.com" -assert b" spacious ".rstrip() == b" spacious" +assert b" spacious \n ".rstrip() == b" spacious" assert b"mississippi".rstrip(b"ipz") == b"mississ" diff --git a/tests/snippets/stdlib_subprocess.py b/tests/snippets/stdlib_subprocess.py index 7e9adaf7f..72bcb7b5e 100644 --- a/tests/snippets/stdlib_subprocess.py +++ b/tests/snippets/stdlib_subprocess.py @@ -30,14 +30,7 @@ p.wait() is_unix = "win" not in sys.platform or "darwin" in sys.platform -if is_unix: - # unix - test_output = b"test\n" -else: - # windows - test_output = b"test\r\n" - -assert p.stdout.read() == test_output +assert p.stdout.read().strip() == b"test" p = subprocess.Popen(["sleep", "2"]) p.terminate() @@ -57,4 +50,4 @@ else: p = subprocess.Popen(["echo", "test"], stdout=subprocess.PIPE) (stdout, stderr) = p.communicate() -assert stdout == test_output +assert stdout.strip() == b"test" diff --git a/vm/src/obj/objbyteinner.rs b/vm/src/obj/objbyteinner.rs index 149d912c5..37c061661 100644 --- a/vm/src/obj/objbyteinner.rs +++ b/vm/src/obj/objbyteinner.rs @@ -952,28 +952,30 @@ impl PyByteInner { chars: OptionalArg, position: ByteInnerPosition, ) -> PyResult> { - let chars = if let OptionalArg::Present(bytes) = chars { - bytes.elements - } else { - vec![b' '] + let is_valid_char = |c| { + if let OptionalArg::Present(ref bytes) = chars { + bytes.elements.contains(c) + } else { + c.is_ascii_whitespace() + } }; let mut start = 0; let mut end = self.len(); if let ByteInnerPosition::Left | ByteInnerPosition::All = position { - for (n, i) in self.elements.iter().enumerate() { - if !chars.contains(i) { - start = n; + for (i, c) in self.elements.iter().enumerate() { + if !is_valid_char(c) { + start = i; break; } } } if let ByteInnerPosition::Right | ByteInnerPosition::All = position { - for (n, i) in self.elements.iter().rev().enumerate() { - if !chars.contains(i) { - end = self.len() - n; + for (i, c) in self.elements.iter().rev().enumerate() { + if !is_valid_char(c) { + end = self.len() - i; break; } }