Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
E
edx-platform
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
edx
edx-platform
Commits
a40ab12a
Commit
a40ab12a
authored
Dec 14, 2017
by
Jeremy Bowman
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
PLAT-1858 Better capture of deprecation warnings
parent
a4fa04ec
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
104 additions
and
39 deletions
+104
-39
cms/envs/test.py
+0
-10
cms/pytest.ini
+5
-0
common/djangoapps/student/views.py
+3
-1
common/lib/pytest.ini
+5
-0
common/test/pytest.ini
+5
-0
lms/envs/test.py
+0
-10
openedx/tests/settings.py
+3
-0
openedx/tests/util/__init__.py
+14
-4
scripts/generic-ci-tests.sh
+4
-14
scripts/unit-tests.sh
+58
-0
setup.cfg
+5
-0
tox.ini
+2
-0
No files found.
cms/envs/test.py
View file @
a40ab12a
...
...
@@ -21,7 +21,6 @@ sessions. Assumes structure:
from
.common
import
*
import
os
from
path
import
Path
as
path
from
warnings
import
filterwarnings
,
simplefilter
from
uuid
import
uuid4
from
util.db
import
NoOpMigrationModules
from
openedx.core.lib.derived
import
derive_settings
...
...
@@ -175,15 +174,6 @@ CACHES = {
},
}
# hide ratelimit warnings while running tests
filterwarnings
(
'ignore'
,
message
=
'No request passed to the backend, unable to rate-limit'
)
# Ignore deprecation warnings (so we don't clutter Jenkins builds/production)
# https://docs.python.org/2/library/warnings.html#the-warnings-filter
# Change to "default" to see the first instance of each hit
# or "error" to convert all into errors
simplefilter
(
'ignore'
)
################################# CELERY ######################################
CELERY_ALWAYS_EAGER
=
True
...
...
cms/pytest.ini
View file @
a40ab12a
[pytest]
DJANGO_SETTINGS_MODULE
=
cms.envs.test
addopts
=
--nomigrations --reuse-db --durations=20 -p no:randomly
# Enable default handling for all warnings, including those that are ignored by default;
# but hide rate-limit warnings, because we deliberately don't throttle test user logins
filterwarnings
=
default
ignore:No
request
passed
to
the
backend,
unable
to
rate-limit.*:UserWarning
norecursedirs
=
envs
python_classes
=
python_files
=
tests.py test_*.py *_tests.py
common/djangoapps/student/views.py
View file @
a40ab12a
...
...
@@ -2437,7 +2437,9 @@ def auto_auth(request):
# Log in as the user
if
login_when_done
:
user
=
authenticate
(
username
=
username
,
password
=
password
)
backend
=
load_backend
(
NEW_USER_AUTH_BACKEND
)
user
=
backend
.
authenticate
(
request
=
request
,
username
=
username
,
password
=
password
)
user
.
backend
=
NEW_USER_AUTH_BACKEND
login
(
request
,
user
)
create_comments_service_user
(
user
)
...
...
common/lib/pytest.ini
View file @
a40ab12a
[pytest]
DJANGO_SETTINGS_MODULE
=
openedx.tests.settings
addopts
=
--nomigrations --reuse-db --durations=20
# Enable default handling for all warnings, including those that are ignored by default;
# but hide rate-limit warnings, because we deliberately don't throttle test user logins
filterwarnings
=
default
ignore:No
request
passed
to
the
backend,
unable
to
rate-limit.*:UserWarning
norecursedirs
=
.cache
python_classes
=
python_files
=
tests.py test_*.py tests_*.py *_tests.py __init__.py
common/test/pytest.ini
View file @
a40ab12a
[pytest]
addopts
=
-p no:randomly --durations=20
# Enable default handling for all warnings, including those that are ignored by default;
# but hide rate-limit warnings, because we deliberately don't throttle test user logins
filterwarnings
=
default
ignore:No
request
passed
to
the
backend,
unable
to
rate-limit.*:UserWarning
norecursedirs
=
.cache
lms/envs/test.py
View file @
a40ab12a
...
...
@@ -22,7 +22,6 @@ from .common import *
import
os
from
path
import
Path
as
path
from
uuid
import
uuid4
from
warnings
import
filterwarnings
,
simplefilter
from
util.db
import
NoOpMigrationModules
from
openedx.core.lib.derived
import
derive_settings
...
...
@@ -231,15 +230,6 @@ CACHES = {
# Dummy secret key for dev
SECRET_KEY
=
'85920908f28904ed733fe576320db18cabd7b6cd'
# hide ratelimit warnings while running tests
filterwarnings
(
'ignore'
,
message
=
'No request passed to the backend, unable to rate-limit'
)
# Ignore deprecation warnings (so we don't clutter Jenkins builds/production)
# https://docs.python.org/2/library/warnings.html#the-warnings-filter
# Change to "default" to see the first instance of each hit
# or "error" to convert all into errors
simplefilter
(
'ignore'
)
############################# SECURITY SETTINGS ################################
# Default to advanced security in common.py, so tests can reset here to use
# a simpler security model
...
...
openedx/tests/settings.py
View file @
a40ab12a
...
...
@@ -58,10 +58,12 @@ INSTALLED_APPS = (
'djcelery'
,
'openedx.core.djangoapps.video_config'
,
'openedx.core.djangoapps.video_pipeline'
,
'openedx.core.djangoapps.bookmarks.apps.BookmarksConfig'
,
'edxval'
,
'courseware'
,
'student'
,
'certificates.apps.CertificatesConfig'
,
'openedx.core.djangoapps.user_api'
,
'course_modes.apps.CourseModesConfig'
,
'lms.djangoapps.verify_student.apps.VerifyStudentConfig'
,
'openedx.core.djangoapps.dark_lang'
,
...
...
@@ -71,6 +73,7 @@ INSTALLED_APPS = (
'openedx.core.djangoapps.self_paced'
,
'milestones'
,
'celery_utils'
,
'lms.djangoapps.completion.apps.CompletionAppConfig'
,
)
LMS_ROOT_URL
=
'http://localhost:8000'
...
...
openedx/tests/util/__init__.py
View file @
a40ab12a
...
...
@@ -11,10 +11,20 @@ import django
def
expected_redirect_url
(
relative_url
,
hostname
=
'testserver'
):
"""
Get the expected redirect URL for the current Django version and the
given relative URL. Django 1.8 and earlier redirect to absolute URLs,
later versions redirect to relative ones.
given relative URL:
* Django 1.8 and earlier redirect URLs beginning with a slash to absolute
URLs, later versions redirect to relative ones.
* Django 1.8 and earlier leave URLs without a leading slash alone, later
versions prepend the missing slash.
"""
if
django
.
VERSION
<
(
1
,
9
):
return
'http://{}{}'
.
format
(
hostname
,
relative_url
)
if
relative_url
.
startswith
(
'/'
):
return
'http://{}{}'
.
format
(
hostname
,
relative_url
)
else
:
return
relative_url
else
:
return
relative_url
if
relative_url
.
startswith
(
'/'
):
return
relative_url
else
:
return
'/{}'
.
format
(
relative_url
)
scripts/generic-ci-tests.sh
View file @
a40ab12a
...
...
@@ -131,14 +131,8 @@ case "$TEST_SUITE" in
"lms-unit"
)
case
"
$SHARD
"
in
"all"
)
$TOX
paver test_system
-s
lms
--disable_capture
$PAVER_ARGS
$PARALLEL
2> lms-tests.log
;;
[
1-3]
)
$TOX
paver test_system
-s
lms
--disable_capture
--eval-attr
=
"shard==
$SHARD
"
$PAVER_ARGS
$PARALLEL
2> lms-tests.
$SHARD
.log
;;
4|
"noshard"
)
$TOX
paver test_system
-s
lms
--disable_capture
--eval-attr
=
'not shard'
$PAVER_ARGS
$PARALLEL
2> lms-tests.4.log
"all"
|
[
1-4]|
"noshard"
)
$TOX
scripts/unit-tests.sh
;;
*
)
# If no shard is specified, rather than running all tests, create an empty xunit file. This is a
...
...
@@ -151,12 +145,8 @@ case "$TEST_SUITE" in
esac
;;
"cms-unit"
)
$TOX
paver test_system
-s
cms
--disable_capture
$PAVER_ARGS
2> cms-tests.log
;;
"commonlib-unit"
)
$TOX
paver test_lib
--disable_capture
$PAVER_ARGS
2> common-tests.log
"cms-unit"
|
"commonlib-unit"
)
$TOX
scripts/unit-tests.sh
;;
"js-unit"
)
...
...
scripts/unit-tests.sh
0 → 100755
View file @
a40ab12a
#!/usr/bin/env bash
set
-e
###############################################################################
#
# unit-tests.sh
#
# Execute Python unit tests for edx-platform.
#
# This script is typically called from generic-ci-tests.sh, which defines
# these environment variables:
#
# `TEST_SUITE` defines which kind of test to run.
# Possible values are:
#
# - "lms-unit": Run the LMS Python unit tests
# - "cms-unit": Run the CMS Python unit tests
# - "commonlib-unit": Run Python unit tests from the common/lib directory
#
# `SHARD` is a number indicating which subset of the tests to build.
#
# For "lms-unit", the tests are put into shard groups
# using the 'attr' decorator (e.g. "@attr(shard=1)"). Anything with
# the 'shard=n' attribute will run in the nth shard. If there isn't a
# shard explicitly assigned, the test will run in the last shard.
#
# This script is broken out so it can be run by tox and redirect stderr to
# the specified file before tox gets a chance to redirect it to stdout.
#
###############################################################################
PAVER_ARGS
=
"-v"
PARALLEL
=
"--processes=-1"
case
"
${
TEST_SUITE
}
"
in
"lms-unit"
)
case
"
$SHARD
"
in
"all"
)
paver test_system
-s
lms
--disable_capture
${
PAVER_ARGS
}
${
PARALLEL
}
2> lms-tests.log
;;
[
1-3]
)
paver test_system
-s
lms
--disable_capture
--eval-attr
=
"shard==
$SHARD
"
${
PAVER_ARGS
}
${
PARALLEL
}
2> lms-tests.
${
SHARD
}
.log
;;
4|
"noshard"
)
paver test_system
-s
lms
--disable_capture
--eval-attr
=
'not shard'
${
PAVER_ARGS
}
${
PARALLEL
}
2> lms-tests.4.log
;;
esac
;;
"cms-unit"
)
paver test_system
-s
cms
--disable_capture
${
PAVER_ARGS
}
2> cms-tests.log
;;
"commonlib-unit"
)
paver test_lib
--disable_capture
${
PAVER_ARGS
}
2> common-tests.log
;;
esac
setup.cfg
View file @
a40ab12a
...
...
@@ -17,6 +17,11 @@ process-timeout=300
[tool:pytest]
DJANGO_SETTINGS_MODULE = lms.envs.test
addopts = --nomigrations --reuse-db --durations=20
# Enable default handling for all warnings, including those that are ignored by default;
# but hide rate-limit warnings, because we deliberately don't throttle test user logins
filterwarnings =
default
ignore:No request passed to the backend, unable to rate-limit.*:UserWarning
norecursedirs = .* *.egg build conf dist node_modules test_root cms/envs lms/envs
python_classes =
python_files = tests.py test_*.py tests_*.py *_tests.py __init__.py
...
...
tox.ini
View file @
a40ab12a
...
...
@@ -42,6 +42,8 @@ passenv =
SELENIUM_BROWSER
SELENIUM_HOST
SELENIUM_PORT
SHARD
TEST_SUITE
deps
=
django18:
Django>=1.8,<1.9
django19:
Django>=1.9,<1.10
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment