test_filenodes_listing_and_caches.py
242 lines
| 8.5 KiB
| text/x-python
|
PythonLexer
r5647 | # Copyright (C) 2010-2024 RhodeCode GmbH | |||
# | ||||
# This program is free software: you can redistribute it and/or modify | ||||
# it under the terms of the GNU Affero General Public License, version 3 | ||||
# (only), as published by the Free Software Foundation. | ||||
# | ||||
# This program is distributed in the hope that it will be useful, | ||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||||
# GNU General Public License for more details. | ||||
# | ||||
# You should have received a copy of the GNU Affero General Public License | ||||
# along with this program. If not, see <http://www.gnu.org/licenses/>. | ||||
# | ||||
# This program is dual-licensed. If you wish to learn more about the | ||||
# RhodeCode Enterprise Edition, including its added features, Support services, | ||||
# and proprietary license terms, please see https://rhodecode.com/licenses/ | ||||
import datetime | ||||
import pytest | ||||
from rhodecode.lib.str_utils import safe_bytes | ||||
from rhodecode.lib.vcs.nodes import FileNode | ||||
from rhodecode.lib.vcs_common import NodeKind | ||||
from rhodecode.tests.vcs.conftest import BackendTestMixin | ||||
class TestFileNodesListingAndCaches: | ||||
def test_filenode_get_root_node(self, vcsbackend): | ||||
repo = vcsbackend.repo | ||||
commit = repo.get_commit() | ||||
# check if we start with empty nodes cache | ||||
assert commit.nodes == {} | ||||
assert commit._path_mode_cache == {} | ||||
assert commit._path_type_cache == {} | ||||
top_dir = commit.get_node(b"") | ||||
assert top_dir.is_dir() | ||||
assert list(commit.nodes.keys()) == [b""] | ||||
assert list(commit._path_type_cache.keys()) == [b""] | ||||
assert commit._path_mode_cache == {} | ||||
def test_filenode_get_file_node(self, vcsbackend): | ||||
repo = vcsbackend.repo | ||||
commit = repo.get_commit() | ||||
# check if we start with empty nodes cache | ||||
assert commit.nodes == {} | ||||
assert commit._path_mode_cache == {} | ||||
assert commit._path_type_cache == {} | ||||
file_node = commit.get_node(b"README.rst") | ||||
assert file_node.is_file() | ||||
assert file_node.last_commit | ||||
assert list(commit.nodes.keys()) == [b"README.rst"] | ||||
if repo.alias == "hg": | ||||
assert commit._path_type_cache == {b"README.rst": NodeKind.FILE} | ||||
assert commit._path_mode_cache == {b"README.rst": 33188} | ||||
if repo.alias == "git": | ||||
assert commit._path_type_cache == { | ||||
b"README.rst": ["8f111ab5152b9fd34f52b0fb288e1216b5d2f55e", NodeKind.FILE] | ||||
} | ||||
assert commit._path_mode_cache == {b"README.rst": 33188} | ||||
if repo.alias == "svn": | ||||
assert commit._path_type_cache == {b"README.rst": NodeKind.FILE} | ||||
assert commit._path_mode_cache == {b"README.rst": 33188} | ||||
def test_filenode_get_nodes_from_top_dir(self, vcsbackend): | ||||
repo = vcsbackend.repo | ||||
commit = repo.get_commit() | ||||
# check if we start with empty nodes cache | ||||
assert commit.nodes == {} | ||||
assert commit._path_mode_cache == {} | ||||
assert commit._path_type_cache == {} | ||||
node_list = commit.get_nodes(b"") | ||||
for node in node_list: | ||||
assert node | ||||
if repo.alias == "svn": | ||||
assert list(commit.nodes.keys()) == [ | ||||
b"README", | ||||
b".hgignore", | ||||
b"MANIFEST.in", | ||||
b".travis.yml", | ||||
b"vcs", | ||||
b"tox.ini", | ||||
b"setup.py", | ||||
b"setup.cfg", | ||||
b"docs", | ||||
b"fakefile", | ||||
b"examples", | ||||
b"test_and_report.sh", | ||||
b"bin", | ||||
b".gitignore", | ||||
b".hgtags", | ||||
b"README.rst", | ||||
] | ||||
assert commit._path_type_cache == { | ||||
b"": NodeKind.DIR, | ||||
b"README": 2, | ||||
b".hgignore": 2, | ||||
b"MANIFEST.in": 2, | ||||
b".travis.yml": 2, | ||||
b"vcs": 1, | ||||
b"tox.ini": 2, | ||||
b"setup.py": 2, | ||||
b"setup.cfg": 2, | ||||
b"docs": 1, | ||||
b"fakefile": 2, | ||||
b"examples": 1, | ||||
b"test_and_report.sh": 2, | ||||
b"bin": 1, | ||||
b".gitignore": 2, | ||||
b".hgtags": 2, | ||||
b"README.rst": 2, | ||||
} | ||||
assert commit._path_mode_cache == {} | ||||
if repo.alias == "hg": | ||||
assert list(commit.nodes.keys()) == [ | ||||
b".gitignore", | ||||
b".hgignore", | ||||
b".hgtags", | ||||
b".travis.yml", | ||||
b"MANIFEST.in", | ||||
b"README", | ||||
b"README.rst", | ||||
b"docs", | ||||
b"run_test_and_report.sh", | ||||
b"setup.cfg", | ||||
b"setup.py", | ||||
b"test_and_report.sh", | ||||
b"tox.ini", | ||||
b"vcs", | ||||
] | ||||
assert commit._path_type_cache == { | ||||
b"": NodeKind.DIR, | ||||
b".gitignore": 2, | ||||
b".hgignore": 2, | ||||
b".hgtags": 2, | ||||
b".travis.yml": 2, | ||||
b"MANIFEST.in": 2, | ||||
b"README": 2, | ||||
b"README.rst": 2, | ||||
b"docs": 1, | ||||
b"run_test_and_report.sh": 2, | ||||
b"setup.cfg": 2, | ||||
b"setup.py": 2, | ||||
b"test_and_report.sh": 2, | ||||
b"tox.ini": 2, | ||||
b"vcs": 1, | ||||
} | ||||
r5649 | assert commit._path_mode_cache == { | |||
b".gitignore": 33188, | ||||
b".hgignore": 33188, | ||||
b".hgtags": 33188, | ||||
b".travis.yml": 33188, | ||||
b"MANIFEST.in": 33188, | ||||
b"README": 40960, | ||||
b"README.rst": 33188, | ||||
b"docs": 33188, | ||||
b"run_test_and_report.sh": 33261, | ||||
b"setup.cfg": 33188, | ||||
b"setup.py": 33188, | ||||
b"test_and_report.sh": 33261, | ||||
b"tox.ini": 33188, | ||||
b"vcs": 33188, | ||||
} | ||||
r5647 | ||||
if repo.alias == "git": | ||||
assert list(commit.nodes.keys()) == [ | ||||
b".gitignore", | ||||
b".hgignore", | ||||
b".hgtags", | ||||
b"MANIFEST.in", | ||||
b"README", | ||||
b"README.rst", | ||||
b"docs", | ||||
b"run_test_and_report.sh", | ||||
b"setup.cfg", | ||||
b"setup.py", | ||||
b"test_and_report.sh", | ||||
b"tox.ini", | ||||
b"vcs", | ||||
] | ||||
assert commit._path_type_cache == { | ||||
b"": ["2dab7f7377e36948b5633ae0877310380fdf64ba", NodeKind.DIR], | ||||
b".gitignore": ["7f95b0917e31b0cce1ad96a033b1a814c420cde3", 2], | ||||
b".hgignore": ["9bdee5ed67ceed7c4b5589ba26dada65df151aed", 2], | ||||
b".hgtags": ["63aa2e892deebdfdef1845fe52e2418ade03557b", 2], | ||||
b"MANIFEST.in": ["6d65aca5321c26589ae197b81511445cfb353c95", 2], | ||||
b"README": ["92cacd285355271487b7e379dba6ca60f9a554a4", 2], | ||||
b"README.rst": ["8f111ab5152b9fd34f52b0fb288e1216b5d2f55e", 2], | ||||
b"docs": ["eaa8cef76ec4e1baf06f515ab03bfc01719a913d", 1], | ||||
b"run_test_and_report.sh": ["e17011bdddc8812fda96e891a1087c73054f1f25", 2], | ||||
b"setup.cfg": ["2e76b65bc9106ed466d71fb2cfe710352eadfb49", 2], | ||||
b"setup.py": ["ccda2bd076eca961059deba6e39fb591d014052a", 2], | ||||
b"test_and_report.sh": ["0b14056dd7dc759a9719adef3d7bb529141a740e", 2], | ||||
b"tox.ini": ["c1735231e7af32f089b95455162db092824715a4", 2], | ||||
b"vcs": ["5868c69a8d74ccf3fdc655af8f3f185bc0ff2ef6", 1], | ||||
} | ||||
assert commit._path_mode_cache == { | ||||
b".gitignore": 33188, | ||||
b".hgignore": 33188, | ||||
b".hgtags": 33188, | ||||
b"MANIFEST.in": 33188, | ||||
b"README": 40960, | ||||
b"README.rst": 33188, | ||||
b"docs": 16384, | ||||
b"run_test_and_report.sh": 33261, | ||||
b"setup.cfg": 33188, | ||||
b"setup.py": 33188, | ||||
b"test_and_report.sh": 33261, | ||||
b"tox.ini": 33188, | ||||
b"vcs": 16384, | ||||
} | ||||
def test_filenode_get_nodes_from_docs_dir(self, vcsbackend): | ||||
repo = vcsbackend.repo | ||||
commit = repo.get_commit() | ||||
# check if we start with empty nodes cache | ||||
assert commit.nodes == {} | ||||
assert commit._path_mode_cache == {} | ||||
assert commit._path_type_cache == {} | ||||
node_list = commit.get_nodes(b"docs") | ||||
for node in node_list: | ||||
assert node | ||||