Commit cf930814 by stv

Fix PEP8: E302 expected 2 blank lines, found 1

parent d9502e48
......@@ -9,6 +9,7 @@ from opaque_keys import InvalidKeyError
from opaque_keys.edx.locations import SlashSeparatedCourseKey
from xmodule.modulestore import ModuleStoreEnum
class Command(BaseCommand):
help = '''Delete a MongoDB backed course'''
......
......@@ -11,6 +11,8 @@ from django.db.utils import IntegrityError
from student.roles import CourseInstructorRole, CourseStaffRole
#------------ to run: ./manage.py cms populate_creators --settings=dev
class Command(BaseCommand):
"""
Script for granting existing course instructors course creator privileges.
......
......@@ -472,6 +472,7 @@ class TestYoutubeTranscripts(unittest.TestCase):
self.assertEqual(transcripts, expected_transcripts)
mock_get.assert_called_with('http://video.google.com/timedtext', params={'lang': 'en', 'v': 'good_youtube_id'})
class TestTranscript(unittest.TestCase):
"""
Tests for Transcript class e.g. different transcript conversions.
......
......@@ -86,6 +86,7 @@ class LMSLinksTestCase(TestCase):
link = utils.get_lms_link_for_item(location)
self.assertEquals(link, "//localhost:8000/courses/mitX/101/test/jump_to/i4x://mitX/101/course/test")
class ExtraPanelTabTestCase(TestCase):
""" Tests adding and removing extra course tabs. """
......
......@@ -124,6 +124,7 @@ def expand_checklist_action_url(course_module, checklist):
return expanded_checklist
def localize_checklist_text(checklist):
"""
Localize texts for a given checklist and returns the modified version.
......
......@@ -261,6 +261,7 @@ def course_rerun_handler(request, course_key_string):
'allow_unicode_course_id': settings.FEATURES.get('ALLOW_UNICODE_COURSE_ID', False)
})
def _course_outline_json(request, course_module):
"""
Returns a JSON representation of the course module and recursively all of its children.
......
......@@ -20,6 +20,7 @@ from ..utils import get_lms_link_for_item
__all__ = ['tabs_handler']
@expect_json
@login_required
@ensure_csrf_cookie
......
......@@ -11,6 +11,7 @@ from models.settings import course_grading
from xmodule.fields import Date
from xmodule.modulestore.django import modulestore
class CourseDetails(object):
def __init__(self, org, course_id, run):
# still need these for now b/c the client's screen shows these 3 fields
......
......@@ -22,6 +22,7 @@ from xmodule.exceptions import NotFoundError
log = logging.getLogger(__name__)
class StaticContentServer(object):
def process_request(self, request):
# look to see if the request is prefixed with an asset prefix tag
......
......@@ -322,6 +322,7 @@ def add_cohort(course_key, name):
)
return cohort
def add_user_to_cohort(cohort, username_or_email):
"""
Look up the given user, and if successful, add them to the specified cohort.
......
......@@ -209,6 +209,7 @@ class ListCohortsTestCase(CohortViewsTestCase):
actual_cohorts,
)
class AddCohortTestCase(CohortViewsTestCase):
"""
Tests the `add_cohort` view.
......
......@@ -4,6 +4,7 @@ from opaque_keys.edx.locations import SlashSeparatedCourseKey
from django_comment_common.models import Role
from student.models import CourseEnrollment, User
class RoleAssignmentTest(TestCase):
"""
Basic checks to make sure our Roles get assigned and unassigned as students
......
......@@ -32,6 +32,7 @@ def clear_lookups(namespace):
if namespace in LOOKUP:
del LOOKUP[namespace]
def add_lookup(namespace, directory, package=None, prepend=False):
"""
Adds a new mako template lookup directory to the given namespace.
......
......@@ -76,6 +76,7 @@ def marketing_link_context_processor(request):
]
)
def open_source_footer_context_processor(request):
"""
Checks the site name to determine whether to use the edX.org footer or the Open Source Footer.
......@@ -97,6 +98,7 @@ def microsite_footer_context_processor(request):
]
)
def render_to_string(template_name, dictionary, context=None, namespace='main'):
# see if there is an override template defined in the microsite
......
......@@ -19,6 +19,7 @@ from edxmako.shortcuts import (
from student.tests.factories import UserFactory
from util.testing import UrlResetMixin
@ddt.ddt
class ShortcutsTests(UrlResetMixin, TestCase):
"""
......
......@@ -28,6 +28,7 @@ from embargo.models import EmbargoedCourse, EmbargoedState, IPFilter
# that disables the XML modulestore.
MODULESTORE_CONFIG = mixed_store_config(settings.COMMON_TEST_DATA_ROOT, {}, include_xml=False)
@ddt.ddt
@override_settings(MODULESTORE=MODULESTORE_CONFIG)
@unittest.skipUnless(settings.ROOT_URLCONF == 'lms.urls', 'Test only valid in lms')
......
......@@ -37,6 +37,7 @@ FEATURES_WITHOUT_SSL_AUTH['AUTH_USE_CERTIFICATES'] = False
TEST_DATA_MIXED_MODULESTORE = mixed_store_config(settings.COMMON_TEST_DATA_ROOT, {})
@override_settings(FEATURES=FEATURES_WITH_SSL_AUTH)
class SSLClientTest(ModuleStoreTestCase):
"""
......
......@@ -8,6 +8,7 @@ from django.db.utils import DatabaseError
import mock
from django.test.testcases import TestCase
class HeartbeatTestCase(TestCase):
"""
Test the heartbeat
......
......@@ -23,6 +23,7 @@ def page_title_breadcrumbs(*crumbs, **kwargs):
else:
return platform_name()
@register.simple_tag(name="page_title_breadcrumbs", takes_context=True)
def page_title_breadcrumbs_tag(context, *crumbs):
"""
......
......@@ -78,6 +78,7 @@ def post_save_metrics(sender, **kwargs):
tags = _database_tags(action, sender, kwargs)
dog_stats_api.increment('edxapp.db.model', tags=tags)
@receiver(post_delete, dispatch_uid='edxapp.monitoring.post_delete_metrics')
def post_delete_metrics(sender, **kwargs):
"""
......
......@@ -3,6 +3,7 @@ import threading
_request_cache_threadlocal = threading.local()
_request_cache_threadlocal.data = {}
class RequestCache(object):
@classmethod
def get_request_cache(cls):
......
......@@ -7,6 +7,7 @@ from django.utils.translation import ugettext as _
from django.conf import settings
from student.models import UserStanding
class UserStandingMiddleware(object):
"""
Checks a user's standing on request. Returns a 403 if the user's
......
......@@ -665,15 +665,19 @@ class LoginFailures(models.Model):
class CourseEnrollmentException(Exception):
pass
class NonExistentCourseError(CourseEnrollmentException):
pass
class EnrollmentClosedError(CourseEnrollmentException):
pass
class CourseFullError(CourseEnrollmentException):
pass
class AlreadyEnrolledError(CourseEnrollmentException):
pass
......
......@@ -210,6 +210,7 @@ class CourseFinanceAdminRole(CourseRole):
def __init__(self, *args, **kwargs):
super(CourseFinanceAdminRole, self).__init__(self.ROLE, *args, **kwargs)
class CourseBetaTesterRole(CourseRole):
"""A course Beta Tester"""
ROLE = 'beta_testers'
......
......@@ -11,6 +11,7 @@ from opaque_keys.edx.locator import CourseLocator
from mock import patch
import ddt
@ddt.ddt
class AutoAuthEnabledTestCase(UrlResetMixin, TestCase):
"""
......
......@@ -25,6 +25,7 @@ FAKE_MICROSITE = {
]
}
def fake_site_name(name, default=None): # pylint: disable=W0613
"""
create a fake microsite site name
......@@ -34,12 +35,14 @@ def fake_site_name(name, default=None): # pylint: disable=W0613
else:
return default
def fake_microsite_get_value(name, default=None): # pylint: disable=W0613
"""
create a fake microsite site name
"""
return FAKE_MICROSITE.get(name, default)
class TestMicrosite(TestCase):
"""Test for Account Creation from a white labeled Micro-Sites"""
def setUp(self):
......
......@@ -15,6 +15,7 @@ from edxmako.tests import mako_middleware_process_request
from external_auth.models import ExternalAuthMap
from student.views import create_account
@patch.dict("django.conf.settings.FEATURES", {'ENFORCE_PASSWORD_POLICY': True})
class TestPasswordPolicy(TestCase):
"""
......
......@@ -6,6 +6,7 @@ import re
import urlparse
from .http import StubHttpRequestHandler, StubHttpService
class StubCommentsServiceHandler(StubHttpRequestHandler):
@property
......
......@@ -21,6 +21,7 @@ import mock
import requests
from http import StubHttpRequestHandler, StubHttpService
class StubLtiHandler(StubHttpRequestHandler):
"""
A handler for LTI POST and GET requests.
......
......@@ -7,6 +7,7 @@ import urllib2
import requests
from terrain.stubs.lti import StubLtiService
class StubLtiServiceTest(unittest.TestCase):
"""
A stub of the LTI provider that listens on a local
......
......@@ -9,6 +9,7 @@ import os
from logging import getLogger
LOGGER = getLogger(__name__)
class VideoSourceRequestHandler(SimpleHTTPRequestHandler):
"""
Request handler for serving video sources locally.
......
......@@ -5,6 +5,7 @@ from student.tests.factories import UserFactory
from user_api.models import UserPreference, UserCourseTag
from opaque_keys.edx.locations import SlashSeparatedCourseKey
# Factories don't have __init__ methods, and are self documenting
# pylint: disable=W0232, C0111
class UserPreferenceFactory(DjangoModelFactory):
......
......@@ -4,6 +4,7 @@ which can be used for rate limiting
"""
from ratelimitbackend.backends import RateLimitMixin
class BadRequestRateLimiter(RateLimitMixin):
"""
Use the 3rd party RateLimitMixin to help do rate limiting on the Password Reset flows
......
......@@ -2,6 +2,7 @@
Utilities for string manipulation.
"""
def str_to_bool(str):
"""
Converts "true" (case-insensitive) to the boolean True.
......
......@@ -5,6 +5,7 @@ Tests for string_utils.py
from django.test import TestCase
from util.string_utils import str_to_bool
class StringUtilsTest(TestCase):
"""
Tests for str_to_bool.
......
......@@ -14,6 +14,7 @@ from pyparsing import ParseException
# See http://docs.scipy.org/doc/numpy/reference/generated/numpy.seterr.html
numpy.seterr(all='ignore') # Also: 'ignore', 'warn' (default), 'raise'
class EvaluatorTest(unittest.TestCase):
"""
Run tests for calc.evaluator
......
"""A registry for finding classes based on tags in the class."""
class TagRegistry(object):
"""
A registry mapping tags to handlers.
......
......@@ -7,6 +7,7 @@ in the public domain.
import sys
class LazyModule(object):
"""A lazy module proxy."""
......
......@@ -11,6 +11,7 @@ from mako.template import Template as MakoTemplate
from mako import exceptions
from capa.inputtypes import Status
class TemplateError(Exception):
"""
Error occurred while rendering a Mako template.
......@@ -497,6 +498,7 @@ class FormulaEquationInputTemplateTest(TemplateTestCase):
self.assert_has_xpath(xml, "//input[@size='40']", self.context)
class AnnotationInputTemplateTest(TemplateTestCase):
"""
Test mako template for `<annotationinput>` input.
......
......@@ -5,6 +5,7 @@ Automatic execution of startup modules in Django apps.
from importlib import import_module
from django.conf import settings
def autostartup():
"""
Execute app.startup:run() for all installed django apps
......
from unittest import TestCase
from .symmath_check import symmath_check
class SymmathCheckTest(TestCase):
def test_symmath_check_integers(self):
number_list = [i for i in range(-100, 100)]
......
......@@ -5,12 +5,14 @@ import os.path
import shutil
import tempfile
def mkdtemp_clean(suffix="", prefix="tmp", dir=None):
"""Just like mkdtemp, but the directory will be deleted when the process ends."""
the_dir = tempfile.mkdtemp(suffix=suffix, prefix=prefix, dir=dir)
atexit.register(cleanup_tempdir, the_dir)
return the_dir
def cleanup_tempdir(the_dir):
"""Called on process exit to remove a temp directory."""
if os.path.exists(the_dir):
......
......@@ -7,6 +7,7 @@ from urlparse import urlparse
from os.path import splitext, basename
from HTMLParser import HTMLParser
def get_instructions(xmltree):
""" Removes <instructions> from the xmltree and returns them as a string, otherwise None. """
instructions = xmltree.find('instructions')
......
......@@ -28,6 +28,7 @@ CATALOG_VISIBILITY_CATALOG_AND_ABOUT = "both"
CATALOG_VISIBILITY_ABOUT = "about"
CATALOG_VISIBILITY_NONE = "none"
class StringOrDate(Date):
def from_json(self, value):
"""
......@@ -589,6 +590,7 @@ class CourseFields(object):
{"display_name": _("None"), "value": CATALOG_VISIBILITY_NONE}]
)
class CourseDescriptor(CourseFields, SequenceDescriptor):
module_class = SequenceModule
......
......@@ -842,6 +842,7 @@ oauth_consumer_key="", oauth_signature="frVp4JuvT1mVXlxktiAUjQ7%2F1cw%3D"'}
return key, secret
return '', ''
class LTIDescriptor(LTIFields, MetadataOnlyEditingDescriptor, EmptyDataRawDescriptor):
"""
Descriptor for LTI Xmodule.
......
......@@ -2690,6 +2690,7 @@ class SplitMongoModuleStore(SplitBulkWriteMixin, ModuleStoreWriteBase):
"""
self.db_connection.ensure_indexes()
class SparseList(list):
"""
Enable inserting items into a list in arbitrary order and then retrieving them.
......
......@@ -8,6 +8,7 @@ from opaque_keys.edx.keys import UsageKey
# Factories don't have __init__ methods, and are self documenting
# pylint: disable=W0232, C0111
class SplitFactory(factory.Factory):
"""
Abstracted superclass which defines modulestore so that there's no dependency on django
......
......@@ -12,6 +12,7 @@ from xmodule.modulestore.modulestore_settings import (
get_mixed_stores,
)
@ddt.ddt
class ModuleStoreSettingsMigration(TestCase):
"""
......
......@@ -390,6 +390,7 @@ def _import_static_content_wrapper(static_content_store, do_import_static, cours
dest_course_id, subpath=simport, verbose=verbose
)
def _import_module_and_update_references(
module, store, user_id,
source_course_id, dest_course_id,
......
......@@ -168,6 +168,7 @@ class MockControllerQueryService(object):
"""
pass
def convert_seconds_to_human_readable(seconds):
if seconds < 60:
human_string = "{0} seconds".format(seconds)
......
......@@ -357,6 +357,7 @@ class SplitTestModule(SplitTestFields, XModule, StudioEditableModule):
"""
return self.descriptor.validate()
@XBlock.needs('user_tags') # pylint: disable=abstract-method
@XBlock.wants('partitions')
@XBlock.wants('user')
......
......@@ -225,6 +225,7 @@ class StaffTab(AuthenticatedCourseTab):
def can_display(self, course, settings, is_user_authenticated, is_user_staff, is_user_enrolled): # pylint: disable=unused-argument
return is_user_staff
class EnrolledOrStaffTab(CourseTab):
"""
Abstract class for tabs that can be accessed by only users with staff access
......
......@@ -40,6 +40,7 @@ import lxml.etree
from singledispatch import singledispatch
@singledispatch
def assert_student_view_valid_html(block, html):
"""
......
import ddt
from xmodule.tests import BulkAssertionTest
@ddt.ddt
class TestBulkAssertionTestCase(BulkAssertionTest):
......
......@@ -142,6 +142,7 @@ class CapaFactory(object):
return module
class CapaFactoryWithFiles(CapaFactory):
"""
A factory for creating a Capa problem with files attached.
......
......@@ -44,6 +44,7 @@ Various versions have evolved over the years, sometimes by accident, sometimes o
injected humour and the like).
"""
class Content:
def __init__(self, location, content_type):
self.location = location
......
......@@ -3,6 +3,7 @@ from xmodule.util.django import get_current_request, get_current_request_hostnam
from nose.tools import assert_is_none
from unittest import TestCase
class UtilDjangoTests(TestCase):
"""
Tests for methods exposed in util/django
......
......@@ -2,6 +2,7 @@ import logging
from xmodule.fields import Timedelta
log = logging.getLogger(__name__)
class TimeInfo(object):
"""
This is a simple object that calculates and stores datetime information for an XModule
......
......@@ -75,6 +75,7 @@ def save_to_store(content, name, mime_type, location):
contentstore().save(content)
return content_location
def save_subs_to_store(subs, subs_id, item, language='en'):
"""
Save transcripts into `StaticContent`.
......@@ -90,6 +91,7 @@ def save_subs_to_store(subs, subs_id, item, language='en'):
filename = subs_filename(subs_id, language)
return save_to_store(filedata, filename, 'application/json', item.location)
def get_transcripts_from_youtube(youtube_id, settings, i18n):
"""
Gets transcripts from youtube for youtube_id.
......@@ -428,6 +430,7 @@ def get_or_create_sjson(item):
sjson_transcript = Transcript.asset(item.location, source_subs_id, item.transcript_language).data
return sjson_transcript
class Transcript(object):
"""
Container for transcript methods.
......
......@@ -42,6 +42,7 @@ class Thread(ContentFactory):
pinned = False
read = False
class Comment(ContentFactory):
thread_id = None
depth = 0
......
......@@ -307,6 +307,7 @@ class CourseOutlineChild(PageObject, CourseOutlineItem):
grand_locators = [grandkid.locator for grandkid in grandkids]
return [descendant for descendant in descendants if not descendant.locator in grand_locators]
class CourseOutlineUnit(CourseOutlineChild):
"""
PageObject that wraps a unit link on the Studio Course Outline page.
......@@ -329,6 +330,7 @@ class CourseOutlineUnit(CourseOutlineChild):
return self.q(css=self._bounded_selector(self.BODY_SELECTOR)).map(
lambda el: CourseOutlineUnit(self.browser, el.get_attribute('data-locator'))).results
class CourseOutlineSubsection(CourseOutlineContainer, CourseOutlineChild):
"""
:class`.PageObject` that wraps a subsection block on the Studio Course Outline page.
......
......@@ -6,6 +6,7 @@ from ..pages.studio.auto_auth import AutoAuthPage
from ..pages.studio.overview import CourseOutlinePage
from nose.plugins.attrib import attr
@attr(har_mode='explicit')
class StudioPagePerformanceTest(WebAppTest):
"""
......
def seventeen():
return 17
def fortytwo(x):
return 42+x
......@@ -83,6 +83,7 @@ copyright = u'2014, edX'
# Mock all the modules that the readthedocs build can't import
class Mock(object):
def __init__(self, *args, **kwargs):
pass
......
......@@ -74,6 +74,7 @@ copyright = u'2014, edX'
# Mock all the modules that the readthedocs build can't import
class Mock(object):
def __init__(self, *args, **kwargs):
pass
......
......@@ -25,6 +25,7 @@ import sys, os
BASEDIR = os.path.dirname(os.path.abspath(__file__))
def add_base(paths):
"""
Returns a list of paths relative to BASEDIR.
......
......@@ -259,6 +259,7 @@ def get_course_info_section_module(request, course, section_key):
static_asset_path=course.static_asset_path
)
def get_course_info_section(request, course, section_key):
"""
This returns the snippet of html to be rendered on the course info page,
......
......@@ -41,6 +41,7 @@ def course_url_event_is_emitted(_step, url_regex):
event_type = url_regex.format(world.scenario_dict['COURSE'].id)
n_events_are_emitted(_step, 1, event_type, "server")
@step(r'([aA]n?|\d+) "(.*)" (server|browser) events? is emitted$')
def n_events_are_emitted(_step, count, event_type, event_source):
......
......@@ -26,6 +26,7 @@ DEFAULT_DATA = """\
</configuration>
"""
@steps
class GraphicalSliderToolSteps(object):
COURSE_NUM = 'test_course'
......
......@@ -140,6 +140,7 @@ def answer_distributions(course_key):
return answer_counts
@transaction.commit_manually
def grade(student, request, course, keep_raw_scores=False):
"""
......
......@@ -7,6 +7,7 @@ from django.core.urlresolvers import reverse
from courseware.courses import UserNotEnrolled
class RedirectUnenrolledMiddleware(object):
"""
Catch UserNotEnrolled errors thrown by `get_course_with_access` and redirect
......
......@@ -72,6 +72,7 @@ XQUEUE_INTERFACE = XQueueInterface(
# Some brave person should make the variable names consistently someday, but the code's
# coupled enough that it's kind of tricky--you've been warned!
class LmsModuleRenderError(Exception):
"""
An exception class for exceptions thrown by module_render that don't fit well elsewhere
......
......@@ -18,6 +18,7 @@ from xmodule.course_module import (
# pylint: disable=C0111
# pylint: disable=W0212
class AccessTestCase(TestCase):
"""
Tests for the various access controls on the student dashboard
......
......@@ -14,6 +14,7 @@ from courseware.tests.modulestore_config import TEST_DATA_MIXED_MODULESTORE
from xmodule.course_module import (
CATALOG_VISIBILITY_CATALOG_AND_ABOUT, CATALOG_VISIBILITY_NONE)
@override_settings(MODULESTORE=TEST_DATA_MIXED_MODULESTORE)
class TestMicrosites(ModuleStoreTestCase, LoginEnrollmentTestCase):
"""
......
......@@ -838,6 +838,7 @@ def mktg_course_about(request, course_id):
if force_english:
translation.deactivate()
@login_required
@cache_control(no_cache=True, no_store=True, must_revalidate=True)
@transaction.commit_manually
......
......@@ -51,6 +51,7 @@ class GitImportError(Exception):
CANNOT_BRANCH = _('Unable to switch to specified branch. Please check '
'your branch name.')
def cmd_log(cmd, cwd):
"""
Helper function to redirect stderr to stdout and log the command
......
......@@ -14,6 +14,7 @@ from xmodule.modulestore.xml import XMLModuleStore
log = logging.getLogger(__name__)
class Command(BaseCommand):
"""
Pull a git repo and import into the mongo based content database.
......
......@@ -569,6 +569,7 @@ class ForumFormDiscussionGroupIdTestCase(CohortedContentTestCase, CohortedTopicG
response, lambda d: d['discussion_data'][0]
)
@patch('lms.lib.comment_client.utils.requests.request')
class UserProfileDiscussionGroupIdTestCase(CohortedContentTestCase, CohortedTopicGroupIdTestMixin):
cs_endpoint = "/active_threads"
......
......@@ -3,6 +3,7 @@ import re
from course_groups.models import CourseUserGroup
class GroupIdAssertionMixin(object):
def _data_or_params_cs_request(self, mock_request):
"""
......
# coding=utf-8
class UnicodeTestMixin(object):
def test_ascii(self):
self._test_unicode_data(u"This post contains ASCII.")
......
......@@ -9,6 +9,7 @@ from student.tests.factories import CourseEnrollmentFactory, UserFactory
from xmodule.modulestore.tests.factories import CourseFactory
from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase
@override_settings(MODULESTORE=TEST_DATA_MIXED_MODULESTORE)
class CohortedContentTestCase(ModuleStoreTestCase):
"""
......
......@@ -112,6 +112,7 @@ def post_submission_for_student(student, course, location, task_number, dry_run=
return False
class DummyRequest(object):
"""Dummy request"""
......
......@@ -16,6 +16,7 @@ from django.contrib.auth.models import User
from instructor.utils import DummyRequest
class MyEncoder(JSONEncoder):
def _iterencode(self, obj, markers=None):
......
......@@ -1431,6 +1431,7 @@ def get_student_grade_summary_data(request, course, get_grades=True, get_raw_sco
#-----------------------------------------------------------------------------
# enrollment
def _do_enroll_students(course, course_key, students, secure=False, overload=False, auto_enroll=False, email_students=False, is_shib_course=False):
"""
Do the actual work of enrolling multiple students, presented as a string
......
......@@ -8,6 +8,7 @@ a task.
from django.contrib import admin
from .models import InstructorTask
class InstructorTaskAdmin(admin.ModelAdmin):
list_display = [
'task_id',
......
......@@ -132,6 +132,7 @@ def ajax_disable(request):
return HttpResponse(status=204)
@require_GET
def ajax_status(request):
"""
......
......@@ -278,6 +278,7 @@ def get_next(request, course_id):
return HttpResponse(json.dumps(_get_next(course_key, grader_id, location)),
mimetype="application/json")
def get_problem_list(request, course_id):
"""
Get all the problems for the given course id
......
......@@ -4,6 +4,7 @@ Exceptions for the shoppingcart app
# (Exception Class Names are sort of self-explanatory, so skipping docstring requirement)
# pylint: disable=C0111
class PaymentException(Exception):
pass
......
......@@ -16,5 +16,6 @@ class CCProcessorDataException(CCProcessorException):
class CCProcessorWrongAmountException(CCProcessorException):
pass
class CCProcessorUserCancelled(CCProcessorException):
pass
......@@ -37,6 +37,7 @@ from opaque_keys.edx.locator import CourseLocator
# that disables the XML modulestore.
MODULESTORE_CONFIG = mixed_store_config(settings.COMMON_TEST_DATA_ROOT, {}, include_xml=False)
@override_settings(MODULESTORE=MODULESTORE_CONFIG)
class OrderTest(ModuleStoreTestCase):
def setUp(self):
......
......@@ -196,6 +196,7 @@ def remove_item(request):
return HttpResponse('OK')
def remove_code_redemption(order_item_course_id, item_id, item, user):
"""
If an item removed from shopping cart then we will remove
......
......@@ -130,6 +130,7 @@ def pdf_index(request, course_id, book_index, chapter=None, page=None):
},
)
@login_required
def html_index(request, course_id, book_index, chapter=None):
"""
......
......@@ -7,6 +7,7 @@ from verify_student.ssencrypt import (
rsa_decrypt, rsa_encrypt, random_aes_key
)
def test_aes():
key_str = "32fe72aaf2abb44de9e161131b5435c8d37cbdb6f5df242ae860b283115f2dae"
key = key_str.decode("hex")
......@@ -28,6 +29,7 @@ def test_aes():
assert_roundtrip("")
assert_roundtrip("\xe9\xe1a\x13\x1bT5\xc8") # Random, non-ASCII text
def test_rsa():
# Make up some garbage keys for testing purposes.
pub_key_str = """-----BEGIN PUBLIC KEY-----
......
......@@ -21,6 +21,7 @@ import importlib
from argparse import ArgumentParser
import contracts
def parse_args():
"""Parse edx specific arguments to manage.py"""
parser = ArgumentParser()
......
......@@ -12,6 +12,7 @@ except ImportError:
__test__ = False # do not collect
@task
@needs(
'pavelib.prereqs.install_prereqs',
......
......@@ -168,6 +168,7 @@ def i18n_ltr():
sh('git add conf/locale')
sh('git commit --amend')
@task
@needs(
"pavelib.i18n.i18n_transifex_pull",
......
......@@ -8,6 +8,7 @@ import pavelib.quality
import paver.easy
from paver.easy import BuildFailure
@ddt
class TestPaverQualityViolations(unittest.TestCase):
......
......@@ -65,6 +65,7 @@ def run_pylint(options):
raise Exception("Failed. Too many pylint violations. "
"The limit is {violations_limit}.".format(violations_limit=violations_limit))
def _count_pylint_violations(report_file):
"""
Parses a pylint report line-by-line and determines the number of violations reported
......@@ -83,6 +84,7 @@ def _count_pylint_violations(report_file):
num_violations_report += 1
return num_violations_report
@task
@needs('pavelib.prereqs.install_python_prereqs')
@cmdopts([
......@@ -113,10 +115,12 @@ def run_pep8(options):
raise Exception("Failed. Too many pep8 violations. "
"The limit is {violations_limit}.".format(violations_limit=violations_limit))
def _count_pep8_violations(report_file):
num_lines = sum(1 for line in open(report_file))
return num_lines
@task
@needs('pavelib.prereqs.install_python_prereqs')
@cmdopts([
......
......@@ -9,6 +9,7 @@ from lazy import lazy
from path import path
import memcache
class Env(object):
"""
Load information about the execution environment.
......
......@@ -54,6 +54,7 @@ def clean_mongo():
repo_root=Env.REPO_ROOT,
))
def check_firefox_version():
"""
Check that firefox is the correct version.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment