
* #39 Add Flask-Migrate dep * #39 Make it such that flask db init can run https://github.com/miguelgrinberg/Flask-Migrate/issues/196#issuecomment-381343393 * Run flask db init, update migrations.env, commit artifacts * Set up a script such that you can `docker-compose exec files bash -c 'cd /service; FLASK_APP="files/cli:app" flask '` and have it do whatever flask thing you want * Fix circular dependency * import * is evil * Initial alembic migration, has issues with constraints and nullable columns * Bring alts table up to date with alembic autogenerate * Rerun flask db revision autogenerate * Bring award_relationships table up to date with alembic autogenerate * [#39/alembic] files/classes/__init__.py is evil but is at least explicitly evil now * #39 fix model in files/classes/badges.py * #39 fix model in files/classes/domains.py and files/classes/clients.py * #39 fix models: comment saves, comment flags * #39 fix models: comments * Few more imports * #39 columns that are not nullable should be flagged as not nullable * #39 Add missing indexes to model defs * [#39] add missing unique constraints to model defs * [#39] Temporarily undo any model changes which cause the sqlalchemy model to be out of sync with the actual dump * #39 Deforeignkeyify the correct column to make alembic happy * #39 flask db revision --autogenerate now creates an empty migration * #39 Migration format such that files are listed in creation order * #39 Better first revision * #39 Revert the model changes that were required to get to zero differences between db revision --autogenerate and the existing schema * #39 The first real migration * #39 Ensure that foreign key constraints are named in migration * #39 Alembic migrations for FK constraints, column defs * [#39] Run DB migrations before starting tests * [#39] New test to ensure migrations are up to date * [#39] More descriptive test failure message * Add -T flag to docker-compose exec * [#39] Run alembic migrations when starting the container
57 lines
1.3 KiB
Python
Executable file
57 lines
1.3 KiB
Python
Executable file
#!/usr/bin/python3
|
|
|
|
import subprocess
|
|
import sys
|
|
|
|
# we want to leave the container in whatever state it currently is, so check to see if it's running
|
|
docker_inspect = subprocess.run([
|
|
"docker",
|
|
"container",
|
|
"inspect",
|
|
"-f", "{{.State.Status}}",
|
|
"themotte",
|
|
],
|
|
capture_output = True,
|
|
).stdout.decode("utf-8").strip()
|
|
|
|
was_running = docker_inspect == "running"
|
|
|
|
# update containers, just in case they're out of date
|
|
if was_running:
|
|
print("Updating containers . . .")
|
|
else:
|
|
print("Starting containers . . .")
|
|
subprocess.run([
|
|
"docker-compose",
|
|
"up",
|
|
"--build",
|
|
"-d",
|
|
],
|
|
check = True,
|
|
)
|
|
|
|
# run the test
|
|
print("Running test . . .")
|
|
result = subprocess.run([
|
|
"docker-compose",
|
|
"exec",
|
|
'-T',
|
|
"files",
|
|
"bash", "-c", ' && '.join([
|
|
"cd service",
|
|
"FLASK_APP=files/cli:app python3 -m flask db upgrade",
|
|
"python3 -m pytest -s",
|
|
])
|
|
])
|
|
|
|
if not was_running:
|
|
# shut down, if we weren't running in the first place
|
|
print("Shutting down containers . . .")
|
|
subprocess.run([
|
|
"docker-compose",
|
|
"stop",
|
|
],
|
|
check = True,
|
|
)
|
|
|
|
sys.exit(result.returncode)
|