##// END OF EJS Templates
fix(file-caching): fixed cases when old cache was used before changes to operate on bytestrings
fix(file-caching): fixed cases when old cache was used before changes to operate on bytestrings

File last commit:

r5649:fa8af39b default
r5651:bad147da tip default
Show More
test_filenodes_listing_and_caches.py
242 lines | 8.5 KiB | text/x-python | PythonLexer
/ rhodecode / tests / vcs / test_filenodes_listing_and_caches.py
# 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,
}
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,
}
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