diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 407df8a4a54..9f5b3aaf3fa 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1085,8 +1085,25 @@ jobs: - uses: actions/checkout@v4 - name: Make sure dictionary words are sorted and unique run: | - # `sed` removes the first line (number of words) and - # the last line (new line). + FILE="spellcheck.dic" + + # Verify the first line is an integer. + first_line=$(head -n 1 "$FILE") + if ! [[ "$first_line" =~ ^[0-9]+$ ]]; then + echo "Error: The first line of $FILE must be an integer, but got: '$first_line'" + exit 1 + fi + expected_count="$first_line" + + # Check that the number of lines matches the integer. + # xargs (with no arguments) will strip leading/trailing whitespacefrom wc's output. + actual_count=$(sed '1d' "$FILE" | wc -l | xargs) + if [ "$expected_count" -ne "$actual_count" ]; then + echo "Error: The number of lines ($actual_count) does not match $expected_count." + exit 1 + fi + + # `sed` removes the first line (number of words). # # `sort` makes sure everything in between is sorted # and contains no duplicates. @@ -1096,10 +1113,10 @@ jobs: # environments. ( - sed '1d; $d' spellcheck.dic | LC_ALL=en_US.UTF8 sort -uc + sed '1d' $FILE | LC_ALL=en_US.UTF8 sort -uc ) || { echo "Dictionary is not in sorted order. Correct order is:" - LC_ALL=en_US.UTF8 sort -u <(sed '1d; $d' spellcheck.dic) + LC_ALL=en_US.UTF8 sort -u <(sed '1d' $FILE) false } - name: Run cargo-spellcheck diff --git a/spellcheck.dic b/spellcheck.dic index b9155707000..e9f7eec22f6 100644 --- a/spellcheck.dic +++ b/spellcheck.dic @@ -1,4 +1,4 @@ -298 +299 & + <