diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2c3695a..7acf5d9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -16,23 +16,11 @@ jobs: with: python-version: ${{ matrix.python-version }} - - name: Set up test environment - run: | - sudo apt-get update - sudo apt-get install xvfb gettext - wget https://github.com/mozilla/geckodriver/releases/download/v0.25.0/geckodriver-v0.25.0-linux64.tar.gz - mkdir geckodriver - tar -xzf geckodriver-v0.25.0-linux64.tar.gz -C geckodriver - export PATH=$PATH:$PWD/geckodriver - export BOKCHOY_HEADLESS=true - - - run: geckodriver --version - - name: Install Requirements run: | pip install -r requirements/ci.txt - name: Run Tests - run: xvfb-run --server-args=-ac -- tox -e ${{ matrix.toxenv }} env: - BOKCHOY_HEADLESS: true + TOXENV: ${{ matrix.toxenv }} + run: tox diff --git a/Makefile b/Makefile index 69d8800..0f229d2 100644 --- a/Makefile +++ b/Makefile @@ -55,6 +55,7 @@ upgrade: $(COMMON_CONSTRAINTS_TXT) pip-compile --upgrade -o requirements/dev.txt requirements/base.in requirements/dev.in requirements/quality.in requirements/test.in requirements/travis.in pip-compile --upgrade -o requirements/quality.txt requirements/base.in requirements/quality.in requirements/test.in pip-compile --upgrade -o requirements/test.txt requirements/base.in requirements/test.in + pip-compile --upgrade -o requirements/travis.txt requirements/travis.in pip-compile --upgrade -o requirements/ci.txt requirements/ci.in # Let tox control the Django version for tests grep -e "^django==" requirements/test.txt > requirements/django.txt diff --git a/google_drive/tests/integration/base_test.py b/google_drive/tests/integration/base_test.py deleted file mode 100644 index f358605..0000000 --- a/google_drive/tests/integration/base_test.py +++ /dev/null @@ -1,20 +0,0 @@ -""" Base classes for integration tests """ -# -*- coding: utf-8 -*- -# - -# Imports ########################################################### -from __future__ import absolute_import -from xblockutils.base_test import SeleniumBaseTest - - -# Classes ########################################################### -class GoogleCalendarBaseTest(SeleniumBaseTest): # pylint: disable=too-few-public-methods - """ Base class for Google Calendar integration tests """ - module_name = __name__ - default_css_selector = 'div.google-calendar-xblock-wrapper' - - -class GoogleDocumentBaseTest(SeleniumBaseTest): # pylint: disable= too-few-public-methods - """ Base class for Google Document integration tests """ - module_name = __name__ - default_css_selector = 'div.google-docs-xblock-wrapper' diff --git a/google_drive/tests/integration/studio_scenarios.py b/google_drive/tests/integration/studio_scenarios.py deleted file mode 100644 index 59dd9b4..0000000 --- a/google_drive/tests/integration/studio_scenarios.py +++ /dev/null @@ -1,24 +0,0 @@ -""" -Contains a list of lists that will be used as the DDT arguments for the studio test. -""" -# -*- coding: utf-8 -*- -# - -# Constants ########################################################### -CALENDAR_SCENARIOS = [ - [ - 'Calendar', - ], -] - -DOCUMENT_SCENARIOS = [ - [ - 'Document', - ], -] - -IMAGE_SCENARIOS = [ - [ - 'Image', - ], -] diff --git a/google_drive/tests/integration/test_publish.py b/google_drive/tests/integration/test_publish.py deleted file mode 100644 index 38b4831..0000000 --- a/google_drive/tests/integration/test_publish.py +++ /dev/null @@ -1,46 +0,0 @@ -""" Runs tests for publish event functionality """ -# -*- coding: utf-8 -*- -# - -# Imports ########################################################### -from .base_test import GoogleCalendarBaseTest, GoogleDocumentBaseTest - - -# Classes ########################################################### -class GoogleCalendarPublishTestCase(GoogleCalendarBaseTest): - """ - Tests for Google Calendar event publishing functionality. - """ - - def test_calendar_publish_event(self): - """ Tests whether the publish event for calendar was triggered """ - calendar = self.go_to_page('Calendar') - load_event_complete = calendar.find_element_by_css_selector('.load_event_complete') - self.assertEqual( - load_event_complete.get_attribute('value'), - "I've published the event that indicates that the load has completed" - ) - - -class GoogleDocumentPublishTestCase(GoogleDocumentBaseTest): - """ - Tests for Google Document event publishing functionality. - """ - - def test_document_publish_event(self): - """ Tests whether the publish event for document was triggered """ - document = self.go_to_page('Document') - load_event_complete = document.find_element_by_css_selector('.load_event_complete') - self.assertEqual( - load_event_complete.get_attribute('value'), - "I've published the event that indicates that the load has completed" - ) - - def test_image_publish_event(self): - """ Tests whether the publish event for image was triggered """ - image = self.go_to_page('Image') - load_event_complete = image.find_element_by_css_selector('.load_event_complete') - self.assertEqual( - load_event_complete.get_attribute('value'), - "I've published the event that indicates that the load has completed" - ) diff --git a/google_drive/tests/integration/test_studio.py b/google_drive/tests/integration/test_studio.py deleted file mode 100644 index 7bf5293..0000000 --- a/google_drive/tests/integration/test_studio.py +++ /dev/null @@ -1,131 +0,0 @@ -""" Runs tests for the studio views """ -# -*- coding: utf-8 -*- -# - -# Imports ########################################################### -from __future__ import absolute_import -from ddt import data, ddt, unpack - -from google_drive.google_calendar import DEFAULT_CALENDAR_URL -from google_drive.google_docs import DEFAULT_DOCUMENT_URL -from google_drive.tests.test_const import TEST_IMAGE_URL - -from .base_test import GoogleCalendarBaseTest, GoogleDocumentBaseTest -from .studio_scenarios import CALENDAR_SCENARIOS, DOCUMENT_SCENARIOS, IMAGE_SCENARIOS - - -# Classes ########################################################### -@ddt # pylint: disable=too-many-ancestors -class GoogleCalendarStudioTest(GoogleCalendarBaseTest): # pylint: disable=too-many-ancestors - """ - Tests for Google Calendar studio view. - """ - default_css_selector = '#calendar-settings-tab' - - def studio_save(self): - """ Save changes made in studio for Google Calendar """ - self.browser.find_element_by_css_selector('#calendar-submit-options').click() - - @data(*CALENDAR_SCENARIOS) - @unpack - def test_save_calendar(self, page_name): - """ - Verify that option changes in Google Calendar studio view - are appropriately saved and visible immediately after - """ - self.go_to_page(page_name, view_name='studio_view') - # Expecting every input value to be valid - self.assertTrue(self.browser.find_element_by_css_selector('.validation_alert.covered')) - display_name_input = self.browser.find_element_by_css_selector('#edit_display_name') - # Change display name - display_name_input.clear() - display_name_input.send_keys('My Meetings') - calendar_id_input = self.browser.find_element_by_css_selector('#edit_calendar_id') - # Change calendar ID - calendar_id_input.clear() - calendar_id_input.send_keys('a') - self.wait_until_exists('#edit_calendar_id.error') - # Expects validation error due to calendar ID being invalid - self.assertTrue(self.browser.find_element_by_css_selector('.validation_alert:not(covered)')) - # Check to see that calendar ID input element is marked as invalid - self.assertTrue(self.browser.find_element_by_css_selector('#edit_calendar_id.error')) - # Save button should be disabled - self.assertTrue(self.browser.find_element_by_css_selector('#calendar-submit-options.disabled')) - clean_calendar_id_button = self.browser.find_element_by_css_selector('button.clear-calendar-id') - # Reset calendar ID value to default one - clean_calendar_id_button.click() - # Expecting every input value to be valid again - self.assertTrue(self.browser.find_element_by_css_selector('.validation_alert.covered')) - - self.studio_save() - self.go_to_page(page_name, css_selector='div.google-calendar-xblock-wrapper') - calendar_iframe = self.browser.find_element_by_css_selector('iframe') - # Expecting that default calendar is the one loaded in the IFrame - self.assertEqual(calendar_iframe.get_attribute("src"), DEFAULT_CALENDAR_URL) - # Expecting that the new display name is the title of the IFrame - self.assertEqual(calendar_iframe.get_attribute("title"), 'My Meetings') - - -@ddt -class GoogleDocumentStudioTest(GoogleDocumentBaseTest): - """ - Tests for Google Document studio view. - """ - default_css_selector = '#document-settings-tab' - - def studio_save(self): - """ Save changes made in studio for Google Document """ - self.browser.find_element_by_css_selector('#document-submit-options').click() - - @data(*DOCUMENT_SCENARIOS) - @unpack - def test_save_document(self, page_name): - """ - Verify that option changes in Google Document studio view - are appropriately saved and visible immediately after - """ - self.go_to_page(page_name, view_name='studio_view') - # Expecting every input value to be valid - self.assertTrue(self.browser.find_element_by_css_selector('.validation_alert.covered')) - display_name_input = self.browser.find_element_by_css_selector('#edit_display_name') - # Change display name - display_name_input.clear() - display_name_input.send_keys('My Document') - # Expecting list item that contains input element for alternative text to be hidden - self.assertTrue(self.browser.find_element_by_css_selector('li#alt_text_item.covered')) - - self.studio_save() - self.go_to_page(page_name, css_selector='div.google-docs-xblock-wrapper') - document_iframe = self.browser.find_element_by_css_selector('iframe') - # Expecting that default calendar is the one loaded in the IFrame - self.assertEqual(document_iframe.get_attribute("src"), DEFAULT_DOCUMENT_URL) - # Expecting that the new display name is the title of the IFrame - self.assertEqual(document_iframe.get_attribute("title"), 'My Document') - - @data(*IMAGE_SCENARIOS) - @unpack - def test_save_image(self, page_name): - """ - Verify that option changes in Google Image studio view - are appropriately saved and visible immediately after - """ - self.go_to_page(page_name, view_name='studio_view') - # Expecting every input value to be valid - self.assertTrue(self.browser.find_element_by_css_selector('.validation_alert.covered')) - display_name_input = self.browser.find_element_by_css_selector('#edit_display_name') - # Change display name - display_name_input.clear() - display_name_input.send_keys('My Image') - # Expecting list item that contains input element for alternative text to be shown - self.assertTrue(self.browser.find_element_by_css_selector('li#alt_text_item:not(covered)')) - alt_text_input = self.browser.find_element_by_css_selector('#edit_alt_text') - # Add alternative text for image - alt_text_input.send_keys('Alternative text for my image') - - self.studio_save() - self.go_to_page(page_name, css_selector='div.google-docs-xblock-wrapper') - image_iframe = self.browser.find_element_by_css_selector('img') - # Expecting that default calendar is the one loaded in the IFrame - self.assertEqual(image_iframe.get_attribute("src"), TEST_IMAGE_URL) - # Expecting that the new display name is the title of the IFrame - self.assertEqual(image_iframe.get_attribute("alt"), 'Alternative text for my image') diff --git a/requirements/ci.txt b/requirements/ci.txt index f352ec9..1aff33f 100644 --- a/requirements/ci.txt +++ b/requirements/ci.txt @@ -8,7 +8,7 @@ asgiref==3.7.2 # via django certifi==2023.7.22 # via requests -charset-normalizer==3.2.0 +charset-normalizer==3.3.0 # via requests coverage==6.5.0 # via coveralls @@ -16,34 +16,36 @@ coveralls==3.3.1 # via -r requirements/ci.in distlib==0.3.7 # via virtualenv -django==3.2.20 +django==3.2.22 # via # -c requirements/common_constraints.txt # -c requirements/constraints.txt # edx-i18n-tools docopt==0.6.2 # via coveralls -edx-i18n-tools==1.1.0 +edx-i18n-tools==1.3.0 # via -r requirements/ci.in -filelock==3.12.2 +filelock==3.12.4 # via # tox # virtualenv idna==3.4 # via requests -packaging==23.1 +lxml==4.9.3 + # via edx-i18n-tools +packaging==23.2 # via tox path==16.7.1 # via edx-i18n-tools -platformdirs==3.10.0 +platformdirs==3.11.0 # via virtualenv -pluggy==1.2.0 +pluggy==1.3.0 # via tox polib==1.2.0 # via edx-i18n-tools py==1.11.0 # via tox -pytz==2023.3 +pytz==2023.3.post1 # via django pyyaml==6.0.1 # via edx-i18n-tools @@ -60,11 +62,11 @@ tox==3.28.0 # -c requirements/common_constraints.txt # -r requirements/ci.in # tox-battery -tox-battery==0.6.1 +tox-battery==0.6.2 # via -r requirements/ci.in -typing-extensions==4.7.1 +typing-extensions==4.8.0 # via asgiref -urllib3==2.0.4 +urllib3==2.0.7 # via requests -virtualenv==20.24.2 +virtualenv==20.24.5 # via tox diff --git a/requirements/dev.txt b/requirements/dev.txt index f2d31b3..09f2d5d 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -6,7 +6,7 @@ # appdirs==1.4.4 # via fs -arrow==1.2.3 +arrow==1.3.0 # via cookiecutter asgiref==3.7.2 # via django @@ -18,15 +18,13 @@ backports-functools-lru-cache==1.6.6 # via caniusepython3 binaryornot==0.4.4 # via cookiecutter -bok-choy==2.0.2 - # via -r requirements/test.in -boto3==1.28.18 +boto3==1.28.67 # via fs-s3fs -botocore==1.31.18 +botocore==1.31.67 # via # boto3 # s3transfer -build==0.10.0 +build==1.0.3 # via pip-tools caniusepython3==7.3.0 # via -r requirements/quality.in @@ -36,9 +34,9 @@ chardet==5.2.0 # via # binaryornot # diff-cover -charset-normalizer==3.2.0 +charset-normalizer==3.3.0 # via requests -click==8.1.6 +click==8.1.7 # via # click-log # code-annotations @@ -49,23 +47,24 @@ click-log==0.4.0 # via edx-lint code-annotations==1.5.0 # via edx-lint -cookiecutter==2.2.3 +cookiecutter==2.4.0 # via xblock-sdk coverage[toml]==6.5.0 # via + # coverage # coveralls # pytest-cov coveralls==3.3.1 # via -r requirements/travis.in ddt==1.6.0 # via -r requirements/test.in -diff-cover==7.7.0 +diff-cover==8.0.0 # via -r requirements/dev.in distlib==0.3.7 # via # caniusepython3 # virtualenv -django==3.2.20 +django==3.2.22 # via # -c requirements/common_constraints.txt # -c requirements/constraints.txt @@ -75,13 +74,13 @@ django==3.2.20 # xblock-sdk docopt==0.6.2 # via coveralls -edx-i18n-tools==1.1.0 +edx-i18n-tools==1.3.0 # via -r requirements/travis.in edx-lint==5.3.4 # via -r requirements/quality.in -exceptiongroup==1.1.2 +exceptiongroup==1.1.3 # via pytest -filelock==3.12.2 +filelock==3.12.4 # via # tox # virtualenv @@ -94,12 +93,14 @@ fs-s3fs==1.1.1 # via # openedx-django-pyfs # xblock-sdk -gitdb==4.0.10 +gitdb==4.0.11 # via gitpython -gitpython==3.1.32 +gitpython==3.1.40 # via transifex-client idna==3.4 # via requests +importlib-metadata==6.8.0 + # via build iniconfig==2.0.0 # via pytest isort==5.12.0 @@ -115,20 +116,22 @@ jmespath==1.0.1 # via # boto3 # botocore -lazy==1.5 - # via - # bok-choy - # xblock +lazy==1.6 + # via xblock lazy-object-proxy==1.9.0 # via astroid lxml==4.9.3 # via + # edx-i18n-tools # xblock # xblock-sdk mako==1.2.4 # via # -r requirements/base.in + # xblock # xblock-utils +markdown-it-py==3.0.0 + # via rich markupsafe==2.1.3 # via # jinja2 @@ -136,13 +139,15 @@ markupsafe==2.1.3 # xblock mccabe==0.6.1 # via pylint +mdurl==0.1.2 + # via markdown-it-py mock==5.1.0 # via -r requirements/test.in nose==1.3.7 # via -r requirements/test.in openedx-django-pyfs==3.4.0 # via xblock -packaging==23.1 +packaging==23.2 # via # build # caniusepython3 @@ -152,13 +157,13 @@ path==16.7.1 # via edx-i18n-tools pbr==5.11.1 # via stevedore -pip-tools==7.2.0 +pip-tools==7.3.0 # via -r requirements/dev.in -platformdirs==3.10.0 +platformdirs==3.11.0 # via # pylint # virtualenv -pluggy==1.2.0 +pluggy==1.3.0 # via # diff-cover # pytest @@ -167,12 +172,14 @@ polib==1.2.0 # via edx-i18n-tools py==1.11.0 # via tox -pycodestyle==2.11.0 +pycodestyle==2.11.1 # via -r requirements/quality.in pydocstyle==6.3.0 # via -r requirements/quality.in -pygments==2.15.1 - # via diff-cover +pygments==2.16.1 + # via + # diff-cover + # rich pylint==2.12.2 # via # -c requirements/constraints.txt @@ -194,7 +201,7 @@ pypng==0.20220715.0 # xblock-sdk pyproject-hooks==1.0.0 # via build -pytest==7.4.0 +pytest==7.4.2 # via # -r requirements/test.in # pytest-cov @@ -213,7 +220,7 @@ python-slugify==4.0.1 # code-annotations # cookiecutter # transifex-client -pytz==2023.3 +pytz==2023.3.post1 # via # django # xblock @@ -231,12 +238,13 @@ requests==2.31.0 # coveralls # transifex-client # xblock-sdk -s3transfer==0.6.1 +rich==13.6.0 + # via cookiecutter +s3transfer==0.7.0 # via boto3 -selenium==3.141.0 - # via bok-choy -simplejson==3.19.1 +simplejson==3.19.2 # via + # xblock # xblock-sdk # xblock-utils six==1.16.0 @@ -247,7 +255,7 @@ six==1.16.0 # python-dateutil # tox # transifex-client -smmap==5.0.0 +smmap==5.0.1 # via gitdb snowballstemmer==2.2.0 # via pydocstyle @@ -272,22 +280,24 @@ tox==3.28.0 # -c requirements/common_constraints.txt # -r requirements/travis.in # tox-battery -tox-battery==0.6.1 +tox-battery==0.6.2 # via -r requirements/travis.in transifex-client==0.14.4 # via -r requirements/dev.in -typing-extensions==4.7.1 +types-python-dateutil==2.8.19.14 + # via arrow +typing-extensions==4.8.0 # via # asgiref # astroid # pylint -urllib3==1.26.16 + # rich +urllib3==1.26.18 # via # botocore # requests - # selenium # transifex-client -virtualenv==20.24.2 +virtualenv==20.24.5 # via tox web-fragments==2.1.0 # via @@ -298,11 +308,11 @@ webob==1.8.7 # via # xblock # xblock-sdk -wheel==0.41.0 +wheel==0.41.2 # via pip-tools wrapt==1.13.3 # via astroid -xblock[django]==1.6.2 +xblock[django]==1.8.1 # via # -r requirements/base.in # xblock-sdk @@ -311,8 +321,10 @@ xblock-sdk==0.7.0 # via # -r requirements/dev.in # -r requirements/test.in -xblock-utils==3.3.0 +xblock-utils==4.0.0 # via -r requirements/base.in +zipp==3.17.0 + # via importlib-metadata # The following packages are considered to be unsafe in a requirements file: # pip diff --git a/requirements/django.txt b/requirements/django.txt index 480c078..5a28da3 100644 --- a/requirements/django.txt +++ b/requirements/django.txt @@ -1 +1 @@ -django==3.2.20 +django==3.2.22 diff --git a/requirements/pip-tools.txt b/requirements/pip-tools.txt index 8167e08..50d35f2 100644 --- a/requirements/pip-tools.txt +++ b/requirements/pip-tools.txt @@ -4,13 +4,15 @@ # # make upgrade # -build==0.10.0 +build==1.0.3 # via pip-tools -click==8.1.6 +click==8.1.7 # via pip-tools -packaging==23.1 +importlib-metadata==6.8.0 # via build -pip-tools==7.2.0 +packaging==23.2 + # via build +pip-tools==7.3.0 # via -r requirements/pip-tools.in pyproject-hooks==1.0.0 # via build @@ -19,8 +21,10 @@ tomli==2.0.1 # build # pip-tools # pyproject-hooks -wheel==0.41.0 +wheel==0.41.2 # via pip-tools +zipp==3.17.0 + # via importlib-metadata # The following packages are considered to be unsafe in a requirements file: # pip diff --git a/requirements/pip.txt b/requirements/pip.txt index fb1908e..2154d29 100644 --- a/requirements/pip.txt +++ b/requirements/pip.txt @@ -4,11 +4,11 @@ # # make upgrade # -wheel==0.41.0 +wheel==0.41.2 # via -r requirements/pip.in # The following packages are considered to be unsafe in a requirements file: -pip==23.2.1 +pip==23.3 # via -r requirements/pip.in -setuptools==68.0.0 +setuptools==68.2.2 # via -r requirements/pip.in diff --git a/requirements/quality.txt b/requirements/quality.txt index b2e1474..7caa3db 100644 --- a/requirements/quality.txt +++ b/requirements/quality.txt @@ -6,7 +6,7 @@ # appdirs==1.4.4 # via fs -arrow==1.2.3 +arrow==1.3.0 # via cookiecutter asgiref==3.7.2 # via django @@ -18,15 +18,13 @@ backports-functools-lru-cache==1.6.6 # via caniusepython3 binaryornot==0.4.4 # via cookiecutter -bok-choy==2.0.2 - # via -r requirements/test.in -boto3==1.28.18 +boto3==1.28.67 # via fs-s3fs -botocore==1.31.18 +botocore==1.31.67 # via # boto3 # s3transfer -build==0.10.0 +build==1.0.3 # via pip-tools caniusepython3==7.3.0 # via -r requirements/quality.in @@ -36,9 +34,9 @@ chardet==5.2.0 # via # binaryornot # diff-cover -charset-normalizer==3.2.0 +charset-normalizer==3.3.0 # via requests -click==8.1.6 +click==8.1.7 # via # click-log # code-annotations @@ -49,17 +47,19 @@ click-log==0.4.0 # via edx-lint code-annotations==1.5.0 # via edx-lint -cookiecutter==2.2.3 +cookiecutter==2.4.0 # via xblock-sdk -coverage[toml]==7.2.7 - # via pytest-cov +coverage[toml]==7.3.2 + # via + # coverage + # pytest-cov ddt==1.6.0 # via -r requirements/test.in -diff-cover==7.7.0 +diff-cover==8.0.0 # via -r requirements/dev.in distlib==0.3.7 # via caniusepython3 -django==3.2.20 +django==3.2.22 # via # -c requirements/common_constraints.txt # -c requirements/constraints.txt @@ -68,7 +68,7 @@ django==3.2.20 # xblock-sdk edx-lint==5.3.4 # via -r requirements/quality.in -exceptiongroup==1.1.2 +exceptiongroup==1.1.3 # via pytest fs==2.4.16 # via @@ -79,12 +79,14 @@ fs-s3fs==1.1.1 # via # openedx-django-pyfs # xblock-sdk -gitdb==4.0.10 +gitdb==4.0.11 # via gitpython -gitpython==3.1.32 +gitpython==3.1.40 # via transifex-client idna==3.4 # via requests +importlib-metadata==6.8.0 + # via build iniconfig==2.0.0 # via pytest isort==5.12.0 @@ -100,10 +102,8 @@ jmespath==1.0.1 # via # boto3 # botocore -lazy==1.5 - # via - # bok-choy - # xblock +lazy==1.6 + # via xblock lazy-object-proxy==1.9.0 # via astroid lxml==4.9.3 @@ -113,7 +113,10 @@ lxml==4.9.3 mako==1.2.4 # via # -r requirements/base.in + # xblock # xblock-utils +markdown-it-py==3.0.0 + # via rich markupsafe==2.1.3 # via # jinja2 @@ -121,33 +124,37 @@ markupsafe==2.1.3 # xblock mccabe==0.6.1 # via pylint +mdurl==0.1.2 + # via markdown-it-py mock==5.1.0 # via -r requirements/test.in nose==1.3.7 # via -r requirements/test.in openedx-django-pyfs==3.4.0 # via xblock -packaging==23.1 +packaging==23.2 # via # build # caniusepython3 # pytest pbr==5.11.1 # via stevedore -pip-tools==7.2.0 +pip-tools==7.3.0 # via -r requirements/dev.in -platformdirs==3.10.0 +platformdirs==3.11.0 # via pylint -pluggy==1.2.0 +pluggy==1.3.0 # via # diff-cover # pytest -pycodestyle==2.11.0 +pycodestyle==2.11.1 # via -r requirements/quality.in pydocstyle==6.3.0 # via -r requirements/quality.in -pygments==2.15.1 - # via diff-cover +pygments==2.16.1 + # via + # diff-cover + # rich pylint==2.12.2 # via # -c requirements/constraints.txt @@ -169,7 +176,7 @@ pypng==0.20220715.0 # xblock-sdk pyproject-hooks==1.0.0 # via build -pytest==7.4.0 +pytest==7.4.2 # via # -r requirements/test.in # pytest-cov @@ -188,7 +195,7 @@ python-slugify==4.0.1 # code-annotations # cookiecutter # transifex-client -pytz==2023.3 +pytz==2023.3.post1 # via # django # xblock @@ -204,12 +211,13 @@ requests==2.31.0 # cookiecutter # transifex-client # xblock-sdk -s3transfer==0.6.1 +rich==13.6.0 + # via cookiecutter +s3transfer==0.7.0 # via boto3 -selenium==3.141.0 - # via bok-choy -simplejson==3.19.1 +simplejson==3.19.2 # via + # xblock # xblock-sdk # xblock-utils six==1.16.0 @@ -219,7 +227,7 @@ six==1.16.0 # fs-s3fs # python-dateutil # transifex-client -smmap==5.0.0 +smmap==5.0.1 # via gitdb snowballstemmer==2.2.0 # via pydocstyle @@ -240,16 +248,18 @@ tomli==2.0.1 # pytest transifex-client==0.14.4 # via -r requirements/dev.in -typing-extensions==4.7.1 +types-python-dateutil==2.8.19.14 + # via arrow +typing-extensions==4.8.0 # via # asgiref # astroid # pylint -urllib3==1.26.16 + # rich +urllib3==1.26.18 # via # botocore # requests - # selenium # transifex-client web-fragments==2.1.0 # via @@ -260,11 +270,11 @@ webob==1.8.7 # via # xblock # xblock-sdk -wheel==0.41.0 +wheel==0.41.2 # via pip-tools wrapt==1.13.3 # via astroid -xblock[django]==1.6.2 +xblock[django]==1.8.1 # via # -r requirements/base.in # xblock-sdk @@ -273,8 +283,10 @@ xblock-sdk==0.7.0 # via # -r requirements/dev.in # -r requirements/test.in -xblock-utils==3.3.0 +xblock-utils==4.0.0 # via -r requirements/base.in +zipp==3.17.0 + # via importlib-metadata # The following packages are considered to be unsafe in a requirements file: # pip diff --git a/requirements/test.in b/requirements/test.in index 8c6165d..7c1c6ec 100644 --- a/requirements/test.in +++ b/requirements/test.in @@ -3,7 +3,6 @@ -r dev.in -bok-choy ddt mock nose diff --git a/requirements/test.txt b/requirements/test.txt index 8f2e505..fb17be3 100644 --- a/requirements/test.txt +++ b/requirements/test.txt @@ -6,21 +6,19 @@ # appdirs==1.4.4 # via fs -arrow==1.2.3 +arrow==1.3.0 # via cookiecutter asgiref==3.7.2 # via django binaryornot==0.4.4 # via cookiecutter -bok-choy==2.0.2 - # via -r requirements/test.in -boto3==1.28.18 +boto3==1.28.67 # via fs-s3fs -botocore==1.31.18 +botocore==1.31.67 # via # boto3 # s3transfer -build==0.10.0 +build==1.0.3 # via pip-tools certifi==2023.7.22 # via requests @@ -28,19 +26,21 @@ chardet==5.2.0 # via # binaryornot # diff-cover -charset-normalizer==3.2.0 +charset-normalizer==3.3.0 # via requests -click==8.1.6 +click==8.1.7 # via # cookiecutter # pip-tools -cookiecutter==2.2.3 +cookiecutter==2.4.0 # via xblock-sdk -coverage[toml]==7.2.7 - # via pytest-cov +coverage[toml]==7.3.2 + # via + # coverage + # pytest-cov ddt==1.6.0 # via -r requirements/test.in -diff-cover==7.7.0 +diff-cover==8.0.0 # via -r requirements/dev.in # via # -c requirements/common_constraints.txt @@ -48,7 +48,7 @@ diff-cover==7.7.0 # -r requirements/base.in # openedx-django-pyfs # xblock-sdk -exceptiongroup==1.1.2 +exceptiongroup==1.1.3 # via pytest fs==2.4.16 # via @@ -59,12 +59,14 @@ fs-s3fs==1.1.1 # via # openedx-django-pyfs # xblock-sdk -gitdb==4.0.10 +gitdb==4.0.11 # via gitpython -gitpython==3.1.32 +gitpython==3.1.40 # via transifex-client idna==3.4 # via requests +importlib-metadata==6.8.0 + # via build iniconfig==2.0.0 # via pytest jinja2==3.1.2 @@ -75,10 +77,8 @@ jmespath==1.0.1 # via # boto3 # botocore -lazy==1.5 - # via - # bok-choy - # xblock +lazy==1.6 + # via xblock lxml==4.9.3 # via # xblock @@ -86,37 +86,44 @@ lxml==4.9.3 mako==1.2.4 # via # -r requirements/base.in + # xblock # xblock-utils +markdown-it-py==3.0.0 + # via rich markupsafe==2.1.3 # via # jinja2 # mako # xblock +mdurl==0.1.2 + # via markdown-it-py mock==5.1.0 # via -r requirements/test.in nose==1.3.7 # via -r requirements/test.in openedx-django-pyfs==3.4.0 # via xblock -packaging==23.1 +packaging==23.2 # via # build # pytest -pip-tools==7.2.0 +pip-tools==7.3.0 # via -r requirements/dev.in -pluggy==1.2.0 +pluggy==1.3.0 # via # diff-cover # pytest -pygments==2.15.1 - # via diff-cover +pygments==2.16.1 + # via + # diff-cover + # rich pypng==0.20220715.0 # via # -r requirements/dev.in # xblock-sdk pyproject-hooks==1.0.0 # via build -pytest==7.4.0 +pytest==7.4.2 # via # -r requirements/test.in # pytest-cov @@ -134,7 +141,7 @@ python-slugify==4.0.1 # via # cookiecutter # transifex-client -pytz==2023.3 +pytz==2023.3.post1 # via # django # xblock @@ -148,12 +155,13 @@ requests==2.31.0 # cookiecutter # transifex-client # xblock-sdk -s3transfer==0.6.1 +rich==13.6.0 + # via cookiecutter +s3transfer==0.7.0 # via boto3 -selenium==3.141.0 - # via bok-choy -simplejson==3.19.1 +simplejson==3.19.2 # via + # xblock # xblock-sdk # xblock-utils six==1.16.0 @@ -162,7 +170,7 @@ six==1.16.0 # fs-s3fs # python-dateutil # transifex-client -smmap==5.0.0 +smmap==5.0.1 # via gitdb sqlparse==0.4.4 # via django @@ -177,13 +185,16 @@ tomli==2.0.1 # pytest transifex-client==0.14.4 # via -r requirements/dev.in -typing-extensions==4.7.1 - # via asgiref -urllib3==1.26.16 +types-python-dateutil==2.8.19.14 + # via arrow +typing-extensions==4.8.0 + # via + # asgiref + # rich +urllib3==1.26.18 # via # botocore # requests - # selenium # transifex-client web-fragments==2.1.0 # via @@ -194,9 +205,9 @@ webob==1.8.7 # via # xblock # xblock-sdk -wheel==0.41.0 +wheel==0.41.2 # via pip-tools -xblock[django]==1.6.2 +xblock[django]==1.8.1 # via # -r requirements/base.in # xblock-sdk @@ -205,8 +216,10 @@ xblock-sdk==0.7.0 # via # -r requirements/dev.in # -r requirements/test.in -xblock-utils==3.3.0 +xblock-utils==4.0.0 # via -r requirements/base.in +zipp==3.17.0 + # via importlib-metadata # The following packages are considered to be unsafe in a requirements file: # pip diff --git a/tox.ini b/tox.ini index 2f7e033..a132af3 100644 --- a/tox.ini +++ b/tox.ini @@ -22,8 +22,6 @@ deps = django32: Django>=3.2,<4.0 django42: Django>=4.2,<4.3 -r{toxinidir}/requirements/test.txt -passenv = - BOKCHOY_HEADLESS setenv = DJANGO_SETTINGS_MODULE = workbench.settings SCREENSHOT_DIR={toxinidir}/var/logs