| from contextlib import contextmanager |
| import os |
| |
| import pytest |
| |
| from buildstream._cas import CASCache |
| from buildstream.storage._casbaseddirectory import CasBasedDirectory |
| from buildstream.storage._filebaseddirectory import FileBasedDirectory |
| |
| DATA_DIR = os.path.join(os.path.dirname(os.path.realpath(__file__)), "storage") |
| |
| |
| @contextmanager |
| def setup_backend(backend_class, tmpdir): |
| if backend_class == FileBasedDirectory: |
| yield backend_class(os.path.join(tmpdir, "vdir")) |
| else: |
| cas_cache = CASCache(tmpdir) |
| try: |
| yield backend_class(cas_cache) |
| finally: |
| cas_cache.release_resources() |
| |
| |
| @pytest.mark.parametrize("backend", [FileBasedDirectory, CasBasedDirectory]) |
| @pytest.mark.datafiles(DATA_DIR) |
| def test_import(tmpdir, datafiles, backend): |
| original = os.path.join(str(datafiles), "original") |
| |
| with setup_backend(backend, str(tmpdir)) as c: |
| c.import_files(original) |
| |
| assert "bin/bash" in c.list_relative_paths() |
| assert "bin/hello" in c.list_relative_paths() |
| |
| |
| @pytest.mark.parametrize("backend", [FileBasedDirectory, CasBasedDirectory]) |
| @pytest.mark.datafiles(DATA_DIR) |
| def test_modified_file_list(tmpdir, datafiles, backend): |
| original = os.path.join(str(datafiles), "original") |
| overlay = os.path.join(str(datafiles), "overlay") |
| |
| with setup_backend(backend, str(tmpdir)) as c: |
| c.import_files(original) |
| |
| c.mark_unmodified() |
| |
| c.import_files(overlay) |
| |
| print("List of all paths in imported results: {}".format(c.list_relative_paths())) |
| assert "bin/bash" in c.list_relative_paths() |
| assert "bin/bash" in c.list_modified_paths() |
| assert "bin/hello" not in c.list_modified_paths() |