Compare commits

36 Commits

Author SHA256 Message Date
2f7b12a3a1 Accepting request 1275032 from devel:languages:python
Automatic submission by obs-autosubmit

OBS-URL: https://build.opensuse.org/request/show/1275032
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-PySDL2?expand=0&rev=16
2025-05-07 17:18:19 +00:00
5108f4523e Accepting request 1251643 from devel:languages:python
OBS-URL: https://build.opensuse.org/request/show/1251643
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-PySDL2?expand=0&rev=15
2025-03-10 17:05:52 +00:00
6216048b07 - Update to 0.9.17
* Updated to wrap new functions and constants in SDL 2.30.10.
  * Updated to wrap new functions and constants in SDL_mixer 2.8.0
  * Updated to wrap new function in SDL_image 2.8.0.
  * Added a new function sdl2.ext.get_key_state for checking if a given 
    key is currently down or up independently of the SDL event queue.
- Drop merged patches:
  * fix-tests-SDL_GetError.patch
  * fix-partially-resolve-video_test.patch
  * fix-test-SDL_hid_enumerate.patch

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-PySDL2?expand=0&rev=33
2025-03-10 06:47:59 +00:00
eba4322251 Accepting request 1143626 from devel:languages:python
OBS-URL: https://build.opensuse.org/request/show/1143626
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-PySDL2?expand=0&rev=14
2024-02-02 14:48:06 +00:00
de884e4146 Accepting request 1143591 from home:munix9:branches:devel:languages:python
- Add libmpg123-0 as a build requirement for the tests

OBS-URL: https://build.opensuse.org/request/show/1143591
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-PySDL2?expand=0&rev=31
2024-02-02 12:22:05 +00:00
896af8564c Accepting request 1105034 from devel:languages:python
OBS-URL: https://build.opensuse.org/request/show/1105034
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-PySDL2?expand=0&rev=13
2023-08-22 06:56:16 +00:00
25334c3745 Accepting request 1104930 from home:munix9:branches:devel:languages:python
- Remove fix-tests.patch in favor of upstream patches
- Add upstream patches to resolve test failures:
  fix-partially-resolve-video_test.patch
  fix-test-SDL_hid_enumerate.patch
  fix-tests-SDL_GetError.patch

OBS-URL: https://build.opensuse.org/request/show/1104930
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-PySDL2?expand=0&rev=29
2023-08-21 09:32:52 +00:00
ee3fd83d2a Accepting request 1099029 from devel:languages:python
OBS-URL: https://build.opensuse.org/request/show/1099029
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-PySDL2?expand=0&rev=12
2023-07-18 19:55:13 +00:00
28ee5c8ba2 Accepting request 1098896 from home:munix9:branches:devel:languages:python
- Update to 0.9.16:
  * Updated to wrap new functions and constants in SDL 2.28.0.
  * Added a new method to sdl2.ext.Renderer, Renderer.rcopy(), for
    drawing textures to the renderer with relative alignment.
  * Added a new module, sdl2.ext.input for processing common SDL
    input events in a Pythonic manner.
  * Added a new function sdl2.ext.quit_requested() for checking
    whether an SDL event queue contains any sdl2.SDL_QUIT events.
- Update to 0.9.15:
  * Updated to wrap new functions and constants in SDL 2.26.0.
  * Added a new module sdl2.ext.mouse for showing/hiding/moving/
    retrieving the mouse cursor and querying the current state of
    the mouse buttons.
  * Added indexing/unpacking support to the sdl2.ext.Point and
    sdl2.ext.Rect classes and their float equivalents.
  * Updated sdl2.ext.SpriteFactory.from_image() to allow passing
    PIL.Image.Image objects directly.
  * Improved sdl2.ext.Texture performance.
  * Fixed a bug preventing SDL Points and Rects from being used
    as srcrect or dstrect for sdl2.ext.Renderer.copy().
  * Added a binding for SDL_ResetHint, which was added in SDL
    2.24.0 but got missed in PR #246.
- Adjust fix-tests.patch
- Remove fix-version_test.patch (fixed upstream)
- Remove python-PySDL2.rpmlintrc (obsolete)

