示例#1
0
    def test_local_and_two_global_namespace_plugins(self):
        available_plugins = set(discover_plugins())
        self.assertSetEqual(set(), available_plugins)

        # We make plugins "a" and "c" available as packages, each from other directories, as if they were
        # separate installed projects ("global" usage of the plugins).
        # We move to another directory with a different plugin "b", as if it were another separate project
        # which is not installed ("local" usage of the plugin declared in the namespace).
        with pip_install(self.project_a_fixtures_root, "a"), pip_install(
                self.project_c_fixtures_root,
                "c"), push_python_project(self.project_b_fixtures_root):
            available_plugins = set(discover_plugins())
            self.assertSetEqual(
                {
                    "allennlp_plugins.a", "allennlp_plugins.b",
                    "allennlp_plugins.c"
                },
                available_plugins,
            )

            import_plugins()
            subcommands_available = Subcommand.list_available()
            self.assertIn("a", subcommands_available)
            self.assertIn("b", subcommands_available)
            self.assertIn("c", subcommands_available)
示例#2
0
    def test_file_plugin(self):
        available_plugins = set(discover_plugins())
        self.assertSetEqual(set(), available_plugins)

        with pushd(self.project_d_fixtures_root):
            available_plugins = set(discover_plugins())
            self.assertSetEqual({"d"}, available_plugins)

            import_plugins()
            subcommands_available = Subcommand.list_available()
            self.assertIn("d", subcommands_available)
示例#3
0
    def test_local_namespace_plugin(self):
        available_plugins = set(discover_plugins())
        self.assertSetEqual(set(), available_plugins)

        with pushd(self.project_b_fixtures_root):
            available_plugins = set(discover_plugins())
            self.assertSetEqual({"allennlp_plugins.b"}, available_plugins)

            import_plugins()
            subcommands_available = Subcommand.list_available()
            self.assertIn("b", subcommands_available)
示例#4
0
    def test_global_namespace_plugin(self):
        available_plugins = set(discover_plugins())
        self.assertSetEqual(set(), available_plugins)

        with pip_install(self.project_a_fixtures_root, "a"):
            available_plugins = set(discover_plugins())
            self.assertSetEqual({"allennlp_plugins.a"}, available_plugins)

            import_plugins()
            subcommands_available = Subcommand.list_available()
            self.assertIn("a", subcommands_available)
示例#5
0
    def test_file_plugin(self):
        available_plugins = set(discover_plugins())
        assert available_plugins == set()

        with pushd(self.plugins_root):
            available_plugins = set(discover_plugins())
            assert available_plugins == {"d"}

            import_plugins()
            subcommands_available = Subcommand.list_available()
            assert "d" in subcommands_available
示例#6
0
    def test_local_namespace_plugin_different_path(self):
        available_plugins = set(discover_plugins())
        self.assertSetEqual(set(), available_plugins)

        with tempfile.TemporaryDirectory() as temp_dir_b:
            distutils.dir_util.copy_tree(self.project_b_fixtures_root, temp_dir_b)

            # We move to another directory with a different plugin "b", as if it were another
            # separate project which is not installed ("local" usage of the plugin declared in
            # the namespace).
            with pushd(temp_dir_b):
                available_plugins = set(discover_plugins())
                self.assertSetEqual({"allennlp_plugins.b"}, available_plugins)

                import_plugins()
                subcommands_available = Subcommand.list_available()
                self.assertIn("b", subcommands_available)
示例#7
0
    def test_reload_plugins_adds_new(self):
        available_plugins = set(discover_plugins())
        self.assertSetEqual(set(), available_plugins)

        with pip_install(self.project_a_fixtures_root, "a"):
            available_plugins = set(discover_plugins())
            self.assertSetEqual({"allennlp_plugins.a"}, available_plugins)

            import_plugins()
            subcommands_available = Subcommand.list_available()
            self.assertIn("a", subcommands_available)

            with pip_install(self.project_c_fixtures_root, "c"):
                available_plugins = set(discover_plugins())
                self.assertSetEqual({"allennlp_plugins.a", "allennlp_plugins.c"}, available_plugins)

                import_plugins()
                subcommands_available = Subcommand.list_available()
                self.assertIn("a", subcommands_available)
                self.assertIn("c", subcommands_available)
示例#8
0
    def test_file_plugin_loaded(self):
        plugins_root = self.FIXTURES_ROOT / "plugins"

        sys.argv = ["allennlp"]

        available_plugins = set(discover_plugins())
        self.assertSetEqual(set(), available_plugins)

        with pushd(plugins_root):
            main()
            subcommands_available = Subcommand.list_available()
            self.assertIn("d", subcommands_available)
示例#9
0
    def test_file_plugin_loaded(self):
        plugins_root = self.FIXTURES_ROOT / "plugins"

        sys.argv = ["allennlp"]

        available_plugins = set(discover_plugins())
        assert available_plugins == set()

        with pushd(plugins_root):
            main()
            subcommands_available = Subcommand.list_available()
            assert "d" in subcommands_available
示例#10
0
    def test_namespace_plugin_loaded(self):
        plugins_root = self.FIXTURES_ROOT / "plugins"
        # "a" sets a "global" namespace plugin, because it's gonna be installed with pip.
        project_a_fixtures_root = plugins_root / "project_a"

        sys.argv = ["allennlp"]

        available_plugins = set(discover_plugins())
        self.assertSetEqual(set(), available_plugins)

        with pip_install(project_a_fixtures_root, "a"):
            main()

        subcommands_available = Subcommand.list_available()
        self.assertIn("a", subcommands_available)
示例#11
0
    def test_file_plugin_loaded(self):
        plugins_root = self.FIXTURES_ROOT / "plugins"
        # "d" sets a "local" file plugin, because it's supposed to be run from that directory
        # and has a ".allennlp_plugins" file in it.
        project_d_fixtures_root = plugins_root / "project_d"

        sys.argv = ["allennlp"]

        available_plugins = set(discover_plugins())
        self.assertSetEqual(set(), available_plugins)

        with pushd(project_d_fixtures_root):
            main()
            subcommands_available = Subcommand.list_available()
            self.assertIn("d", subcommands_available)
示例#12
0
 def test_no_plugins(self):
     available_plugins = set(discover_plugins())
     self.assertSetEqual(set(), available_plugins)
示例#13
0
 def test_no_plugins(self):
     available_plugins = set(discover_plugins())
     assert available_plugins == set()