Merge pull request #19395 from edx/jmbowman/TE-2812
TE-2812 Better output when print_setting fails
This commit is contained in:
@@ -42,9 +42,9 @@ EXPECTED_INDEX_COURSE_COMMAND = (
|
||||
u"python manage.py {system} --settings={settings} reindex_course --setup"
|
||||
)
|
||||
EXPECTED_PRINT_SETTINGS_COMMAND = [
|
||||
u"python manage.py lms --settings={settings} print_setting STATIC_ROOT 2>/dev/null",
|
||||
u"python manage.py cms --settings={settings} print_setting STATIC_ROOT 2>/dev/null",
|
||||
u"python manage.py lms --settings={settings} print_setting WEBPACK_CONFIG_PATH 2>/dev/null"
|
||||
u"python manage.py lms --settings={settings} print_setting STATIC_ROOT 2>{log_file}",
|
||||
u"python manage.py cms --settings={settings} print_setting STATIC_ROOT 2>{log_file}",
|
||||
u"python manage.py lms --settings={settings} print_setting WEBPACK_CONFIG_PATH 2>{log_file}"
|
||||
]
|
||||
EXPECTED_WEBPACK_COMMAND = (
|
||||
u"NODE_ENV={node_env} STATIC_ROOT_LMS={static_root_lms} STATIC_ROOT_CMS={static_root_cms} "
|
||||
@@ -243,7 +243,8 @@ class TestPaverServerTasks(PaverTestCase):
|
||||
expected_messages.append(u"xmodule_assets common/static/xmodule")
|
||||
expected_messages.append(u"install npm_assets")
|
||||
expected_messages.extend(
|
||||
[c.format(settings=expected_asset_settings) for c in EXPECTED_PRINT_SETTINGS_COMMAND]
|
||||
[c.format(settings=expected_asset_settings,
|
||||
log_file=Env.PRINT_SETTINGS_LOG_FILE) for c in EXPECTED_PRINT_SETTINGS_COMMAND]
|
||||
)
|
||||
expected_messages.append(EXPECTED_WEBPACK_COMMAND.format(
|
||||
node_env="production",
|
||||
@@ -288,7 +289,8 @@ class TestPaverServerTasks(PaverTestCase):
|
||||
expected_messages.append(u"xmodule_assets common/static/xmodule")
|
||||
expected_messages.append(u"install npm_assets")
|
||||
expected_messages.extend(
|
||||
[c.format(settings=expected_asset_settings) for c in EXPECTED_PRINT_SETTINGS_COMMAND]
|
||||
[c.format(settings=expected_asset_settings,
|
||||
log_file=Env.PRINT_SETTINGS_LOG_FILE) for c in EXPECTED_PRINT_SETTINGS_COMMAND]
|
||||
)
|
||||
expected_messages.append(EXPECTED_WEBPACK_COMMAND.format(
|
||||
node_env="production",
|
||||
|
||||
@@ -3,6 +3,7 @@ Helper functions for loading environment settings.
|
||||
"""
|
||||
from __future__ import print_function
|
||||
|
||||
import io
|
||||
import json
|
||||
import os
|
||||
import sys
|
||||
@@ -11,7 +12,7 @@ from time import sleep
|
||||
import memcache
|
||||
from lazy import lazy
|
||||
from path import Path as path
|
||||
from paver.easy import sh
|
||||
from paver.easy import BuildFailure, sh
|
||||
from six.moves import configparser
|
||||
|
||||
from pavelib.utils.cmd import django_cmd
|
||||
@@ -95,6 +96,8 @@ class Env(object):
|
||||
# Directory that videos are served from
|
||||
VIDEO_SOURCE_DIR = REPO_ROOT / "test_root" / "data" / "video"
|
||||
|
||||
PRINT_SETTINGS_LOG_FILE = BOK_CHOY_LOG_DIR / "print_settings.log"
|
||||
|
||||
# Detect if in a Docker container, and if so which one
|
||||
SERVER_HOST = os.environ.get('BOK_CHOY_HOSTNAME', '0.0.0.0')
|
||||
USING_DOCKER = SERVER_HOST != '0.0.0.0'
|
||||
@@ -240,17 +243,27 @@ class Env(object):
|
||||
"""
|
||||
if not settings:
|
||||
settings = os.environ.get("EDX_PLATFORM_SETTINGS", "aws")
|
||||
value = sh(
|
||||
django_cmd(
|
||||
system,
|
||||
settings,
|
||||
"print_setting {django_setting} 2>/dev/null".format(
|
||||
django_setting=django_setting
|
||||
)
|
||||
),
|
||||
capture=True
|
||||
)
|
||||
return unicode(value).strip()
|
||||
log_dir = os.path.dirname(cls.PRINT_SETTINGS_LOG_FILE)
|
||||
if not os.path.exists(log_dir):
|
||||
os.makedirs(log_dir)
|
||||
try:
|
||||
value = sh(
|
||||
django_cmd(
|
||||
system,
|
||||
settings,
|
||||
"print_setting {django_setting} 2>{log_file}".format(
|
||||
django_setting=django_setting,
|
||||
log_file=cls.PRINT_SETTINGS_LOG_FILE
|
||||
)
|
||||
),
|
||||
capture=True
|
||||
)
|
||||
return unicode(value).strip()
|
||||
except BuildFailure:
|
||||
print("Unable to print the value of the {} setting:".format(django_setting))
|
||||
with io.open(cls.PRINT_SETTINGS_LOG_FILE, 'r') as f:
|
||||
print(f.read())
|
||||
sys.exit(1)
|
||||
|
||||
@classmethod
|
||||
def covered_modules(cls):
|
||||
|
||||
Reference in New Issue
Block a user