diff tests/test-fileset.t @ 38831:b975c5801487

fileset: reorder 'and' expression to evaluate basic patterns first Timing of a crafted example (when disk cache is warm): $ hg files set:'binary() and path:contrib' (orig) time: real 0.140 secs (user 0.120+0.000 sys 0.020+0.000) (new) time: real 0.040 secs (user 0.030+0.000 sys 0.010+0.000)
author Yuya Nishihara <yuya@tcha.org>
date Sat, 21 Jul 2018 16:41:45 +0900
parents 7e7e2b2ff284
children ca4de8ba5b5f
line wrap: on
line diff
--- a/tests/test-fileset.t	Sun Jul 22 11:47:29 2018 +0900
+++ b/tests/test-fileset.t	Sat Jul 21 16:41:45 2018 +0900
@@ -186,18 +186,18 @@
     (symbol 'a2')
     (and
       (func
-        (symbol 'grep')
-        (string 'b'))
+        (symbol 'clean')
+        None)
       (func
-        (symbol 'clean')
-        None)))
+        (symbol 'grep')
+        (string 'b'))))
   * matcher:
   <unionmatcher matchers=[
     <patternmatcher patterns='(?:a1$)'>,
     <patternmatcher patterns='(?:a2$)'>,
     <intersectionmatcher
-      m1=<predicatenmatcher pred=grep('b')>,
-      m2=<predicatenmatcher pred=clean>>]>
+      m1=<predicatenmatcher pred=clean>,
+      m2=<predicatenmatcher pred=grep('b')>>]>
   a1
   a2
   b1
@@ -283,6 +283,19 @@
   $ fileset 'binary()'
   bin
 
+  $ fileset -p optimized -s 'binary() and b*'
+  * optimized:
+  (and
+    (symbol 'b*')
+    (func
+      (symbol 'binary')
+      None))
+  * matcher:
+  <intersectionmatcher
+    m1=<patternmatcher patterns='(?:b[^/]*$)'>,
+    m2=<predicatenmatcher pred=binary>>
+  bin
+
   $ fileset 'grep("b{1}")'
   .hgignore
   b1