Skip to content

Commit

Permalink
refactor: consolidate test commands and update test cases
Browse files Browse the repository at this point in the history
  • Loading branch information
ryan-gang committed Dec 22, 2024
1 parent caa1360 commit 76d6ed3
Showing 1 changed file with 38 additions and 61 deletions.
99 changes: 38 additions & 61 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -17,29 +17,17 @@ build:
test:
TESTER_DIR=$(shell pwd) go test -count=1 -p 1 -v ./internal/...

test_base_w_bash: build
CODECRAFTERS_REPOSITORY_DIR=./internal/test_helpers/bash \
CODECRAFTERS_TEST_CASES_JSON="[ \
{\"slug\":\"oo8\",\"tester_log_prefix\":\"tester::#oo8\",\"title\":\"Stage #1: Init\"}, \
{\"slug\":\"cz2\",\"tester_log_prefix\":\"tester::#cz2\",\"title\":\"Stage #2: Invalid Command\"}, \
{\"slug\":\"ff0\",\"tester_log_prefix\":\"tester::#ff0\",\"title\":\"Stage #3: REPL\"}, \
{\"slug\":\"pn5\",\"tester_log_prefix\":\"tester::#pn5\",\"title\":\"Stage #4: Exit\"}, \
{\"slug\":\"iz3\",\"tester_log_prefix\":\"tester::#iz3\",\"title\":\"Stage #5: Echo\"}, \
{\"slug\":\"ez5\",\"tester_log_prefix\":\"tester::#ez5\",\"title\":\"Stage #6: Type built-in\"}, \
{\"slug\":\"mg5\",\"tester_log_prefix\":\"tester::#mg5\",\"title\":\"Stage #7: Type for executables\"}, \
{\"slug\":\"ip1\",\"tester_log_prefix\":\"tester::#ip1\",\"title\":\"Stage #8: Run a program\"} \
]" \
dist/main.out
record_fixtures:
CODECRAFTERS_RECORD_FIXTURES=true make test

test_nav_w_bash: build
CODECRAFTERS_REPOSITORY_DIR=./internal/test_helpers/bash \
CODECRAFTERS_TEST_CASES_JSON="[ \
{\"slug\":\"ei0\",\"tester_log_prefix\":\"tester::#ei0\",\"title\":\"Stage #9: PWD\"}, \
{\"slug\":\"ra6\",\"tester_log_prefix\":\"tester::#ra6\",\"title\":\"Stage #10: CD-1\"}, \
{\"slug\":\"gq9\",\"tester_log_prefix\":\"tester::#gq9\",\"title\":\"Stage #11: CD-2\"}, \
{\"slug\":\"gp4\",\"tester_log_prefix\":\"tester::#gp4\",\"title\":\"Stage #12: CD-3\"} \
]" \
dist/main.out
update_tester_utils:
go get -u github.com/codecrafters-io/tester-utils

copy_course_file:
gh api repos/codecrafters-io/build-your-own-shell/contents/course-definition.yml \
| jq -r .content \
| base64 -d \
> internal/test_helpers/course_definition.yml

test_dash: build
CODECRAFTERS_REPOSITORY_DIR=./internal/test_helpers/dash \
Expand All @@ -59,20 +47,6 @@ test_dash: build
]" \
dist/main.out

test_ryan: build
CODECRAFTERS_REPOSITORY_DIR=./internal/test_helpers/ryan_shell \
CODECRAFTERS_TEST_CASES_JSON="[ \
{\"slug\":\"cz2\",\"tester_log_prefix\":\"tester::#cz2\",\"title\":\"Stage #2: Invalid Command\"}, \
{\"slug\":\"ff0\",\"tester_log_prefix\":\"tester::#ff0\",\"title\":\"Stage #3: REPL\"}, \
{\"slug\":\"iz3\",\"tester_log_prefix\":\"tester::#iz3\",\"title\":\"Stage #5: Echo\"}, \
{\"slug\":\"ez5\",\"tester_log_prefix\":\"tester::#ez5\",\"title\":\"Stage #6: Type built-in\"}, \
{\"slug\":\"mg5\",\"tester_log_prefix\":\"tester::#mg5\",\"title\":\"Stage #7: Type for executables\"}, \
{\"slug\":\"ip1\",\"tester_log_prefix\":\"tester::#ip1\",\"title\":\"Stage #8: Run a program\"} \
]" \
dist/main.out

test_all_success: test_bash test_dash

test_failure: build
CODECRAFTERS_REPOSITORY_DIR=./internal/test_helpers/failure \
CODECRAFTERS_TEST_CASES_JSON="[ \
Expand All @@ -94,18 +68,29 @@ test_zsh_dangerously: build
]" \
dist/main.out

