Commit Graph

238 Commits

Author SHA1 Message Date
Kyle D. McCormick
e64becbdf0 test: fix remaining paver tests
They haven't been run in CI in years, and had gradually become broken
2024-05-21 15:14:38 -04:00
Kyle McCormick
a6f04d8ca3 build: copy from node_modules using NPM postinstall hook, not Paver (RE-MERGE)
Re-merge of 4b64d8342d

The commit after this one contains the fix for the issue that led to the
revert.
2023-07-20 13:46:21 -04:00
Kyle McCormick
95e0cdef28 Revert "build: copy from node_modules using NPM postinstall hook, not Paver (#32717)"
This reverts commit 4b64d8342d.
2023-07-17 14:06:05 -04:00
Kyle McCormick
4b64d8342d build: copy from node_modules using NPM postinstall hook, not Paver (#32717)
During the review of ADR 17 [1], Régis pointed out [2] that the shell script
which replaces Paver's `process_npm_assets`  could be automatically invoked as
an NPM post-install hook, ensuring that the step is seamlessly executed whenever
`npm install` is run. I had avoided using that suggestion, as I worried that it
would make it harder to move node_modules out of the edx-platform directory in
Tutor's openedx image.

Since then, two things have changed. Firstly, Tutor v16's new persistent mounts
interface [3] has lessened the importance of moving node_modules. Secondly, I
have realized that using a post-install hook would not preclude us from
modifying the underlying script (scripts/copy-node-modules.sh) to look in an
alternative location for node_modules, should that end up being something we
want to do.

This commit modifies the ADR based on those findings, stubs out Paver's
`process_npm_assets`, and adds the suggested post-install hook and replacement
Bash script.

References:
1. https://github.com/openedx/edx-platform/blob/master/docs/decisions/0017-reimplement-asset-processing.rst
2. https://github.com/openedx/edx-platform/pull/31790#discussion_r1122802492
3. https://github.com/overhangio/tutor/blob/master/CHANGELOG.md#v1600-2023-06-14

Part of: https://github.com/openedx/edx-platform/issues/31604
2023-07-17 13:26:58 -04:00
Zubair Shakoor
141d6d4ce6 refactor: remove all paver code related to python unit tests (#31180) 2023-01-18 17:41:56 +05:00
Tim McCormack
b8a34f0c57 build: Set Django version for tests more safely; drop support for non-GHA (#31387)
We have a need to lock the version of Django for production and tests, but
also to test on newer versions of Django so that we can get the repo ready
for long-term-support releases.

We've been doing that by extracting the `django==x.y.z` from the
pip-compiled files and moving it to a django.txt that is then co-installed
but can be overridden during tests. The problem is that this can result
in broken packages.

The approach here is to have `make test-requirements` continue to
ensure a consistent set of packages, and then install a different
Django on top of that in the CI script -- and call `pip check` to make
sure that combination isn't broken.

Adding Django 4.0 to the unit-tests.yml matrix will now correctly
result in this error and a failing job:
`django-splash 1.2.1 has requirement Django<4.0, but you have django 4.0.8.`

The other half of this is to change other CI runners to remove their
ability to control the Django version, since it's complicated to make
this work, and we probably only need it in unit-tests.yml. Convert them
to just use `make test-requirements`.

Also:

- Simplify handling of `pip --src` by setting `PIP_SRC` (rather than our
  own `PIP_SRC_DIR`, which pip ignores because `--src-dir` isn't an option
  that it knows). This is needed to allow `make test-requirements` to do
  the pip calls. An alternative would be to set a pip-options env var for
  the make target to use, but `PIP_SRC` already exists.
- Remove outdated modifications to common_constraints
- Add comment explaining why pylint tests need dev-requirements
2022-12-12 21:45:15 +00:00
UsamaSadiq
897cb3617f refactor!: delete common/lib and related usages 2022-09-22 14:16:34 +05:00
Aarif
aa31f3b255 refactor: remove a11y tests setup (#29813) 2022-02-15 18:56:34 +05:00
Aarif
e71cac0a01 fix: remove bokchoy db cache uploader paver tasks (#28841) 2021-12-22 13:42:47 +05:00
Braden MacDonald
da09bcadc5 refactor: run modulestore tests in common/lib/... using Django
Does 3 things:
(1) Use django for modulestore tests
(2) Use normal LMS settings for modulestore tests instead of openedx/tests/settings.py
(3) Simplify some TestCase subclasses by converting them to use ModuleStoreTestCase


Details and rationale:

(1) Currently parts of the modulestore test suite are designed to run "without django", although there is still a lot of django functionality imported at times, and many of the tests do in fact use django. But for the upcoming PR #27565 (moving split's course indexes from MongoDB to MySQL), we will need to always have Django enabled. So this commit paves the way for that change.

(2) The previous tests that did use Django used a special settings file, openedx/tests/settings.py which made some debugging confusing because those tests had quite different django settings than other tests. This change deletes that file and runs the tests using the LMS test settings.

(3) The test suite also contains many different ways of initializing and testing a modulestore, with significant differences in their configuration, and also a lot of repetition. I find this makes understanding, debugging and writing tests more difficult. So this commit also reduces the number of different "test case using modulestore" base classes:

* Simplifies MixedWithOptionsTestCase and MixedSplitTestCase by making them simple subclasses of ModuleStoreTestCase.
* Removes PureModulestoreTestCase.
2021-08-05 12:20:19 -07:00
Usama Sadiq
1795008686 fix: Removed pylint constraint (#28222)
Disabled pylint warnings in pylint_tweaks
2021-07-23 18:35:57 +05:00
Usama Sadiq
4f4be6538a BOM-2477: pylint warnings lint-amnesty (#27585) 2021-05-11 17:22:40 +05:00
M. Zulqarnain
2c44315ce0 refactor: pyupgrade on pavelib & scripts (#26769) 2021-03-12 14:14:53 +05:00
Jawayria
d1c21db40f Resolved error 2021-02-02 21:20:41 +05:00
Jawayria
69e0dc7d68 Applied pylint-amnesty to {docs, import_shims, pavelib} 2021-02-02 21:17:16 +05:00
Tim McCormack
747b03febf Use node for running node.js tests, not nodejs (#25651)
This should solve the problem of getting `nodejs: not found` when
running `paver test_js_run -s lms` in lms-shell, which cropped up in
the past few days.

I don't know why this stopped working recently, but I don't have `nodejs`
on my recently re-created devstack, and some people with an older devstack
have both. Maybe a recent node.js release got rid of an alias.
2020-11-19 20:09:51 +00:00
M. Zulqarnain
bc568309ec BOM-1701: Ran pyupgrade on pavelib (#24230) 2020-06-17 17:09:38 +05:00
Aarif
98af9ce418 remove useless-supression warnings 2020-05-01 19:42:15 +05:00
Robert Raposa
5de9eed420 ARCHBOM-1093: Fix unit test enable-migrations (#23789)
* fix old migrations
* fix a test
* fix enable-migrations cmd argument
* enhance verbose logging to log migrations
* update testing doc with help
2020-04-23 14:04:29 -04:00
Aarif
6ee2089077 fixed warnings for wrong-import-order 2020-04-08 23:43:06 +05:00
Calen Pennington
646cf1ed12 Replace old coverage context files when uploading 2020-02-12 11:29:32 -05:00
Feanil Patel
6e3fe00fff Fix all E303 pep8 errors. 2019-12-30 12:25:38 -05:00
Feanil Patel
9cf2f9f298 Run 2to3 -f future . -w
This will remove imports from __future__ that are no longer needed.

https://docs.python.org/3.5/library/2to3.html#2to3fixer-future
2019-12-30 10:35:30 -05:00
Jeremy Bowman
63574e12b8 Remove pytest version constraint (#22626)
Fix the issue that was preventing us from upgrading pytest.  pytest does some manipulation of test packages that prevents `pkg_resources` from loading resources from them, but used to contain a workaround for the problem.  That workaround was [removed](https://github.com/pytest-dev/pytest/issues/5392) in 4.6.0 as a performance enhancement when pytest switched from `pkg_resources` to `importlib-metadata` for its own entrypoint handling.  This tripped up one of our test modules which defined classes that loaded templates from inside a test package.  Moving these resources to the parent package fixes the problem.

More and more, `pkg_resources` is being abandoned in favor of `importlib-metadata` and `importlib_resources` as they have a simpler design with much better performance.  However, `importlib_resources` doesn't support loading files from any directory which isn't itself a Python package (and doesn't allow direct use of paths including directories within the package).  Jinja2 chose a [different approach](https://github.com/pallets/jinja/pull/1082) that we may want to emulate in our resource handling.

Also fixed usage of a removed `pytest.raises()` parameter and a bug in our configuration of the `common/lib` tests that became a problem after the upgrade.
2019-12-30 09:10:57 -05:00
Jeremy Bowman
052f853ec1 Fix Jenkins virtualenv cleanup (#22356) 2019-11-21 11:05:05 -05:00
Jeremy Bowman
a6b8cbe627 Remove obsolete field type BOM-996 (#22203) 2019-10-31 15:23:58 -04:00
Jeremy Bowman
6f3e1e7e3d Fix remaining pavelib test failures BOM-598 (#21819) 2019-09-27 10:52:22 -04:00
Feanil Patel
61544f0e2c Fix paver for python 3. 2019-09-12 10:17:25 -04:00
Feanil Patel
f2445cfe36 Turn off hash randomization on the xdist workers as well. 2019-09-06 17:04:17 -04:00
Calen Pennington
b7f3223ea4 Set a specific WTW context to name coverage files to upload/download from s3 2019-08-16 12:57:19 -04:00
Calen Pennington
98f740f71a Merge pull request #21270 from cpennington/upload-correct-coverage-file
Upload the coverage report from reports/${TEST_SUITE}.coverage
2019-08-05 10:47:48 -04:00
Calen Pennington
ea8c8e8348 Test the django admin view, and that it can be loaded 2019-08-02 13:27:16 -04:00
Calen Pennington
8f457d2045 Upload the coverage report from reports/${TEST_SUITE}.coverage 2019-07-31 14:55:30 -04:00
Calen Pennington
d0b160888b Archive all coverage reports, named by test context 2019-07-30 15:18:25 -04:00
Calen Pennington
5025567711 Add paver commands and environment variables to capture and run coverage-driven test selection 2019-07-24 12:06:07 -04:00
Calen Pennington
1823d9f098 Add django app for running Coverage who-tests-what in bokchoy 2019-07-24 10:13:46 -04:00
Ned Batchelder
12ca7b8ab7 Name coverage data files so they won't overwrite each other. 2019-07-20 12:21:05 -04:00
Ayub
08e793147d Merge pull request #21040 from edx/INCR-388
INCR-388 python3 compatibility
2019-07-17 18:56:28 +05:00
Ayub khan
07f907ec56 INCR-388 python3 compatibility 2019-07-15 13:15:11 +05:00
arbisoft
f6a8894803 Fixing python-modernize issues. 2019-07-10 17:32:32 +05:00
Michael Youngstrom
139cdb8ba2 Switch testing from ecs to ec2 (#20846) 2019-06-27 22:04:02 -04:00
Jeremy Bowman
c1c4cf5bf7 Remove more unused pa11ycrawler code (#20690) 2019-05-24 15:22:08 -04:00
Jeremy Bowman
a9cd9de89f TE-2647 Stop running pa11ycrawler (#20682) 2019-05-24 11:02:49 -04:00
bmedx
e11e062292 Mock CourseEnrollment history for test performance 2019-05-06 18:03:41 -04:00
Michael Youngstrom
bfe10720c6 Remove lettuce infrastructure 2019-04-18 09:58:21 -04:00
Calen Pennington
78c8950ea3 Clean up a few remaining unicode format string errors 2019-02-20 15:28:14 -05:00
Matthew Piatetsky
6cf44a0467 fix unicode strings in pavelib/ 2019-02-05 09:14:20 -05:00
cclauss
8fca11b85c Use print() function in both Python 2 and Python 3 2019-01-13 17:16:37 +01:00
Jeremy Bowman
d0d6d57343 TE-2731 Upgrade to pytest-cov 2.6.1 2019-01-08 11:05:45 -05:00
Michael Youngstrom
b4fcbbd363 Switch Jenkinsfile over to xdist 2018-08-10 11:19:24 -04:00