Opened 16 years ago

Closed 16 years ago

Last modified 16 years ago

#369 closed defect (fixed)

Test totaldoclen1 fails with InvalidOperationError on Solaris 10 U6

Reported by: Ben Summers Owned by: Richard Boulton
Priority: normal Milestone: 1.0.13
Component: Test Suite Version: 1.0.12
Severity: normal Keywords:
Cc: ben@… Blocked By:
Blocking: Operating System: Solaris

Description

Test totaldoclen1 fails with InvalidOperationError on Solaris 10 U6 - report below.

Also, quite a few tests are skipped.

Compiler: "gcc (GCC) 3.4.3 (csl-sol210-3_4-branch+sol_rpath)"

Running test: totaldoclen1... InvalidOperationError                            
...
=======================================
1 of 7 tests failed
Please report to http://xapian.org/bugs
=======================================
*** Error code 1
The following command caused the error:
failed=0; all=0; xfail=0; xpass=0; skip=0; ws='[         ]'; \
srcdir=.; export srcdir; \
list=' btreetest quartztest  apitest internaltest stemtest  queryparsertest  termgentest '; \
if test -n "$list"; then \
  for tst in $list; do \
    if test -f ./$tst; then dir=./; \
    elif test -f $tst; then dir=; \
    else dir="./"; fi; \
    if ./runtest ${dir}$tst; then \
      all=`expr $all + 1`; \
      case "  " in \
      *$ws$tst$ws*) \
        xpass=`expr $xpass + 1`; \
        failed=`expr $failed + 1`; \
        echo "XPASS: $tst"; \
      ;; \
      *) \
        echo "PASS: $tst"; \
      ;; \
      esac; \
    elif test $? -ne 77; then \
      all=`expr $all + 1`; \
      case "  " in \
      *$ws$tst$ws*) \
        xfail=`expr $xfail + 1`; \
        echo "XFAIL: $tst"; \
      ;; \
      *) \
        failed=`expr $failed + 1`; \
        echo "FAIL: $tst"; \
      ;; \
      esac; \
    else \
      skip=`expr $skip + 1`; \
      echo "SKIP: $tst"; \
    fi; \
  done; \
  if test "$failed" -eq 0; then \
    if test "$xfail" -eq 0; then \
      banner="All $all tests passed"; \
    else \
      banner="All $all tests behaved as expected ($xfail expected failures)"; \
    fi; \
  else \
    if test "$xpass" -eq 0; then \
      banner="$failed of $all tests failed"; \
    else \
      banner="$failed of $all tests did not behave as expected ($xpass unexpected passes)"; \
    fi; \
  fi; \
  dashes="$banner"; \
  skipped=""; \
  if test "$skip" -ne 0; then \
    skipped="($skip tests were not run)"; \
    test `echo "$skipped" | wc -c` -le `echo "$banner" | wc -c` || \
      dashes="$skipped"; \
  fi; \
  report=""; \
  if test "$failed" -ne 0 && test -n "http://xapian.org/bugs"; then \
    report="Please report to http://xapian.org/bugs"; \
    test `echo "$report" | wc -c` -le `echo "$banner" | wc -c` || \
      dashes="$report"; \
  fi; \
  dashes=`echo "$dashes" | sed s/./=/g`; \
  echo "$dashes"; \
  echo "$banner"; \
  test -z "$skipped" || echo "$skipped"; \
  test -z "$report" || echo "$report"; \
  echo "$dashes"; \
  test "$failed" -eq 0; \
else :; fi
make: Fatal error: Command failed for target `check-TESTS'
Current working directory /home/ben/xapian-core-1.0.12/tests
*** Error code 1
make: Fatal error: Command failed for target `check-am'
Current working directory /home/ben/xapian-core-1.0.12/tests
*** Error code 1
make: Fatal error: Command failed for target `check'
Current working directory /home/ben/xapian-core-1.0.12/tests
*** Error code 1
The following command caused the error:
failcom='exit 1'; \
for f in x $MAKEFLAGS; do \
  case $f in \
    *=* | --[!k]*);; \
    *k*) failcom='fail=yes';; \
  esac; \
done; \
dot_seen=no; \
target=`echo check-recursive | sed s/-recursive//`; \
list='. docs tests'; for subdir in $list; do \
  echo "Making $target in $subdir"; \
  if test "$subdir" = "."; then \
    dot_seen=yes; \
    local_target="$target-am"; \
  else \
    local_target="$target"; \
  fi; \
  (cd $subdir && make  $local_target) \
  || eval $failcom; \
done; \
if test "$dot_seen" = "no"; then \
  make  "$target-am" || exit 1; \
fi; test -z "$fail"
make: Fatal error: Command failed for target `check-recursive'
Current working directory /home/ben/xapian-core-1.0.12
*** Error code 1
make: Fatal error: Command failed for target `check'

Change History (7)

comment:1 by Ben Summers, 16 years ago

Cc: Ben Summers removed
Component: OtherTest Suite
Version: 1.0.12

comment:2 by Ben Summers, 16 years ago

Cc: ben@… added

comment:3 by Richard Boulton, 16 years ago

Owner: changed from Olly Betts to Richard Boulton
Status: newassigned

Ben,

Can you run

./runtest ./apitest -v totaldoclen1

And paste the output here - this should give us a better idea of where it's failing. My guess would be an unexpected integer overflow, though; possibly we have a wrong type somewhere.

The skipped tests are quite normal, and shouldn't represent any problem.

comment:4 by Ben Summers, 16 years ago

Glad skipping is normal.

Output is:

Running test: totaldoclen1... InvalidOperationErrorInvalidOperationError: Backend inmemory doesn't support get_writable_database_as_database()

./apitest backend inmemory: 0 tests passed, 1 failed.
Running test: totaldoclen1... ok
./apitest backend flint: All 1 tests passed.
Running test: totaldoclen1... ok
./apitest backend quartz: All 1 tests passed.
Running test: totaldoclen1... ok
./apitest backend remoteprog: All 1 tests passed.
Running test: totaldoclen1... ok
./apitest backend remotetcp: All 1 tests passed.
./apitest total: 4 tests passed, 1 failed.

comment:5 by Richard Boulton, 16 years ago

Milestone: 1.0.13
Resolution: fixed
Status: assignedclosed

Ah, good. I'm glad to report that this is just a bug in the testcase, and is fixed in the SVN HEAD of the 1.0 branch (in r12564, to be precise). The test isn't valid for the inmemory backend, basically, and should be skipped for it, but the check for this had been broken by updates to other parts of the code.

Marking as for the 1.0.13 milestone, and marking as fixed since it already is. (It'll be moved to the "released" status once that release is made.)

comment:6 by Olly Betts, 16 years ago

Actually, the current ticket workflow we have in trac doesn't allow tickets to move from "fixed" to "released" (the only state they can move to is "reopened").

Instead the milestone of the fixed ticket indicates if the fix has been released and which release it was/will be in. We can configure the workflow if we want, but the current one seems reasonable to me (albeit different to bugzilla).

P.S. Hi Ben! Bit of a blast from the past...

comment:7 by Ben Summers, 16 years ago

RISC OS refugees are everywhere!

Glad it's not a problem on Solaris, thanks for your help.

Note: See TracTickets for help on using tickets.