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
a61707b8
Commit
a61707b8
authored
Apr 28, 2016
by
Ben Patterson
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #12272 from edx/benp/shard4-lms
Create a 4th shard for lms unit tests
parents
265f2490
1db84e79
Show whitespace changes
Inline
Side-by-side
Showing
48 changed files
with
116 additions
and
7 deletions
+116
-7
common/djangoapps/course_modes/tests/test_views.py
+5
-0
common/djangoapps/embargo/tests/test_api.py
+2
-0
common/djangoapps/embargo/tests/test_middleware.py
+2
-0
common/djangoapps/enrollment/tests/test_views.py
+2
-0
common/djangoapps/external_auth/tests/test_shib.py
+2
-0
common/djangoapps/student/tests/test_enrollment.py
+2
-0
common/djangoapps/student/tests/test_recent_enrollments.py
+2
-0
common/djangoapps/student/tests/test_verification_status.py
+2
-0
common/djangoapps/student/tests/tests.py
+2
-0
common/djangoapps/track/views/tests/test_segmentio.py
+2
-0
lms/djangoapps/badges/api/tests.py
+2
-0
lms/djangoapps/bulk_email/tests/test_tasks.py
+1
-1
lms/djangoapps/ccx/tests/test_field_override_performance.py
+1
-1
lms/djangoapps/commerce/api/v1/tests/test_views.py
+1
-0
lms/djangoapps/course_api/blocks/transformers/tests/test_proctored_exam.py
+2
-0
lms/djangoapps/course_api/tests/test_serializers.py
+2
-0
lms/djangoapps/course_api/tests/test_views.py
+2
-0
lms/djangoapps/course_blocks/transformers/tests/test_split_test.py
+2
-0
lms/djangoapps/course_blocks/transformers/tests/test_start_date.py
+2
-0
lms/djangoapps/course_blocks/transformers/tests/test_user_partitions.py
+3
-0
lms/djangoapps/course_blocks/transformers/tests/test_visibility.py
+2
-0
lms/djangoapps/courseware/tests/test_access.py
+1
-0
lms/djangoapps/courseware/tests/test_entrance_exam.py
+1
-1
lms/djangoapps/courseware/tests/test_group_access.py
+1
-1
lms/djangoapps/courseware/tests/test_submitting_problems.py
+1
-1
lms/djangoapps/courseware/tests/test_views.py
+1
-1
lms/djangoapps/dashboard/management/commands/tests/test_git_add_course.py
+3
-0
lms/djangoapps/discussion_api/tests/test_permissions.py
+2
-0
lms/djangoapps/discussion_api/tests/test_serializers.py
+2
-0
lms/djangoapps/discussion_api/tests/test_views.py
+4
-0
lms/djangoapps/django_comment_client/tests/test_utils.py
+1
-0
lms/djangoapps/edxnotes/tests.py
+5
-0
lms/djangoapps/gating/tests/test_api.py
+2
-0
lms/djangoapps/instructor/tests/views/test_instructor_dashboard.py
+2
-0
lms/djangoapps/instructor_analytics/tests/test_basic.py
+2
-0
lms/djangoapps/instructor_task/tests/test_api.py
+3
-0
lms/djangoapps/instructor_task/tests/test_integration.py
+2
-0
lms/djangoapps/instructor_task/tests/test_tasks.py
+4
-0
lms/djangoapps/instructor_task/tests/test_tasks_helper.py
+3
-0
lms/djangoapps/lti_provider/tests/test_views.py
+2
-0
lms/djangoapps/mobile_api/course_info/tests.py
+3
-0
lms/djangoapps/shoppingcart/tests/test_models.py
+8
-0
lms/djangoapps/shoppingcart/tests/test_views.py
+6
-0
lms/djangoapps/student_account/test/test_views.py
+2
-0
lms/djangoapps/support/tests/test_views.py
+2
-0
lms/lib/xblock/test/test_mixin.py
+3
-0
openedx/core/djangoapps/content/course_overviews/tests.py
+3
-0
scripts/generic-ci-tests.sh
+4
-1
No files found.
common/djangoapps/course_modes/tests/test_views.py
View file @
a61707b8
...
@@ -8,6 +8,7 @@ import decimal
...
@@ -8,6 +8,7 @@ import decimal
import
ddt
import
ddt
import
freezegun
import
freezegun
from
mock
import
patch
from
mock
import
patch
from
nose.plugins.attrib
import
attr
from
django.conf
import
settings
from
django.conf
import
settings
from
django.core.urlresolvers
import
reverse
from
django.core.urlresolvers
import
reverse
...
@@ -25,9 +26,13 @@ from course_modes.models import CourseMode, Mode
...
@@ -25,9 +26,13 @@ from course_modes.models import CourseMode, Mode
from
openedx.core.djangoapps.theming.test_util
import
with_is_edx_domain
from
openedx.core.djangoapps.theming.test_util
import
with_is_edx_domain
@attr
(
'shard_3'
)
@ddt.ddt
@ddt.ddt
@unittest.skipUnless
(
settings
.
ROOT_URLCONF
==
'lms.urls'
,
'Test only valid in lms'
)
@unittest.skipUnless
(
settings
.
ROOT_URLCONF
==
'lms.urls'
,
'Test only valid in lms'
)
class
CourseModeViewTest
(
UrlResetMixin
,
ModuleStoreTestCase
):
class
CourseModeViewTest
(
UrlResetMixin
,
ModuleStoreTestCase
):
"""
Course Mode View tests
"""
@patch.dict
(
settings
.
FEATURES
,
{
'MODE_CREATION_FOR_TESTING'
:
True
})
@patch.dict
(
settings
.
FEATURES
,
{
'MODE_CREATION_FOR_TESTING'
:
True
})
def
setUp
(
self
):
def
setUp
(
self
):
super
(
CourseModeViewTest
,
self
)
.
setUp
(
'course_modes.urls'
)
super
(
CourseModeViewTest
,
self
)
.
setUp
(
'course_modes.urls'
)
...
...
common/djangoapps/embargo/tests/test_api.py
View file @
a61707b8
...
@@ -4,6 +4,7 @@ Tests for EmbargoMiddleware
...
@@ -4,6 +4,7 @@ Tests for EmbargoMiddleware
from
contextlib
import
contextmanager
from
contextlib
import
contextmanager
import
mock
import
mock
from
nose.plugins.attrib
import
attr
import
unittest
import
unittest
import
pygeoip
import
pygeoip
import
ddt
import
ddt
...
@@ -37,6 +38,7 @@ from mock import patch
...
@@ -37,6 +38,7 @@ from mock import patch
MODULESTORE_CONFIG
=
mixed_store_config
(
settings
.
COMMON_TEST_DATA_ROOT
,
{})
MODULESTORE_CONFIG
=
mixed_store_config
(
settings
.
COMMON_TEST_DATA_ROOT
,
{})
@attr
(
'shard_3'
)
@ddt.ddt
@ddt.ddt
@override_settings
(
MODULESTORE
=
MODULESTORE_CONFIG
)
@override_settings
(
MODULESTORE
=
MODULESTORE_CONFIG
)
@unittest.skipUnless
(
settings
.
ROOT_URLCONF
==
'lms.urls'
,
'Test only valid in lms'
)
@unittest.skipUnless
(
settings
.
ROOT_URLCONF
==
'lms.urls'
,
'Test only valid in lms'
)
...
...
common/djangoapps/embargo/tests/test_middleware.py
View file @
a61707b8
...
@@ -4,6 +4,7 @@ Tests for EmbargoMiddleware with CountryAccessRules
...
@@ -4,6 +4,7 @@ Tests for EmbargoMiddleware with CountryAccessRules
import
unittest
import
unittest
from
mock
import
patch
from
mock
import
patch
from
nose.plugins.attrib
import
attr
import
ddt
import
ddt
from
django.core.urlresolvers
import
reverse
from
django.core.urlresolvers
import
reverse
...
@@ -20,6 +21,7 @@ from embargo.models import RestrictedCourse, IPFilter
...
@@ -20,6 +21,7 @@ from embargo.models import RestrictedCourse, IPFilter
from
embargo.test_utils
import
restrict_course
from
embargo.test_utils
import
restrict_course
@attr
(
'shard_3'
)
@ddt.ddt
@ddt.ddt
@unittest.skipUnless
(
settings
.
ROOT_URLCONF
==
'lms.urls'
,
'Test only valid in lms'
)
@unittest.skipUnless
(
settings
.
ROOT_URLCONF
==
'lms.urls'
,
'Test only valid in lms'
)
class
EmbargoMiddlewareAccessTests
(
UrlResetMixin
,
ModuleStoreTestCase
):
class
EmbargoMiddlewareAccessTests
(
UrlResetMixin
,
ModuleStoreTestCase
):
...
...
common/djangoapps/enrollment/tests/test_views.py
View file @
a61707b8
...
@@ -9,6 +9,7 @@ import datetime
...
@@ -9,6 +9,7 @@ import datetime
import
ddt
import
ddt
from
django.core.cache
import
cache
from
django.core.cache
import
cache
from
mock
import
patch
from
mock
import
patch
from
nose.plugins.attrib
import
attr
from
django.test
import
Client
from
django.test
import
Client
from
django.core.handlers.wsgi
import
WSGIRequest
from
django.core.handlers.wsgi
import
WSGIRequest
from
django.core.urlresolvers
import
reverse
from
django.core.urlresolvers
import
reverse
...
@@ -125,6 +126,7 @@ class EnrollmentTestMixin(object):
...
@@ -125,6 +126,7 @@ class EnrollmentTestMixin(object):
self
.
assertEqual
(
actual_mode
,
expected_mode
)
self
.
assertEqual
(
actual_mode
,
expected_mode
)
@attr
(
'shard_3'
)
@override_settings
(
EDX_API_KEY
=
"i am a key"
)
@override_settings
(
EDX_API_KEY
=
"i am a key"
)
@ddt.ddt
@ddt.ddt
@unittest.skipUnless
(
settings
.
ROOT_URLCONF
==
'lms.urls'
,
'Test only valid in lms'
)
@unittest.skipUnless
(
settings
.
ROOT_URLCONF
==
'lms.urls'
,
'Test only valid in lms'
)
...
...
common/djangoapps/external_auth/tests/test_shib.py
View file @
a61707b8
...
@@ -20,6 +20,7 @@ from external_auth.views import (
...
@@ -20,6 +20,7 @@ from external_auth.views import (
shib_login
,
course_specific_login
,
course_specific_register
,
_flatten_to_ascii
shib_login
,
course_specific_login
,
course_specific_register
,
_flatten_to_ascii
)
)
from
mock
import
patch
from
mock
import
patch
from
nose.plugins.attrib
import
attr
from
urllib
import
urlencode
from
urllib
import
urlencode
from
student.views
import
create_account
,
change_enrollment
from
student.views
import
create_account
,
change_enrollment
...
@@ -72,6 +73,7 @@ def gen_all_identities():
...
@@ -72,6 +73,7 @@ def gen_all_identities():
yield
_build_identity_dict
(
mail
,
display_name
,
given_name
,
surname
)
yield
_build_identity_dict
(
mail
,
display_name
,
given_name
,
surname
)
@attr
(
'shard_3'
)
@ddt
@ddt
@override_settings
(
SESSION_ENGINE
=
'django.contrib.sessions.backends.cache'
)
@override_settings
(
SESSION_ENGINE
=
'django.contrib.sessions.backends.cache'
)
class
ShibSPTest
(
SharedModuleStoreTestCase
):
class
ShibSPTest
(
SharedModuleStoreTestCase
):
...
...
common/djangoapps/student/tests/test_enrollment.py
View file @
a61707b8
...
@@ -4,6 +4,7 @@ Tests for student enrollment.
...
@@ -4,6 +4,7 @@ Tests for student enrollment.
import
ddt
import
ddt
import
unittest
import
unittest
from
mock
import
patch
from
mock
import
patch
from
nose.plugins.attrib
import
attr
from
django.conf
import
settings
from
django.conf
import
settings
from
django.core.urlresolvers
import
reverse
from
django.core.urlresolvers
import
reverse
...
@@ -20,6 +21,7 @@ from student.roles import (
...
@@ -20,6 +21,7 @@ from student.roles import (
)
)
@attr
(
'shard_3'
)
@ddt.ddt
@ddt.ddt
@unittest.skipUnless
(
settings
.
ROOT_URLCONF
==
'lms.urls'
,
'Test only valid in lms'
)
@unittest.skipUnless
(
settings
.
ROOT_URLCONF
==
'lms.urls'
,
'Test only valid in lms'
)
class
EnrollmentTest
(
UrlResetMixin
,
SharedModuleStoreTestCase
):
class
EnrollmentTest
(
UrlResetMixin
,
SharedModuleStoreTestCase
):
...
...
common/djangoapps/student/tests/test_recent_enrollments.py
View file @
a61707b8
...
@@ -6,6 +6,7 @@ from django.conf import settings
...
@@ -6,6 +6,7 @@ from django.conf import settings
from
django.core.urlresolvers
import
reverse
from
django.core.urlresolvers
import
reverse
from
opaque_keys.edx
import
locator
from
opaque_keys.edx
import
locator
from
pytz
import
UTC
from
pytz
import
UTC
from
nose.plugins.attrib
import
attr
import
unittest
import
unittest
import
ddt
import
ddt
from
shoppingcart.models
import
DonationConfiguration
from
shoppingcart.models
import
DonationConfiguration
...
@@ -19,6 +20,7 @@ from student.views import get_course_enrollments, _get_recently_enrolled_courses
...
@@ -19,6 +20,7 @@ from student.views import get_course_enrollments, _get_recently_enrolled_courses
from
common.test.utils
import
XssTestMixin
from
common.test.utils
import
XssTestMixin
@attr
(
'shard_3'
)
@unittest.skipUnless
(
settings
.
ROOT_URLCONF
==
'lms.urls'
,
'Test only valid in lms'
)
@unittest.skipUnless
(
settings
.
ROOT_URLCONF
==
'lms.urls'
,
'Test only valid in lms'
)
@ddt.ddt
@ddt.ddt
class
TestRecentEnrollments
(
ModuleStoreTestCase
,
XssTestMixin
):
class
TestRecentEnrollments
(
ModuleStoreTestCase
,
XssTestMixin
):
...
...
common/djangoapps/student/tests/test_verification_status.py
View file @
a61707b8
...
@@ -4,6 +4,7 @@ from datetime import datetime, timedelta
...
@@ -4,6 +4,7 @@ from datetime import datetime, timedelta
import
unittest
import
unittest
import
ddt
import
ddt
from
mock
import
patch
from
mock
import
patch
from
nose.plugins.attrib
import
attr
from
pytz
import
UTC
from
pytz
import
UTC
from
django.core.urlresolvers
import
reverse
from
django.core.urlresolvers
import
reverse
from
django.conf
import
settings
from
django.conf
import
settings
...
@@ -24,6 +25,7 @@ from lms.djangoapps.verify_student.models import VerificationDeadline, SoftwareS
...
@@ -24,6 +25,7 @@ from lms.djangoapps.verify_student.models import VerificationDeadline, SoftwareS
from
util.testing
import
UrlResetMixin
from
util.testing
import
UrlResetMixin
@attr
(
'shard_3'
)
@patch.dict
(
settings
.
FEATURES
,
{
'AUTOMATIC_VERIFY_STUDENT_IDENTITY_FOR_TESTING'
:
True
})
@patch.dict
(
settings
.
FEATURES
,
{
'AUTOMATIC_VERIFY_STUDENT_IDENTITY_FOR_TESTING'
:
True
})
@unittest.skipUnless
(
settings
.
ROOT_URLCONF
==
'lms.urls'
,
'Test only valid in lms'
)
@unittest.skipUnless
(
settings
.
ROOT_URLCONF
==
'lms.urls'
,
'Test only valid in lms'
)
@ddt.ddt
@ddt.ddt
...
...
common/djangoapps/student/tests/tests.py
View file @
a61707b8
...
@@ -11,6 +11,7 @@ from urlparse import urljoin
...
@@ -11,6 +11,7 @@ from urlparse import urljoin
import
pytz
import
pytz
from
markupsafe
import
escape
from
markupsafe
import
escape
from
mock
import
Mock
,
patch
from
mock
import
Mock
,
patch
from
nose.plugins.attrib
import
attr
from
opaque_keys.edx.locations
import
SlashSeparatedCourseKey
from
opaque_keys.edx.locations
import
SlashSeparatedCourseKey
from
pyquery
import
PyQuery
as
pq
from
pyquery
import
PyQuery
as
pq
...
@@ -888,6 +889,7 @@ class AnonymousLookupTable(ModuleStoreTestCase):
...
@@ -888,6 +889,7 @@ class AnonymousLookupTable(ModuleStoreTestCase):
# TODO: Clean up these tests so that they use the ProgramsDataMixin.
# TODO: Clean up these tests so that they use the ProgramsDataMixin.
@attr
(
'shard_3'
)
@unittest.skipUnless
(
settings
.
ROOT_URLCONF
==
'lms.urls'
,
'Test only valid in lms'
)
@unittest.skipUnless
(
settings
.
ROOT_URLCONF
==
'lms.urls'
,
'Test only valid in lms'
)
@ddt.ddt
@ddt.ddt
class
DashboardTestXSeriesPrograms
(
ModuleStoreTestCase
,
ProgramsApiConfigMixin
):
class
DashboardTestXSeriesPrograms
(
ModuleStoreTestCase
,
ProgramsApiConfigMixin
):
...
...
common/djangoapps/track/views/tests/test_segmentio.py
View file @
a61707b8
...
@@ -5,6 +5,7 @@ import json
...
@@ -5,6 +5,7 @@ import json
from
ddt
import
ddt
,
data
,
unpack
from
ddt
import
ddt
,
data
,
unpack
from
mock
import
sentinel
from
mock
import
sentinel
from
nose.plugins.attrib
import
attr
from
django.contrib.auth.models
import
User
from
django.contrib.auth.models
import
User
from
django.test.client
import
RequestFactory
from
django.test.client
import
RequestFactory
...
@@ -36,6 +37,7 @@ def expect_failure_with_message(message):
...
@@ -36,6 +37,7 @@ def expect_failure_with_message(message):
return
test_decorator
return
test_decorator
@attr
(
'shard_3'
)
@ddt
@ddt
@override_settings
(
@override_settings
(
TRACKING_SEGMENTIO_WEBHOOK_SECRET
=
SECRET
,
TRACKING_SEGMENTIO_WEBHOOK_SECRET
=
SECRET
,
...
...
lms/djangoapps/badges/api/tests.py
View file @
a61707b8
...
@@ -4,6 +4,7 @@ Tests for the badges API views.
...
@@ -4,6 +4,7 @@ Tests for the badges API views.
from
ddt
import
ddt
,
data
,
unpack
from
ddt
import
ddt
,
data
,
unpack
from
django.conf
import
settings
from
django.conf
import
settings
from
django.test.utils
import
override_settings
from
django.test.utils
import
override_settings
from
nose.plugins.attrib
import
attr
from
badges.tests.factories
import
BadgeAssertionFactory
,
BadgeClassFactory
,
RandomBadgeClassFactory
from
badges.tests.factories
import
BadgeAssertionFactory
,
BadgeClassFactory
,
RandomBadgeClassFactory
from
openedx.core.lib.api.test_utils
import
ApiTestCase
from
openedx.core.lib.api.test_utils
import
ApiTestCase
...
@@ -151,6 +152,7 @@ class TestUserCourseBadgeAssertions(UserAssertionTestCase):
...
@@ -151,6 +152,7 @@ class TestUserCourseBadgeAssertions(UserAssertionTestCase):
self
.
check_assertion_structure
(
assertion
,
response
[
'results'
][
0
])
self
.
check_assertion_structure
(
assertion
,
response
[
'results'
][
0
])
@attr
(
'shard_3'
)
@ddt
@ddt
class
TestUserBadgeAssertionsByClass
(
UserAssertionTestCase
):
class
TestUserBadgeAssertionsByClass
(
UserAssertionTestCase
):
"""
"""
...
...
lms/djangoapps/bulk_email/tests/test_tasks.py
View file @
a61707b8
...
@@ -75,7 +75,7 @@ def my_update_subtask_status(entry_id, current_task_id, new_subtask_status):
...
@@ -75,7 +75,7 @@ def my_update_subtask_status(entry_id, current_task_id, new_subtask_status):
update_subtask_status
(
entry_id
,
current_task_id
,
new_subtask_status
)
update_subtask_status
(
entry_id
,
current_task_id
,
new_subtask_status
)
@attr
(
'shard_
1
'
)
@attr
(
'shard_
3
'
)
@patch
(
'bulk_email.models.html_to_text'
,
Mock
(
return_value
=
'Mocking CourseEmail.text_message'
,
autospec
=
True
))
@patch
(
'bulk_email.models.html_to_text'
,
Mock
(
return_value
=
'Mocking CourseEmail.text_message'
,
autospec
=
True
))
class
TestBulkEmailInstructorTask
(
InstructorTaskCourseTestCase
):
class
TestBulkEmailInstructorTask
(
InstructorTaskCourseTestCase
):
"""Tests instructor task that send bulk email."""
"""Tests instructor task that send bulk email."""
...
...
lms/djangoapps/ccx/tests/test_field_override_performance.py
View file @
a61707b8
...
@@ -30,7 +30,7 @@ from ccx_keys.locator import CCXLocator
...
@@ -30,7 +30,7 @@ from ccx_keys.locator import CCXLocator
from
lms.djangoapps.ccx.tests.factories
import
CcxFactory
from
lms.djangoapps.ccx.tests.factories
import
CcxFactory
@attr
(
'shard_
1
'
)
@attr
(
'shard_
3
'
)
@mock.patch.dict
(
@mock.patch.dict
(
'django.conf.settings.FEATURES'
,
'django.conf.settings.FEATURES'
,
{
{
...
...
lms/djangoapps/commerce/api/v1/tests/test_views.py
View file @
a61707b8
...
@@ -97,6 +97,7 @@ class CourseListViewTests(CourseApiViewTestMixin, ModuleStoreTestCase):
...
@@ -97,6 +97,7 @@ class CourseListViewTests(CourseApiViewTestMixin, ModuleStoreTestCase):
self
.
assertListEqual
(
actual
,
expected
)
self
.
assertListEqual
(
actual
,
expected
)
@attr
(
'shard_3'
)
@ddt.ddt
@ddt.ddt
class
CourseRetrieveUpdateViewTests
(
CourseApiViewTestMixin
,
ModuleStoreTestCase
):
class
CourseRetrieveUpdateViewTests
(
CourseApiViewTestMixin
,
ModuleStoreTestCase
):
""" Tests for CourseRetrieveUpdateView. """
""" Tests for CourseRetrieveUpdateView. """
...
...
lms/djangoapps/course_api/blocks/transformers/tests/test_proctored_exam.py
View file @
a61707b8
...
@@ -2,6 +2,7 @@
...
@@ -2,6 +2,7 @@
Tests for ProctoredExamTransformer.
Tests for ProctoredExamTransformer.
"""
"""
from
mock
import
patch
from
mock
import
patch
from
nose.plugins.attrib
import
attr
import
ddt
import
ddt
from
edx_proctoring.api
import
(
from
edx_proctoring.api
import
(
...
@@ -19,6 +20,7 @@ from ..proctored_exam import ProctoredExamTransformer
...
@@ -19,6 +20,7 @@ from ..proctored_exam import ProctoredExamTransformer
from
...api
import
get_course_blocks
from
...api
import
get_course_blocks
@attr
(
'shard_3'
)
@ddt.ddt
@ddt.ddt
@patch.dict
(
'django.conf.settings.FEATURES'
,
{
'ENABLE_PROCTORED_EXAMS'
:
True
})
@patch.dict
(
'django.conf.settings.FEATURES'
,
{
'ENABLE_PROCTORED_EXAMS'
:
True
})
class
ProctoredExamTransformerTestCase
(
CourseStructureTestCase
):
class
ProctoredExamTransformerTestCase
(
CourseStructureTestCase
):
...
...
lms/djangoapps/course_api/tests/test_serializers.py
View file @
a61707b8
...
@@ -6,6 +6,7 @@ from __future__ import unicode_literals
...
@@ -6,6 +6,7 @@ from __future__ import unicode_literals
from
datetime
import
datetime
from
datetime
import
datetime
import
ddt
import
ddt
from
nose.plugins.attrib
import
attr
from
openedx.core.djangoapps.models.course_details
import
CourseDetails
from
openedx.core.djangoapps.models.course_details
import
CourseDetails
from
openedx.core.djangoapps.content.course_overviews.models
import
CourseOverview
from
openedx.core.djangoapps.content.course_overviews.models
import
CourseOverview
from
rest_framework.test
import
APIRequestFactory
from
rest_framework.test
import
APIRequestFactory
...
@@ -20,6 +21,7 @@ from ..serializers import CourseSerializer, CourseDetailSerializer
...
@@ -20,6 +21,7 @@ from ..serializers import CourseSerializer, CourseDetailSerializer
from
.mixins
import
CourseApiFactoryMixin
from
.mixins
import
CourseApiFactoryMixin
@attr
(
'shard_3'
)
@ddt.ddt
@ddt.ddt
class
TestCourseSerializer
(
CourseApiFactoryMixin
,
ModuleStoreTestCase
):
class
TestCourseSerializer
(
CourseApiFactoryMixin
,
ModuleStoreTestCase
):
"""
"""
...
...
lms/djangoapps/course_api/tests/test_views.py
View file @
a61707b8
...
@@ -5,6 +5,7 @@ from hashlib import md5
...
@@ -5,6 +5,7 @@ from hashlib import md5
from
django.core.urlresolvers
import
reverse
from
django.core.urlresolvers
import
reverse
from
django.test
import
RequestFactory
from
django.test
import
RequestFactory
from
nose.plugins.attrib
import
attr
from
xmodule.modulestore.tests.django_utils
import
SharedModuleStoreTestCase
from
xmodule.modulestore.tests.django_utils
import
SharedModuleStoreTestCase
from
.mixins
import
CourseApiFactoryMixin
,
TEST_PASSWORD
from
.mixins
import
CourseApiFactoryMixin
,
TEST_PASSWORD
...
@@ -46,6 +47,7 @@ class CourseApiTestViewMixin(CourseApiFactoryMixin):
...
@@ -46,6 +47,7 @@ class CourseApiTestViewMixin(CourseApiFactoryMixin):
return
response
return
response
@attr
(
'shard_3'
)
class
CourseListViewTestCase
(
CourseApiTestViewMixin
,
SharedModuleStoreTestCase
):
class
CourseListViewTestCase
(
CourseApiTestViewMixin
,
SharedModuleStoreTestCase
):
"""
"""
Test responses returned from CourseListView.
Test responses returned from CourseListView.
...
...
lms/djangoapps/course_blocks/transformers/tests/test_split_test.py
View file @
a61707b8
...
@@ -2,6 +2,7 @@
...
@@ -2,6 +2,7 @@
Tests for SplitTestTransformer.
Tests for SplitTestTransformer.
"""
"""
import
ddt
import
ddt
from
nose.plugins.attrib
import
attr
import
openedx.core.djangoapps.user_api.course_tag.api
as
course_tag_api
import
openedx.core.djangoapps.user_api.course_tag.api
as
course_tag_api
from
openedx.core.djangoapps.user_api.partition_schemes
import
RandomUserPartitionScheme
from
openedx.core.djangoapps.user_api.partition_schemes
import
RandomUserPartitionScheme
...
@@ -14,6 +15,7 @@ from ..user_partitions import UserPartitionTransformer, _get_user_partition_grou
...
@@ -14,6 +15,7 @@ from ..user_partitions import UserPartitionTransformer, _get_user_partition_grou
from
.helpers
import
CourseStructureTestCase
,
create_location
from
.helpers
import
CourseStructureTestCase
,
create_location
@attr
(
'shard_3'
)
@ddt.ddt
@ddt.ddt
class
SplitTestTransformerTestCase
(
CourseStructureTestCase
):
class
SplitTestTransformerTestCase
(
CourseStructureTestCase
):
"""
"""
...
...
lms/djangoapps/course_blocks/transformers/tests/test_start_date.py
View file @
a61707b8
...
@@ -5,12 +5,14 @@ import ddt
...
@@ -5,12 +5,14 @@ import ddt
from
datetime
import
timedelta
from
datetime
import
timedelta
from
django.utils.timezone
import
now
from
django.utils.timezone
import
now
from
mock
import
patch
from
mock
import
patch
from
nose.plugins.attrib
import
attr
from
courseware.tests.factories
import
BetaTesterFactory
from
courseware.tests.factories
import
BetaTesterFactory
from
..start_date
import
StartDateTransformer
,
DEFAULT_START_DATE
from
..start_date
import
StartDateTransformer
,
DEFAULT_START_DATE
from
.helpers
import
BlockParentsMapTestCase
,
update_block
from
.helpers
import
BlockParentsMapTestCase
,
update_block
@attr
(
'shard_3'
)
@ddt.ddt
@ddt.ddt
class
StartDateTransformerTestCase
(
BlockParentsMapTestCase
):
class
StartDateTransformerTestCase
(
BlockParentsMapTestCase
):
"""
"""
...
...
lms/djangoapps/course_blocks/transformers/tests/test_user_partitions.py
View file @
a61707b8
...
@@ -4,6 +4,7 @@ Tests for UserPartitionTransformer.
...
@@ -4,6 +4,7 @@ Tests for UserPartitionTransformer.
"""
"""
from
collections
import
namedtuple
from
collections
import
namedtuple
import
ddt
import
ddt
from
nose.plugins.attrib
import
attr
from
openedx.core.djangoapps.course_groups.partition_scheme
import
CohortPartitionScheme
from
openedx.core.djangoapps.course_groups.partition_scheme
import
CohortPartitionScheme
from
openedx.core.djangoapps.course_groups.tests.helpers
import
CohortFactory
,
config_course_cohorts
from
openedx.core.djangoapps.course_groups.tests.helpers
import
CohortFactory
,
config_course_cohorts
...
@@ -65,6 +66,7 @@ class UserPartitionTestMixin(object):
...
@@ -65,6 +66,7 @@ class UserPartitionTestMixin(object):
self
.
partition_cohorts
.
append
(
partition_cohorts
)
self
.
partition_cohorts
.
append
(
partition_cohorts
)
@attr
(
'shard_3'
)
@ddt.ddt
@ddt.ddt
class
UserPartitionTransformerTestCase
(
UserPartitionTestMixin
,
CourseStructureTestCase
):
class
UserPartitionTransformerTestCase
(
UserPartitionTestMixin
,
CourseStructureTestCase
):
"""
"""
...
@@ -212,6 +214,7 @@ class UserPartitionTransformerTestCase(UserPartitionTestMixin, CourseStructureTe
...
@@ -212,6 +214,7 @@ class UserPartitionTransformerTestCase(UserPartitionTestMixin, CourseStructureTe
)
)
@attr
(
'shard_3'
)
@ddt.ddt
@ddt.ddt
class
MergedGroupAccessTestData
(
UserPartitionTestMixin
,
CourseStructureTestCase
):
class
MergedGroupAccessTestData
(
UserPartitionTestMixin
,
CourseStructureTestCase
):
"""
"""
...
...
lms/djangoapps/course_blocks/transformers/tests/test_visibility.py
View file @
a61707b8
...
@@ -2,11 +2,13 @@
...
@@ -2,11 +2,13 @@
Tests for VisibilityTransformer.
Tests for VisibilityTransformer.
"""
"""
import
ddt
import
ddt
from
nose.plugins.attrib
import
attr
from
..visibility
import
VisibilityTransformer
from
..visibility
import
VisibilityTransformer
from
.helpers
import
BlockParentsMapTestCase
,
update_block
from
.helpers
import
BlockParentsMapTestCase
,
update_block
@attr
(
'shard_3'
)
@ddt.ddt
@ddt.ddt
class
VisibilityTransformerTestCase
(
BlockParentsMapTestCase
):
class
VisibilityTransformerTestCase
(
BlockParentsMapTestCase
):
"""
"""
...
...
lms/djangoapps/courseware/tests/test_access.py
View file @
a61707b8
...
@@ -676,6 +676,7 @@ class UserRoleTestCase(TestCase):
...
@@ -676,6 +676,7 @@ class UserRoleTestCase(TestCase):
)
)
@attr
(
'shard_3'
)
@ddt.ddt
@ddt.ddt
class
CourseOverviewAccessTestCase
(
ModuleStoreTestCase
):
class
CourseOverviewAccessTestCase
(
ModuleStoreTestCase
):
"""
"""
...
...
lms/djangoapps/courseware/tests/test_entrance_exam.py
View file @
a61707b8
...
@@ -38,7 +38,7 @@ from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase
...
@@ -38,7 +38,7 @@ from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase
from
xmodule.modulestore.tests.factories
import
CourseFactory
,
ItemFactory
from
xmodule.modulestore.tests.factories
import
CourseFactory
,
ItemFactory
@attr
(
'shard_
1
'
)
@attr
(
'shard_
2
'
)
@patch.dict
(
'django.conf.settings.FEATURES'
,
{
'ENTRANCE_EXAMS'
:
True
,
'MILESTONES_APP'
:
True
})
@patch.dict
(
'django.conf.settings.FEATURES'
,
{
'ENTRANCE_EXAMS'
:
True
,
'MILESTONES_APP'
:
True
})
class
EntranceExamTestCases
(
LoginEnrollmentTestCase
,
ModuleStoreTestCase
,
MilestonesTestCaseMixin
):
class
EntranceExamTestCases
(
LoginEnrollmentTestCase
,
ModuleStoreTestCase
,
MilestonesTestCaseMixin
):
"""
"""
...
...
lms/djangoapps/courseware/tests/test_group_access.py
View file @
a61707b8
...
@@ -51,7 +51,7 @@ def resolve_attrs(test_method):
...
@@ -51,7 +51,7 @@ def resolve_attrs(test_method):
return
_wrapper
return
_wrapper
@attr
(
'shard_
1
'
)
@attr
(
'shard_
2
'
)
@ddt.ddt
@ddt.ddt
class
GroupAccessTestCase
(
ModuleStoreTestCase
):
class
GroupAccessTestCase
(
ModuleStoreTestCase
):
"""
"""
...
...
lms/djangoapps/courseware/tests/test_submitting_problems.py
View file @
a61707b8
...
@@ -316,7 +316,7 @@ class TestSubmittingProblems(ModuleStoreTestCase, LoginEnrollmentTestCase, Probl
...
@@ -316,7 +316,7 @@ class TestSubmittingProblems(ModuleStoreTestCase, LoginEnrollmentTestCase, Probl
return
[
s
.
earned
for
s
in
hw_section
[
'scores'
]]
return
[
s
.
earned
for
s
in
hw_section
[
'scores'
]]
@attr
(
'shard_
1
'
)
@attr
(
'shard_
3
'
)
class
TestCourseGrader
(
TestSubmittingProblems
):
class
TestCourseGrader
(
TestSubmittingProblems
):
"""
"""
Suite of tests for the course grader.
Suite of tests for the course grader.
...
...
lms/djangoapps/courseware/tests/test_views.py
View file @
a61707b8
...
@@ -184,7 +184,7 @@ class TestJumpTo(ModuleStoreTestCase):
...
@@ -184,7 +184,7 @@ class TestJumpTo(ModuleStoreTestCase):
self
.
assertEqual
(
response
.
status_code
,
404
)
self
.
assertEqual
(
response
.
status_code
,
404
)
@attr
(
'shard_
1
'
)
@attr
(
'shard_
2
'
)
@ddt.ddt
@ddt.ddt
class
ViewsTestCase
(
ModuleStoreTestCase
):
class
ViewsTestCase
(
ModuleStoreTestCase
):
"""
"""
...
...
lms/djangoapps/dashboard/management/commands/tests/test_git_add_course.py
View file @
a61707b8
...
@@ -8,6 +8,8 @@ import StringIO
...
@@ -8,6 +8,8 @@ import StringIO
import
subprocess
import
subprocess
import
unittest
import
unittest
from
nose.plugins.attrib
import
attr
from
django.conf
import
settings
from
django.conf
import
settings
from
django.core.management
import
call_command
from
django.core.management
import
call_command
from
django.core.management.base
import
CommandError
from
django.core.management.base
import
CommandError
...
@@ -34,6 +36,7 @@ FEATURES_WITH_SSL_AUTH = settings.FEATURES.copy()
...
@@ -34,6 +36,7 @@ FEATURES_WITH_SSL_AUTH = settings.FEATURES.copy()
FEATURES_WITH_SSL_AUTH
[
'AUTH_USE_CERTIFICATES'
]
=
True
FEATURES_WITH_SSL_AUTH
[
'AUTH_USE_CERTIFICATES'
]
=
True
@attr
(
'shard_3'
)
@override_settings
(
MONGODB_LOG
=
TEST_MONGODB_LOG
)
@override_settings
(
MONGODB_LOG
=
TEST_MONGODB_LOG
)
@unittest.skipUnless
(
settings
.
FEATURES
.
get
(
'ENABLE_SYSADMIN_DASHBOARD'
),
@unittest.skipUnless
(
settings
.
FEATURES
.
get
(
'ENABLE_SYSADMIN_DASHBOARD'
),
"ENABLE_SYSADMIN_DASHBOARD not set"
)
"ENABLE_SYSADMIN_DASHBOARD not set"
)
...
...
lms/djangoapps/discussion_api/tests/test_permissions.py
View file @
a61707b8
...
@@ -4,6 +4,7 @@ Tests for discussion API permission logic
...
@@ -4,6 +4,7 @@ Tests for discussion API permission logic
import
itertools
import
itertools
import
ddt
import
ddt
from
nose.plugins.attrib
import
attr
from
discussion_api.permissions
import
(
from
discussion_api.permissions
import
(
can_delete
,
can_delete
,
...
@@ -64,6 +65,7 @@ class GetInitializableFieldsTest(ModuleStoreTestCase):
...
@@ -64,6 +65,7 @@ class GetInitializableFieldsTest(ModuleStoreTestCase):
self
.
assertEqual
(
actual
,
expected
)
self
.
assertEqual
(
actual
,
expected
)
@attr
(
'shard_3'
)
@ddt.ddt
@ddt.ddt
class
GetEditableFieldsTest
(
ModuleStoreTestCase
):
class
GetEditableFieldsTest
(
ModuleStoreTestCase
):
"""Tests for get_editable_fields"""
"""Tests for get_editable_fields"""
...
...
lms/djangoapps/discussion_api/tests/test_serializers.py
View file @
a61707b8
...
@@ -7,6 +7,7 @@ from urlparse import urlparse
...
@@ -7,6 +7,7 @@ from urlparse import urlparse
import
ddt
import
ddt
import
httpretty
import
httpretty
import
mock
import
mock
from
nose.plugins.attrib
import
attr
from
django.test.client
import
RequestFactory
from
django.test.client
import
RequestFactory
...
@@ -132,6 +133,7 @@ class SerializerTestMixin(CommentsServiceMockMixin, UrlResetMixin):
...
@@ -132,6 +133,7 @@ class SerializerTestMixin(CommentsServiceMockMixin, UrlResetMixin):
self
.
assertEqual
(
serialized
[
"voted"
],
True
)
self
.
assertEqual
(
serialized
[
"voted"
],
True
)
@attr
(
'shard_3'
)
@ddt.ddt
@ddt.ddt
class
ThreadSerializerSerializationTest
(
SerializerTestMixin
,
SharedModuleStoreTestCase
):
class
ThreadSerializerSerializationTest
(
SerializerTestMixin
,
SharedModuleStoreTestCase
):
"""Tests for ThreadSerializer serialization."""
"""Tests for ThreadSerializer serialization."""
...
...
lms/djangoapps/discussion_api/tests/test_views.py
View file @
a61707b8
...
@@ -8,6 +8,7 @@ from urlparse import urlparse
...
@@ -8,6 +8,7 @@ from urlparse import urlparse
import
ddt
import
ddt
import
httpretty
import
httpretty
import
mock
import
mock
from
nose.plugins.attrib
import
attr
from
pytz
import
UTC
from
pytz
import
UTC
from
django.core.urlresolvers
import
reverse
from
django.core.urlresolvers
import
reverse
...
@@ -225,6 +226,7 @@ class CourseTopicsViewTest(DiscussionAPIViewTestMixin, ModuleStoreTestCase):
...
@@ -225,6 +226,7 @@ class CourseTopicsViewTest(DiscussionAPIViewTestMixin, ModuleStoreTestCase):
self
.
client
.
get
(
course_url
)
self
.
client
.
get
(
course_url
)
@attr
(
'shard_3'
)
@ddt.ddt
@ddt.ddt
@httpretty.activate
@httpretty.activate
@mock.patch.dict
(
"django.conf.settings.FEATURES"
,
{
"ENABLE_DISCUSSION_SERVICE"
:
True
})
@mock.patch.dict
(
"django.conf.settings.FEATURES"
,
{
"ENABLE_DISCUSSION_SERVICE"
:
True
})
...
@@ -615,6 +617,7 @@ class ThreadViewSetCreateTest(DiscussionAPIViewTestMixin, ModuleStoreTestCase):
...
@@ -615,6 +617,7 @@ class ThreadViewSetCreateTest(DiscussionAPIViewTestMixin, ModuleStoreTestCase):
self
.
assertEqual
(
response_data
,
expected_response_data
)
self
.
assertEqual
(
response_data
,
expected_response_data
)
@attr
(
'shard_3'
)
@ddt.ddt
@ddt.ddt
@httpretty.activate
@httpretty.activate
@disable_signal
(
api
,
'thread_edited'
)
@disable_signal
(
api
,
'thread_edited'
)
...
@@ -864,6 +867,7 @@ class ThreadViewSetDeleteTest(DiscussionAPIViewTestMixin, ModuleStoreTestCase):
...
@@ -864,6 +867,7 @@ class ThreadViewSetDeleteTest(DiscussionAPIViewTestMixin, ModuleStoreTestCase):
self
.
assertEqual
(
response
.
status_code
,
404
)
self
.
assertEqual
(
response
.
status_code
,
404
)
@attr
(
'shard_3'
)
@ddt.ddt
@ddt.ddt
@httpretty.activate
@httpretty.activate
@mock.patch.dict
(
"django.conf.settings.FEATURES"
,
{
"ENABLE_DISCUSSION_SERVICE"
:
True
})
@mock.patch.dict
(
"django.conf.settings.FEATURES"
,
{
"ENABLE_DISCUSSION_SERVICE"
:
True
})
...
...
lms/djangoapps/django_comment_client/tests/test_utils.py
View file @
a61707b8
...
@@ -200,6 +200,7 @@ class CoursewareContextTestCase(ModuleStoreTestCase):
...
@@ -200,6 +200,7 @@ class CoursewareContextTestCase(ModuleStoreTestCase):
self
.
assertEqual
(
len
(
utils
.
get_accessible_discussion_modules
(
course
,
self
.
user
)),
expected_discussion_modules
)
self
.
assertEqual
(
len
(
utils
.
get_accessible_discussion_modules
(
course
,
self
.
user
)),
expected_discussion_modules
)
@attr
(
'shard_3'
)
class
CachedDiscussionIdMapTestCase
(
ModuleStoreTestCase
):
class
CachedDiscussionIdMapTestCase
(
ModuleStoreTestCase
):
"""
"""
Tests that using the cache of discussion id mappings has the same behavior as searching through the course.
Tests that using the cache of discussion id mappings has the same behavior as searching through the course.
...
...
lms/djangoapps/edxnotes/tests.py
View file @
a61707b8
...
@@ -6,6 +6,7 @@ import ddt
...
@@ -6,6 +6,7 @@ import ddt
import
json
import
json
import
jwt
import
jwt
from
mock
import
patch
,
MagicMock
from
mock
import
patch
,
MagicMock
from
nose.plugins.attrib
import
attr
from
unittest
import
skipUnless
from
unittest
import
skipUnless
from
datetime
import
datetime
from
datetime
import
datetime
import
urlparse
import
urlparse
...
@@ -86,6 +87,7 @@ class TestProblem(object):
...
@@ -86,6 +87,7 @@ class TestProblem(object):
return
"original_get_html"
return
"original_get_html"
@attr
(
'shard_3'
)
@skipUnless
(
settings
.
FEATURES
[
"ENABLE_EDXNOTES"
],
"EdxNotes feature needs to be enabled."
)
@skipUnless
(
settings
.
FEATURES
[
"ENABLE_EDXNOTES"
],
"EdxNotes feature needs to be enabled."
)
class
EdxNotesDecoratorTest
(
ModuleStoreTestCase
):
class
EdxNotesDecoratorTest
(
ModuleStoreTestCase
):
"""
"""
...
@@ -169,6 +171,7 @@ class EdxNotesDecoratorTest(ModuleStoreTestCase):
...
@@ -169,6 +171,7 @@ class EdxNotesDecoratorTest(ModuleStoreTestCase):
self
.
assertEqual
(
"original_get_html"
,
self
.
problem
.
get_html
())
self
.
assertEqual
(
"original_get_html"
,
self
.
problem
.
get_html
())
@attr
(
'shard_3'
)
@skipUnless
(
settings
.
FEATURES
[
"ENABLE_EDXNOTES"
],
"EdxNotes feature needs to be enabled."
)
@skipUnless
(
settings
.
FEATURES
[
"ENABLE_EDXNOTES"
],
"EdxNotes feature needs to be enabled."
)
@ddt.ddt
@ddt.ddt
class
EdxNotesHelpersTest
(
ModuleStoreTestCase
):
class
EdxNotesHelpersTest
(
ModuleStoreTestCase
):
...
@@ -941,6 +944,7 @@ class EdxNotesHelpersTest(ModuleStoreTestCase):
...
@@ -941,6 +944,7 @@ class EdxNotesHelpersTest(ModuleStoreTestCase):
verify_url
(
previous_url
,
previous_api_url
)
verify_url
(
previous_url
,
previous_api_url
)
@attr
(
'shard_3'
)
@skipUnless
(
settings
.
FEATURES
[
"ENABLE_EDXNOTES"
],
"EdxNotes feature needs to be enabled."
)
@skipUnless
(
settings
.
FEATURES
[
"ENABLE_EDXNOTES"
],
"EdxNotes feature needs to be enabled."
)
@ddt.ddt
@ddt.ddt
class
EdxNotesViewsTest
(
ModuleStoreTestCase
):
class
EdxNotesViewsTest
(
ModuleStoreTestCase
):
...
@@ -1136,6 +1140,7 @@ class EdxNotesViewsTest(ModuleStoreTestCase):
...
@@ -1136,6 +1140,7 @@ class EdxNotesViewsTest(ModuleStoreTestCase):
self
.
assertEqual
(
response
.
status_code
,
400
)
self
.
assertEqual
(
response
.
status_code
,
400
)
@attr
(
'shard_3'
)
@skipUnless
(
settings
.
FEATURES
[
"ENABLE_EDXNOTES"
],
"EdxNotes feature needs to be enabled."
)
@skipUnless
(
settings
.
FEATURES
[
"ENABLE_EDXNOTES"
],
"EdxNotes feature needs to be enabled."
)
@ddt.ddt
@ddt.ddt
class
EdxNotesPluginTest
(
ModuleStoreTestCase
):
class
EdxNotesPluginTest
(
ModuleStoreTestCase
):
...
...
lms/djangoapps/gating/tests/test_api.py
View file @
a61707b8
...
@@ -2,6 +2,7 @@
...
@@ -2,6 +2,7 @@
Unit tests for gating.signals module
Unit tests for gating.signals module
"""
"""
from
mock
import
patch
from
mock
import
patch
from
nose.plugins.attrib
import
attr
from
ddt
import
ddt
,
data
,
unpack
from
ddt
import
ddt
,
data
,
unpack
from
xmodule.modulestore.tests.factories
import
CourseFactory
,
ItemFactory
from
xmodule.modulestore.tests.factories
import
CourseFactory
,
ItemFactory
from
xmodule.modulestore.tests.django_utils
import
ModuleStoreTestCase
from
xmodule.modulestore.tests.django_utils
import
ModuleStoreTestCase
...
@@ -114,6 +115,7 @@ class TestGetXBlockParent(GatingTestCase):
...
@@ -114,6 +115,7 @@ class TestGetXBlockParent(GatingTestCase):
self
.
assertIsNone
(
result
)
self
.
assertIsNone
(
result
)
@attr
(
'shard_3'
)
@ddt
@ddt
class
TestEvaluatePrerequisite
(
GatingTestCase
,
MilestonesTestCaseMixin
):
class
TestEvaluatePrerequisite
(
GatingTestCase
,
MilestonesTestCaseMixin
):
"""
"""
...
...
lms/djangoapps/instructor/tests/views/test_instructor_dashboard.py
View file @
a61707b8
...
@@ -4,6 +4,7 @@ Unit tests for instructor_dashboard.py.
...
@@ -4,6 +4,7 @@ Unit tests for instructor_dashboard.py.
import
ddt
import
ddt
import
datetime
import
datetime
from
mock
import
patch
from
mock
import
patch
from
nose.plugins.attrib
import
attr
from
pytz
import
UTC
from
pytz
import
UTC
from
django.conf
import
settings
from
django.conf
import
settings
...
@@ -42,6 +43,7 @@ def intercept_renderer(path, context):
...
@@ -42,6 +43,7 @@ def intercept_renderer(path, context):
return
response
return
response
@attr
(
'shard_3'
)
@ddt.ddt
@ddt.ddt
class
TestInstructorDashboard
(
ModuleStoreTestCase
,
LoginEnrollmentTestCase
,
XssTestMixin
):
class
TestInstructorDashboard
(
ModuleStoreTestCase
,
LoginEnrollmentTestCase
,
XssTestMixin
):
"""
"""
...
...
lms/djangoapps/instructor_analytics/tests/test_basic.py
View file @
a61707b8
...
@@ -6,6 +6,7 @@ import datetime
...
@@ -6,6 +6,7 @@ import datetime
import
json
import
json
import
pytz
import
pytz
from
mock
import
MagicMock
,
Mock
,
patch
from
mock
import
MagicMock
,
Mock
,
patch
from
nose.plugins.attrib
import
attr
from
django.core.urlresolvers
import
reverse
from
django.core.urlresolvers
import
reverse
from
django.db.models
import
Q
from
django.db.models
import
Q
...
@@ -31,6 +32,7 @@ from edx_proctoring.api import create_exam
...
@@ -31,6 +32,7 @@ from edx_proctoring.api import create_exam
from
edx_proctoring.models
import
ProctoredExamStudentAttempt
from
edx_proctoring.models
import
ProctoredExamStudentAttempt
@attr
(
'shard_3'
)
class
TestAnalyticsBasic
(
ModuleStoreTestCase
):
class
TestAnalyticsBasic
(
ModuleStoreTestCase
):
""" Test basic analytics functions. """
""" Test basic analytics functions. """
...
...
lms/djangoapps/instructor_task/tests/test_api.py
View file @
a61707b8
...
@@ -2,6 +2,7 @@
...
@@ -2,6 +2,7 @@
Test for LMS instructor background task queue management
Test for LMS instructor background task queue management
"""
"""
from
mock
import
patch
,
Mock
,
MagicMock
from
mock
import
patch
,
Mock
,
MagicMock
from
nose.plugins.attrib
import
attr
from
bulk_email.models
import
CourseEmail
,
SEND_TO_ALL
from
bulk_email.models
import
CourseEmail
,
SEND_TO_ALL
from
courseware.tests.factories
import
UserFactory
from
courseware.tests.factories
import
UserFactory
from
xmodule.modulestore.exceptions
import
ItemNotFoundError
from
xmodule.modulestore.exceptions
import
ItemNotFoundError
...
@@ -82,6 +83,7 @@ class InstructorTaskReportTest(InstructorTaskTestCase):
...
@@ -82,6 +83,7 @@ class InstructorTaskReportTest(InstructorTaskTestCase):
self
.
assertEquals
(
set
(
task_ids
),
set
())
self
.
assertEquals
(
set
(
task_ids
),
set
())
@attr
(
'shard_3'
)
class
InstructorTaskModuleSubmitTest
(
InstructorTaskModuleTestCase
):
class
InstructorTaskModuleSubmitTest
(
InstructorTaskModuleTestCase
):
"""Tests API methods that involve the submission of module-based background tasks."""
"""Tests API methods that involve the submission of module-based background tasks."""
...
@@ -172,6 +174,7 @@ class InstructorTaskModuleSubmitTest(InstructorTaskModuleTestCase):
...
@@ -172,6 +174,7 @@ class InstructorTaskModuleSubmitTest(InstructorTaskModuleTestCase):
self
.
_test_submit_task
(
submit_delete_problem_state_for_all_students
)
self
.
_test_submit_task
(
submit_delete_problem_state_for_all_students
)
@attr
(
'shard_3'
)
@patch
(
'bulk_email.models.html_to_text'
,
Mock
(
return_value
=
'Mocking CourseEmail.text_message'
,
autospec
=
True
))
@patch
(
'bulk_email.models.html_to_text'
,
Mock
(
return_value
=
'Mocking CourseEmail.text_message'
,
autospec
=
True
))
class
InstructorTaskCourseSubmitTest
(
TestReportMixin
,
InstructorTaskCourseTestCase
):
class
InstructorTaskCourseSubmitTest
(
TestReportMixin
,
InstructorTaskCourseTestCase
):
"""Tests API methods that involve the submission of course-based background tasks."""
"""Tests API methods that involve the submission of course-based background tasks."""
...
...
lms/djangoapps/instructor_task/tests/test_integration.py
View file @
a61707b8
...
@@ -8,6 +8,7 @@ paths actually work.
...
@@ -8,6 +8,7 @@ paths actually work.
import
json
import
json
import
logging
import
logging
from
mock
import
patch
from
mock
import
patch
from
nose.plugins.attrib
import
attr
import
textwrap
import
textwrap
from
celery.states
import
SUCCESS
,
FAILURE
from
celery.states
import
SUCCESS
,
FAILURE
...
@@ -63,6 +64,7 @@ class TestIntegrationTask(InstructorTaskModuleTestCase):
...
@@ -63,6 +64,7 @@ class TestIntegrationTask(InstructorTaskModuleTestCase):
self
.
assertEqual
(
status
[
'message'
],
expected_message
)
self
.
assertEqual
(
status
[
'message'
],
expected_message
)
@attr
(
'shard_3'
)
class
TestRescoringTask
(
TestIntegrationTask
):
class
TestRescoringTask
(
TestIntegrationTask
):
"""
"""
Integration-style tests for rescoring problems in a background task.
Integration-style tests for rescoring problems in a background task.
...
...
lms/djangoapps/instructor_task/tests/test_tasks.py
View file @
a61707b8
...
@@ -9,6 +9,7 @@ import json
...
@@ -9,6 +9,7 @@ import json
from
uuid
import
uuid4
from
uuid
import
uuid4
from
mock
import
Mock
,
MagicMock
,
patch
from
mock
import
Mock
,
MagicMock
,
patch
from
nose.plugins.attrib
import
attr
from
celery.states
import
SUCCESS
,
FAILURE
from
celery.states
import
SUCCESS
,
FAILURE
from
django.utils.translation
import
ugettext_noop
from
django.utils.translation
import
ugettext_noop
...
@@ -213,6 +214,7 @@ class TestInstructorTasks(InstructorTaskModuleTestCase):
...
@@ -213,6 +214,7 @@ class TestInstructorTasks(InstructorTaskModuleTestCase):
self
.
assertEquals
(
output
[
'traceback'
][
-
3
:],
"..."
)
self
.
assertEquals
(
output
[
'traceback'
][
-
3
:],
"..."
)
@attr
(
'shard_3'
)
class
TestRescoreInstructorTask
(
TestInstructorTasks
):
class
TestRescoreInstructorTask
(
TestInstructorTasks
):
"""Tests problem-rescoring instructor task."""
"""Tests problem-rescoring instructor task."""
...
@@ -315,6 +317,7 @@ class TestRescoreInstructorTask(TestInstructorTasks):
...
@@ -315,6 +317,7 @@ class TestRescoreInstructorTask(TestInstructorTasks):
self
.
assertGreater
(
output
.
get
(
'duration_ms'
),
0
)
self
.
assertGreater
(
output
.
get
(
'duration_ms'
),
0
)
@attr
(
'shard_3'
)
class
TestResetAttemptsInstructorTask
(
TestInstructorTasks
):
class
TestResetAttemptsInstructorTask
(
TestInstructorTasks
):
"""Tests instructor task that resets problem attempts."""
"""Tests instructor task that resets problem attempts."""
...
@@ -413,6 +416,7 @@ class TestResetAttemptsInstructorTask(TestInstructorTasks):
...
@@ -413,6 +416,7 @@ class TestResetAttemptsInstructorTask(TestInstructorTasks):
self
.
_test_reset_with_student
(
True
)
self
.
_test_reset_with_student
(
True
)
@attr
(
'shard_3'
)
class
TestDeleteStateInstructorTask
(
TestInstructorTasks
):
class
TestDeleteStateInstructorTask
(
TestInstructorTasks
):
"""Tests instructor task that deletes problem state."""
"""Tests instructor task that deletes problem state."""
...
...
lms/djangoapps/instructor_task/tests/test_tasks_helper.py
View file @
a61707b8
...
@@ -16,6 +16,7 @@ import urllib
...
@@ -16,6 +16,7 @@ import urllib
import
ddt
import
ddt
from
freezegun
import
freeze_time
from
freezegun
import
freeze_time
from
mock
import
Mock
,
patch
from
mock
import
Mock
,
patch
from
nose.plugins.attrib
import
attr
import
tempfile
import
tempfile
from
openedx.core.djangoapps.course_groups
import
cohorts
from
openedx.core.djangoapps.course_groups
import
cohorts
import
unicodecsv
import
unicodecsv
...
@@ -666,6 +667,7 @@ class TestProblemGradeReport(TestReportMixin, InstructorTaskModuleTestCase):
...
@@ -666,6 +667,7 @@ class TestProblemGradeReport(TestReportMixin, InstructorTaskModuleTestCase):
])
])
@attr
(
'shard_3'
)
class
TestProblemReportSplitTestContent
(
TestReportMixin
,
TestConditionalContent
,
InstructorTaskModuleTestCase
):
class
TestProblemReportSplitTestContent
(
TestReportMixin
,
TestConditionalContent
,
InstructorTaskModuleTestCase
):
"""
"""
Test the problem report on a course that has split tests.
Test the problem report on a course that has split tests.
...
@@ -1674,6 +1676,7 @@ class TestGradeReportEnrollmentAndCertificateInfo(TestReportMixin, InstructorTas
...
@@ -1674,6 +1676,7 @@ class TestGradeReportEnrollmentAndCertificateInfo(TestReportMixin, InstructorTas
self
.
_verify_csv_data
(
user
.
username
,
expected_output
)
self
.
_verify_csv_data
(
user
.
username
,
expected_output
)
@attr
(
'shard_3'
)
@ddt.ddt
@ddt.ddt
@override_settings
(
CERT_QUEUE
=
'test-queue'
)
@override_settings
(
CERT_QUEUE
=
'test-queue'
)
class
TestCertificateGeneration
(
InstructorTaskModuleTestCase
):
class
TestCertificateGeneration
(
InstructorTaskModuleTestCase
):
...
...
lms/djangoapps/lti_provider/tests/test_views.py
View file @
a61707b8
...
@@ -6,6 +6,7 @@ from django.core.urlresolvers import reverse
...
@@ -6,6 +6,7 @@ from django.core.urlresolvers import reverse
from
django.test
import
TestCase
from
django.test
import
TestCase
from
django.test.client
import
RequestFactory
from
django.test.client
import
RequestFactory
from
mock
import
patch
,
MagicMock
from
mock
import
patch
,
MagicMock
from
nose.plugins.attrib
import
attr
from
courseware.testutils
import
RenderXBlockTestMixin
from
courseware.testutils
import
RenderXBlockTestMixin
from
lti_provider
import
views
,
models
from
lti_provider
import
views
,
models
...
@@ -157,6 +158,7 @@ class LtiLaunchTest(LtiTestMixin, TestCase):
...
@@ -157,6 +158,7 @@ class LtiLaunchTest(LtiTestMixin, TestCase):
self
.
assertEqual
(
consumer
.
instance_guid
,
u'consumer instance guid'
)
self
.
assertEqual
(
consumer
.
instance_guid
,
u'consumer instance guid'
)
@attr
(
'shard_3'
)
class
LtiLaunchTestRender
(
LtiTestMixin
,
RenderXBlockTestMixin
,
ModuleStoreTestCase
):
class
LtiLaunchTestRender
(
LtiTestMixin
,
RenderXBlockTestMixin
,
ModuleStoreTestCase
):
"""
"""
Tests for the rendering returned by lti_launch view.
Tests for the rendering returned by lti_launch view.
...
...
lms/djangoapps/mobile_api/course_info/tests.py
View file @
a61707b8
...
@@ -4,6 +4,7 @@ Tests for course_info
...
@@ -4,6 +4,7 @@ Tests for course_info
import
ddt
import
ddt
from
django.conf
import
settings
from
django.conf
import
settings
from
nose.plugins.attrib
import
attr
from
xmodule.html_module
import
CourseInfoModule
from
xmodule.html_module
import
CourseInfoModule
from
xmodule.modulestore
import
ModuleStoreEnum
from
xmodule.modulestore
import
ModuleStoreEnum
...
@@ -16,6 +17,7 @@ from ..testutils import (
...
@@ -16,6 +17,7 @@ from ..testutils import (
)
)
@attr
(
'shard_3'
)
@ddt.ddt
@ddt.ddt
class
TestUpdates
(
MobileAPITestCase
,
MobileAuthTestMixin
,
MobileCourseAccessTestMixin
,
MilestonesTestCaseMixin
):
class
TestUpdates
(
MobileAPITestCase
,
MobileAuthTestMixin
,
MobileCourseAccessTestMixin
,
MilestonesTestCaseMixin
):
"""
"""
...
@@ -83,6 +85,7 @@ class TestUpdates(MobileAPITestCase, MobileAuthTestMixin, MobileCourseAccessTest
...
@@ -83,6 +85,7 @@ class TestUpdates(MobileAPITestCase, MobileAuthTestMixin, MobileCourseAccessTest
self
.
assertIn
(
"Update"
+
str
(
num
),
update_data
[
'content'
])
self
.
assertIn
(
"Update"
+
str
(
num
),
update_data
[
'content'
])
@attr
(
'shard_3'
)
@ddt.ddt
@ddt.ddt
class
TestHandouts
(
MobileAPITestCase
,
MobileAuthTestMixin
,
MobileCourseAccessTestMixin
,
MilestonesTestCaseMixin
):
class
TestHandouts
(
MobileAPITestCase
,
MobileAuthTestMixin
,
MobileCourseAccessTestMixin
,
MilestonesTestCaseMixin
):
"""
"""
...
...
lms/djangoapps/shoppingcart/tests/test_models.py
View file @
a61707b8
...
@@ -11,6 +11,7 @@ import smtplib
...
@@ -11,6 +11,7 @@ import smtplib
from
boto.exception
import
BotoServerError
# this is a super-class of SESError and catches connection errors
from
boto.exception
import
BotoServerError
# this is a super-class of SESError and catches connection errors
from
mock
import
patch
,
MagicMock
from
mock
import
patch
,
MagicMock
from
nose.plugins.attrib
import
attr
import
pytz
import
pytz
import
ddt
import
ddt
from
django.core
import
mail
from
django.core
import
mail
...
@@ -46,8 +47,14 @@ from shoppingcart.exceptions import (
...
@@ -46,8 +47,14 @@ from shoppingcart.exceptions import (
from
opaque_keys.edx.locator
import
CourseLocator
from
opaque_keys.edx.locator
import
CourseLocator
@attr
(
'shard_3'
)
@ddt.ddt
@ddt.ddt
class
OrderTest
(
ModuleStoreTestCase
):
class
OrderTest
(
ModuleStoreTestCase
):
"""
Test shopping cart orders (e.g., cart contains various items,
order is taken through various pieces of cart state, etc.)
"""
def
setUp
(
self
):
def
setUp
(
self
):
super
(
OrderTest
,
self
)
.
setUp
()
super
(
OrderTest
,
self
)
.
setUp
()
...
@@ -477,6 +484,7 @@ class OrderItemTest(TestCase):
...
@@ -477,6 +484,7 @@ class OrderItemTest(TestCase):
self
.
assertEqual
(
item
.
get_list_price
(),
item
.
list_price
)
self
.
assertEqual
(
item
.
get_list_price
(),
item
.
list_price
)
@attr
(
'shard_3'
)
@patch.dict
(
'django.conf.settings.FEATURES'
,
{
'ENABLE_PAID_COURSE_REGISTRATION'
:
True
})
@patch.dict
(
'django.conf.settings.FEATURES'
,
{
'ENABLE_PAID_COURSE_REGISTRATION'
:
True
})
class
PaidCourseRegistrationTest
(
ModuleStoreTestCase
):
class
PaidCourseRegistrationTest
(
ModuleStoreTestCase
):
"""
"""
...
...
lms/djangoapps/shoppingcart/tests/test_views.py
View file @
a61707b8
...
@@ -22,6 +22,7 @@ from pytz import UTC
...
@@ -22,6 +22,7 @@ from pytz import UTC
from
freezegun
import
freeze_time
from
freezegun
import
freeze_time
from
datetime
import
datetime
,
timedelta
from
datetime
import
datetime
,
timedelta
from
mock
import
patch
,
Mock
from
mock
import
patch
,
Mock
from
nose.plugins.attrib
import
attr
import
ddt
import
ddt
from
common.test.utils
import
XssTestMixin
from
common.test.utils
import
XssTestMixin
...
@@ -64,9 +65,14 @@ render_mock = Mock(side_effect=mock_render_to_response)
...
@@ -64,9 +65,14 @@ render_mock = Mock(side_effect=mock_render_to_response)
postpay_mock
=
Mock
()
postpay_mock
=
Mock
()
@attr
(
'shard_3'
)
@patch.dict
(
'django.conf.settings.FEATURES'
,
{
'ENABLE_PAID_COURSE_REGISTRATION'
:
True
})
@patch.dict
(
'django.conf.settings.FEATURES'
,
{
'ENABLE_PAID_COURSE_REGISTRATION'
:
True
})
@ddt.ddt
@ddt.ddt
class
ShoppingCartViewsTests
(
SharedModuleStoreTestCase
,
XssTestMixin
):
class
ShoppingCartViewsTests
(
SharedModuleStoreTestCase
,
XssTestMixin
):
"""
Test shopping cart view under various states
"""
@classmethod
@classmethod
def
setUpClass
(
cls
):
def
setUpClass
(
cls
):
super
(
ShoppingCartViewsTests
,
cls
)
.
setUpClass
()
super
(
ShoppingCartViewsTests
,
cls
)
.
setUpClass
()
...
...
lms/djangoapps/student_account/test/test_views.py
View file @
a61707b8
...
@@ -2,6 +2,7 @@
...
@@ -2,6 +2,7 @@
""" Tests for student account views. """
""" Tests for student account views. """
import
re
import
re
from
nose.plugins.attrib
import
attr
from
unittest
import
skipUnless
from
unittest
import
skipUnless
from
urllib
import
urlencode
from
urllib
import
urlencode
...
@@ -203,6 +204,7 @@ class StudentAccountUpdateTest(UrlResetMixin, TestCase):
...
@@ -203,6 +204,7 @@ class StudentAccountUpdateTest(UrlResetMixin, TestCase):
return
self
.
client
.
post
(
path
=
reverse
(
'password_change_request'
),
data
=
data
)
return
self
.
client
.
post
(
path
=
reverse
(
'password_change_request'
),
data
=
data
)
@attr
(
'shard_3'
)
@ddt.ddt
@ddt.ddt
class
StudentAccountLoginAndRegistrationTest
(
ThirdPartyAuthTestMixin
,
UrlResetMixin
,
ModuleStoreTestCase
):
class
StudentAccountLoginAndRegistrationTest
(
ThirdPartyAuthTestMixin
,
UrlResetMixin
,
ModuleStoreTestCase
):
""" Tests for the student account views that update the user's account information. """
""" Tests for the student account views that update the user's account information. """
...
...
lms/djangoapps/support/tests/test_views.py
View file @
a61707b8
...
@@ -10,6 +10,7 @@ import re
...
@@ -10,6 +10,7 @@ import re
import
ddt
import
ddt
from
django.core.urlresolvers
import
reverse
from
django.core.urlresolvers
import
reverse
from
nose.plugins.attrib
import
attr
from
pytz
import
UTC
from
pytz
import
UTC
from
course_modes.models
import
CourseMode
from
course_modes.models
import
CourseMode
...
@@ -40,6 +41,7 @@ class SupportViewTestCase(ModuleStoreTestCase):
...
@@ -40,6 +41,7 @@ class SupportViewTestCase(ModuleStoreTestCase):
self
.
assertTrue
(
success
,
msg
=
"Could not log in"
)
self
.
assertTrue
(
success
,
msg
=
"Could not log in"
)
@attr
(
'shard_3'
)
@ddt.ddt
@ddt.ddt
class
SupportViewAccessTests
(
SupportViewTestCase
):
class
SupportViewAccessTests
(
SupportViewTestCase
):
"""
"""
...
...
lms/lib/xblock/test/test_mixin.py
View file @
a61707b8
...
@@ -2,6 +2,7 @@
...
@@ -2,6 +2,7 @@
Tests of the LMS XBlock Mixin
Tests of the LMS XBlock Mixin
"""
"""
import
ddt
import
ddt
from
nose.plugins.attrib
import
attr
from
xblock.validation
import
ValidationMessage
from
xblock.validation
import
ValidationMessage
from
xmodule.modulestore
import
ModuleStoreEnum
from
xmodule.modulestore
import
ModuleStoreEnum
...
@@ -151,6 +152,7 @@ class OpenAssessmentBlockMixinTestCase(ModuleStoreTestCase):
...
@@ -151,6 +152,7 @@ class OpenAssessmentBlockMixinTestCase(ModuleStoreTestCase):
self
.
assertTrue
(
self
.
open_assessment
.
has_score
)
self
.
assertTrue
(
self
.
open_assessment
.
has_score
)
@attr
(
'shard_3'
)
@ddt.ddt
@ddt.ddt
class
XBlockGetParentTest
(
LmsXBlockMixinTestCase
):
class
XBlockGetParentTest
(
LmsXBlockMixinTestCase
):
"""
"""
...
@@ -243,6 +245,7 @@ def ddt_named(parent, child):
...
@@ -243,6 +245,7 @@ def ddt_named(parent, child):
return
args
return
args
@attr
(
'shard_3'
)
@ddt.ddt
@ddt.ddt
class
XBlockMergedGroupAccessTest
(
LmsXBlockMixinTestCase
):
class
XBlockMergedGroupAccessTest
(
LmsXBlockMixinTestCase
):
"""
"""
...
...
openedx/core/djangoapps/content/course_overviews/tests.py
View file @
a61707b8
...
@@ -7,6 +7,7 @@ import ddt
...
@@ -7,6 +7,7 @@ import ddt
import
itertools
import
itertools
import
math
import
math
import
mock
import
mock
from
nose.plugins.attrib
import
attr
import
pytz
import
pytz
from
django.conf
import
settings
from
django.conf
import
settings
...
@@ -36,6 +37,7 @@ from xmodule.modulestore.tests.factories import CourseFactory, check_mongo_calls
...
@@ -36,6 +37,7 @@ from xmodule.modulestore.tests.factories import CourseFactory, check_mongo_calls
from
.models
import
CourseOverview
,
CourseOverviewImageSet
,
CourseOverviewImageConfig
from
.models
import
CourseOverview
,
CourseOverviewImageSet
,
CourseOverviewImageConfig
@attr
(
'shard_3'
)
@ddt.ddt
@ddt.ddt
class
CourseOverviewTestCase
(
ModuleStoreTestCase
):
class
CourseOverviewTestCase
(
ModuleStoreTestCase
):
"""
"""
...
@@ -516,6 +518,7 @@ class CourseOverviewTestCase(ModuleStoreTestCase):
...
@@ -516,6 +518,7 @@ class CourseOverviewTestCase(ModuleStoreTestCase):
)
)
@attr
(
'shard_3'
)
@ddt.ddt
@ddt.ddt
class
CourseOverviewImageSetTestCase
(
ModuleStoreTestCase
):
class
CourseOverviewImageSetTestCase
(
ModuleStoreTestCase
):
"""
"""
...
...
scripts/generic-ci-tests.sh
View file @
a61707b8
...
@@ -108,7 +108,10 @@ case "$TEST_SUITE" in
...
@@ -108,7 +108,10 @@ case "$TEST_SUITE" in
paver test_system
-s
lms
--extra_args
=
"--attr='shard_2' --with-flaky"
--cov_args
=
"-p"
paver test_system
-s
lms
--extra_args
=
"--attr='shard_2' --with-flaky"
--cov_args
=
"-p"
;;
;;
"3"
)
"3"
)
paver test_system
-s
lms
--extra_args
=
"--attr='shard_1=False,shard_2=False' --with-flaky"
--cov_args
=
"-p"
paver test_system
-s
lms
--extra_args
=
"--attr='shard_3' --with-flaky"
--cov_args
=
"-p"
;;
"4"
)
paver test_system
-s
lms
--extra_args
=
"--attr='shard_1=False,shard_2=False,shard_3=False' --with-flaky"
--cov_args
=
"-p"
;;
;;
*
)
*
)
# If no shard is specified, rather than running all tests, create an empty xunit file. This is a
# If no shard is specified, rather than running all tests, create an empty xunit file. This is a
...
...
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