From 70c54dc2550084ed022a2f134065a011f37f30aa Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Fri, 15 Nov 2019 01:19:03 -0500 Subject: upload/editor: fix bytes/string confusion The upload module tries to turn the strings into bytes before passing to EditString, but it combines bytes & strings causing an error. The return value might be bytes or string, but the caller only expects a string. Lets simplify this by sticking to strings everywhere and have EditString take care of converting to/from bytes when reading/writing the underlying files. This also avoids possible locale confusion when reading the file by forcing UTF-8 everywhere. Bug: https://crbug.com/gerrit/11929 Change-Id: I07b146170c5e8b5b0500a2c79e4213cd12140a96 Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/245621 Reviewed-by: David Pursehouse Tested-by: Mike Frysinger --- tests/test_editor.py | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 tests/test_editor.py (limited to 'tests/test_editor.py') diff --git a/tests/test_editor.py b/tests/test_editor.py new file mode 100644 index 00000000..fbcfcdbd --- /dev/null +++ b/tests/test_editor.py @@ -0,0 +1,60 @@ +# -*- coding:utf-8 -*- +# +# Copyright (C) 2019 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Unittests for the editor.py module.""" + +from __future__ import print_function + +import unittest + +from editor import Editor + + +class EditorTestCase(unittest.TestCase): + """Take care of resetting Editor state across tests.""" + + def setUp(self): + self.setEditor(None) + + def tearDown(self): + self.setEditor(None) + + @staticmethod + def setEditor(editor): + Editor._editor = editor + + +class GetEditor(EditorTestCase): + """Check GetEditor behavior.""" + + def test_basic(self): + """Basic checking of _GetEditor.""" + self.setEditor(':') + self.assertEqual(':', Editor._GetEditor()) + + +class EditString(EditorTestCase): + """Check EditString behavior.""" + + def test_no_editor(self): + """Check behavior when no editor is available.""" + self.setEditor(':') + self.assertEqual('foo', Editor.EditString('foo')) + + def test_cat_editor(self): + """Check behavior when editor is `cat`.""" + self.setEditor('cat') + self.assertEqual('foo', Editor.EditString('foo')) -- cgit v1.2.3-54-g00ecf