From 78d4e1e1e9087dd5e5049134dbb684822188919e Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sat, 4 Feb 2023 15:12:06 +0100 Subject: [PATCH] Easier to read --- test/commands/app_test.rb | 68 ++++++++++++++++++++++----------------- 1 file changed, 38 insertions(+), 30 deletions(-) diff --git a/test/commands/app_test.rb b/test/commands/app_test.rb index f1fd211c..d6a398e0 100644 --- a/test/commands/app_test.rb +++ b/test/commands/app_test.rb @@ -14,14 +14,16 @@ class CommandsAppTest < ActiveSupport::TestCase test "run" do assert_equal \ - [:docker, :run, "-d", "--restart unless-stopped", "--name", "app-999", "-e", "RAILS_MASTER_KEY=456", "--label", "service=app", "--label", "role=web", "--label", "traefik.http.routers.app.rule='PathPrefix(`/`)'", "--label", "traefik.http.services.app.loadbalancer.healthcheck.path=/up", "--label", "traefik.http.services.app.loadbalancer.healthcheck.interval=1s", "--label", "traefik.http.middlewares.app.retry.attempts=3", "--label", "traefik.http.middlewares.app.retry.initialinterval=500ms", "dhh/app:999"], @app.run + "docker run -d --restart unless-stopped --name app-999 -e RAILS_MASTER_KEY=456 --label service=app --label role=web --label traefik.http.routers.app.rule='PathPrefix(`/`)' --label traefik.http.services.app.loadbalancer.healthcheck.path=/up --label traefik.http.services.app.loadbalancer.healthcheck.interval=1s --label traefik.http.middlewares.app.retry.attempts=3 --label traefik.http.middlewares.app.retry.initialinterval=500ms dhh/app:999", + @app.run.join(" ") end test "run with volumes" do @config[:volumes] = ["/local/path:/container/path" ] assert_equal \ - [:docker, :run, "-d", "--restart unless-stopped", "--name", "app-999", "-e", "RAILS_MASTER_KEY=456", "--volume", "/local/path:/container/path", "--label", "service=app", "--label", "role=web", "--label", "traefik.http.routers.app.rule='PathPrefix(`/`)'", "--label", "traefik.http.services.app.loadbalancer.healthcheck.path=/up", "--label", "traefik.http.services.app.loadbalancer.healthcheck.interval=1s", "--label", "traefik.http.middlewares.app.retry.attempts=3", "--label", "traefik.http.middlewares.app.retry.initialinterval=500ms", "dhh/app:999"], @app.run + "docker run -d --restart unless-stopped --name app-999 -e RAILS_MASTER_KEY=456 --volume /local/path:/container/path --label service=app --label role=web --label traefik.http.routers.app.rule='PathPrefix(`/`)' --label traefik.http.services.app.loadbalancer.healthcheck.path=/up --label traefik.http.services.app.loadbalancer.healthcheck.interval=1s --label traefik.http.middlewares.app.retry.attempts=3 --label traefik.http.middlewares.app.retry.initialinterval=500ms dhh/app:999", + @app.run.join(" ") end test "run without master key" do @@ -33,47 +35,47 @@ class CommandsAppTest < ActiveSupport::TestCase test "start" do assert_equal \ - [ :docker, :start, "app-999" ], - @app.start + "docker start app-999", + @app.start.join(" ") end test "stop" do assert_equal \ - [ :docker, :ps, "-q", "--filter", "label=service=app", "|", :xargs, :docker, :stop ], - @app.stop + "docker ps -q --filter label=service=app | xargs docker stop", + @app.stop.join(" ") end test "info" do assert_equal \ - [ :docker, :ps, "--filter", "label=service=app" ], - @app.info + "docker ps --filter label=service=app", + @app.info.join(" ") end test "logs" do assert_equal \ - [ :docker, :ps, "-q", "--filter", "label=service=app", "|", "xargs docker logs 2>&1" ], - @app.logs + "docker ps -q --filter label=service=app | xargs docker logs 2>&1", + @app.logs.join(" ") assert_equal \ - [ :docker, :ps, "-q", "--filter", "label=service=app", "|", "xargs docker logs --since 5m 2>&1" ], - @app.logs(since: "5m") + "docker ps -q --filter label=service=app | xargs docker logs --since 5m 2>&1", + @app.logs(since: "5m").join(" ") assert_equal \ - [ :docker, :ps, "-q", "--filter", "label=service=app", "|", "xargs docker logs -n 100 2>&1" ], - @app.logs(lines: "100") + "docker ps -q --filter label=service=app | xargs docker logs -n 100 2>&1", + @app.logs(lines: "100").join(" ") assert_equal \ - [ :docker, :ps, "-q", "--filter", "label=service=app", "|", "xargs docker logs --since 5m -n 100 2>&1" ], - @app.logs(since: "5m", lines: "100") + "docker ps -q --filter label=service=app | xargs docker logs --since 5m -n 100 2>&1", + @app.logs(since: "5m", lines: "100").join(" ") assert_equal \ - [ :docker, :ps, "-q", "--filter", "label=service=app", "|", "xargs docker logs 2>&1", "|", "grep 'my-id'" ], - @app.logs(grep: "my-id") + "docker ps -q --filter label=service=app | xargs docker logs 2>&1 | grep 'my-id'", + @app.logs(grep: "my-id").join(" ") assert_equal \ - [ :docker, :ps, "-q", "--filter", "label=service=app", "|", "xargs docker logs --since 5m 2>&1", "|", "grep 'my-id'" ], - @app.logs(since: "5m", grep: "my-id") + "docker ps -q --filter label=service=app | xargs docker logs --since 5m 2>&1 | grep 'my-id'", + @app.logs(since: "5m", grep: "my-id").join(" ") end test "follow logs" do @@ -91,14 +93,14 @@ class CommandsAppTest < ActiveSupport::TestCase test "execute in new container" do assert_equal \ - [ :docker, :run, "--rm", "-e", "RAILS_MASTER_KEY=456", "dhh/app:999", "bin/rails", "db:setup" ], - @app.execute_in_new_container("bin/rails", "db:setup") + "docker run --rm -e RAILS_MASTER_KEY=456 dhh/app:999 bin/rails db:setup", + @app.execute_in_new_container("bin/rails", "db:setup").join(" ") end test "execute in existing container" do assert_equal \ - [ :docker, :exec, "app-999", "bin/rails", "db:setup" ], - @app.execute_in_existing_container("bin/rails", "db:setup") + "docker exec app-999 bin/rails db:setup", + @app.execute_in_existing_container("bin/rails", "db:setup").join(" ") end test "execute in new container over ssh" do @@ -118,19 +120,25 @@ class CommandsAppTest < ActiveSupport::TestCase test "current_container_id" do assert_equal \ - [ :docker, :ps, "-q", "--filter", "label=service=app" ], - @app.current_container_id + "docker ps -q --filter label=service=app", + @app.current_container_id.join(" ") end test "container_id_for" do assert_equal \ - [ :docker, :container, :ls, "-a", "-f", "name=app-999", "-q" ], - @app.container_id_for(container_name: "app-999") + "docker container ls -a -f name=app-999 -q", + @app.container_id_for(container_name: "app-999").join(" ") end test "current_running_version" do assert_equal \ - [ :docker, :ps, "--filter", "label=service=app", "--format", "\"{{.Names}}\"", "|", "sed 's/-/\\n/g'", "|", "tail -n 1" ], - @app.current_running_version + "docker ps --filter label=service=app --format \"{{.Names}}\" | sed 's/-/\\n/g' | tail -n 1", + @app.current_running_version.join(" ") + end + + test "most_recent_version_from_available_images" do + assert_equal \ + "docker image ls --format \"{{.Tag}}\" dhh/app | head -n 1", + @app.most_recent_version_from_available_images.join(" ") end end