Exemplo n.º 1
0
    def test_list_github_source(self):
        """
        Listing a github source should create a `DirectoryListEntry` for each item returned by
        `GitHubFacade.list_directory`.
        """
        file_edit_date = datetime.datetime(2019, 12, 25, 10, 5, 4)
        directory_edit_date = datetime.datetime(2018, 10, 4, 6, 2, 1)

        facade = mock.MagicMock()
        facade.list_directory.return_value = [
            ("file", False, file_edit_date),
            ("directory", True, directory_edit_date),
        ]

        source = GithubSource()
        source.subpath = "subpath"
        source.path = "mapped"

        entries = list(list_linked_source_directory(source, "any/path", facade))

        facade.list_directory.assert_called_with("subpath/any/path")

        self.assertEqual(2, len(entries))

        self.assertIsInstance(entries[0], DirectoryListEntry)
        self.assertEqual(DirectoryEntryType.FILE, entries[0].type)
        self.assertEqual("mapped/any/path/file", entries[0].path)
        self.assertEqual(file_edit_date, entries[0].modification_date)
        self.assertEqual(source, entries[0].source)

        self.assertIsInstance(entries[1], DirectoryListEntry)
        self.assertEqual(DirectoryEntryType.DIRECTORY, entries[1].type)
        self.assertEqual("mapped/any/path/directory", entries[1].path)
        self.assertEqual(directory_edit_date, entries[1].modification_date)
        self.assertEqual(source, entries[1].source)
Exemplo n.º 2
0
    def test_iterate_github_source_incorrect_directory(self):
        """
        If `iterate_github_source` is called with a source that is not inside the directory passed in, an
        `IncorrectDirectoryException` should be raised.
        """
        source = GithubSource()
        source.path = "some/bad/path"

        with self.assertRaises(IncorrectDirectoryException):
            list(iterate_github_source("a/different/path", source, mock.MagicMock()))
Exemplo n.º 3
0
    def test_iterate_github_source_directory(self, mock_llsd):
        """
        If `iterate_github_source` is called with a source inside the current directory, then the relative directory
        should be listed.
        """
        source = GithubSource()
        source.path = "path/in/project"
        facade = mock.MagicMock()

        mock_llsd.return_value = [("directory2", True), ("file2", False)]

        entries = list(iterate_github_source("path/in/project", source, facade))

        mock_llsd.assert_called_with(source, "", facade)

        self.assertEqual(2, len(entries))

        self.assertEqual("directory2", entries[0][0])
        self.assertTrue(entries[0][1])

        self.assertEqual("file2", entries[1][0])
        self.assertFalse(entries[1][1])
Exemplo n.º 4
0
    def test_iterate_github_source_current_directory(self, mock_llsd):
        """
        If `iterate_github_source` is called with a source that matches the current directory, then the root repository
        directory should be listed.
        """
        source = GithubSource()
        source.path = "."
        facade = mock.MagicMock()

        mock_llsd.return_value = [("file", False), ("directory", True)]

        entries = list(iterate_github_source("", source, facade))

        mock_llsd.assert_called_with(source, "", facade)

        self.assertEqual(2, len(entries))

        self.assertEqual("file", entries[0][0])
        self.assertFalse(entries[0][1])

        self.assertEqual("directory", entries[1][0])
        self.assertTrue(entries[1][1])