예제 #1
0
    def test_rename_invalid(self):
        """If an invalid name is given an exception is raised."""

        manager = project.ProjectManager(self.mktemp())
        prj = manager.get_project(NAME)
        prj.create()
        self.assertRaises(errors.InvalidNameError, prj.rename, "test/invalid")
예제 #2
0
    def test_open(self):
        """Open a project."""

        manager = project.ProjectManager(self.mktemp())
        prj = manager.get_project(NAME)
        prj.create()
        prj.open(Factory(), Settings(self.mktemp()))
예제 #3
0
 def test_save_after_delete(self):
     manager = project.ProjectManager(self.mktemp())
     prj = manager.get_project(NAME)
     prj.create()
     prj.delete()
     prj.save(Factory())
     self.assertTrue(prj.exists())
예제 #4
0
    def test_create(self):
        """Create a new project."""

        manager = project.ProjectManager(self.mktemp())
        prj = manager.get_project(NAME)
        prj.create()
        self.assertTrue(prj.exists())
예제 #5
0
    def test_rename_invalid_pathological(self):
        """If the name is really strange, the error is not raised."""

        manager = project.ProjectManager(self.mktemp())
        prj = manager.get_project(NAME)
        prj.create()
        prj.rename("test/../invalid", False, Settings(self.mktemp()))
        self.assertEqual(prj.name, "invalid")
예제 #6
0
    def test_path_exists(self):
        """
        All the projects are in path defined at contruction time. Assert that
        that path exists.
        """

        manager = project.ProjectManager(self.mktemp())
        self.assertTrue(FilePath(manager.path).exists())
예제 #7
0
    def test_set_description(self):
        """Set the description of a project."""

        DESCRIPTION = "hello world"
        manager = project.ProjectManager(self.mktemp())
        prj = manager.get_project(NAME)
        prj.set_description(DESCRIPTION)
        self.assertEqual(prj.get_description(), DESCRIPTION)
예제 #8
0
    def test_exists(self):
        """Test if a project with certain name exists."""

        manager = project.ProjectManager(self.mktemp())
        prj = manager.get_project(NAME)
        self.assertFalse(prj.exists())
        prj.create(NAME)
        self.assertTrue(prj.exists())
예제 #9
0
    def test_import(self):
        """Import a project."""
        def _assert(prj):
            self.assertTrue(prj.exists())
            self.assertEquals(prj.name, NAME)

        manager = project.ProjectManager(self.mktemp())
        return manager.import_prj(NAME, get_filename("test.vbp"))
예제 #10
0
    def test_close(self):
        """A project cannot be closed if one or more bricks are running."""

        factory = stubs.Factory()
        brick = factory.new_brick("_stub", "test")
        brick.poweron()
        manager = project.ProjectManager(self.mktemp())
        prj = manager.get_project(NAME)
        self.assertRaises(errors.BrickRunningError, prj.close, factory)
예제 #11
0
    def test_delete(self):
        """Delete a project."""

        manager = project.ProjectManager(self.mktemp())
        prj = manager.get_project(NAME)
        prj.create()
        self.assertTrue(prj.exists())
        prj.delete()
        self.assertFalse(prj.exists())
예제 #12
0
    def test_equality(self):
        """
        Two projects are equal if they have the same name and the same path.
        """

        manager = project.ProjectManager(self.mktemp())
        prj1 = manager.get_project(NAME)
        prj2 = manager.get_project(NAME)
        self.assertEqual(prj1, prj2)
예제 #13
0
    def test_restore_last_project(self):
        """Restore last used project."""

        manager = project.ProjectManager(self.mktemp())
        prj = manager.get_project(NAME)
        prj.create()
        settings = Settings(self.mktemp())
        settings.set("current_project", NAME)
        self.assertEqual(manager.restore_last(Factory(), settings), prj)
예제 #14
0
    def test_rename_exists(self):
        """If a project with the same name exists an exception is raised."""

        NEWNAME = "test2"
        manager = project.ProjectManager(self.mktemp())
        prj = manager.get_project(NAME)
        prj.create()
        manager.get_project(NEWNAME).create()
        self.assertRaises(errors.ProjectExistsError, prj.rename, NEWNAME)
예제 #15
0
    def test_import_project_exists(self):
        """
        Import a project but a project with the same name already exists.
        """

        manager = project.ProjectManager(self.mktemp())
        prj = manager.get_project(NAME)
        prj.create()
        d = manager.import_prj(NAME, "/example/test.vbp")
        failureResultOf(self, d, errors.ProjectExistsError)
예제 #16
0
    def test_save_as(self):
        """Create a copy of the project with a different name."""

        NEW_PROJET_NAME = "copy"
        manager = project.ProjectManager(self.mktemp())
        prj = manager.get_project(NAME)
        prj.create()
        new = prj.save_as(NEW_PROJET_NAME, Factory())
        self.assertTrue(FilePath(new.path).exists())
        self.assertNotEqual(prj.path, new.path)
예제 #17
0
 def test_files(self):
     manager = project.ProjectManager(self.mktemp())
     prj = manager.get_project(NAME)
     prj.create()
     files = [FilePath(prj.path).child(".project")]
     self.assertEqual(list(prj.files()), files)
     afile = FilePath(prj.path).child("file")
     afile.open("w").close()
     files.append(afile)
     self.assertEqual(sorted(prj.files()), sorted(files))
