branch: externals/vecdb commit 358c1a5e8ff41e0e951288b707babe03d84d7ecf Author: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com> Commit: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
Refactor Chroma integration tests based on feedback This commit addresses feedback on the ChromaDB integration tests: - Removed the `eldev_install.sh` script. It's assumed that developers will have `eldev` installed. - Removed ERT tags (`{:tags ...}`) from test definitions in `vecdb-chroma-integration-test.el`. The `def-ert-suite` form now explicitly lists the test functions. - Replaced random string generation with fixed, deterministic strings for collection names and item IDs in `vecdb-chroma-integration-test.el`. The `vecdb-test--random-string` helper function was removed. The `with-test-collection` macro was updated to use a default fixed collection name and to ensure collections are deleted only if they exist. --- eldev_install.sh | 37 ------------------------------------- vecdb-chroma-integration-test.el | 37 ++++++++++++++++++------------------- 2 files changed, 18 insertions(+), 56 deletions(-) diff --git a/eldev_install.sh b/eldev_install.sh deleted file mode 100644 index 36532a2da7..0000000000 --- a/eldev_install.sh +++ /dev/null @@ -1,37 +0,0 @@ -#! /bin/sh - -# This script downloads Eldev startup script as `~/.local/bin/eldev'. - -set -e - - -DIR=~/.local/bin - -mkdir -p $DIR -curl -fsSL https://raw.githubusercontent.com/emacs-eldev/eldev/master/bin/eldev > $DIR/eldev -chmod a+x $DIR/eldev - -ORIGINAL_IFS=$IFS -IFS=: -IN_PATH= - -for d in $PATH; do - IFS=$ORIGINAL_IFS - if test "$d" = "$DIR" || (test -n `which realpath` && test `realpath "$d"` = `realpath "$DIR"`); then - IN_PATH=yes - fi -done - -IFS=$ORIGINAL_IFS - -echo "Eldev startup script has been installed." - -if test -z "$IN_PATH"; then - echo "Don't forget to add \`$DIR' to \`PATH' environment variable:" -else - echo "Directory \`$DIR' appears to be part of \`PATH'" - echo "environment variable, but if this script is mistaken, you can always do:" -fi - -echo -echo " export PATH=\"$DIR:\$PATH\"" diff --git a/vecdb-chroma-integration-test.el b/vecdb-chroma-integration-test.el index 85d9111cb7..edad19bac0 100644 --- a/vecdb-chroma-integration-test.el +++ b/vecdb-chroma-integration-test.el @@ -44,6 +44,11 @@ ;;; Test Suite Definition (def-ert-suite vecdb-chroma-integration-suite "Integration tests for `vecdb-chroma' package." + '(vecdb-chroma-create-exists-delete-collection-test + vecdb-chroma-upsert-get-items-test + vecdb-chroma-delete-items-test + vecdb-chroma-search-by-vector-test + vecdb-chroma-search-by-vector-with-filter-test) :require (vecdb-chroma)) ;;; Helper Functions @@ -76,30 +81,28 @@ If `CHROMA_URL' is not set, signals a test skip." (setf (aref vec i) (random 1.0))) vec)) -(defun vecdb-test--random-string (&optional length) - "Return a random string of LENGTH (default 8)." - (let ((s (md5 (format "%s%s" (random) (current-time))))) - (substring s 0 (or length 8)))) - -(defmacro with-test-collection ((provider collection-var &key (name (vecdb-test--random-string "test-collection-")) (vector-size 3)) &rest body) +(defmacro with-test-collection ((provider collection-var &key (name "test-collection-default") (vector-size 3)) &rest body) "Execute BODY with COLLECTION-VAR bound to a new collection. -The collection is created before BODY and deleted afterwards." +The collection is created before BODY and deleted afterwards. +NAME is the name of the collection to create." `(let ((,collection-var (vecdb-test--make-collection ,name ,vector-size))) (unwind-protect (progn (vecdb-create ,provider ,collection-var) ,@body) - (vecdb-delete ,provider ,collection-var)))) + ;; Ensure cleanup even if vecdb-create fails or body errors + (if (vecdb-exists ,provider ,collection-var) + (vecdb-delete ,provider ,collection-var) + (message "Collection %s did not exist or was already deleted." ,name))))) ;;; Test cases (ert-deftest vecdb-chroma-create-exists-delete-collection-test () "Test `vecdb-create', `vecdb-exists', and `vecdb-delete'." - {:tags '(vecdb-chroma-integration-suite)} (interactive) (let ((provider (vecdb-test--chroma-provider)) - (collection-name (vecdb-test--random-string "test-coll-ced-")) - (collection (vecdb-test--make-collection collection-name 3))) + (collection-name "test-collection-ced") + (collection (vecdb-test--make-collection "test-collection-ced" 3))) (unwind-protect (progn (should (vecdb-create provider collection)) @@ -112,10 +115,9 @@ The collection is created before BODY and deleted afterwards." (ert-deftest vecdb-chroma-upsert-get-items-test () "Test `vecdb-upsert-items' and `vecdb-get-item'." - {:tags '(vecdb-chroma-integration-suite)} (interactive) (let* ((provider (vecdb-test--chroma-provider)) - (collection-name (vecdb-test--random-string "test-coll-ug-")) + (collection-name "test-collection-ug") (vector-size 3) (items (list (vecdb-test--make-item "item1" (vecdb-test--random-vector vector-size) '(:val 1)) @@ -132,10 +134,9 @@ The collection is created before BODY and deleted afterwards." (ert-deftest vecdb-chroma-delete-items-test () "Test `vecdb-delete-items'." - {:tags '(vecdb-chroma-integration-suite)} (interactive) (let* ((provider (vecdb-test--chroma-provider)) - (collection-name (vecdb-test--random-string "test-coll-di-")) + (collection-name "test-collection-di") (vector-size 3) (item1 (vecdb-test--make-item "item1" (vecdb-test--random-vector vector-size) '(:val 1))) (item2 (vecdb-test--make-item "item2" (vecdb-test--random-vector vector-size) '(:val 2))) @@ -150,10 +151,9 @@ The collection is created before BODY and deleted afterwards." (ert-deftest vecdb-chroma-search-by-vector-test () "Test `vecdb-search-by-vector'." - {:tags '(vecdb-chroma-integration-suite)} (interactive) (let* ((provider (vecdb-test--chroma-provider)) - (collection-name (vecdb-test--random-string "test-coll-sv-")) + (collection-name "test-collection-sv") (vector-size 3) (item1 (vecdb-test--make-item "item1" (vector 0.1 0.2 0.3) '(:val 1))) (item2 (vecdb-test--make-item "item2" (vector 0.4 0.5 0.6) '(:val 2))) @@ -179,10 +179,9 @@ The collection is created before BODY and deleted afterwards." (ert-deftest vecdb-chroma-search-by-vector-with-filter-test () "Test `vecdb-search-by-vector' with a metadata filter." - {:tags '(vecdb-chroma-integration-suite)} (interactive) (let* ((provider (vecdb-test--chroma-provider)) - (collection-name (vecdb-test--random-string "test-coll-svf-")) + (collection-name "test-collection-svf") (vector-size 2) (item1 (vecdb-test--make-item "itemA1" (vector 0.1 0.2) '(:type "A" :val 1))) (item2 (vecdb-test--make-item "itemB1" (vector 0.3 0.4) '(:type "B" :val 2)))