-
Notifications
You must be signed in to change notification settings - Fork 85
/
Makefile
148 lines (117 loc) · 6.56 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
.PHONY: help upgrade requirements clean quality requirements \
requirements-test coverage pii_check \
compile_translations dummy_translations extract_translations \
fake_translations test test-python \
test-js quality-python quality-js
.DEFAULT_GOAL := help
define BROWSER_PYSCRIPT
import os, webbrowser, sys
try:
from urllib import pathname2url
except:
from urllib.request import pathname2url
webbrowser.open("file://" + pathname2url(os.path.abspath(sys.argv[1])))
endef
export BROWSER_PYSCRIPT
BROWSER := python -c "$$BROWSER_PYSCRIPT"
help: ## display this help message
@echo "Please use \`make <target>' where <target> is one of"
@perl -nle'print $& if m{^[a-zA-Z_-]+:.*?## .*$$}' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m %-25s\033[0m %s\n", $$1, $$2}'
clean: ## remove generated byte code, coverage reports, and build artifacts
find . -name '*.pyc' -o -name '*.pyo' -o -name '*~' -delete
rm -fr build/ dist/ *.egg-info
rm -rf pii_report
define COMMON_CONSTRAINTS_TEMP_COMMENT
# This is a temporary solution to override the real common_constraints.txt\n# In edx-lint, until the pyjwt constraint in edx-lint has been removed.\n# See BOM-2721 for more details.\n# Below is the copied and edited version of common_constraints\n
endef
COMMON_CONSTRAINTS_TXT=requirements/common_constraints.txt
.PHONY: $(COMMON_CONSTRAINTS_TXT)
$(COMMON_CONSTRAINTS_TXT):
wget -O "$(@)" https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt || touch "$(@)"
echo "$(COMMON_CONSTRAINTS_TEMP_COMMENT)" | cat - $(@) > temp && mv temp $(@)
upgrade: export CUSTOM_COMPILE_COMMAND=make upgrade
upgrade: $(COMMON_CONSTRAINTS_TXT) ## update the requirements/*.txt files with the latest packages satisfying requirements/*.in
# This is a temporary solution to override the real common_constraints.txt
# In edx-lint, until the pyjwt constraint in edx-lint has been removed.
# See BOM-271 for more details.
sed 's/pyjwt\[crypto\]<2.0.0//g' requirements/common_constraints.txt > requirements/common_constraints.tmp
mv requirements/common_constraints.tmp requirements/common_constraints.txt
sed 's/edx-drf-extensions<7.0.0//g' requirements/common_constraints.txt > requirements/common_constraints.tmp
mv requirements/common_constraints.tmp requirements/common_constraints.txt
sed 's/django-simple-history==3.0.0//g' requirements/common_constraints.txt > requirements/common_constraints.tmp
mv requirements/common_constraints.tmp requirements/common_constraints.txt
pip install -qr requirements/pip-tools.txt
pip-compile --allow-unsafe --rebuild --upgrade -o requirements/pip.txt requirements/pip.in
pip-compile --rebuild --upgrade -o requirements/pip-tools.txt requirements/pip-tools.in
pip install -qr requirements/pip.txt
pip install -qr requirements/pip-tools.txt
pip-compile --rebuild --upgrade -o requirements/base.txt requirements/base.in
pip-compile --rebuild --upgrade -o requirements/ci.txt requirements/ci.in
pip-compile --rebuild --upgrade -o requirements/dev.txt requirements/dev.in
pip-compile --rebuild --upgrade -o requirements/pip.txt requirements/pip.in
pip-compile --rebuild --upgrade -o requirements/quality.txt requirements/quality.in
pip-compile --rebuild --upgrade -o requirements/test.txt requirements/test.in
# Let tox control the Django and djangorestframework versions for tests
grep -e "^amqp==\|^anyjson==\|^billiard==\|^celery==\|^kombu==\|^click-didyoumean==\|^click-repl==\|^click==\|^prompt-toolkit==\|^vine==" requirements/base.txt > requirements/celery50.txt
sed -i.tmp '/^[d|D]jango==/d' requirements/test.txt
sed -i.tmp '/^djangorestframework==/d' requirements/test.txt
sed -i.tmp '/^amqp==/d' requirements/test.txt
sed -i.tmp '/^anyjson==/d' requirements/test.txt
sed -i.tmp '/^billiard==/d' requirements/test.txt
sed -i.tmp '/^celery==/d' requirements/test.txt
sed -i.tmp '/^kombu==/d' requirements/test.txt
sed -i.tmp '/^click-didyoumean==/d' requirements/test.txt
sed -i.tmp '/^click-repl==/d' requirements/test.txt
sed -i.tmp '/^click==/d' requirements/test.txt
sed -i.tmp '/^click==/d' requirements/test.txt
sed -i.tmp '/^prompt-toolkit==/d' requirements/test.txt
sed -i.tmp '/^vine==/d' requirements/test.txt
rm requirements/test.txt.tmp
requirements: ## install development environment requirements
pip install -qr requirements/dev.txt --exists-action w
pip-sync requirements/dev.txt requirements/base.txt requirements/private.*
requirements-test: ## install requirements for running tests
npm install -g gulp-cli
pip install -qr requirements/test.txt --exists-action w
install: requirements
./manage.py migrate --settings=test_settings
npm install
coverage: clean ## generate and view HTML coverage report
py.test --cov=edx_proctoring --cov-report html --ds=test_settings
$(BROWSER) htmlcov/index.html
pii_check: ## check for PII annotations on all Django models
DJANGO_SETTINGS_MODULE=test_settings \
code_annotations django_find_annotations --config_file .pii_annotations.yml --lint --report --coverage
quality-js: lint-js
quality-python: ## Run python linters
tox -e quality
quality-rst: ## validate rst files
rstcheck -r --report-level warning .
quality: quality-js quality-python quality-rst ## Run linters
test-python: clean ## run tests in the current virtualenv
pip install -e .
py.test --cov=edx_proctoring --cov-report=html --ds=test_settings -n 3
test-js:
gulp test
lint-js:
./node_modules/.bin/eslint --ignore-pattern 'edx_proctoring/static/index.js' --ext .js --ext .jsx .
./node_modules/.bin/eslint --config .eslintrc.worker.json 'edx_proctoring/static/index.js'
diff_cover: test
diff-cover coverage.xml
## Localization targets
extract_translations: ## extract strings to be translated, outputting .po files
cd edx_proctoring && django-admin makemessages -l en -v1 -d django
cd edx_proctoring && django-admin makemessages -l en -v1 -d djangojs
compile_translations: ## compile translation files, outputting .mo files for each supported language
cd edx_proctoring && django-admin compilemessages
detect_changed_source_translations:
cd edx_proctoring && i18n_tool changed
validate_translations: ## Test translation files
cd edx_proctoring && i18n_tool validate -v
dummy_translations: ## generate dummy translation (.po) files
cd edx_proctoring && i18n_tool dummy
install-js: ## install JavaScript dependencies
npm install
build_dummy_translations: extract_translations dummy_translations compile_translations ## generate and compile dummy translation files
check_translations_up_to_date: build_dummy_translations detect_changed_source_translations ## validate translations
test: test-python test-js ## run tests