1
0
mirror of https://github.com/openSUSE/osc.git synced 2024-12-30 19:56:14 +01:00
Commit Graph

26 Commits

Author SHA1 Message Date
Marcus Huewe
3d21f2498b Merge branch 'tests_python3_fixes' of https://github.com/marcus-h/osc
Make the testsuite work with python3.8
2020-06-04 12:00:14 +02:00
Marcus Huewe
443e3ef90b tests: Ignore the ordering of attributes in XML documents
Old xml.etree.cElementTree versions (python2) reorder the attributes
while recent xml.etree.cElementTree versions (python3) keep the
document order.

Example:

python3:
>>> ET.tostring(ET.fromstring('<foo y="foo" x="bar"/>'))
b'<foo y="foo" x="bar" />'
>>>

python2:
>>> ET.tostring(ET.fromstring('<foo y="foo" x="bar"/>'))
'<foo x="bar" y="foo" />'
>>>

So far, the testsuite compared two serialized XML documents via a simple
string comparison. For instance via,
self.assertEqual(actual_serialized_xml, expected_serialized_xml) where
the expected_serialized_xml is, for instance, a hardcoded str. Obviously,
this would only work for python2 or python3.
In order to support both python versions, we first parse both XML
documents and then compare the corresponding trees (this is OK because
we do not care about comments etc.).

A related issue is the way how the testsuite compares data that is "send"
to the API. So far, this was a plain bytes comparison. Again, this won't
work in case of XML documents (see above). Moreover, we have currently
no notion to "indicate" that the transmitted data is an XML document.
As a workaround, we keep the plain bytes comparison and in case it fails,
we try an xml comparison (see above) as a last resort. Strictly speaking,
this is "wrong" (there might be cases (in the future) where we want to
ensure that the transmitted XML data is bit identical to a fixture file)
but a reasonable comprise for now.

Fixes: #751 ("[python3.8] Testsuite fails")
2020-06-03 21:50:50 +02:00
Marcus Huewe
27ef627f1d Get rid of bytes usage in tests.common
Simply use the .encode() method (encode using the utf-8 encoding).
2020-06-03 21:50:50 +02:00
Marcus Huewe
c0343207ea Make tests.common.MyHTTPHandler.__mock_PUT bytes aware
For now, we assume that if the "exp" keyword argument is specified,
then it is a str. In this case, we simply encode it (using the utf-8
encoding).
Also, simplify the code a bit (get rid of the if-statement that is
always executed).
2020-06-03 21:50:10 +02:00
Adam Williamson
13a13a87c4 Fix ElementTree imports for Python 3.9
Importing `cElementTree` has been deprecated since Python 3.3 -
importing `ElementTree` automatically uses the fastest
implementation available - and is finally removed in Python 3.9.
Importing cElementTree directly (not as part of xml) is an even
older relic, it's for Ye Time Before ElementTree Was Added To
Python and it was instead an external module...which was before
Python 2.5.

We still need to work with Python 2.7 for now, so we use a try/
except to handle both 2.7 and 3.9 cases. Also, let's not repeat
this import 12 times in one file for some reason.

Signed-off-by: Adam Williamson <awilliam@redhat.com>
2020-06-02 15:13:10 -07:00
lethliel
39ae30bcc2 change to open() with 'rb' to get bytes in python3
With this change you get bytes with python3 and string in python2

disable travis tests for python 3.x until the full python3 branch
is merged. Otherwise the tests will fail and master isn't python3
ready anyways
2018-11-13 15:56:05 +01:00
Marcus Huewe
502dbaa030 tests.common: req.data can also be a file-like object 2016-05-29 16:21:01 +02:00
Marcus Huewe
0de99cadbb - added comment for a change introduced in commit 4d3fcd9dc1 2015-08-13 14:13:08 +02:00
Oleg Girko
4d3fcd9dc1 Fix Python 3 support.
This change fixes errors when running test suite with Python 3.

