Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

rose ana test: remove dependency on pcregrep #2235

Merged
merged 1 commit into from
Sep 24, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ before_install:
install:
- >
sudo apt-get install -y at build-essential gfortran heirloom-mailx
pcregrep python-pip python-dev graphviz libgraphviz-dev python-jinja2
python-pip python-dev graphviz libgraphviz-dev python-jinja2
python-sqlalchemy libxml-parser-perl libconfig-inifiles-perl
libdbi-perl libdbd-sqlite3-perl latexmk texlive
texlive-generic-extra texlive-latex-extra texlive-fonts-recommended
Expand Down
22 changes: 16 additions & 6 deletions t/lib/bash/test_header
Original file line number Diff line number Diff line change
Expand Up @@ -231,14 +231,24 @@ file_grep() {
}

file_pcregrep() {
local TEST_KEY=$1
local PATTERN=$2
local FILE=$3
if pcregrep -M "$PATTERN" $FILE; then
pass $TEST_KEY
local TEST_KEY="$1"
local PATTERN="$2"
local FILE="$3"
if _pcregrep "${PATTERN}" "${FILE}"; then
pass "${TEST_KEY}"
return
fi
fail $TEST_KEY
fail "${TEST_KEY}"
}

_pcregrep() {
python - "$@" <<'__PYTHON__'
import re
import sys
pattern, filename = sys.argv[1:3]
sys.exit(int(not re.search(pattern, open(filename).read(), re.M | re.S)))
__PYTHON__
}

