diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 55b5ca4..7179289 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -6,16 +6,24 @@ on: - main workflow_call: +# Cancel active CI runs for a PR before starting another run +concurrency: + group: ${{ github.ref }} + cancel-in-progress: true + defaults: run: - shell: bash # https://github.com/beeware/briefcase/pull/912 + shell: bash + +env: + FORCE_COLOR: "1" jobs: pre-commit: name: Pre-commit checks uses: beeware/.github/.github/workflows/pre-commit-run.yml@main with: - pre-commit-source: "pre-commit" + pre-commit-source: pre-commit verify-apps: name: Build apps @@ -31,16 +39,4 @@ jobs: fail-fast: false matrix: python-version: [ "3.8", "3.9", "3.10", "3.11", "3.12" ] - # PySide2 doesn't publish a binary wheel that is compatible - # with Python 3.11+, and doesn't publish *any* universal or ARM64 wheels, - # and is unlikely to ever do so, so we can't test pyside2. framework: [ "toga", "pyside6", "ppb", "pygame" ] - exclude: - # PySide6 hasn't published a binary wheel that is compatible - # with Python 3.12 yet. - - python-version: "3.12" - framework: "pyside6" - # Pygame hasn't published a binary wheel that is compatible - # with Python 3.12 yet. - - python-version: "3.12" - framework: "pygame" diff --git a/tests/apps/verify-ppb/pyproject.toml b/tests/apps/verify-ppb/pyproject.toml deleted file mode 100644 index fe01c07..0000000 --- a/tests/apps/verify-ppb/pyproject.toml +++ /dev/null @@ -1,23 +0,0 @@ -[tool.briefcase] -project_name = "Hello PPB" -bundle = "org.beeware" -version = "0.0.1" -url = "https://beeware.org/" -license = "BSD license" -author = 'Brutus' -author_email = "contact@beeware.org" - -[tool.briefcase.app.verify-ppb] -formal_name = "Hello PPB" -description = "A PPB test app" -icon = "src/verify_ppb/resources/verify-ppb" -sources = ['src/verify_ppb'] -requires = [ - 'ppb~=1.1', -] - -[tool.briefcase.app.verify-ppb.macOS.Xcode] -requires = [ - 'std-nslog~=1.0.0' -] -template = "../../.." diff --git a/tests/apps/verify-ppb/src/verify_ppb/__init__.py b/tests/apps/verify-ppb/src/verify_ppb/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/tests/apps/verify-ppb/src/verify_ppb/__main__.py b/tests/apps/verify-ppb/src/verify_ppb/__main__.py deleted file mode 100644 index ff7b0d0..0000000 --- a/tests/apps/verify-ppb/src/verify_ppb/__main__.py +++ /dev/null @@ -1,4 +0,0 @@ -from verify_ppb.app import main - -if __name__ == '__main__': - main() diff --git a/tests/apps/verify-ppb/src/verify_ppb/app.py b/tests/apps/verify-ppb/src/verify_ppb/app.py deleted file mode 100644 index 4dd0b0a..0000000 --- a/tests/apps/verify-ppb/src/verify_ppb/app.py +++ /dev/null @@ -1,46 +0,0 @@ -""" -A PPB test app -""" - -import os -import sys - -try: - from importlib import metadata as importlib_metadata -except ImportError: - # Backwards compatibility - importlib.metadata was added in Python 3.8 - import importlib_metadata - -import ppb - - -class HelloPPB(ppb.Scene): - def __init__(self, **props): - super().__init__(**props) - - self.add(ppb.Sprite( - image=ppb.Image('verify_ppb/resources/verify-ppb.png'), - )) - - -def main(): - # Linux desktop environments use app's .desktop file to integrate the app - # to their application menus. The .desktop file of this app will include - # StartupWMClass key, set to app's formal name, which helps associate - # app's windows to its menu item. - # - # For association to work any windows of the app must have WMCLASS - # property set to match the value set in app's desktop file. For PPB this - # is set using environment variable. - - # Find the name of the module that was used to start the app - app_module = sys.modules['__main__'].__package__ - # Retrieve the app's metadata - metadata = importlib_metadata.metadata(app_module) - - os.environ['SDL_VIDEO_X11_WMCLASS'] = metadata['Formal-Name'] - - ppb.run( - starting_scene=HelloPPB, - title='Hello PPB', - ) diff --git a/tests/apps/verify-ppb/src/verify_ppb/resources/__init__.py b/tests/apps/verify-ppb/src/verify_ppb/resources/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/tests/apps/verify-ppb/src/verify_ppb/resources/verify-ppb.icns b/tests/apps/verify-ppb/src/verify_ppb/resources/verify-ppb.icns deleted file mode 100644 index 27b43d3..0000000 Binary files a/tests/apps/verify-ppb/src/verify_ppb/resources/verify-ppb.icns and /dev/null differ diff --git a/tests/apps/verify-pygame/CHANGELOG b/tests/apps/verify-pygame/CHANGELOG deleted file mode 100644 index 5175552..0000000 --- a/tests/apps/verify-pygame/CHANGELOG +++ /dev/null @@ -1 +0,0 @@ -Dummy changelog for test purposes. diff --git a/tests/apps/verify-pygame/LICENSE b/tests/apps/verify-pygame/LICENSE deleted file mode 100644 index 3ce3640..0000000 --- a/tests/apps/verify-pygame/LICENSE +++ /dev/null @@ -1 +0,0 @@ -Dummy license for test purposes. diff --git a/tests/apps/verify-pygame/pyproject.toml b/tests/apps/verify-pygame/pyproject.toml deleted file mode 100644 index d3ee2f8..0000000 --- a/tests/apps/verify-pygame/pyproject.toml +++ /dev/null @@ -1,21 +0,0 @@ -[tool.briefcase] -project_name = "Hello Pygame" -bundle = "org.beeware" -version = "0.0.1" -url = "https://beeware.org/" -license = "BSD license" -author = 'Brutus' -author_email = "contact@beeware.org" - -[tool.briefcase.app.verify-pygame] -formal_name = "Hello Pygame" -description = "A Pygame test app" -icon = "src/verify_pygame/resources/verify-pygame" -sources = ['src/verify_pygame'] -requires = [ - 'pygame~=2.2.0', -] - -[tool.briefcase.app.verify-pygame.macOS.Xcode] -requires = [] -template = '../../../' diff --git a/tests/apps/verify-pygame/src/verify_pygame/__init__.py b/tests/apps/verify-pygame/src/verify_pygame/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/tests/apps/verify-pygame/src/verify_pygame/__main__.py b/tests/apps/verify-pygame/src/verify_pygame/__main__.py deleted file mode 100644 index f18aa73..0000000 --- a/tests/apps/verify-pygame/src/verify_pygame/__main__.py +++ /dev/null @@ -1,4 +0,0 @@ -from verify_pygame.app import main - -if __name__ == '__main__': - main() diff --git a/tests/apps/verify-pygame/src/verify_pygame/app.py b/tests/apps/verify-pygame/src/verify_pygame/app.py deleted file mode 100644 index a20dd50..0000000 --- a/tests/apps/verify-pygame/src/verify_pygame/app.py +++ /dev/null @@ -1,50 +0,0 @@ -""" -A Pygame test app -""" - -import pygame -import sys -import os - -try: - from importlib import metadata as importlib_metadata -except ImportError: - # Backwards compatibility - importlib.metadata was added in Python 3.8 - import importlib_metadata - -SCREEN_WIDTH, SCREEN_HEIGHT = 800, 600 -WHITE = (255, 255, 255) - - -def main(): - # Linux desktop environments use app's .desktop file to integrate the app - # to their application menus. The .desktop file of this app will include - # StartupWMClass key, set to app's formal name, which helps associate - # app's windows to its menu item. - # - # For association to work any windows of the app must have WMCLASS - # property set to match the value set in app's desktop file. For PPB this - # is set using environment variable. - - # Find the name of the module that was used to start the app - app_module = sys.modules["__main__"].__package__ - # Retrieve the app's metadata - metadata = importlib_metadata.metadata(app_module) - - os.environ["SDL_VIDEO_X11_WMCLASS"] = metadata["Formal-Name"] - - pygame.init() - pygame.display.set_caption(metadata["Formal-Name"]) - screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT)) - - running = True - while running: - for event in pygame.event.get(): - if event.type == pygame.QUIT: - running = False - break - - screen.fill(WHITE) - pygame.display.flip() - - pygame.quit() diff --git a/tests/apps/verify-pygame/src/verify_pygame/resources/__init__.py b/tests/apps/verify-pygame/src/verify_pygame/resources/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/tests/apps/verify-pygame/src/verify_pygame/resources/verify-pygame.icns b/tests/apps/verify-pygame/src/verify_pygame/resources/verify-pygame.icns deleted file mode 100644 index 27b43d3..0000000 Binary files a/tests/apps/verify-pygame/src/verify_pygame/resources/verify-pygame.icns and /dev/null differ diff --git a/tests/apps/verify-pygame/src/verify_pygame/resources/verify-pygame.png b/tests/apps/verify-pygame/src/verify_pygame/resources/verify-pygame.png deleted file mode 100644 index 0ab2cb6..0000000 Binary files a/tests/apps/verify-pygame/src/verify_pygame/resources/verify-pygame.png and /dev/null differ diff --git a/tests/apps/verify-pyside2/pyproject.toml b/tests/apps/verify-pyside2/pyproject.toml deleted file mode 100644 index d2437c9..0000000 --- a/tests/apps/verify-pyside2/pyproject.toml +++ /dev/null @@ -1,24 +0,0 @@ -[tool.briefcase] -project_name = "Hello PySide2" -bundle = "org.beeware" -version = "0.0.1" -url = "https://beeware.org/" -license = "BSD license" -author = 'Brutus' -author_email = "contact@beeware.org" - -[tool.briefcase.app.verify-pyside2] -formal_name = "Hello PySide2" -description = "A PySide2 test app" -icon = "src/verify_pyside2/resources/verify-pyside2" -sources = ['src/verify_pyside2'] -requires = [ - 'pyside2>=5.15.2', -] - - -[tool.briefcase.app.verify-pyside2.macOS.Xcode] -requires = [ - 'std-nslog~=1.0.0' -] -template = "../../.." diff --git a/tests/apps/verify-pyside2/src/verify_pyside2/__init__.py b/tests/apps/verify-pyside2/src/verify_pyside2/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/tests/apps/verify-pyside2/src/verify_pyside2/__main__.py b/tests/apps/verify-pyside2/src/verify_pyside2/__main__.py deleted file mode 100644 index c1e3eca..0000000 --- a/tests/apps/verify-pyside2/src/verify_pyside2/__main__.py +++ /dev/null @@ -1,4 +0,0 @@ -from verify_pyside2.app import main - -if __name__ == '__main__': - main() diff --git a/tests/apps/verify-pyside2/src/verify_pyside2/app.py b/tests/apps/verify-pyside2/src/verify_pyside2/app.py deleted file mode 100644 index 26bb36c..0000000 --- a/tests/apps/verify-pyside2/src/verify_pyside2/app.py +++ /dev/null @@ -1,44 +0,0 @@ -""" -A PySide2 test app -""" -import sys - -try: - from importlib import metadata as importlib_metadata -except ImportError: - # Backwards compatibility - importlib.metadata was added in Python 3.8 - import importlib_metadata - -from PySide2 import QtWidgets - - -class HelloPySide2(QtWidgets.QMainWindow): - def __init__(self): - super().__init__() - self.init_ui() - - def init_ui(self): - self.setWindowTitle('verify-pyside2') - self.show() - - -def main(): - # Linux desktop environments use app's .desktop file to integrate the app - # to their application menus. The .desktop file of this app will include - # StartupWMClass key, set to app's formal name, which helps associate - # app's windows to its menu item. - # - # For association to work any windows of the app must have WMCLASS - # property set to match the value set in app's desktop file. For PySide2 - # this is set with setApplicationName(). - - # Find the name of the module that was used to start the app - app_module = sys.modules['__main__'].__package__ - # Retrieve the app's metadata - metadata = importlib_metadata.metadata(app_module) - - QtWidgets.QApplication.setApplicationName(metadata['Formal-Name']) - - app = QtWidgets.QApplication(sys.argv) - main_window = HelloPySide2() - sys.exit(app.exec_()) diff --git a/tests/apps/verify-pyside2/src/verify_pyside2/resources/__init__.py b/tests/apps/verify-pyside2/src/verify_pyside2/resources/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/tests/apps/verify-pyside2/src/verify_pyside2/resources/verify-pyside2.icns b/tests/apps/verify-pyside2/src/verify_pyside2/resources/verify-pyside2.icns deleted file mode 100644 index 27b43d3..0000000 Binary files a/tests/apps/verify-pyside2/src/verify_pyside2/resources/verify-pyside2.icns and /dev/null differ diff --git a/tests/apps/verify-pyside6/pyproject.toml b/tests/apps/verify-pyside6/pyproject.toml deleted file mode 100644 index 5ef532c..0000000 --- a/tests/apps/verify-pyside6/pyproject.toml +++ /dev/null @@ -1,24 +0,0 @@ -[tool.briefcase] -project_name = "Hello PySide6" -bundle = "org.beeware" -version = "0.0.1" -url = "https://beeware.org/" -license = "BSD license" -author = 'Brutus' -author_email = "contact@beeware.org" - -[tool.briefcase.app.verify-pyside6] -formal_name = "Hello PySide6" -description = "A PySide6 test app" -icon = "src/verify_pyside6/resources/verify-pyside6" -sources = ['src/verify_pyside6'] -requires = [ - 'pyside6>=6.2.4', -] - - -[tool.briefcase.app.verify-pyside6.macOS.Xcode] -requires = [ - 'std-nslog~=1.0.0' -] -template = "../../.." diff --git a/tests/apps/verify-pyside6/src/verify_pyside6/__init__.py b/tests/apps/verify-pyside6/src/verify_pyside6/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/tests/apps/verify-pyside6/src/verify_pyside6/__main__.py b/tests/apps/verify-pyside6/src/verify_pyside6/__main__.py deleted file mode 100644 index 6de03ee..0000000 --- a/tests/apps/verify-pyside6/src/verify_pyside6/__main__.py +++ /dev/null @@ -1,4 +0,0 @@ -from verify_pyside6.app import main - -if __name__ == '__main__': - main() diff --git a/tests/apps/verify-pyside6/src/verify_pyside6/app.py b/tests/apps/verify-pyside6/src/verify_pyside6/app.py deleted file mode 100644 index 438c505..0000000 --- a/tests/apps/verify-pyside6/src/verify_pyside6/app.py +++ /dev/null @@ -1,44 +0,0 @@ -""" -A PySide6 test app -""" -import sys - -try: - from importlib import metadata as importlib_metadata -except ImportError: - # Backwards compatibility - importlib.metadata was added in Python 3.8 - import importlib_metadata - -from PySide6 import QtWidgets - - -class HelloPySide6(QtWidgets.QMainWindow): - def __init__(self): - super().__init__() - self.init_ui() - - def init_ui(self): - self.setWindowTitle('verify-pyside6') - self.show() - - -def main(): - # Linux desktop environments use app's .desktop file to integrate the app - # to their application menus. The .desktop file of this app will include - # StartupWMClass key, set to app's formal name, which helps associate - # app's windows to its menu item. - # - # For association to work any windows of the app must have WMCLASS - # property set to match the value set in app's desktop file. For PySide2 - # this is set with setApplicationName(). - - # Find the name of the module that was used to start the app - app_module = sys.modules['__main__'].__package__ - # Retrieve the app's metadata - metadata = importlib_metadata.metadata(app_module) - - QtWidgets.QApplication.setApplicationName(metadata['Formal-Name']) - - app = QtWidgets.QApplication(sys.argv) - main_window = HelloPySide6() - sys.exit(app.exec()) diff --git a/tests/apps/verify-pyside6/src/verify_pyside6/resources/__init__.py b/tests/apps/verify-pyside6/src/verify_pyside6/resources/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/tests/apps/verify-pyside6/src/verify_pyside6/resources/verify-pyside6.icns b/tests/apps/verify-pyside6/src/verify_pyside6/resources/verify-pyside6.icns deleted file mode 100644 index 27b43d3..0000000 Binary files a/tests/apps/verify-pyside6/src/verify_pyside6/resources/verify-pyside6.icns and /dev/null differ diff --git a/tests/apps/verify-toga/pyproject.toml b/tests/apps/verify-toga/pyproject.toml deleted file mode 100644 index 3785e47..0000000 --- a/tests/apps/verify-toga/pyproject.toml +++ /dev/null @@ -1,24 +0,0 @@ -[tool.briefcase] -project_name = "Hello Toga" -bundle = "org.beeware" -version = "0.0.1" -url = "https://beeware.org/" -license = "BSD license" -author = 'Brutus' -author_email = "contact@beeware.org" - -[tool.briefcase.app.verify-toga] -formal_name = "Hello Toga" -description = "A Toga test app" -icon = "src/verify_toga/resources/verify-toga" -sources = ['src/verify_toga'] -requires = [ -] - - -[tool.briefcase.app.verify-toga.macOS.Xcode] -requires = [ - 'toga-cocoa~=0.4.0', - 'std-nslog~=1.0.0' -] -template = "../../.." diff --git a/tests/apps/verify-toga/src/verify_toga/__init__.py b/tests/apps/verify-toga/src/verify_toga/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/tests/apps/verify-toga/src/verify_toga/__main__.py b/tests/apps/verify-toga/src/verify_toga/__main__.py deleted file mode 100644 index b219363..0000000 --- a/tests/apps/verify-toga/src/verify_toga/__main__.py +++ /dev/null @@ -1,4 +0,0 @@ -from verify_toga.app import main - -if __name__ == '__main__': - main().main_loop() diff --git a/tests/apps/verify-toga/src/verify_toga/app.py b/tests/apps/verify-toga/src/verify_toga/app.py deleted file mode 100644 index b609c38..0000000 --- a/tests/apps/verify-toga/src/verify_toga/app.py +++ /dev/null @@ -1,27 +0,0 @@ -""" -A Toga test app -""" -import toga -from toga.style import Pack -from toga.style.pack import COLUMN, ROW - - -class HelloToga(toga.App): - - def startup(self): - """ - Construct and show the Toga application. - - Usually, you would add your application to a main content box. - We then create a main window (with a name matching the app), and - show the main window. - """ - main_box = toga.Box() - - self.main_window = toga.MainWindow(title=self.formal_name) - self.main_window.content = main_box - self.main_window.show() - - -def main(): - return HelloToga() diff --git a/tests/apps/verify-toga/src/verify_toga/resources/__init__.py b/tests/apps/verify-toga/src/verify_toga/resources/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/tests/apps/verify-toga/src/verify_toga/resources/verify-toga.icns b/tests/apps/verify-toga/src/verify_toga/resources/verify-toga.icns deleted file mode 100644 index 27b43d3..0000000 Binary files a/tests/apps/verify-toga/src/verify_toga/resources/verify-toga.icns and /dev/null differ