aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tests/local.mk3
-rw-r--r--tests/search.nix25
-rw-r--r--tests/search.sh42
3 files changed, 69 insertions, 1 deletions
diff --git a/tests/local.mk b/tests/local.mk
index ec7ebfb0d..9df0adf1b 100644
--- a/tests/local.mk
+++ b/tests/local.mk
@@ -24,7 +24,8 @@ nix_tests = \
brotli.sh \
pure-eval.sh \
check.sh \
- plugins.sh
+ plugins.sh \
+ search.sh
# parallel.sh
install-tests += $(foreach x, $(nix_tests), tests/$(x))
diff --git a/tests/search.nix b/tests/search.nix
new file mode 100644
index 000000000..fea6e7a7a
--- /dev/null
+++ b/tests/search.nix
@@ -0,0 +1,25 @@
+with import ./config.nix;
+
+{
+ hello = mkDerivation rec {
+ name = "hello-${version}";
+ version = "0.1";
+ buildCommand = "touch $out";
+ meta.description = "Empty file";
+ };
+ foo = mkDerivation rec {
+ name = "foo-5";
+ buildCommand = ''
+ mkdir -p $out
+ echo ${name} > $out/${name}
+ '';
+ };
+ bar = mkDerivation rec {
+ name = "bar-3";
+ buildCommand = ''
+ echo "Does not build successfully"
+ exit 1
+ '';
+ meta.description = "broken bar";
+ };
+}
diff --git a/tests/search.sh b/tests/search.sh
new file mode 100644
index 000000000..53a69a0bb
--- /dev/null
+++ b/tests/search.sh
@@ -0,0 +1,42 @@
+source common.sh
+
+clearStore
+clearCache
+
+# No packages
+(( $(NIX_PATH= nix search -u|wc -l) == 0 ))
+
+# Haven't updated cache, still nothing
+(( $(nix search -f search.nix hello|wc -l) == 0 ))
+(( $(nix search -f search.nix |wc -l) == 0 ))
+
+# Update cache, search should work
+(( $(nix search -f search.nix -u hello|wc -l) > 0 ))
+
+# Use cache
+(( $(nix search -f search.nix foo|wc -l) > 0 ))
+(( $(nix search foo|wc -l) > 0 ))
+
+# Test --no-cache works
+# No results from cache
+(( $(nix search --no-cache foo |wc -l) == 0 ))
+# Does find results from file pointed at
+(( $(nix search -f search.nix --no-cache foo |wc -l) > 0 ))
+
+# Check descriptions are searched
+(( $(nix search broken | wc -l) > 0 ))
+
+# Check search that matches nothing
+(( $(nix search nosuchpackageexists | wc -l) == 0 ))
+
+
+## Search expressions
+
+# Check that empty search string matches all
+EMPTY=$(nix search)
+BOL=$(nix search "^")
+ALL=$(nix search ".*")
+
+diff <(printf "%s" $EMPTY) <(printf "%s" $BOL)
+# "ALL" highlights differently, not sure preferred behavior
+# diff <(printf "%s" $EMPTY) <(printf "%s" $ALL)