Signed-off-by: Oleg Girko <ol@infoserver.lv>
2015-08-13 12:44:19 +01:00
Michal Vyskocil
b787ca2b39 python3 compatibility: make all unit test pass
There are many places can't be covered by 2to3, especially the
str/unicode -> str/bytes change done in python3. This is a big patch
incorporating all changes made in order to make python3 suite.py run
without any single failure.

It

 * adapt the introspect_handler_3 for case there are no __defaults__
 * adds the ET_ENCODING variable for ET.fromstring ("unicode" in py3,
  "utf-8" in py2)
 * (re)adds various builtins to both python versions
    - memoryview to python 2.6
    - bytes compatible with py3 to 2.6 and 2.7

and it changes few parts of tests/common.py in order to be compatible
with python3

 * new urlcompare method compares all components or url + parsed query
   string in a dictionary, so the ordering, neither quoting does not matter
 * bytes builtin has been added to 2.x and used in assertEqualMultiline
2013-04-16 10:51:42 +02:00
Michal Vyskocil
f0186dbde8 python3 compatibility: fix all tests 2013-04-16 10:51:42 +02:00
Adam Spiers
57c8cffe66 - add prdiff subcommand and test suite 2013-01-18 22:38:21 +00:00
Adam Spiers
9b1c6f0204 - refactor assertEqualMultiline into common.py for reuse
This will be reused by the tests for the imminent prdiff subcommand.
2013-01-18 22:38:21 +00:00
Marcus Huewe
46b9fd36e4 - tests.common: disable usage of keyring and gnome-keyring in the testsuite
Otherwise it'll lead to (unexpected) errors if python-keyring or gnome-keyring
are installed.
2013-01-18 14:27:28 +01:00
Marcus Huewe
e1080aa476 - common.py, __get_response: support "code" keyword argument to specify the http status code 2011-03-21 16:52:13 +01:00
Marcus Huewe
b99a903873 - def setUp: added "copytree" parameter to disable the copy of the "osctest" dir 2010-12-30 01:57:41 +01:00
Marcus Huewe
1a0cea8a4d - fixed testsuite 2010-11-30 19:11:05 +01:00
Marcus Huewe
57a3832a8e - rewrote "def commit"
- the upload revision isn't used anymore instead we commit via
  cmd=commitfilelist
- extended and adjusted testcases
2010-09-03 17:46:01 +02:00
Marcus Huewe
3cf8a5bf88 - fixed commit (Package class)
- use "self.rev" when calling update_local_filesmeta (otherwise we might get a newer revision)
- write addlist after commit
2010-08-31 13:30:37 +02:00
Marcus Huewe
2ffd46a9c2 - get rid of the init_package_dir mess
moved code into the staticmethod "init_package" of the Package class.
Cleaned up "checkout_package"
2010-08-31 13:30:37 +02:00
Marcus Huewe
1d7c674d80 - adjusted testcase for the init_basicauth change in master 2010-08-31 13:30:36 +02:00
Marcus Huewe
62dc807378 - moved common methods into the OscTestCase class 2010-08-31 13:30:36 +02:00
Marcus Huewe
71e0b3ee34 - GET decorator: use name of the original method for the wrapper method 2010-08-31 13:30:36 +02:00
Marcus Huewe
88a961cae4 - rewrote addfile() and delete_file() methods from the Package class (for the details see below)
- addfile():
  * contains the complete logic for adding a file (=> simplified addFiles(...))
  * semantic fixes
- delete_file():
  * semantic fixes
- different handling of newly added/replaced files:
  * added/replaced files are tracked in the .osc/_to_be_added file
- introduced new file state 'R': 'R' == "replaced"
  * usecase: osc rm <file>; osc add <file> => new state is 'R'
  * conceptually 'R' is equal to 'A'
- adapted revert() to support the new state (+ some other minor fixes)
- added testcases for addfile() and delete_file()
2010-08-31 13:30:36 +02:00
Marcus Huewe
e6b451596c - moved __change_to_pkg into common module (new name _change_to_pkg)
removed unused method "__expected_requests" from TestUpdate class
2010-08-31 13:30:36 +02:00
Marcus Huewe
f4adf69ef9 - refactored testcase code: moved common stuff into a common module 2010-08-31 13:30:36 +02:00