Beispiel #1
0
 def rootIsWatched(self, r):
     r = norm_absolute_path(r)
     watches = [
         norm_absolute_path(root)
         for root in self.watchmanCommand("watch-list")["roots"]
     ]
     return r in watches
 def rootIsWatched(self, r):
     r = norm_absolute_path(r)
     watches = [
         norm_absolute_path(root)
         for root in self.watchmanCommand("watch-list")["roots"]
     ]
     return r in watches
    def test_reUseNestedWatch(self):
        d = self.mkdtemp()
        abc = os.path.join(d, "a", "b", "c")
        os.makedirs(abc, 0o777)
        self.touchRelative(abc, ".watchmanconfig")

        res = self.watchmanCommand("watch-project", d)
        self.assertEqual(d, norm_absolute_path(res["watch"]))

        res = self.watchmanCommand("watch-project", abc)
        self.assertEqual(d, norm_absolute_path(res["watch"]))
        self.assertEqual("a/b/c", norm_relative_path(res["relative_path"]))
Beispiel #4
0
    def runProjectTests(self, config, expect, touch_watchmanconfig=False):
        with WatchmanInstance.Instance(config=config) as inst:
            inst.start()
            client = self.getClient(inst)

            for touch, expect_watch, expect_rel, expect_pass in expect:
                # encode the test criteria in the dirname so that we can
                # figure out which test scenario failed more easily

                suffix = "-%s-%s-%s-%s" % (touch, expect_watch, expect_rel, expect_pass)
                suffix = suffix.replace("/", "Z")
                d = self.mkdtemp(suffix=suffix)

                dir_to_watch = os.path.join(d, "a", "b", "c")
                os.makedirs(dir_to_watch, 0o777)
                dir_to_watch = norm_absolute_path(dir_to_watch)
                self.touchRelative(d, touch)
                if touch_watchmanconfig:
                    make_empty_watchmanconfig(d)

                if expect_watch:
                    expect_watch = os.path.join(d, expect_watch)
                else:
                    expect_watch = d

                if expect_pass:
                    res = client.query("watch-project", dir_to_watch)

                    self.assertEqual(
                        norm_absolute_path(os.path.join(d, expect_watch)),
                        norm_absolute_path(res["watch"]),
                    )
                    if not expect_rel:
                        self.assertEqual(None, res.get("relative_path"))
                    else:
                        self.assertEqual(
                            norm_relative_path(expect_rel),
                            norm_relative_path(res.get("relative_path")),
                        )
                else:
                    with self.assertRaises(pywatchman.WatchmanError) as ctx:
                        client.query("watch-project", dir_to_watch)
                    self.assertIn(
                        (
                            "None of the files listed in global config "
                            + "root_files are present in path `"
                            + dir_to_watch
                            + "` or any of its parent directories.  "
                            + "root_files is defined by the"
                        ),
                        str(ctx.exception),
                    )
Beispiel #5
0
    def test_dot(self):
        root = self.mkdtemp()

        save_dir = os.getcwd()
        try:
            os.chdir(root)

            dot = "" if os.name == "nt" else "."

            if self.transport == "cli":
                res = self.watchmanCommand("watch", dot)
                self.assertEqual(root, norm_absolute_path(res["watch"]))
            else:
                with self.assertRaises(pywatchman.WatchmanError) as ctx:
                    self.watchmanCommand("watch", dot)

                self.assertIn("must be absolute", str(ctx.exception))

        finally:
            os.chdir(save_dir)
Beispiel #6
0
    def test_dot(self):
        root = self.mkdtemp()

        save_dir = os.getcwd()
        try:
            os.chdir(root)

            dot = "" if os.name == "nt" else "."

            if self.transport == "cli":
                res = self.watchmanCommand("watch", dot)
                self.assertEqual(root, norm_absolute_path(res["watch"]))
            else:
                with self.assertRaises(pywatchman.WatchmanError) as ctx:
                    self.watchmanCommand("watch", dot)

                self.assertIn("must be absolute", str(ctx.exception))

        finally:
            os.chdir(save_dir)
Beispiel #7
0
 def mkdtemp(self, **kwargs):
     return norm_absolute_path(tempfile.mkdtemp(dir=self.tempdir, **kwargs))
 def mkdtemp(self, **kwargs):
     return norm_absolute_path(tempfile.mkdtemp(dir=self.tempdir, **kwargs))