file_grep_fail() {
Expand Down
178 changes: 104 additions & 74 deletions t/rose-ana/00-run-basic.t
Original file line number Diff line number Diff line change
Expand Up @@ -44,82 +44,110 @@ run_fail "$TEST_KEY" \
--no-gcontrol --host=localhost -- --no-detach --debug
#-------------------------------------------------------------------------------
# Test the output
OUTPUT=$HOME/cylc-run/$NAME/log/job/1/rose_ana_t1/01/job.out
TEST_KEY=$TEST_KEY_BASE-exact_list_fail
file_pcregrep $TEST_KEY "Running task #([0-9]+).*\n.*Exact List Match Fail.*(\n.*)*Task #\1 did not pass" $OUTPUT
TEST_KEY=$TEST_KEY_BASE-exact_list_success
file_pcregrep $TEST_KEY "Running task #([0-9]+).*\n.*Exact List Match Success.*(\n.*)*Task #\1 passed" $OUTPUT
TEST_KEY=$TEST_KEY_BASE-exact_numeric_fail
file_pcregrep $TEST_KEY "Running task #([0-9]+).*\n.*Exact Numeric Match Fail.*(\n.*)*Task #\1 did not pass" $OUTPUT
TEST_KEY=$TEST_KEY_BASE-exact_numeric_success
file_pcregrep $TEST_KEY "Running task #([0-9]+).*\n.*Exact Numeric Match Success.*(\n.*)*Task #\1 passed" $OUTPUT
TEST_KEY=$TEST_KEY_BASE-exact_text_fail
file_pcregrep $TEST_KEY "Running task #([0-9]+).*\n.*Exact Text Match Fail.*(\n.*)*Task #\1 did not pass" $OUTPUT
TEST_KEY=$TEST_KEY_BASE-exact_text_success
file_pcregrep $TEST_KEY "Running task #([0-9]+).*\n.*Exact Text Match Success.*(\n.*)*Task #\1 passed" $OUTPUT
TEST_KEY=$TEST_KEY_BASE-within_list_fail
file_pcregrep $TEST_KEY "Running task #([0-9]+).*\n.*Within List Match Fail.*(\n.*)*Task #\1 did not pass" $OUTPUT
TEST_KEY=$TEST_KEY_BASE-within_list_success
file_pcregrep $TEST_KEY "Running task #([0-9]+).*\n.*Within List Match Success.*(\n.*)*Task #\1 passed" $OUTPUT
TEST_KEY=$TEST_KEY_BASE-within_absolute_fail
file_pcregrep $TEST_KEY "Running task #([0-9]+).*\n.*Within Match Absolute Fail.*(\n.*)*Task #\1 did not pass" $OUTPUT
TEST_KEY=$TEST_KEY_BASE-within_absolute_success
file_pcregrep $TEST_KEY "Running task #([0-9]+).*\n.*Within Match Absolute Success.*(\n.*)*Task #\1 passed" $OUTPUT
TEST_KEY=$TEST_KEY_BASE-within_percentage_fail
file_pcregrep $TEST_KEY "Running task #([0-9]+).*\n.*Within Match Percentage Fail.*(\n.*)*Task #\1 did not pass" $OUTPUT
TEST_KEY=$TEST_KEY_BASE-within_percentage_success
file_pcregrep $TEST_KEY "Running task #([0-9]+).*\n.*Within Match Percentage Success.*(\n.*)*Task #\1 passed" $OUTPUT
TEST_KEY=$TEST_KEY_BASE-simple_command_success
file_pcregrep $TEST_KEY "Running task #([0-9]+).*\n.*Simple-Command Success.*(\n.*)*Task #\1 passed" $OUTPUT
TEST_KEY=$TEST_KEY_BASE-simple_command_fail
file_pcregrep $TEST_KEY "Running task #([0-9]+).*\n.*Simple-Command Failure.*(\n.*)*Task #\1 did not pass" $OUTPUT
TEST_KEY=$TEST_KEY_BASE-file_command_success
file_pcregrep $TEST_KEY "Running task #([0-9]+).*\n.*File-Command Success.*(\n.*)*Task #\1 passed" $OUTPUT
TEST_KEY=$TEST_KEY_BASE-file_command_fail
file_pcregrep $TEST_KEY "Running task #([0-9]+).*\n.*File-Command Failure.*(\n.*)*Task #\1 did not pass" $OUTPUT
TEST_KEY=$TEST_KEY_BASE-simple_command_pattern_success
file_pcregrep $TEST_KEY "Running task #([0-9]+).*\n.*Simple-Command Pattern Success.*(\n.*)*Task #\1 passed" $OUTPUT
TEST_KEY=$TEST_KEY_BASE-simple_command_pattern_fail
file_pcregrep $TEST_KEY "Running task #([0-9]+).*\n.*Simple-Command Pattern Failure.*(\n.*)*Task #\1 did not pass" $OUTPUT
TEST_KEY=$TEST_KEY_BASE-file_command_pattern_success
file_pcregrep $TEST_KEY "Running task #([0-9]+).*\n.*File-Command Pattern Success.*(\n.*)*Task #\1 passed" $OUTPUT
TEST_KEY=$TEST_KEY_BASE-file_command_pattern_fail
file_pcregrep $TEST_KEY "Running task #([0-9]+).*\n.*File-Command Pattern Failure.*(\n.*)*Task #\1 did not pass" $OUTPUT
TEST_KEY=$TEST_KEY_BASE-file_command_fail_but_pattern_success
file_pcregrep $TEST_KEY "Running task #([0-9]+).*\n.*File-Command Fail but Pattern Success.*(\n.*)*Task #\1 passed" $OUTPUT
TEST_KEY=$TEST_KEY_BASE-multi_command_success
file_pcregrep $TEST_KEY "Running task #([0-9]+).*\n.*Multi-Command Success.*(\n.*)*Task #\1 passed" $OUTPUT
TEST_KEY=$TEST_KEY_BASE-multi_command_fail
file_pcregrep $TEST_KEY "Running task #([0-9]+).*\n.*Multi-Command Failure.*(\n.*)*Task #\1 did not pass" $OUTPUT
TEST_KEY=$TEST_KEY_BASE-multi_group_success
file_pcregrep $TEST_KEY "Running task #([0-9]+).*\n.*Multi-Group Success.*(\n.*)*Task #\1 passed" $OUTPUT
TEST_KEY=$TEST_KEY_BASE-multi_group_fail
file_pcregrep $TEST_KEY "Running task #([0-9]+).*\n.*Multi-Group Failure.*(\n.*)*Task #\1 did not pass" $OUTPUT
TEST_KEY=$TEST_KEY_BASE-multi_group_multi_occurence_success
file_pcregrep $TEST_KEY "Running task #([0-9]+).*\n.*Multi-Group Multi-Occurence Success.*(\n.*)*Task #\1 passed" $OUTPUT
TEST_KEY=$TEST_KEY_BASE-multi_group_multi_occurence_fail
file_pcregrep $TEST_KEY "Running task #([0-9]+).*\n.*Multi-Group Multi-Occurence Failure.*(\n.*)*Task #\1 did not pass" $OUTPUT
OUTPUT="${HOME}/cylc-run/${NAME}/log/job/1/rose_ana_t1/01/job.out"
file_pcregrep "${TEST_KEY_BASE}-exact_list_fail}" \
'Running task #([0-9]+).*\n.*Exact List Match Fail.*\n.*Task #\1 did not pass' \
"${OUTPUT}"
file_pcregrep "${TEST_KEY_BASE}-exact_list_success" \
'Running task #([0-9]+).*\n.*Exact List Match Success.*\n.*Task #\1 passed' \
"${OUTPUT}"
file_pcregrep "${TEST_KEY_BASE}-exact_numeric_fail" \
'Running task #([0-9]+).*\n.*Exact Numeric Match Fail.*\n.*Task #\1 did not pass' \
"${OUTPUT}"
file_pcregrep "${TEST_KEY_BASE}-exact_numeric_success" \
'Running task #([0-9]+).*\n.*Exact Numeric Match Success.*\n.*Task #\1 passed' \
"${OUTPUT}"
file_pcregrep "${TEST_KEY_BASE}-exact_text_fail" \
'Running task #([0-9]+).*\n.*Exact Text Match Fail.*\n.*Task #\1 did not pass' \
"${OUTPUT}"
file_pcregrep "${TEST_KEY_BASE}-exact_text_success" \
'Running task #([0-9]+).*\n.*Exact Text Match Success.*\n.*Task #\1 passed' \
"${OUTPUT}"
file_pcregrep "${TEST_KEY_BASE}-within_list_fail" \
'Running task #([0-9]+).*\n.*Within List Match Fail.*\n.*Task #\1 did not pass' \
"${OUTPUT}"
file_pcregrep "${TEST_KEY_BASE}-within_list_success" \
'Running task #([0-9]+).*\n.*Within List Match Success.*\n.*Task #\1 passed' \
"${OUTPUT}"
file_pcregrep "${TEST_KEY_BASE}-within_absolute_fail" \
'Running task #([0-9]+).*\n.*Within Match Absolute Fail.*\n.*Task #\1 did not pass' \
"${OUTPUT}"
file_pcregrep "${TEST_KEY_BASE}-within_absolute_success" \
'Running task #([0-9]+).*\n.*Within Match Absolute Success.*\n.*Task #\1 passed' \
"${OUTPUT}"
file_pcregrep "${TEST_KEY_BASE}-within_percentage_fail" \
'Running task #([0-9]+).*\n.*Within Match Percentage Fail.*\n.*Task #\1 did not pass' \
"${OUTPUT}"
file_pcregrep "${TEST_KEY_BASE}-within_percentage_success" \
'Running task #([0-9]+).*\n.*Within Match Percentage Success.*\n.*Task #\1 passed' \
"${OUTPUT}"
file_pcregrep "${TEST_KEY_BASE}-simple_command_success" \
'Running task #([0-9]+).*\n.*Simple-Command Success.*\n.*Task #\1 passed' \
"${OUTPUT}"
file_pcregrep "${TEST_KEY_BASE}-simple_command_fail" \
'Running task #([0-9]+).*\n.*Simple-Command Failure.*\n.*Task #\1 did not pass' \
"${OUTPUT}"
file_pcregrep "${TEST_KEY_BASE}-file_command_success" \
'Running task #([0-9]+).*\n.*File-Command Success.*\n.*Task #\1 passed' \
"${OUTPUT}"
file_pcregrep "${TEST_KEY_BASE}-file_command_fail" \
'Running task #([0-9]+).*\n.*File-Command Failure.*\n.*Task #\1 did not pass' \
"${OUTPUT}"
file_pcregrep "${TEST_KEY_BASE}-simple_command_pattern_success" \
'Running task #([0-9]+).*\n.*Simple-Command Pattern Success.*\n.*Task #\1 passed' \
"${OUTPUT}"
file_pcregrep "${TEST_KEY_BASE}-simple_command_pattern_fail" \
'Running task #([0-9]+).*\n.*Simple-Command Pattern Failure.*\n.*Task #\1 did not pass' \
"${OUTPUT}"
file_pcregrep "${TEST_KEY_BASE}-file_command_pattern_success" \
'Running task #([0-9]+).*\n.*File-Command Pattern Success.*\n.*Task #\1 passed' \
"${OUTPUT}"
file_pcregrep "${TEST_KEY_BASE}-file_command_pattern_fail" \
'Running task #([0-9]+).*\n.*File-Command Pattern Failure.*\n.*Task #\1 did not pass' \
"${OUTPUT}"
file_pcregrep "${TEST_KEY_BASE}-file_command_fail_but_pattern_success" \
'Running task #([0-9]+).*\n.*File-Command Fail but Pattern Success.*\n.*Task #\1 passed' \
"${OUTPUT}"
file_pcregrep "${TEST_KEY_BASE}-multi_command_success" \
'Running task #([0-9]+).*\n.*Multi-Command Success.*\n.*Task #\1 passed' \
"${OUTPUT}"
file_pcregrep "${TEST_KEY_BASE}-multi_command_fail" \
'Running task #([0-9]+).*\n.*Multi-Command Failure.*\n.*Task #\1 did not pass' \
"${OUTPUT}"
file_pcregrep "${TEST_KEY_BASE}-multi_group_success" \
'Running task #([0-9]+).*\n.*Multi-Group Success.*\n.*Task #\1 passed' \
"${OUTPUT}"
file_pcregrep "${TEST_KEY_BASE}-multi_group_fail" \
'Running task #([0-9]+).*\n.*Multi-Group Failure.*\n.*Task #\1 did not pass' \
"${OUTPUT}"
file_pcregrep "${TEST_KEY_BASE}-multi_group_multi_occurence_success" \
'Running task #([0-9]+).*\n.*Multi-Group Multi-Occurence Success.*\n.*Task #\1 passed' \
"${OUTPUT}"
file_pcregrep "${TEST_KEY_BASE}-multi_group_multi_occurence_fail" \
'Running task #([0-9]+).*\n.*Multi-Group Multi-Occurence Failure.*\n.*Task #\1 did not pass' \
"${OUTPUT}"
#-------------------------------------------------------------------------------
# Test of ignoring a task
# First, test that the basic task ran ok
OUTPUT=$HOME/cylc-run/$NAME/log/job/1/rose_ana_t2_activated/01/job.out
TEST_KEY=$TEST_KEY_BASE-ignore-basic-1
file_pcregrep $TEST_KEY "Running task #([0-9]+).*\n.*First Test.*(\n.*)*Task #\1 did not pass" $OUTPUT
TEST_KEY=$TEST_KEY_BASE-ignore-basic-2
file_pcregrep $TEST_KEY "Running task #([0-9]+).*\n.*Second Test.*(\n.*)*Task #\1 passed" $OUTPUT
OUTPUT="${HOME}/cylc-run/${NAME}/log/job/1/rose_ana_t2_activated/01/job.out"
file_pcregrep "${TEST_KEY_BASE}-ignore-basic-1" \
'Running task #([0-9]+).*\n.*First Test.*\n.*Task #\1 did not pass' \
"${OUTPUT}"
file_pcregrep "${TEST_KEY_BASE}-ignore-basic-2" \
'Running task #([0-9]+).*\n.*Second Test.*\n.*Task #\1 passed' "${OUTPUT}"
# Then test that ignoring a test means the output is not present
OUTPUT=$HOME/cylc-run/$NAME/log/job/1/rose_ana_t2_deactivated/01/job.out
TEST_KEY=$TEST_KEY_BASE-ignore-notpresent
file_pcregrep $TEST_KEY "Running task #([0-9]+).*\n.*Second Test.*(\n.*)*Task #\1 passed" $OUTPUT
file_pcregrep "${TEST_KEY_BASE}-ignore-notpresent" \
'Running task #([0-9]+).*\n.*Second Test.*\n.*Task #\1 passed' \
"${HOME}/cylc-run/${NAME}/log/job/1/rose_ana_t2_deactivated/01/job.out"
#-------------------------------------------------------------------------------
# Test tolerance as an environment variable
# First, test that the basic task ran ok
OUTPUT=$HOME/cylc-run/$NAME/log/job/1/rose_ana_t3_within_tolerance/01/job.out
TEST_KEY=$TEST_KEY_BASE-tolerance-env-var-pass
file_pcregrep $TEST_KEY "Running task #([0-9]+).*\n.*First Test.*(\n.*)*Task #\1 passed" $OUTPUT
OUTPUT=$HOME/cylc-run/$NAME/log/job/1/rose_ana_t3_outside_tolerance/01/job.out
TEST_KEY=$TEST_KEY_BASE-tolerance-env-var-fail
file_pcregrep $TEST_KEY "Running task #([0-9]+).*\n.*First Test.*(\n.*)*Task #\1 did not pass" $OUTPUT
file_pcregrep "${TEST_KEY_BASE}-tolerance-env-var-pass" \
'Running task #([0-9]+).*\n.*First Test.*\n.*Task #\1 passed' \
"${HOME}/cylc-run/${NAME}/log/job/1/rose_ana_t3_within_tolerance/01/job.out"
file_pcregrep "${TEST_KEY_BASE}-tolerance-env-var-fail" \
'Running task #([0-9]+).*\n.*First Test.*\n.*Task #\1 did not pass' \
"${HOME}/cylc-run/${NAME}/log/job/1/rose_ana_t3_outside_tolerance/01/job.out"
#-------------------------------------------------------------------------------

# Test of comparison database
Expand Down Expand Up @@ -227,11 +255,13 @@ file_grep $TEST_KEY "$REGEXP" $OUTPUT
#-------------------------------------------------------------------------------
# Test of a few config options

OUTPUT=$HOME/cylc-run/$NAME/log/job/1/rose_ana_t4/01/job.out
TEST_KEY=$TEST_KEY_BASE-report_limit_working
file_pcregrep $TEST_KEY "Running task #([0-9]+).*\n.*Check report limit is active.*(\n.*)*Some output omitted due to limit.*(\n.*)*Task #\1 passed" $OUTPUT
TEST_KEY=$TEST_KEY_BASE-missing_skip_working
file_pcregrep $TEST_KEY "Running task #([0-9]+).*\n.*Check non-existent files are skipped.*(\n.*)*All file arguments are missing, skipping task.*(\n.*)*Task #\1 skipped by method" $OUTPUT
OUTPUT="${HOME}/cylc-run/${NAME}/log/job/1/rose_ana_t4/01/job.out"
file_pcregrep "${TEST_KEY_BASE}-report_limit_working" \
'Running task #([0-9]+).*Check report limit is active.*Some output omitted due to limit.*Task #\1 passed' \
"${OUTPUT}"
file_pcregrep "${TEST_KEY_BASE}-missing_skip_working" \
'Running task #(\d+).*\n.*Check non-existent files are skipped.*\n.*All file arguments are missing, skipping task.*\n.*Task #\1 skipped by method' \
"${OUTPUT}"

#-------------------------------------------------------------------------------
#Clean suite
Expand Down