Extreme measures
MODIFY
repo2docker/app.py
repo2docker/app.py
@@ -605,12 +605,24 @@ class Repo2Docker(Application):
try:
for line in container.logs(stream=True):
self.log.info(line.decode("utf-8"), extra=dict(phase="running"))
+
finally:
container.reload()
if container.status == "running":
self.log.info("Stopping container...\n", extra=dict(phase="running"))
container.kill()
exit_code = container.attrs["State"]["ExitCode"]
+
+ container.wait()
+
+ self.log.info(
+ "Container finished running.\n".upper(), extra=dict(phase="running")
+ )
+ # are there more logs? Let's send them back too
+ late_logs = container.logs().decode("utf-8")
+ for line in late_logs.split("\n"):
+ self.log.info(line + "\n", extra=dict(phase="running"))
+
container.remove()
if exit_code:
sys.exit(exit_code)

MODIFY
repo2docker/buildpacks/repo2docker-entrypoint
repo2docker/buildpacks/repo2docker-entrypoint
@@ -15,10 +15,10 @@ if [[ ! -z "${R2D_ENTRYPOINT:-}" ]]; then
if [[ ! -x "$R2D_ENTRYPOINT" ]]; then
chmod u+x "$R2D_ENTRYPOINT"
fi
- exec "$R2D_ENTRYPOINT" "$@" >&"$log_fd"
+ exec "$R2D_ENTRYPOINT" "$@" 2>&1 >&"$log_fd"
else
- exec "$@" >&"$log_fd"
+ exec "$@" 2>&1 >&"$log_fd"
fi
# Close the logging output again
-#exec {log_fd}>&-
+exec {log_fd}>&-

MODIFY
tests/unit/test_env.py
tests/unit/test_env.py
@@ -42,13 +42,15 @@ def test_env():
# value
"--env",
"SPAM_2=",
- "--",
+ # "--",
tmpdir,
"/bin/bash",
"-c",
# Docker exports all passed env variables, so we can
# just look at exported variables.
- "export",
+ "export; sleep 1",
+ # "export; echo TIMDONE",
+ # "export",
],
universal_newlines=True,
stdout=subprocess.PIPE,
@@ -61,6 +63,9 @@ def test_env():
# stdout should be empty
assert not result.stdout
+ print(result.stderr.split("\n"))
+ # assert False
+
# stderr should contain lines of output
declares = [x for x in result.stderr.split("\n") if x.startswith("declare")]
assert 'declare -x FOO="{}"'.format(ts) in declares

Extreme measures