OBS-URL: https://build.opensuse.org/request/show/1098896
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-PySDL2?expand=0&rev=27
2023-07-17 06:39:36 +00:00
281fd181e2 Accepting request 1038364 from devel:languages:python
OBS-URL: https://build.opensuse.org/request/show/1038364
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-PySDL2?expand=0&rev=11
2022-11-27 11:53:01 +00:00
d2c494849e Accepting request 1038348 from home:munix9:branches:devel:languages:python
- Add fix-version_test.patch (gh#py-sdl/py-sdl2#248):
  Don't assert that SDL_GetRevision() starts with http
- Skip rpmlint error python-tests-in-package
  
  
I don't know exactly if the sdl2/test directories could be completely deleted in %install. I first chose the solution with rpmlintrc to filter the message "E: python-tests-in-package", similar to other python packages.

OBS-URL: https://build.opensuse.org/request/show/1038348
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-PySDL2?expand=0&rev=25
2022-11-26 22:25:49 +00:00
2d8a1faf06 Accepting request 1032869 from devel:languages:python
- Remove .DS_Store files from sources
- Remove not needed python_module macro definition
- Add fix-tests.patch to fix the test run in the rpmbuild container without
  access to /dev/input.
- Update to 0.9.14:
  * Updated to wrap new functions and constants in SDL 2.24.0.
  * Added a new module sdl2.ext.displays for retrieving and working
    with connected displays and their supported resolutions/refresh
    rates.
  * Extended sdl2.ext.init to allow initializing all SDL subsystems
    individually (previously just initialized the video subsystem).
  * Improved the memory safety of the sdl2.ext.Window class.
  * Added raise_sdl_err to the public ext API.
  * Fixed sdl2.ext.line to work correctly on 1bpp surfaces.
  * Various fixes/improvements to the unit test suite for Linux
    package maintainers.
- Remove mixer_tests_fix.patch (fixed upstream)

OBS-URL: https://build.opensuse.org/request/show/1032869
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-PySDL2?expand=0&rev=10
2022-11-02 13:19:45 +00:00
d16beaf49a - Remove .DS_Store files from sources
- Remove not needed python_module macro definition

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-PySDL2?expand=0&rev=23
2022-11-02 12:12:24 +00:00
c71d14fbbf - Add fix-tests.patch to fix the test run in the rpmbuild container without
access to /dev/input.

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-PySDL2?expand=0&rev=22
2022-11-02 12:02:41 +00:00
cedae050dd Accepting request 1032775 from home:munix9:branches:devel:languages:python
- Update to 0.9.14:
  * Updated to wrap new functions and constants in SDL 2.24.0.
  * Added a new module sdl2.ext.displays for retrieving and working
    with connected displays and their supported resolutions/refresh
    rates.
  * Extended sdl2.ext.init to allow initializing all SDL subsystems
    individually (previously just initialized the video subsystem).
  * Improved the memory safety of the sdl2.ext.Window class.
  * Added raise_sdl_err to the public ext API.
  * Fixed sdl2.ext.line to work correctly on 1bpp surfaces.
  * Various fixes/improvements to the unit test suite for Linux
    package maintainers.
- Remove mixer_tests_fix.patch (fixed upstream)

  
The tests fail because of 'Unable to open /dev/input/mouse0'.  
There are several ways to fix this:  
1. disable tests completely  
2. catch error on tests (I have chosen this for now)  
3. create an additional package which is used *only* for the build phase to add the build user "abuild" to the Linux group "input" to get access to /dev/input/*.

OBS-URL: https://build.opensuse.org/request/show/1032775
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-PySDL2?expand=0&rev=21
2022-11-02 09:31:17 +00:00
86112310d6 Accepting request 992361 from devel:languages:python
- Update to 0.9.13:
  - Updated to wrap new functions and constants in SDL_ttf
    2.20.0.
  - Updated to wrap new functions and constants in SDL_mixer
    2.6.0.
  - Updated to wrap new functions and constants in SDL_image
    2.6.0.
  - Added experimental bindings for the new functions and
    constants in the SDL 2.23.1 pre-release.
  - Added a new function :func:sdl2.ext.load_svg that allows
    loading simple SVG images at arbitrary resolutions with
    SDL_image 2.6.0 or later.
  - Added bindings for new functions and constants introduced in
    SDL2 2.0.22
  - Added a stable API for accessing the raw ctypes function
    objects for SDL2 functions
  - Various bugfixes (see the project's news.rst for more info)
- Add mixer_tests_fix.patch to switch off failing tests
  (gh#py-sdl/py-sdl2#241).
- Otherwise, we actually don’t need to explicitly skip ANY
  tests! Wow!
- Update to version 0.9.11
  * Added bindings for new functions and constants introduced in
    SDL2 2.0.20
  * Added bindings and documentation for new functions and
    constants introduced in SDL2_ttf 2.0.18
- Changelog for Release 0.9.10
  * Added bindings for new functions and constants introduced in
    SDL2 2.0.18
  * Added experimental support for SDL 2.0.3 and 2.0.4 for older
    platforms (tested on an iMac G4 running 10.4.11)
  * Major improvements to the ext.pixelaccess module
  * Major rewrite of the ext.image module
  * New object-oriented method of rendering with sdl2.ext.Renderers
    using the new sdl2.ext.Texture class
  * Major expansion and rewrite of the sdl2.ext.Renderer class
  * New powerful sdl2.ext.FontTTF class for font rendering
  * Redocumented most of the sdl2.ext modules for better clarity
    and maintainability
  * Added automatic detection of Homebrew SDL2 binaries on Apple
    Silicon Macs as a fallback Deprecated a number of sdl2.ext
    modules and functions
- Changelog for Release 0.9.9
  * Added bindings for new functions and constants introduced in
    SDL2 2.0.16
  * Reverted the fix for issue #139 which inadvertently caused
    Window.show() to force the window to use SDL2's software
    rendering, breaking the Renderer class and compatibility with
    PyOpenGL.
- Drop PySDL2-pr193-skipnumpy.patch
- Clean out test suite
- Update to version 0.9.8
  * This release fixes a number of bugs, updates the bindings to
    support new functions in SDL2 2.0.14, adds a wrapper for the
    SDL2 MessageBox API, and more.
  * Added bindings for new functions and constants introduced in
    SDL2 2.0.12 and 2.0.14
  * Added full support for SDL2 binaries in non-system locations
    (e.g., with pysdl2-dll) when using PySDL2 with Python installed
    from the Microsoft Store on Windows.
  * Improved handling of SDL2 binaries that are too old to be used
    with PySDL2.
  * Added a new sdl2.ext API for displaying SDL2 MessageBox alerts
    and dialog boxes.
- Add PySDL2-pr193-skipnumpy.patch (gh#marcusva/py-sdl2#193) for
  missing NumPy in python36
- remove duplicate check section: Only the Xvfb version runs
  without segfaults when loading the SDL libraries. (Except for
  two flaky Window position and size tests) 
- update to version 0.9.7
  * The minimum required SDL version is 2.0.5
  * The minimum required SDL_ttf version is 2.0.14
  * The minimum required SDL_mixer version is 2.0.1
  * The minimum required SDL_image version is 2.0.1
  * Improved compatibility with older SDL2 releases by raising informative
  exceptions whenever a function requiring a newer SDL2 binary is called
  * fixed bug preventing use of background color with wrapped text using
  :meth:`sdl2.ext.FontManager.render()` (PR #134)
  * fixed issue #112: allow easy moving and resizing of :obj:`sdl2.ext.Window()`
  objects through 'position' and 'size' attributes, added 'open' and 'close'
  methods to Window objects
  * fixed issue #130: SDL_RW* functions now accept pointers to RW objects
  * fixed issue #135: :func:`sdl2.SDL_GetPrefPath()` and
  :func:`sdl2.SDL_GetPrefPath()` now return bytestrings instead of pointers
  to strings.
  * fixed issue #148: added support for loading SDL2 .so binaries with numeric
  suffixes on Unix-like OSes (e.g. 'libSDL2.so.2')
  * fixed transparency issues with pallete indexed PNGs (PR #159)
- Run through spec-cleaner
- Remove superfluous devel dependency for noarch package
- initial version

OBS-URL: https://build.opensuse.org/request/show/992361
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-PySDL2?expand=0&rev=9
2022-08-02 20:09:59 +00:00
fe78af4f94 - Otherwise, we actually don’t need to explicitly skip ANY
tests! Wow!

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-PySDL2?expand=0&rev=19
2022-08-02 15:24:54 +00:00
d1f823d20e Accepting request 992068 from devel:languages:python
- Update to 0.9.13:
  - Updated to wrap new functions and constants in SDL_ttf
    2.20.0.
  - Updated to wrap new functions and constants in SDL_mixer
    2.6.0.
  - Updated to wrap new functions and constants in SDL_image
    2.6.0.
  - Added experimental bindings for the new functions and
    constants in the SDL 2.23.1 pre-release.
  - Added a new function :func:sdl2.ext.load_svg that allows
    loading simple SVG images at arbitrary resolutions with
    SDL_image 2.6.0 or later.
  - Added bindings for new functions and constants introduced in
    SDL2 2.0.22
  - Added a stable API for accessing the raw ctypes function
    objects for SDL2 functions
  - Various bugfixes (see the project's news.rst for more info)
- Add mixer_tests_fix.patch to switch off failing tests
  (gh#py-sdl/py-sdl2#241).

OBS-URL: https://build.opensuse.org/request/show/992068
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-PySDL2?expand=0&rev=8
2022-08-01 19:32:03 +00:00
ebf70fbc7a - Add mixer_tests_fix.patch to switch off failing tests
(gh#py-sdl/py-sdl2#241).

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-PySDL2?expand=0&rev=17
2022-08-01 15:07:48 +00:00
9c7fa542fa - Update to 0.9.13:
- Updated to wrap new functions and constants in SDL_ttf
    2.20.0.
  - Updated to wrap new functions and constants in SDL_mixer
    2.6.0.
  - Updated to wrap new functions and constants in SDL_image
    2.6.0.
  - Added experimental bindings for the new functions and
    constants in the SDL 2.23.1 pre-release.
  - Added a new function :func:sdl2.ext.load_svg that allows
    loading simple SVG images at arbitrary resolutions with
    SDL_image 2.6.0 or later.
  - Added bindings for new functions and constants introduced in
    SDL2 2.0.22
  - Added a stable API for accessing the raw ctypes function
    objects for SDL2 functions
  - Various bugfixes (see the project's news.rst for more info)
- Switch off failing tests (gh#py-sdl/py-sdl2#241)

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-PySDL2?expand=0&rev=16
2022-07-29 16:14:57 +00:00
fe750cfef3 Accepting request 963464 from devel:languages:python
OBS-URL: https://build.opensuse.org/request/show/963464
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-PySDL2?expand=0&rev=7
2022-03-21 19:11:33 +00:00
e0ab0957ff Accepting request 963269 from home:bnavigator:branches:devel:languages:python
- Update to version 0.9.11
  * Added bindings for new functions and constants introduced in
    SDL2 2.0.20
  * Added bindings and documentation for new functions and
    constants introduced in SDL2_ttf 2.0.18
- Changelog for Release 0.9.10
  * Added bindings for new functions and constants introduced in
    SDL2 2.0.18
  * Added experimental support for SDL 2.0.3 and 2.0.4 for older
    platforms (tested on an iMac G4 running 10.4.11)
  * Major improvements to the ext.pixelaccess module
  * Major rewrite of the ext.image module
  * New object-oriented method of rendering with sdl2.ext.Renderers
    using the new sdl2.ext.Texture class
  * Major expansion and rewrite of the sdl2.ext.Renderer class
  * New powerful sdl2.ext.FontTTF class for font rendering
  * Redocumented most of the sdl2.ext modules for better clarity
    and maintainability
  * Added automatic detection of Homebrew SDL2 binaries on Apple
    Silicon Macs as a fallback Deprecated a number of sdl2.ext
    modules and functions
- Changelog for Release 0.9.9
  * Added bindings for new functions and constants introduced in
    SDL2 2.0.16
  * Reverted the fix for issue #139 which inadvertently caused
    Window.show() to force the window to use SDL2's software
    rendering, breaking the Renderer class and compatibility with
    PyOpenGL.
- Drop PySDL2-pr193-skipnumpy.patch
- Clean out test suite

OBS-URL: https://build.opensuse.org/request/show/963269
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-PySDL2?expand=0&rev=14
2022-03-21 07:24:13 +00:00
12d3a593d1 Accepting request 914904 from devel:languages:python
OBS-URL: https://build.opensuse.org/request/show/914904
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-PySDL2?expand=0&rev=6
2021-08-30 11:55:12 +00:00
793affa45b Accepting request 914878 from home:bnavigator:branches:devel:languages:python
- Update to version 0.9.8
  * This release fixes a number of bugs, updates the bindings to
    support new functions in SDL2 2.0.14, adds a wrapper for the
    SDL2 MessageBox API, and more.
  * Added bindings for new functions and constants introduced in
    SDL2 2.0.12 and 2.0.14
  * Added full support for SDL2 binaries in non-system locations
    (e.g., with pysdl2-dll) when using PySDL2 with Python installed
    from the Microsoft Store on Windows.
  * Improved handling of SDL2 binaries that are too old to be used
    with PySDL2.
  * Added a new sdl2.ext API for displaying SDL2 MessageBox alerts
    and dialog boxes.
- Add PySDL2-pr193-skipnumpy.patch (gh#marcusva/py-sdl2#193) for
  missing NumPy in python36

OBS-URL: https://build.opensuse.org/request/show/914878
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-PySDL2?expand=0&rev=13
2021-08-29 20:42:13 +00:00
d60e66748e Accepting request 870420 from devel:languages:python
OBS-URL: https://build.opensuse.org/request/show/870420
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-PySDL2?expand=0&rev=5
2021-02-09 20:17:18 +00:00
50b2e4869b Accepting request 870368 from home:bnavigator:branches:devel:languages:python
- remove duplicate check section: Only the Xvfb version runs
  without segfaults when loading the SDL libraries. (Except for
  two flaky Window position and size tests)

OBS-URL: https://build.opensuse.org/request/show/870368
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-PySDL2?expand=0&rev=11
2021-02-09 08:56:11 +00:00
e8bd4b23f1 Accepting request 788966 from devel:languages:python
OBS-URL: https://build.opensuse.org/request/show/788966
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-PySDL2?expand=0&rev=4
2020-03-27 21:00:49 +00:00
Tomáš Chvátal
df21fcd728 Accepting request 788962 from home:mcalabkova:branches:devel:languages:python
- update to version 0.9.7
  * The minimum required SDL version is 2.0.5
  * The minimum required SDL_ttf version is 2.0.14
  * The minimum required SDL_mixer version is 2.0.1
  * The minimum required SDL_image version is 2.0.1
  * Improved compatibility with older SDL2 releases by raising informative
  exceptions whenever a function requiring a newer SDL2 binary is called
  * fixed bug preventing use of background color with wrapped text using
  :meth:`sdl2.ext.FontManager.render()` (PR #134)
  * fixed issue #112: allow easy moving and resizing of :obj:`sdl2.ext.Window()`
  objects through 'position' and 'size' attributes, added 'open' and 'close'
  methods to Window objects
  * fixed issue #130: SDL_RW* functions now accept pointers to RW objects
  * fixed issue #135: :func:`sdl2.SDL_GetPrefPath()` and
  :func:`sdl2.SDL_GetPrefPath()` now return bytestrings instead of pointers
  to strings.
  * fixed issue #148: added support for loading SDL2 .so binaries with numeric
  suffixes on Unix-like OSes (e.g. 'libSDL2.so.2')
  * fixed transparency issues with pallete indexed PNGs (PR #159)

OBS-URL: https://build.opensuse.org/request/show/788962
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-PySDL2?expand=0&rev=9
2020-03-27 10:33:35 +00:00
665c01933c Accepting request 746324 from devel:languages:python
- Run through spec-cleaner

OBS-URL: https://build.opensuse.org/request/show/746324
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-PySDL2?expand=0&rev=3
2019-11-08 14:25:37 +00:00
f4a4d71537 Run through spec-cleaner
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-PySDL2?expand=0&rev=7
2019-11-07 15:32:44 +00:00
30250a237e Fix %pytest call
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-PySDL2?expand=0&rev=6
2019-10-14 13:46:12 +00:00
63f0b473fd Accepting request 659304 from devel:languages:python
- Remove superfluous devel dependency for noarch package

OBS-URL: https://build.opensuse.org/request/show/659304
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-PySDL2?expand=0&rev=2
2019-01-24 13:03:01 +00:00
07d1d483c3 Clean up the SPEC file
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-PySDL2?expand=0&rev=4
2018-12-04 17:19:51 +00:00
6f18e5493d Remove superfluous devel dependency for noarch package
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-PySDL2?expand=0&rev=3
2018-12-04 13:54:24 +00:00
45fbae4822 Accepting request 581994 from devel:languages:python
Needed by the latest version of python-holoviews, which is already in openSUSE:Factory.

OBS-URL: https://build.opensuse.org/request/show/581994
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-PySDL2?expand=0&rev=1
2018-03-09 09:37:10 +00:00
Todd R
4ad4c5394f Accepting request 540644 from home:TheBlackCat:branches:devel:languages:python
- initial version

OBS-URL: https://build.opensuse.org/request/show/540644
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-PySDL2?expand=0&rev=1
2017-11-10 19:59:47 +00:00
4 changed files with 0 additions and 434 deletions

View File

@@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:1027406badbecdd30fe56e800a5a76ad7d7271a3aec0b7acf780ee26a00f2d40
size 773537

View File

@@ -1,240 +0,0 @@
From ed28ea6305dede1b6ba046e36ddae9ba2016b62e Mon Sep 17 00:00:00 2001
From: Simon McVittie <smcv@collabora.com>
Date: Sat, 19 Aug 2023 23:44:03 +0100
Subject: [PATCH] Partially resolve #257: video_test (#270)
* video_test: Don't check error unless a function failed
Helps: https://github.com/py-sdl/py-sdl2/issues/257
Signed-off-by: Simon McVittie <smcv@debian.org>
* video_test: Use _check_error_msg() a bit more often
Signed-off-by: Simon McVittie <smcv@debian.org>
* video_test: Mitigate unsuitability of SDL_GetError() for detecting failure
SDL_GetError() is like errno: it's documented not to be suitable for
detecting failure, only for getting more details if failure was already
detected (its result is unspecified on success, because a successful
API call might have been implemented by doing something that failed,
detecting that, and falling back to doing something different).
However, some functions in SDL2 return void, so we have no other way
to tell whether they have failed (they do return a result in SDL3).
To make it less likely that upgrading SDL2 will make these tests regress,
clear the error indicator immediately before calling the function under
test. It is still not guaranteed to be empty on success, but at least
this way we make sure it doesn't already contain an error message from
a previous function call.
Helps: https://github.com/py-sdl/py-sdl2/issues/257
Signed-off-by: Simon McVittie <smcv@debian.org>
---------
Signed-off-by: Simon McVittie <smcv@debian.org>
---
sdl2/test/video_test.py | 58 +++++++++++++++++++++--------------------
1 file changed, 30 insertions(+), 28 deletions(-)
diff --git a/sdl2/test/video_test.py b/sdl2/test/video_test.py
index 83cb620..ca5a8e4 100644
--- a/sdl2/test/video_test.py
+++ b/sdl2/test/video_test.py
@@ -52,8 +52,7 @@ def with_sdl_gl(with_sdl):
def window(with_sdl):
flag = sdl2.SDL_WINDOW_BORDERLESS
w = sdl2.SDL_CreateWindow(b"Test", 10, 40, 12, 13, flag)
- if not w:
- assert SDL_GetError() == b""
+ assert w, _check_error_msg()
assert isinstance(w.contents, sdl2.SDL_Window)
sdl2.SDL_ClearError()
yield w
@@ -63,8 +62,7 @@ def window(with_sdl):
def decorated_window(with_sdl):
flag = sdl2.SDL_WINDOW_RESIZABLE
w = sdl2.SDL_CreateWindow(b"Test", 10, 40, 12, 13, flag)
- if not w:
- assert SDL_GetError() == b""
+ assert w, _check_error_msg()
assert isinstance(w.contents, sdl2.SDL_Window)
sdl2.SDL_ClearError()
yield w
@@ -74,20 +72,18 @@ def decorated_window(with_sdl):
def gl_window(with_sdl_gl):
flag = sdl2.SDL_WINDOW_OPENGL
w = sdl2.SDL_CreateWindow(b"OpenGL", 10, 40, 12, 13, flag)
- if not w:
- assert SDL_GetError() == b""
+ assert w, _check_error_msg()
assert isinstance(w.contents, sdl2.SDL_Window)
sdl2.SDL_ClearError()
ctx = sdl2.SDL_GL_CreateContext(w)
- assert SDL_GetError() == b""
+ assert ctx, _check_error_msg()
yield (w, ctx)
sdl2.SDL_GL_DeleteContext(ctx)
sdl2.SDL_DestroyWindow(w)
def _create_window(name, h, w, x, y, flags):
window = sdl2.SDL_CreateWindow(name, h, w, x, y, flags)
- if not window:
- assert SDL_GetError() == b""
+ assert window, _check_error_msg()
assert isinstance(window.contents, sdl2.SDL_Window)
sdl2.SDL_ClearError()
return window
@@ -193,7 +189,7 @@ def test_SDL_VideoInitQuit():
# Test with default driver
assert sdl2.SDL_WasInit(0) & sdl2.SDL_INIT_VIDEO != sdl2.SDL_INIT_VIDEO
ret = sdl2.SDL_VideoInit(None)
- assert ret == 0, sdl2.SDL_GetError().decode('utf-8', 'replace')
+ assert ret == 0, _check_error_msg()
assert sdl2.SDL_GetCurrentVideoDriver() # If initialized, should be string
sdl2.SDL_VideoQuit()
assert not sdl2.SDL_GetCurrentVideoDriver()
@@ -234,8 +230,7 @@ def test_SDL_GetDisplayMode(with_sdl):
for mode in range(modes):
dmode = sdl2.SDL_DisplayMode()
ret = sdl2.SDL_GetDisplayMode(index, mode, byref(dmode))
- assert sdl2.SDL_GetError() == b""
- assert ret == 0
+ assert ret == 0, _check_error_msg()
if not DRIVER_DUMMY:
assert dmode.w > 0
assert dmode.h > 0
@@ -245,8 +240,7 @@ def test_SDL_GetCurrentDisplayMode(with_sdl):
for index in range(numdisplays):
dmode = sdl2.SDL_DisplayMode()
ret = sdl2.SDL_GetCurrentDisplayMode(index, byref(dmode))
- assert sdl2.SDL_GetError() == b""
- assert ret == 0
+ assert ret == 0, _check_error_msg()
assert dmode.w > 0
assert dmode.h > 0
@@ -255,8 +249,7 @@ def test_SDL_GetDesktopDisplayMode(with_sdl):
for index in range(numdisplays):
dmode = sdl2.SDL_DisplayMode()
ret = sdl2.SDL_GetDesktopDisplayMode(index, byref(dmode))
- assert sdl2.SDL_GetError() == b""
- assert ret == 0
+ assert ret == 0, _check_error_msg()
assert dmode.w > 0
assert dmode.h > 0
@@ -266,8 +259,7 @@ def test_SDL_GetClosestDisplayMode(with_sdl):
for index in range(numdisplays):
dmode = sdl2.SDL_DisplayMode()
ret = sdl2.SDL_GetCurrentDisplayMode(index, byref(dmode))
- assert sdl2.SDL_GetError() == b""
- assert ret == 0
+ assert ret == 0, _check_error_msg()
cmode = sdl2.SDL_DisplayMode(
dmode.format, dmode.w - 1, dmode.h - 1, dmode.refresh_rate
)
@@ -286,8 +278,7 @@ def test_SDL_GetDisplayBounds(with_sdl):
for index in range(numdisplays):
bounds = rect.SDL_Rect()
ret = sdl2.SDL_GetDisplayBounds(index, byref(bounds))
- assert sdl2.SDL_GetError() == b""
- assert ret == 0
+ assert ret == 0, _check_error_msg()
assert bounds.w > 0
assert bounds.h > 0
assert not rect.SDL_RectEmpty(bounds)
@@ -345,8 +336,8 @@ def test_GetDisplayInfo(with_sdl):
def test_SDL_CreateDestroyWindow(with_sdl):
flag = sdl2.SDL_WINDOW_BORDERLESS
window = sdl2.SDL_CreateWindow(b"Test", 10, 40, 12, 13, flag)
+ assert window, _check_error_msg()
if not isinstance(window.contents, sdl2.SDL_Window):
- assert SDL_GetError() == b""
assert isinstance(window.contents, sdl2.SDL_Window)
sdl2.SDL_DestroyWindow(window)
@@ -453,7 +444,10 @@ def test_SDL_SetWindowIcon(window):
0, 16, 16, 16, 0xF000, 0x0F00, 0x00F0, 0x000F
)
assert isinstance(sf.contents, surface.SDL_Surface)
+ sdl2.SDL_ClearError()
sdl2.SDL_SetWindowIcon(window, sf)
+ # TODO: This is not 100% safe, but in SDL2, SetWindowIcon returns void,
+ # so we can't reliably detect error
assert SDL_GetError() == b""
@pytest.mark.xfail(is_pypy, reason="PyPy can't create proper py_object values")
@@ -535,7 +529,10 @@ def test_SDL_GetSetWindowMinimumSize(window):
sdl2.SDL_GetWindowSize(window, byref(sx), byref(sy))
assert (sx.value, sy.value) == (12, 13)
# Set and verify the minimum window size
+ sdl2.SDL_ClearError()
sdl2.SDL_SetWindowMinimumSize(window, 10, 10)
+ # TODO: This is not 100% safe, but in SDL2, SetWindowMinimumSize returns
+ # void, so we can't reliably detect error
assert SDL_GetError() == b""
sdl2.SDL_GetWindowMinimumSize(window, byref(minx), byref(miny))
assert (minx.value, miny.value) == (10, 10)
@@ -549,8 +546,11 @@ def test_SDL_GetSetWindowMaximumSize(window):
maxx, maxy = c_int(0), c_int(0)
sdl2.SDL_GetWindowSize(window, byref(sx), byref(sy))
assert (sx.value, sy.value) == (12, 13)
+ sdl2.SDL_ClearError()
# Set and verify the maximum window size
sdl2.SDL_SetWindowMaximumSize(window, 32, 32)
+ # TODO: This is not 100% safe, but in SDL2, SetWindowMaximumSize returns
+ # void, so we can't reliably detect error
assert SDL_GetError() == b""
sdl2.SDL_GetWindowMaximumSize(window, byref(maxx), byref(maxy))
assert (maxx.value, maxy.value) == (32, 32)
@@ -660,7 +660,7 @@ def test_SDL_HasWindowSurface(window):
def test_SDL_GetWindowSurface(window):
sf = sdl2.SDL_GetWindowSurface(window)
- assert SDL_GetError() == b""
+ assert sf, _check_error_msg()
assert isinstance(sf.contents, surface.SDL_Surface)
def test_SDL_UpdateWindowSurface(window):
@@ -857,23 +857,22 @@ def test_SDL_GL_CreateDeleteContext(with_sdl_gl):
b"OpenGL", 10, 40, 32, 24, sdl2.SDL_WINDOW_OPENGL
)
ctx = sdl2.SDL_GL_CreateContext(window)
- assert SDL_GetError() == b""
+ assert ctx, _check_error_msg()
sdl2.SDL_GL_DeleteContext(ctx)
ctx = sdl2.SDL_GL_CreateContext(window)
- assert SDL_GetError() == b""
+ assert ctx, _check_error_msg()
sdl2.SDL_GL_DeleteContext(ctx)
sdl2.SDL_DestroyWindow(window)
@pytest.mark.skipif(DRIVER_DUMMY, reason="Doesn't work with dummy driver")
def test_SDL_GL_GetProcAddress(gl_window):
procaddr = sdl2.SDL_GL_GetProcAddress(b"glGetString")
- assert SDL_GetError() == b""
- assert procaddr is not None and int(procaddr) != 0
+ assert procaddr is not None and int(procaddr) != 0, _check_error_msg()
@pytest.mark.skipif(DRIVER_DUMMY, reason="Doesn't work with dummy driver")
def test_SDL_GL_ExtensionSupported(gl_window):
- assert sdl2.SDL_GL_ExtensionSupported(b"GL_EXT_bgra")
- assert SDL_GetError() == b""
+ sdl2.SDL_ClearError()
+ assert sdl2.SDL_GL_ExtensionSupported(b"GL_EXT_bgra"), _check_error_msg()
@pytest.mark.skipif(DRIVER_DUMMY, reason="Doesn't work with dummy driver")
def test_SDL_GL_GetSetResetAttribute(with_sdl_gl):
@@ -946,7 +945,10 @@ def test_SDL_GL_SwapWindow(gl_window):
window, ctx = gl_window
ret = sdl2.SDL_GL_MakeCurrent(window, ctx)
assert ret == 0, _check_error_msg()
+ sdl2.SDL_ClearError()
sdl2.SDL_GL_SwapWindow(window)
sdl2.SDL_GL_SwapWindow(window)
sdl2.SDL_GL_SwapWindow(window)
+ # TODO: This is not 100% safe, but in SDL2, GL_SwapWindow returns
+ # void, so we can't reliably detect error
assert SDL_GetError() == b""

View File

@@ -1,43 +0,0 @@
From d7c0604381f6cbefa2c8b51c84b879e2f927e91e Mon Sep 17 00:00:00 2001
From: Simon McVittie <smcv@collabora.com>
Date: Sat, 19 Aug 2023 23:38:36 +0100
Subject: [PATCH] test: Don't assert that SDL_hid_enumerate doesn't set error
(#269)
On my Linux system, enumeration succeeds, but the error indicator gets
set as a side-effect (which appears to be because the loader checks
whether the symbol exists in SDL or a direct dependency before it
dlopens libudev).
The API of SDL_hid_enumerate does not make it possible to distinguish
between successfully returning an empty list of devices (returns NULL
with the error indicator in an undefined state) and a failure (returns
NULL with the error indicator set), and systems that run automated tests
usually don't have any HID game controllers connected, so we can't make
any meaningful use of the error indicator here.
Helps: https://github.com/py-sdl/py-sdl2/issues/257
Signed-off-by: Simon McVittie <smcv@debian.org>
---
sdl2/test/hidapi_test.py | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/sdl2/test/hidapi_test.py b/sdl2/test/hidapi_test.py
index 68bb9f9..5422d42 100644
--- a/sdl2/test/hidapi_test.py
+++ b/sdl2/test/hidapi_test.py
@@ -38,10 +38,11 @@ def test_SDL_hid_device_change_count(hidapi_setup):
def test_SDL_hid_enumerate(hidapi_setup):
devices = sdl2.SDL_hid_enumerate(0, 0)
- assert SDL_GetError() == b""
+ # Cannot check the error indicator here: a non-error empty list is
+ # indistinguishable from an error, and it is not guaranteed that the
+ # error indicator will not be set as a side-effect of a successful load
if devices != None:
sdl2.SDL_hid_free_enumeration(devices)
- assert SDL_GetError() == b""
@pytest.mark.skip("not implemented")

View File

@@ -1,148 +0,0 @@
From 1c865e3f751e678f3ad2d8f3fca17a0755fbeaf7 Mon Sep 17 00:00:00 2001
From: basak <robie@justgohome.co.uk>
Date: Fri, 11 Aug 2023 17:52:01 +0100
Subject: [PATCH] tests: SDL_GetError() != b'' isn't an error (#267)
* tests: SDL_GetError() != b'' isn't an error
In Ubuntu, we're seeing test failures of the following pattern when
moving from libsdl2 2.28.1+dfsg-1 to 2.28.2+dfsg-1:
> assert sdl2.SDL_GetError() == b""
E AssertionError: assert b'Unexpected ...r element crc' == b''
E Full diff:
E - b''
E + b'Unexpected controller element crc'
This looks like an issue similar to that fixed in commit 8c39f40. We
should check the relevant return value, and only if it indicates failure
should we attach any particular meaning to the return value of
SDL_GetError().
* Add myself to AUTHORS.txt
As instructed in #267
---
AUTHORS.txt | 1 +
sdl2/test/gamecontroller_test.py | 16 +++-------------
2 files changed, 4 insertions(+), 13 deletions(-)
diff --git a/AUTHORS.txt b/AUTHORS.txt
index 287109e..6d40500 100644
--- a/AUTHORS.txt
+++ b/AUTHORS.txt
@@ -45,6 +45,7 @@ Thanks to everyone else for their assistance, support, fixes and improvements:
* Radomir Dopieralski
* Rob Rolls
* Robert Winkler
+* Robie Basak
* Roger Flores
* Simon McVittie
* smea lum
diff --git a/sdl2/test/gamecontroller_test.py b/sdl2/test/gamecontroller_test.py
index 7a00aac..f509a88 100644
--- a/sdl2/test/gamecontroller_test.py
+++ b/sdl2/test/gamecontroller_test.py
@@ -51,7 +51,7 @@ def gamepads(with_sdl):
for i in range(count):
if sdl2.SDL_IsGameController(i) == SDL_TRUE:
pad = sdl2.SDL_GameControllerOpen(i)
- assert sdl2.SDL_GetError() == b""
+ assert pad, _check_error_msg()
assert isinstance(pad.contents, sdl2.SDL_GameController)
devices.append(pad)
yield devices
@@ -133,21 +133,18 @@ def test_SDL_GameControllerMappingForGUID(with_sdl):
def test_SDL_GameControllerMapping(gamepads):
for pad in gamepads:
mapping = sdl2.SDL_GameControllerMapping(pad)
- assert SDL_GetError() == b""
assert mapping == None or type(mapping) in (str, bytes)
def test_SDL_IsGameController(with_sdl):
count = joystick.SDL_NumJoysticks()
for index in range(count):
ret = sdl2.SDL_IsGameController(index)
- assert sdl2.SDL_GetError() == b""
assert ret in [SDL_TRUE, SDL_FALSE]
def test_SDL_GameControllerNameForIndex(with_sdl):
count = joystick.SDL_NumJoysticks()
for index in range(count):
name = sdl2.SDL_GameControllerNameForIndex(index)
- assert sdl2.SDL_GetError() == b""
assert name == None or type(name) in (str, bytes)
@pytest.mark.skipif(sdl2.dll.version < 2231, reason="not available")
@@ -174,7 +171,7 @@ def test_SDL_GameControllerOpenClose(with_sdl):
for index in range(count):
if sdl2.SDL_IsGameController(index) == SDL_TRUE:
pad = sdl2.SDL_GameControllerOpen(index)
- assert sdl2.SDL_GetError() == b""
+ assert pad, _check_error_msg()
assert isinstance(pad.contents, sdl2.SDL_GameController)
sdl2.SDL_GameControllerClose(pad)
@@ -220,7 +217,6 @@ def test_SDL_GameControllerPath(gamepads):
def test_SDL_GameControllerGetType(gamepads):
for pad in gamepads:
padtype = sdl2.SDL_GameControllerGetType(pad)
- assert SDL_GetError() == b""
assert padtype in gamepad_types
if is_virtual(pad):
assert padtype == sdl2.SDL_CONTROLLER_TYPE_VIRTUAL
@@ -244,7 +240,6 @@ def test_SDL_GameControllerSetPlayerIndex(gamepads):
def test_SDL_GameControllerGetVendor(gamepads):
for pad in gamepads:
vid = sdl2.SDL_GameControllerGetVendor(pad)
- assert SDL_GetError() == b""
if not is_virtual(pad):
assert vid > 0
@@ -252,7 +247,6 @@ def test_SDL_GameControllerGetVendor(gamepads):
def test_SDL_GameControllerGetProduct(gamepads):
for pad in gamepads:
pid = sdl2.SDL_GameControllerGetProduct(pad)
- assert SDL_GetError() == b""
if not is_virtual(pad):
assert pid > 0
@@ -260,21 +254,18 @@ def test_SDL_GameControllerGetProduct(gamepads):
def test_SDL_GameControllerGetProductVersion(gamepads):
for pad in gamepads:
pver = sdl2.SDL_GameControllerGetProductVersion(pad)
- assert SDL_GetError() == b""
assert pver >= 0
@pytest.mark.skipif(sdl2.dll.version < 2231, reason="not available")
def test_SDL_GameControllerGetFirmwareVersion(gamepads):
for pad in gamepads:
fw_ver = sdl2.SDL_GameControllerGetFirmwareVersion(pad)
- assert SDL_GetError() == b""
assert fw_ver >= 0
@pytest.mark.skipif(sdl2.dll.version < 2014, reason="not available")
def test_SDL_GameControllerGetSerial(gamepads):
for pad in gamepads:
serial = sdl2.SDL_GameControllerGetSerial(pad)
- assert SDL_GetError() == b""
assert serial == None or type(serial) in (str, bytes)
def test_SDL_GameControllerGetAttached(gamepads):
@@ -285,7 +276,7 @@ def test_SDL_GameControllerGetAttached(gamepads):
def test_SDL_GameControllerGetJoystick(gamepads):
for pad in gamepads:
stick = sdl2.SDL_GameControllerGetJoystick(pad)
- assert SDL_GetError() == b""
+ assert stick, _check_error_msg()
assert isinstance(stick.contents, joystick.SDL_Joystick)
def test_SDL_GameControllerEventState(with_sdl):
@@ -298,7 +289,6 @@ def test_SDL_GameControllerEventState(with_sdl):
def test_SDL_GameControllerUpdate(with_sdl):
# NOTE: Returns void, can't really test anything else
sdl2.SDL_GameControllerUpdate()
- assert SDL_GetError() == b""
def test_SDL_GameControllerGetAxisFromString(with_sdl):
expected = {