test_base_w_bash: build
CODECRAFTERS_REPOSITORY_DIR=./internal/test_helpers/bash \
CODECRAFTERS_TEST_CASES_JSON="[ \
{\"slug\":\"oo8\",\"tester_log_prefix\":\"tester::#oo8\",\"title\":\"Stage #1: Init\"}, \
{\"slug\":\"cz2\",\"tester_log_prefix\":\"tester::#cz2\",\"title\":\"Stage #2: Invalid Command\"}, \
{\"slug\":\"ff0\",\"tester_log_prefix\":\"tester::#ff0\",\"title\":\"Stage #3: REPL\"}, \
{\"slug\":\"pn5\",\"tester_log_prefix\":\"tester::#pn5\",\"title\":\"Stage #4: Exit\"}, \
{\"slug\":\"iz3\",\"tester_log_prefix\":\"tester::#iz3\",\"title\":\"Stage #5: Echo\"}, \
{\"slug\":\"ez5\",\"tester_log_prefix\":\"tester::#ez5\",\"title\":\"Stage #6: Type built-in\"}, \
{\"slug\":\"mg5\",\"tester_log_prefix\":\"tester::#mg5\",\"title\":\"Stage #7: Type for executables\"}, \
{\"slug\":\"ip1\",\"tester_log_prefix\":\"tester::#ip1\",\"title\":\"Stage #8: Run a program\"} \
]" \
dist/main.out

record_fixtures:
CODECRAFTERS_RECORD_FIXTURES=true make test

update_tester_utils:
go get -u github.com/codecrafters-io/tester-utils

copy_course_file:
gh api repos/codecrafters-io/build-your-own-shell/contents/course-definition.yml \
| jq -r .content \
| base64 -d \
> internal/test_helpers/course_definition.yml
test_nav_w_bash: build
CODECRAFTERS_REPOSITORY_DIR=./internal/test_helpers/bash \
CODECRAFTERS_TEST_CASES_JSON="[ \
{\"slug\":\"ei0\",\"tester_log_prefix\":\"tester::#ei0\",\"title\":\"Stage #9: PWD\"}, \
{\"slug\":\"ra6\",\"tester_log_prefix\":\"tester::#ra6\",\"title\":\"Stage #10: CD-1\"}, \
{\"slug\":\"gq9\",\"tester_log_prefix\":\"tester::#gq9\",\"title\":\"Stage #11: CD-2\"}, \
{\"slug\":\"gp4\",\"tester_log_prefix\":\"tester::#gp4\",\"title\":\"Stage #12: CD-3\"} \
]" \
dist/main.out

test_quoting_w_bash: build
CODECRAFTERS_REPOSITORY_DIR=./internal/test_helpers/bash \
Expand All @@ -119,26 +104,18 @@ test_quoting_w_bash: build
]" \
dist/main.out

test_quoting_minimal: build
test_redirection_w_bash: build
CODECRAFTERS_REPOSITORY_DIR=./internal/test_helpers/bash \
CODECRAFTERS_TEST_CASES_JSON="[ \
{\"slug\":\"ni6\",\"tester_log_prefix\":\"tester::#ni6\",\"title\":\"Stage #1: Quoting with single quotes\"}, \
{\"slug\":\"yt5\",\"tester_log_prefix\":\"tester::#yt5\",\"title\":\"Stage #3: Quoting with backslashes\"} \
{\"slug\":\"jv1\",\"tester_log_prefix\":\"tester::#jv1\",\"title\":\"Stage #13: Redirect stdout\"}, \
{\"slug\":\"vz4\",\"tester_log_prefix\":\"tester::#vz4\",\"title\":\"Stage #14: Redirect stderr\"}, \
{\"slug\":\"el9\",\"tester_log_prefix\":\"tester::#el9\",\"title\":\"Stage #15: Append stdout\"}, \
{\"slug\":\"un3\",\"tester_log_prefix\":\"tester::#un3\",\"title\":\"Stage #16: Append stderr\"} \
]" \
dist/main.out

test_bash:
make test_base_w_bash
make test_nav_w_bash
make test_quoting_w_bash


test_redirection_w_bash: build
CODECRAFTERS_REPOSITORY_DIR=./internal/test_helpers/bash \
CODECRAFTERS_TEST_CASES_JSON="[ \
{\"slug\":\"jv1\",\"tester_log_prefix\":\"tester::#jv1\",\"title\":\"Stage #13: Redirect stdout\"}, \
{\"slug\":\"vz4\",\"tester_log_prefix\":\"tester::#vz4\",\"title\":\"Stage #14: Redirect stderr\"}, \
{\"slug\":\"el9\",\"tester_log_prefix\":\"tester::#el9\",\"title\":\"Stage #15: Append stdout\"}, \
{\"slug\":\"un3\",\"tester_log_prefix\":\"tester::#un3\",\"title\":\"Stage #16: Append stderr\"} \
]" \
dist/main.out
make test_redirection_w_bash

0 comments on commit 76d6ed3

Please sign in to comment.