예제 #18
0
    def test_create_already_exists(self):
        """
        Create a new project but a project with the same name already exists.
        """

        manager = project.ProjectManager(self.mktemp())
        prj = manager.get_project(NAME)
        prj.create()
        self.assertTrue(prj.exists())
        self.assertRaises(errors.ProjectExistsError, prj.create)
        prj.create(overwrite=True)
예제 #19
0
    def test_save_description(self):
        """Save the description when the project is saved."""

        DESCRIPTION = "hello world"
        manager = project.ProjectManager(self.mktemp())
        prj = manager.get_project(NAME)
        prj.set_description(DESCRIPTION)
        readme = FilePath(prj.path).child("README")
        self.assertFalse(readme.exists())
        prj.save(Factory())
        self.assertEqual(readme.getContent(), DESCRIPTION)
예제 #20
0
    def test_iter2(self):
        """Returns only prooved projects."""

        path = self.mktemp()
        manager = project.ProjectManager(path)
        # a file is not a project
        FilePath(path).child("child1").touch()
        prj = manager.get_project(NAME)
        prj.create()
        # a directory without a .project file is not a project
        FilePath(path).child("prj2").makedirs()
        self.assertEqual(list(manager), [prj])
예제 #21
0
    def test_restore_last_project_not_exists(self):
        """
        If the last project does not exists, don't create a new one with the
        same name but use a default name.
        """

        settings = Settings(self.mktemp())
        settings.set("current_project", NAME)
        manager = project.ProjectManager(self.mktemp())
        prj = manager.get_project(NAME)
        self.assertFalse(prj.exists())
        prj = manager.restore_last(Factory(), settings)
        self.assertEqual(prj.name, settings.DEFAULT_PROJECT + "_0")
예제 #22
0
 def test_quit(self):
     DESC = "test"
     PROJECT = "test_project"
     factory = stubs.Factory()
     manager = project.ProjectManager(self.mktemp())
     prj = manager.get_project(PROJECT)
     prj.create()
     prj.open(factory, _settings.Settings(self.mktemp()))
     readme_tab = Readme(manager)
     readme_tab.init(factory)
     readme_tab.set_text(DESC)
     self.assertEqual(prj.get_description(), "")
     readme_tab.on_quit(factory)
     self.assertEqual(prj.get_description(), DESC)
예제 #23
0
    def test_rename(self):
        """Rename a project."""

        NEWNAME = "rename_test"
        manager = project.ProjectManager(self.mktemp())
        prj = manager.get_project(NAME)
        prj.create()
        self.assertTrue(prj.exists())
        old_path = prj.path
        prj.rename(NEWNAME, False, Settings(self.mktemp()))
        self.assertEqual(prj.name, NEWNAME)
        self.assertTrue(prj.exists())
        self.assertNotEqual(prj.path, old_path)
        self.assertFalse(FilePath(old_path).exists())
예제 #24
0
    def test_open_project_set_virtualbricks_home(self):
        """
        Every time a project is opened, settings.VIRTUALBRICKS_HOME is set to
        the project's path.
        """

        manager = project.ProjectManager(self.mktemp())
        settings = Settings(self.mktemp())
        prj = manager.get_project(NAME)
        prj.create()
        self.assertEqual(settings.VIRTUALBRICKS_HOME, settings.DEFAULT_HOME)
        prj.open(Factory(), settings)
        self.assertEqual(prj.path, settings.VIRTUALBRICKS_HOME)
        self.assertNotEqual(settings.VIRTUALBRICKS_HOME, settings.DEFAULT_HOME)
예제 #25
0
    def test_iter(self):
        """
        Iterating througt the manager returns the projects. The order is
        arbitrary.
        """

        NAME1 = "prj1"
        NAME2 = "prj2"
        manager = project.ProjectManager(self.mktemp())
        prj1 = manager.get_project(NAME1)
        prj1.create()
        prj2 = manager.get_project(NAME2)
        prj2.create()
        self.assertEqual(sorted(manager, key=lambda p: p.name), [prj1, prj2])
예제 #26
0
    def test_save(self):
        """Save a project."""

        class ProjectCmp:
            def __init__(self, prj):
                self.data = prj._project.getContent()
            def __eq__(self, other):
                return not self.__ne__(other)
            def __ne__(self, other):
                return self.data != ProjectCmp(other).data

        manager = project.ProjectManager(self.mktemp())
        prj = manager.get_project(NAME)
        prj.create()
        cmparator = ProjectCmp(prj)
        factory = Factory()
        factory.new_brick("vm", "test")
        prj.save(factory)
        self.assertNotEqual(cmparator, prj)
예제 #27
0
    def test_get_project_invalid_name(self):
        """Name could not contains path traversal."""

        manager = project.ProjectManager(self.mktemp())
        self.assertRaises(errors.InvalidNameError, manager.get_project,
                          "../ciccio")
예제 #28
0
    def test_open_project_does_not_exists(self):
        """Try to open a project that does not exists."""

        manager = project.ProjectManager(self.mktemp())
        prj = manager.get_project(NAME)
        self.assertRaises(errors.ProjectNotExistsError, prj.open, Factory())
예제 #29
0
 def test_exists_bizarre_name(self):
     manager = project.ProjectManager(self.mktemp())
     self.assertRaises(errors.InvalidNameError, manager.get_project,
                       "test/bizarre")
예제 #30
0
    def test_description(self):
        """Return a description of brand new project."""

        manager = project.ProjectManager(self.mktemp())
        prj = manager.get_project(NAME)
        self.assertEqual(prj.get_description(), "")