1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
|
<?php
/* Copyright 2013-present Facebook, Inc.
* Licensed under the Apache License, Version 2.0 */
class TypeExprTestCase extends WatchmanTestCase {
function testTypeExpr() {
$dir = new WatchmanDirectoryFixture();
$root = $dir->getPath();
touch("$root/foo.c");
mkdir("$root/subdir");
touch("$root/subdir/bar.txt");
$this->watch($root);
$res = $this->watchmanCommand('query', $root, array(
'expression' => array('type', 'f'),
'fields' => array('name'),
));
$files = $res['files'];
sort($files);
$this->assertEqualFileList(array('foo.c', 'subdir/bar.txt'), $files);
$res = $this->watchmanCommand('query', $root, array(
'expression' => array('type', 'd'),
'fields' => array('name', 'type'),
));
$this->assertEqual(
$this->secondLevelSort(array(
array('name' => 'subdir', 'type' => 'd')
)),
$this->secondLevelSort($res['files']));
$res = $this->watchmanCommand('query', $root, array(
'expression' => array('type', 'f'),
'fields' => array('name', 'type'),
));
usort($res['files'], function ($a, $b) {
return strcmp($a['name'], $b['name']);
});
$this->assertEqual(
$this->secondLevelSort(array(
array('name' => 'foo.c', 'type' => 'f'),
array('name' => w_normalize_filename('subdir/bar.txt'), 'type' => 'f')
)),
$this->secondLevelSort($res['files']));
$res = $this->watchmanCommand('query', $root, array(
'expression' => array('type', 'x'),
'fields' => array('name'),
));
$this->assertEqual(
"failed to parse query: invalid type string 'x'",
$res['error']);
$res = $this->watchmanCommand('query', $root, array(
'expression' => 'type',
'fields' => array('name'),
));
$this->assertEqual(
'failed to parse query: must use ["type", "typestr"]',
$res['error']);
}
}
// vim:ts=2:sw=2:et:
|