180 |
182 |
181 Test files properties |
183 Test files properties |
182 |
184 |
183 >>> open('bin', 'wb').write(b'\0a') and None |
185 >>> open('bin', 'wb').write(b'\0a') and None |
184 $ fileset 'binary()' |
186 $ fileset 'binary()' |
|
187 bin |
185 $ fileset 'binary() and unknown()' |
188 $ fileset 'binary() and unknown()' |
186 bin |
189 bin |
187 $ echo '^bin$' >> .hgignore |
190 $ echo '^bin$' >> .hgignore |
188 $ fileset 'binary() and ignored()' |
191 $ fileset 'binary() and ignored()' |
189 bin |
192 bin |
190 $ hg add bin |
193 $ hg add bin |
191 $ fileset 'binary()' |
194 $ fileset 'binary()' |
192 bin |
195 bin |
193 |
196 |
194 $ fileset 'grep("b{1}")' |
197 $ fileset 'grep("b{1}")' |
|
198 .hgignore |
195 b1 |
199 b1 |
196 b2 |
200 b2 |
197 c1 |
201 c1 |
198 $ fileset 'grep("missingparens(")' |
202 $ fileset 'grep("missingparens(")' |
199 hg: parse error: invalid match pattern: (unbalanced parenthesis|missing \)).* (re) |
203 hg: parse error: invalid match pattern: (unbalanced parenthesis|missing \)).* (re) |
352 a2 |
356 a2 |
353 $ fileset -r1 'deleted()' |
357 $ fileset -r1 'deleted()' |
354 $ fileset -r1 'unknown()' |
358 $ fileset -r1 'unknown()' |
355 $ fileset -r1 'ignored()' |
359 $ fileset -r1 'ignored()' |
356 $ fileset -r1 'hgignore()' |
360 $ fileset -r1 'hgignore()' |
357 b2 |
361 .hgignore |
358 bin |
362 a2 |
|
363 b2 |
|
364 bin |
|
365 c2 |
|
366 sub2 |
359 $ fileset -r1 'binary()' |
367 $ fileset -r1 'binary()' |
360 bin |
368 bin |
361 $ fileset -r1 'size(1k)' |
369 $ fileset -r1 'size(1k)' |
362 1k |
370 1k |
363 $ fileset -r3 'resolved()' |
371 $ fileset -r3 'resolved()' |
401 |
409 |
402 $ fileset 'eol(dos)' |
410 $ fileset 'eol(dos)' |
403 dos |
411 dos |
404 mixed |
412 mixed |
405 $ fileset 'eol(unix)' |
413 $ fileset 'eol(unix)' |
|
414 .hgignore |
406 .hgsub |
415 .hgsub |
407 .hgsubstate |
416 .hgsubstate |
408 b1 |
417 b1 |
409 b2 |
418 b2 |
410 c1 |
419 b2.orig |
|
420 c1 |
|
421 c2 |
|
422 c3 |
|
423 con.xml |
411 mixed |
424 mixed |
|
425 unknown |
412 $ fileset 'eol(mac)' |
426 $ fileset 'eol(mac)' |
413 mac |
427 mac |
414 |
428 |
415 Test safety of 'encoding' on removed files |
429 Test safety of 'encoding' on removed files |
416 |
430 |
417 $ fileset 'encoding("ascii")' |
431 $ fileset 'encoding("ascii")' |
|
432 .hgignore |
418 .hgsub |
433 .hgsub |
419 .hgsubstate |
434 .hgsubstate |
420 1k |
435 1k |
421 2k |
436 2k |
422 b1 |
437 b1 |
423 b2 |
438 b2 |
|
439 b2.orig |
424 b2link (symlink !) |
440 b2link (symlink !) |
425 bin |
441 bin |
426 c1 |
442 c1 |
|
443 c2 |
|
444 c3 |
|
445 con.xml |
427 dos |
446 dos |
428 mac |
447 mac |
429 mixed |
448 mixed |
|
449 unknown |
430 |
450 |
431 Test detection of unintentional 'matchctx.existing()' invocation |
451 Test detection of unintentional 'matchctx.existing()' invocation |
432 |
452 |
433 $ cat > $TESTTMP/existingcaller.py <<EOF |
453 $ cat > $TESTTMP/existingcaller.py <<EOF |
434 > from mercurial import registrar |
454 > from mercurial import registrar |
435 > |
455 > |
436 > filesetpredicate = registrar.filesetpredicate() |
456 > filesetpredicate = registrar.filesetpredicate() |
437 > @filesetpredicate(b'existingcaller()', callexisting=False) |
457 > @filesetpredicate(b'existingcaller()', callexisting=False) |
438 > def existingcaller(mctx, x): |
458 > def existingcaller(mctx, x): |
439 > # this 'mctx.existing()' invocation is unintentional |
459 > # this 'mctx.existing()' invocation is unintentional |
440 > return [f for f in mctx.existing()] |
460 > existing = set(mctx.existing()) |
|
461 > return mctx.predicate(existing.__contains__, cache=False) |
441 > EOF |
462 > EOF |
442 |
463 |
443 $ cat >> .hg/hgrc <<EOF |
464 $ cat >> .hg/hgrc <<EOF |
444 > [extensions] |
465 > [extensions] |
445 > existingcaller = $TESTTMP/existingcaller.py |
466 > existingcaller = $TESTTMP/existingcaller.py |