From 54c1743f17c0a7c986fb6a477959833338fd8cb0 Mon Sep 17 00:00:00 2001 From: Tagl Date: Tue, 15 Oct 2024 21:42:27 +0000 Subject: [PATCH 01/16] Autofixes from shellcheck regarding quotations --- gen.sh | 66 +++++++++++++++++++++++++++++----------------------------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/gen.sh b/gen.sh index 750e057..5406ff5 100644 --- a/gen.sh +++ b/gen.sh @@ -63,7 +63,7 @@ _get_ext () { _base () { ext=$(_get_ext "$1") - echo $(basename "$1" .$ext) + echo $(basename "$1" ."$ext") } _error () { @@ -97,64 +97,64 @@ add_program cat "bash -c cat<\$0" # Compile a C++ program to run. # Arguments: file opts compile_cpp () { - echo Compiling $1... + echo Compiling "$1"... if [[ $2 == *"opt"* || "$(uname -s)" != Linux* ]]; then - g++ -O2 -Wall -std=gnu++20 -DGENERATING_TEST_DATA -o $(_base $1) $1 + g++ -O2 -Wall -std=gnu++20 -DGENERATING_TEST_DATA -o $(_base "$1") "$1" else - g++ -O2 -fsanitize=undefined -fsanitize=address -Wall -std=gnu++20 -DGENERATING_TEST_DATA -o $(_base $1) $1 + g++ -O2 -fsanitize=undefined -fsanitize=address -Wall -std=gnu++20 -DGENERATING_TEST_DATA -o $(_base "$1") "$1" fi - add_program $(_base $1) "./$(_base $1)" - add_cleanup $(_base $1) + add_program $(_base "$1") "./$(_base "$1")" + add_cleanup $(_base "$1") } # Compile a Java program to run. # Arguments: file compile_java () { - javac $1 - if ! [ $(pwd) -ef $(dirname $1) ] # unless $(dirname $1) is the same dir as $(pwd) + javac "$1" + if ! [ $(pwd) -ef $(dirname "$1") ] # unless $(dirname $1) is the same dir as $(pwd) then - cp $(dirname $1)/*.class . + cp $(dirname "$1")/*.class . fi - add_program $(_base $1) "java $(_base $1)" - add_cleanup $(_base $1) + add_program $(_base "$1") "java $(_base "$1")" + add_cleanup $(_base "$1") } # Compile a Python program to run. # Arguments: file opts compile_py () { if [[ $2 == *"cpython3"* ]]; then - add_program $(_base $1) "python3 $1" + add_program $(_base "$1") "python3 $1" elif [[ $2 == *"cpython2"* ]]; then - add_program $(_base $1) "python2 $1" + add_program $(_base "$1") "python2 $1" elif [[ $2 == *"pypy2"* ]]; then - add_program $(_base $1) "pypy $1" + add_program $(_base "$1") "pypy $1" else - add_program $(_base $1) "pypy3 $1" + add_program $(_base "$1") "pypy3 $1" fi } # Compile a bash program to run. # Arguments: file compile_sh () { - add_program $(_base $1) "bash $1" + add_program $(_base "$1") "bash $1" } # Compile a program # Arguments: file opts compile () { - ext=$(_get_ext $1) - if [ $ext == "java" ] + ext=$(_get_ext "$1") + if [ "$ext" == "java" ] then - compile_java $1 - elif [ $ext == "cpp" -o $ext == "cc" ] + compile_java "$1" + elif [ "$ext" == "cpp" -o "$ext" == "cc" ] then - compile_cpp $1 $2 - elif [ $ext == "py" ] + compile_cpp "$1" "$2" + elif [ "$ext" == "py" ] then - compile_py $1 $2 - elif [ $ext == "sh" ] + compile_py "$1" "$2" + elif [ "$ext" == "sh" ] then - compile_sh $1 $2 + compile_sh "$1" "$2" else echo "Unsupported program: $1" exit 1 @@ -175,7 +175,7 @@ grader_flags: ignore_sample" > testdata.yaml # Arguments: testcase path solve () { local execmd=${programs[$SOLUTION]} - $execmd < $1.in > $1.ans + $execmd < "$1".in > "$1".ans } CURGROUP_NAME=. @@ -186,8 +186,8 @@ CURTEST= # Arguments: solution name use_solution () { path=$SOLUTION_BASE/$1 - SOLUTION=$(_base $path) - compile $path $2 + SOLUTION=$(_base "$path") + compile "$path" "$2" } @@ -364,12 +364,12 @@ tc () { PARALLELISM_ACTIVE=1 LN="cp " fi - local path="$CURGROUP_DIR/$(_base ${cases[$name]})" - ${LN}${cases[$name]}.in "$path.in" - ${LN}${cases[$name]}.ans "$path.ans" + local path="$CURGROUP_DIR/$(_base "${cases[$name]}")" + "${LN}""${cases[$name]}".in "$path.in" + "${LN}""${cases[$name]}".ans "$path.ans" for ext in {hint,desc}; do - if [ -f ${cases[$name]}.$ext ]; then - ${LN}${cases[$name]}.$ext "$path.$ext" + if [ -f "${cases[$name]}"."$ext" ]; then + "${LN}""${cases[$name]}"."$ext" "$path.$ext" fi done latestdir[$name]="$CURGROUP_DIR" From d05ce59c2d84d099c0bb43b9ba02c1c04de684d3 Mon Sep 17 00:00:00 2001 From: Tagl Date: Tue, 15 Oct 2024 21:51:25 +0000 Subject: [PATCH 02/16] Fix SC2145 occurrences --- gen.sh | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/gen.sh b/gen.sh index 5406ff5..1da368d 100644 --- a/gen.sh +++ b/gen.sh @@ -1,3 +1,4 @@ +#! # This file provides support functions for generating testdata, primarily for # scoring problems with test groups. It has some niceties like automatically # passing deterministic random seeds to the generator, and generating test @@ -262,17 +263,17 @@ grader_flags: min" > "$CURGROUP_DIR/testdata.yaml" # Arguments: parameters sent to input validator limits () { if [[ $USE_SCORING == 1 ]]; then - echo "input_validator_flags: $@" >> "$CURGROUP_DIR/testdata.yaml" + echo "input_validator_flags: $*" >> "$CURGROUP_DIR/testdata.yaml" else - echo "input_validator_flags: $@" >> testdata.yaml + echo "input_validator_flags: $*" >> testdata.yaml fi } output_validator_flags () { if [[ $USE_SCORING == 1 ]]; then - echo "output_validator_flags: $@" >> "$CURGROUP_DIR/testdata.yaml" + echo "output_validator_flags: $*" >> "$CURGROUP_DIR/testdata.yaml" else - echo "output_validator_flags: $@" >> testdata.yaml + echo "output_validator_flags: $*" >> testdata.yaml fi } From 4db33322a1d040328af014a0ac6042240fa0f1bf Mon Sep 17 00:00:00 2001 From: Tagl Date: Tue, 15 Oct 2024 21:52:03 +0000 Subject: [PATCH 03/16] Add shebang --- gen.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gen.sh b/gen.sh index 1da368d..0d6c697 100644 --- a/gen.sh +++ b/gen.sh @@ -1,4 +1,4 @@ -#! +#!/usr/bin/env bash # This file provides support functions for generating testdata, primarily for # scoring problems with test groups. It has some niceties like automatically # passing deterministic random seeds to the generator, and generating test From 945ae5f3680eb6733ac3b41500df62144d670511 Mon Sep 17 00:00:00 2001 From: Tagl Date: Tue, 15 Oct 2024 23:42:04 +0000 Subject: [PATCH 04/16] Fix warnings --- gen.sh | 47 ++++++++++++++++++++++++++--------------------- 1 file changed, 26 insertions(+), 21 deletions(-) diff --git a/gen.sh b/gen.sh index 0d6c697..fbabd33 100644 --- a/gen.sh +++ b/gen.sh @@ -64,7 +64,7 @@ _get_ext () { _base () { ext=$(_get_ext "$1") - echo $(basename "$1" ."$ext") + echo "$(basename "$1" ."$ext")" } _error () { @@ -100,44 +100,44 @@ add_program cat "bash -c cat<\$0" compile_cpp () { echo Compiling "$1"... if [[ $2 == *"opt"* || "$(uname -s)" != Linux* ]]; then - g++ -O2 -Wall -std=gnu++20 -DGENERATING_TEST_DATA -o $(_base "$1") "$1" + g++ -O2 -Wall -std=gnu++20 -DGENERATING_TEST_DATA -o "$(_base "$1")" "$1" else - g++ -O2 -fsanitize=undefined -fsanitize=address -Wall -std=gnu++20 -DGENERATING_TEST_DATA -o $(_base "$1") "$1" + g++ -O2 -fsanitize=undefined -fsanitize=address -Wall -std=gnu++20 -DGENERATING_TEST_DATA -o "$(_base "$1")" "$1" fi - add_program $(_base "$1") "./$(_base "$1")" - add_cleanup $(_base "$1") + add_program "$(_base "$1")" "./$(_base "$1")" + add_cleanup "$(_base "$1")" } # Compile a Java program to run. # Arguments: file compile_java () { javac "$1" - if ! [ $(pwd) -ef $(dirname "$1") ] # unless $(dirname $1) is the same dir as $(pwd) + if ! [ "$(pwd)" -ef "$(dirname "$1")" ] # unless $(dirname $1) is the same dir as $(pwd) then - cp $(dirname "$1")/*.class . + cp "$(dirname "$1")"/*.class . fi - add_program $(_base "$1") "java $(_base "$1")" - add_cleanup $(_base "$1") + add_program "$(_base "$1")" "java $(_base "$1")" + add_cleanup "$(_base "$1")" } # Compile a Python program to run. # Arguments: file opts compile_py () { if [[ $2 == *"cpython3"* ]]; then - add_program $(_base "$1") "python3 $1" + add_program "$(_base "$1")" "python3 $1" elif [[ $2 == *"cpython2"* ]]; then - add_program $(_base "$1") "python2 $1" + add_program "$(_base "$1")" "python2 $1" elif [[ $2 == *"pypy2"* ]]; then - add_program $(_base "$1") "pypy $1" + add_program "$(_base "$1")" "pypy $1" else - add_program $(_base "$1") "pypy3 $1" + add_program "$(_base "$1")" "pypy3 $1" fi } # Compile a bash program to run. # Arguments: file compile_sh () { - add_program $(_base "$1") "bash $1" + add_program "$(_base "$1")" "bash $1" } # Compile a program @@ -147,7 +147,7 @@ compile () { if [ "$ext" == "java" ] then compile_java "$1" - elif [ "$ext" == "cpp" -o "$ext" == "cc" ] + elif [ "$ext" == "cpp" ] || [ "$ext" == "cc" ] then compile_cpp "$1" "$2" elif [ "$ext" == "py" ] @@ -187,7 +187,7 @@ CURTEST= # Arguments: solution name use_solution () { path=$SOLUTION_BASE/$1 - SOLUTION=$(_base "$path") + SOLUTION="$(_base "$path")" compile "$path" "$2" } @@ -279,7 +279,8 @@ output_validator_flags () { _check_missing_samples () { for INF in sample/*.in; do - local name=$(basename "$INF" .in) + local name + name=$(basename "$INF" .in) if [[ "$name" != '*' && ${cases[$name]} != sample* ]]; then _error "missing sample or sample_manual directive for sample/$name.in" fi @@ -287,7 +288,8 @@ _check_missing_samples () { local any=0 for INF in sample/*.in; do - local name=$(basename "$INF" .in) + local name + name=$(basename "$INF" .in) if [[ "$name" != '*' && ${cases[$name]} = sample* && ${latestdir[$name]} = "sample" && $REQUIRE_SAMPLE_REUSE = 1 ]]; then _error "sample/$name must be included in some secret test group; add the line \"tc $name\"" any=1 @@ -337,6 +339,7 @@ _handle_err() { _par_tc () { set -E + # shellcheck disable=SC2064 trap "_handle_err $1" ERR _do_tc "$@" } @@ -365,7 +368,8 @@ tc () { PARALLELISM_ACTIVE=1 LN="cp " fi - local path="$CURGROUP_DIR/$(_base "${cases[$name]}")" + local path + path="$CURGROUP_DIR/$(_base "${cases[$name]}")" "${LN}""${cases[$name]}".in "$path.in" "${LN}""${cases[$name]}".ans "$path.ans" for ext in {hint,desc}; do @@ -390,7 +394,8 @@ tc () { fi # Add an index to the test case name, to enforce evaluation order. - local path="$CURGROUP_DIR/$(printf '%03d' $TC_INDEX)-$name" + local path + path="$CURGROUP_DIR/$(printf '%03d' $TC_INDEX)-$name" let TC_INDEX++ CURTEST="$path" cases[$name]="$path" @@ -424,7 +429,7 @@ tc_manual () { if [[ $# == 1 ]]; then name=$(_base "$1") fi - tc $(_base "$1") cat "$1" + tc "$(_base "$1")" cat "$1" } # Include all testcases in another group From f20b3780fa9f8e3c4ed71be9556ece7a402d88b8 Mon Sep 17 00:00:00 2001 From: Tagl Date: Wed, 16 Oct 2024 00:20:35 +0000 Subject: [PATCH 05/16] Deal with info messages from shellcheck, best practices --- gen.sh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/gen.sh b/gen.sh index fbabd33..74ba308 100644 --- a/gen.sh +++ b/gen.sh @@ -64,7 +64,7 @@ _get_ext () { _base () { ext=$(_get_ext "$1") - echo "$(basename "$1" ."$ext")" + basename "$1" ."$ext" } _error () { @@ -396,7 +396,7 @@ tc () { # Add an index to the test case name, to enforce evaluation order. local path path="$CURGROUP_DIR/$(printf '%03d' $TC_INDEX)-$name" - let TC_INDEX++ + (( TC_INDEX++ )) CURTEST="$path" cases[$name]="$path" latestdir[$name]="$CURGROUP_DIR" @@ -416,9 +416,9 @@ tc () { if [[ $PARALLELISM_ACTIVE = 5 ]]; then # wait after every 4 cases wait - let PARALLELISM_ACTIVE=1 + PARALLELISM_ACTIVE=1 fi - let PARALLELISM_ACTIVE++ + (( PARALLELISM_ACTIVE++ )) _par_tc "$nicename" "$name" "$path" "$program" "${@:3}" & fi } @@ -466,7 +466,7 @@ _cleanup_programs () { rm -f "$x" done rm -rf __pycache__ - rm -rf *.class + rm -rf ./*.class _check_missing_samples From fc3593a834891a941d8e3fcf9b03bc4ac61a4976 Mon Sep 17 00:00:00 2001 From: Tagl Date: Wed, 16 Oct 2024 01:41:25 +0000 Subject: [PATCH 06/16] Use absolute paths for sourcing --- examples/arithmetic/data/generator.sh | 3 ++- examples/codforces/data/generator.sh | 4 ++-- examples/lampswitches/data/generator.sh | 4 ++-- examples/ninetynine/data/generator.sh | 3 ++- 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/examples/arithmetic/data/generator.sh b/examples/arithmetic/data/generator.sh index 688a563..2af561c 100755 --- a/examples/arithmetic/data/generator.sh +++ b/examples/arithmetic/data/generator.sh @@ -1,5 +1,6 @@ #!/usr/bin/env bash -. ../../../gen.sh +PPATH=$(realpath ..) +. "$PPATH"/../../gen.sh use_solution arithmetic.cpp diff --git a/examples/codforces/data/generator.sh b/examples/codforces/data/generator.sh index b0d5b62..d262436 100755 --- a/examples/codforces/data/generator.sh +++ b/examples/codforces/data/generator.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash - -. ../../../gen.sh +PPATH=$(realpath ..) +. "$PPATH"/../../gen.sh ulimit -s unlimited diff --git a/examples/lampswitches/data/generator.sh b/examples/lampswitches/data/generator.sh index ff387af..fda1ea6 100755 --- a/examples/lampswitches/data/generator.sh +++ b/examples/lampswitches/data/generator.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash - -. ../../../gen.sh +PPATH=$(realpath ..) +. "$PPATH"/../../gen.sh use_solution sl.cpp diff --git a/examples/ninetynine/data/generator.sh b/examples/ninetynine/data/generator.sh index 0168589..2854a51 100755 --- a/examples/ninetynine/data/generator.sh +++ b/examples/ninetynine/data/generator.sh @@ -1,5 +1,6 @@ #!/usr/bin/env bash -. ../../../gen.sh +PPATH=$(realpath ..) +. "$PPATH"/../../gen.sh use_solution ../../data/empty.sh # empty .ans files From c472f29e866f85b23fc504254c5a3cf4b892d75d Mon Sep 17 00:00:00 2001 From: Tagl Date: Wed, 16 Oct 2024 20:58:50 +0000 Subject: [PATCH 07/16] More shellcheck fixes --- examples/arithmetic/data/generator.sh | 4 ++-- examples/arithmetic/data/sample/testdata.yaml | 1 - examples/arithmetic/data/testdata.yaml | 2 +- examples/codforces/data/generator.sh | 4 ++-- examples/lampswitches/data/generator.sh | 8 ++++---- examples/ninetynine/data/empty.sh | 1 + examples/ninetynine/data/generator.sh | 6 +++--- examples/ninetynine/data/testdata.yaml | 2 +- gen.sh | 6 ++++-- 9 files changed, 18 insertions(+), 16 deletions(-) diff --git a/examples/arithmetic/data/generator.sh b/examples/arithmetic/data/generator.sh index 2af561c..59119b9 100755 --- a/examples/arithmetic/data/generator.sh +++ b/examples/arithmetic/data/generator.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -PPATH=$(realpath ..) -. "$PPATH"/../../gen.sh +# shellcheck source=/dev/null +. ../../../gen.sh use_solution arithmetic.cpp diff --git a/examples/arithmetic/data/sample/testdata.yaml b/examples/arithmetic/data/sample/testdata.yaml index 39570d1..a6b65aa 100644 --- a/examples/arithmetic/data/sample/testdata.yaml +++ b/examples/arithmetic/data/sample/testdata.yaml @@ -2,4 +2,3 @@ on_reject: continue range: 0 0 accept_score: 0 grader_flags: first_error -input_validator_flags: ab=1e9 c=1e9 diff --git a/examples/arithmetic/data/testdata.yaml b/examples/arithmetic/data/testdata.yaml index 72c69c6..c3621d7 100644 --- a/examples/arithmetic/data/testdata.yaml +++ b/examples/arithmetic/data/testdata.yaml @@ -1,3 +1,3 @@ on_reject: continue -range: 0 100 +range: 0 0 grader_flags: ignore_sample diff --git a/examples/codforces/data/generator.sh b/examples/codforces/data/generator.sh index d262436..1dd5ac5 100755 --- a/examples/codforces/data/generator.sh +++ b/examples/codforces/data/generator.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -PPATH=$(realpath ..) -. "$PPATH"/../../gen.sh +# shellcheck source=/dev/null +. ../../../gen.sh ulimit -s unlimited diff --git a/examples/lampswitches/data/generator.sh b/examples/lampswitches/data/generator.sh index fda1ea6..92bb4e0 100755 --- a/examples/lampswitches/data/generator.sh +++ b/examples/lampswitches/data/generator.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -PPATH=$(realpath ..) -. "$PPATH"/../../gen.sh +# shellcheck source=/dev/null +. ../../../gen.sh use_solution sl.cpp @@ -74,9 +74,9 @@ wait if which dot >/dev/null; then echo Creating visualizations... for F in sample/*.in secret/group1/*.in; do - N=$(head -n 1 $F) + N=$(head -n 1 "$F") if [[ $N -lt 25 ]]; then - ./visualize.py <$F | dot -T png -o ${F%.in}.png + ./visualize.py <"$F" | dot -T png -o "${F%.in}".png fi done fi diff --git a/examples/ninetynine/data/empty.sh b/examples/ninetynine/data/empty.sh index e69de29..f1f641a 100755 --- a/examples/ninetynine/data/empty.sh +++ b/examples/ninetynine/data/empty.sh @@ -0,0 +1 @@ +#!/usr/bin/env bash diff --git a/examples/ninetynine/data/generator.sh b/examples/ninetynine/data/generator.sh index 2854a51..eb40910 100755 --- a/examples/ninetynine/data/generator.sh +++ b/examples/ninetynine/data/generator.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -PPATH=$(realpath ..) -. "$PPATH"/../../gen.sh +# shellcheck source=/dev/null +. ../../../gen.sh use_solution ../../data/empty.sh # empty .ans files @@ -26,5 +26,5 @@ tc two-4 echo two group group3 40 limits mode=random for A in {1..20}; do - tc random-$A echo random + tc random-"$A" echo random done diff --git a/examples/ninetynine/data/testdata.yaml b/examples/ninetynine/data/testdata.yaml index b3b5ead..72c69c6 100644 --- a/examples/ninetynine/data/testdata.yaml +++ b/examples/ninetynine/data/testdata.yaml @@ -1,3 +1,3 @@ -range: 0 100 on_reject: continue +range: 0 100 grader_flags: ignore_sample diff --git a/gen.sh b/gen.sh index 74ba308..fcc715e 100644 --- a/gen.sh +++ b/gen.sh @@ -370,8 +370,10 @@ tc () { fi local path path="$CURGROUP_DIR/$(_base "${cases[$name]}")" - "${LN}""${cases[$name]}".in "$path.in" - "${LN}""${cases[$name]}".ans "$path.ans" + # shellcheck disable=2086 + ${LN}${cases[$name]}.in "$path.in" + # shellcheck disable=2086 + ${LN}${cases[$name]}.ans "$path.ans" for ext in {hint,desc}; do if [ -f "${cases[$name]}"."$ext" ]; then "${LN}""${cases[$name]}"."$ext" "$path.$ext" From 9f59be53cd2065ec4041992a5e2887bbb809ca8e Mon Sep 17 00:00:00 2001 From: Tagl Date: Wed, 16 Oct 2024 21:23:38 +0000 Subject: [PATCH 08/16] Missed some examples to ignore sourcing error --- generator_example.sh | 1 + generator_example_acm.sh | 2 ++ 2 files changed, 3 insertions(+) diff --git a/generator_example.sh b/generator_example.sh index b085b28..017df6c 100755 --- a/generator_example.sh +++ b/generator_example.sh @@ -1,4 +1,5 @@ #!/usr/bin/env bash +# shellcheck source=/dev/null . ../../testdata_tools/gen.sh # Example test data generator, with comments to explain what each line does. diff --git a/generator_example_acm.sh b/generator_example_acm.sh index 9363c23..972d59b 100755 --- a/generator_example_acm.sh +++ b/generator_example_acm.sh @@ -1,4 +1,6 @@ #!/usr/bin/env bash +export USE_SCORING +# shellcheck source=/dev/null USE_SCORING=0 . ../../testdata_tools/gen.sh From 3044ebae5db7629d2e86b2042065d281edb48ec7 Mon Sep 17 00:00:00 2001 From: Tagl Date: Wed, 16 Oct 2024 21:28:14 +0000 Subject: [PATCH 09/16] Fix comment to ignore sourcing --- generator_example_acm.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/generator_example_acm.sh b/generator_example_acm.sh index 972d59b..62dc3de 100755 --- a/generator_example_acm.sh +++ b/generator_example_acm.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash export USE_SCORING -# shellcheck source=/dev/null USE_SCORING=0 +# shellcheck source=/dev/null . ../../testdata_tools/gen.sh # Example test data generator for non-scoring problems. From 505f9b7f67a03f7b57b26f2faf8168e78b330453 Mon Sep 17 00:00:00 2001 From: Tagl Date: Wed, 16 Oct 2024 21:47:40 +0000 Subject: [PATCH 10/16] Fix error in testdata.yaml that was half generated --- examples/arithmetic/data/sample/testdata.yaml | 1 + examples/arithmetic/data/testdata.yaml | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/examples/arithmetic/data/sample/testdata.yaml b/examples/arithmetic/data/sample/testdata.yaml index a6b65aa..39570d1 100644 --- a/examples/arithmetic/data/sample/testdata.yaml +++ b/examples/arithmetic/data/sample/testdata.yaml @@ -2,3 +2,4 @@ on_reject: continue range: 0 0 accept_score: 0 grader_flags: first_error +input_validator_flags: ab=1e9 c=1e9 diff --git a/examples/arithmetic/data/testdata.yaml b/examples/arithmetic/data/testdata.yaml index c3621d7..72c69c6 100644 --- a/examples/arithmetic/data/testdata.yaml +++ b/examples/arithmetic/data/testdata.yaml @@ -1,3 +1,3 @@ on_reject: continue -range: 0 0 +range: 0 100 grader_flags: ignore_sample From 5d4b326d1c951ce16494c947731f77f702a71f71 Mon Sep 17 00:00:00 2001 From: Tagl Date: Wed, 16 Oct 2024 21:54:29 +0000 Subject: [PATCH 11/16] Update testdata.yaml files for examples and address code review comments --- examples/codforces/data/testdata.yaml | 2 +- examples/lampswitches/data/testdata.yaml | 2 +- gen.sh | 11 ++++++----- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/examples/codforces/data/testdata.yaml b/examples/codforces/data/testdata.yaml index b3b5ead..72c69c6 100644 --- a/examples/codforces/data/testdata.yaml +++ b/examples/codforces/data/testdata.yaml @@ -1,3 +1,3 @@ -range: 0 100 on_reject: continue +range: 0 100 grader_flags: ignore_sample diff --git a/examples/lampswitches/data/testdata.yaml b/examples/lampswitches/data/testdata.yaml index b3b5ead..72c69c6 100644 --- a/examples/lampswitches/data/testdata.yaml +++ b/examples/lampswitches/data/testdata.yaml @@ -1,3 +1,3 @@ -range: 0 100 on_reject: continue +range: 0 100 grader_flags: ignore_sample diff --git a/gen.sh b/gen.sh index fcc715e..d0265b4 100644 --- a/gen.sh +++ b/gen.sh @@ -64,7 +64,7 @@ _get_ext () { _base () { ext=$(_get_ext "$1") - basename "$1" ."$ext" + basename "$1" ".$ext" } _error () { @@ -371,12 +371,13 @@ tc () { local path path="$CURGROUP_DIR/$(_base "${cases[$name]}")" # shellcheck disable=2086 - ${LN}${cases[$name]}.in "$path.in" + ${LN}"${cases[$name]}".in "$path.in" # shellcheck disable=2086 - ${LN}${cases[$name]}.ans "$path.ans" + ${LN}"${cases[$name]}".ans "$path.ans" for ext in {hint,desc}; do - if [ -f "${cases[$name]}"."$ext" ]; then - "${LN}""${cases[$name]}"."$ext" "$path.$ext" + if [ -f "${cases[$name]}.$ext" ]; then + # shellcheck disable=2086 + ${LN}"${cases[$name]}.$ext" "$path.$ext" fi done latestdir[$name]="$CURGROUP_DIR" From a32080f385b681352a87b2121b0ea5c2de5f445a Mon Sep 17 00:00:00 2001 From: Tagl Date: Sun, 20 Oct 2024 18:21:05 +0000 Subject: [PATCH 12/16] Declare shell for shellcheck with comment --- gen.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gen.sh b/gen.sh index d0265b4..412ad49 100644 --- a/gen.sh +++ b/gen.sh @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +# shellcheck shell=bash # This file provides support functions for generating testdata, primarily for # scoring problems with test groups. It has some niceties like automatically # passing deterministic random seeds to the generator, and generating test From 21fa4b4f494360d714ba69835bf6acaf1bdd949e Mon Sep 17 00:00:00 2001 From: Tagl Date: Fri, 25 Oct 2024 15:22:31 +0000 Subject: [PATCH 13/16] Fix source-path in examples --- examples/arithmetic/data/generator.sh | 2 +- examples/codforces/data/generator.sh | 2 +- examples/lampswitches/data/generator.sh | 2 +- examples/ninetynine/data/generator.sh | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/examples/arithmetic/data/generator.sh b/examples/arithmetic/data/generator.sh index 59119b9..db37bcb 100755 --- a/examples/arithmetic/data/generator.sh +++ b/examples/arithmetic/data/generator.sh @@ -1,5 +1,5 @@ #!/usr/bin/env bash -# shellcheck source=/dev/null +# shellcheck source-path=SCRIPTDIR . ../../../gen.sh use_solution arithmetic.cpp diff --git a/examples/codforces/data/generator.sh b/examples/codforces/data/generator.sh index 1dd5ac5..0ed4e7d 100755 --- a/examples/codforces/data/generator.sh +++ b/examples/codforces/data/generator.sh @@ -1,5 +1,5 @@ #!/usr/bin/env bash -# shellcheck source=/dev/null +# shellcheck source-path=SCRIPTDIR . ../../../gen.sh ulimit -s unlimited diff --git a/examples/lampswitches/data/generator.sh b/examples/lampswitches/data/generator.sh index 92bb4e0..2a88d02 100755 --- a/examples/lampswitches/data/generator.sh +++ b/examples/lampswitches/data/generator.sh @@ -1,5 +1,5 @@ #!/usr/bin/env bash -# shellcheck source=/dev/null +# shellcheck source-path=SCRIPTDIR . ../../../gen.sh use_solution sl.cpp diff --git a/examples/ninetynine/data/generator.sh b/examples/ninetynine/data/generator.sh index eb40910..8ad2780 100755 --- a/examples/ninetynine/data/generator.sh +++ b/examples/ninetynine/data/generator.sh @@ -1,5 +1,5 @@ #!/usr/bin/env bash -# shellcheck source=/dev/null +# shellcheck source-path=SCRIPTDIR . ../../../gen.sh use_solution ../../data/empty.sh # empty .ans files From 89d90d00c21a2ac8aa7e66736072a7731eabdd0c Mon Sep 17 00:00:00 2001 From: Arnar Bjarni Arnarson Date: Fri, 25 Oct 2024 15:24:25 +0000 Subject: [PATCH 14/16] Update examples/ninetynine/data/generator.sh Co-authored-by: Simon Lindholm --- examples/ninetynine/data/generator.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/ninetynine/data/generator.sh b/examples/ninetynine/data/generator.sh index 8ad2780..dbe0540 100755 --- a/examples/ninetynine/data/generator.sh +++ b/examples/ninetynine/data/generator.sh @@ -26,5 +26,5 @@ tc two-4 echo two group group3 40 limits mode=random for A in {1..20}; do - tc random-"$A" echo random + tc "random-$A" echo random done From 8852c51da35f9b6b81816153f303288c8e46a7a3 Mon Sep 17 00:00:00 2001 From: Arnar Bjarni Arnarson Date: Fri, 25 Oct 2024 15:24:55 +0000 Subject: [PATCH 15/16] Update gen.sh Co-authored-by: Simon Lindholm --- gen.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gen.sh b/gen.sh index 412ad49..fe168b4 100644 --- a/gen.sh +++ b/gen.sh @@ -98,7 +98,7 @@ add_program cat "bash -c cat<\$0" # Compile a C++ program to run. # Arguments: file opts compile_cpp () { - echo Compiling "$1"... + echo "Compiling $1..." if [[ $2 == *"opt"* || "$(uname -s)" != Linux* ]]; then g++ -O2 -Wall -std=gnu++20 -DGENERATING_TEST_DATA -o "$(_base "$1")" "$1" else From ca39b16b23319a5f51ca10e677c27b76d6826975 Mon Sep 17 00:00:00 2001 From: Arnar Bjarni Arnarson Date: Fri, 25 Oct 2024 15:25:04 +0000 Subject: [PATCH 16/16] Update gen.sh Co-authored-by: Simon Lindholm --- gen.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gen.sh b/gen.sh index fe168b4..898db07 100644 --- a/gen.sh +++ b/gen.sh @@ -176,7 +176,7 @@ grader_flags: ignore_sample" > testdata.yaml # Arguments: testcase path solve () { local execmd=${programs[$SOLUTION]} - $execmd < "$1".in > "$1".ans + $execmd < "$1.in" > "$1.ans" } CURGROUP_NAME=.