# Copyright 2021 The ChromiumOS Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

"""Tests for depgraph."""

from chromite.lib import dependency_graph
from chromite.lib import depgraph


def _get_trees():
    """Get the hand-built deps trees for tests.

    Returns:
        tuple: (deps tree with bdeps,
            deps tree without bdeps,
            bdeps tree,
            sdk tree)
    """
    sysroot = "/build/target/"
    # Quick access to complete deps entries for each package.
    deps = {
        "virtual/sysroot-1": [
            {
                "action": "merge",
                "deptypes": [],
                "deps": {},
                "root": sysroot,
            }
        ],
        "virtual/sdk-1": [
            {
                "action": "merge",
                "deptypes": [],
                "deps": {},
                "root": "/",
            }
        ],
        "sysroot/both-1": [
            {
                "action": "merge",
                "deptypes": [],
                "deps": {},
                "root": "/",
            },
            {
                "action": "merge",
                "deptypes": [],
                "deps": {},
                "root": sysroot,
            },
        ],
        "sysroot/both-1-sysroot": [
            {
                "action": "merge",
                "deptypes": [],
                "deps": {},
                "root": sysroot,
            }
        ],
        "sysroot/dep-1": [
            {
                "action": "merge",
                "deptypes": [],
                "deps": {},
                "root": sysroot,
            },
            {
                "action": "uninstall",
                "deptypes": [],
                "deps": {},
                "root": sysroot,
            },
        ],
        "sysroot/uninstall-dep-1": [
            {
                "action": "uninstall",
                "deptypes": [],
                "deps": {},
                "root": sysroot,
            }
        ],
        "sysroot/bdep-1": [
            {
                "action": "merge",
                "deptypes": [],
                "deps": {},
                "root": "/",
            }
        ],
        "sdk/dep-1": [
            {
                "action": "merge",
                "deptypes": [],
                "deps": {},
                "root": "/",
            }
        ],
        "sdk/bdep-1": [
            {
                "action": "merge",
                "deptypes": [],
                "deps": {},
                "root": "/",
            }
        ],
    }
    # The build target tree, deps + bdeps.
    full_dep_tree = {
        "virtual/sysroot-1": [
            {
                "action": "merge",
                "deps": {
                    "sysroot/dep-1": deps["sysroot/dep-1"],
                    "sysroot/bdep-1": deps["sysroot/bdep-1"],
                    "sysroot/both-1": deps["sysroot/both-1"],
                },
                "root": sysroot,
            }
        ],
        "sysroot/dep-1": [
            {
                "action": "merge",
                "deps": {},
                "root": sysroot,
            },
            {
                "action": "uninstall",
                "deps": {
                    "sysroot/uninstall-dep-1": deps["sysroot/uninstall-dep-1"],
                },
                "root": sysroot,
            },
        ],
        "sysroot/uninstall-dep-1": [
            {
                "action": "uninstall",
                "deps": {},
                "root": sysroot,
            },
        ],
        "sysroot/bdep-1": [
            {
                "action": "merge",
                "deps": {},
                "root": "/",
            }
        ],
        "sysroot/both-1": [
            {
                "action": "merge",
                "deps": {},
                "root": "/",
            },
            {
                "action": "merge",
                "deps": {},
                "root": sysroot,
            },
        ],
    }
    # The sysroot tree, only deps.
    no_bdeps_dep_tree = {
        "virtual/sysroot-1": [
            {
                "action": "merge",
                "deps": {
                    "sysroot/dep-1": deps["sysroot/dep-1"],
                    "sysroot/both-1": deps["sysroot/both-1-sysroot"],
                },
                "root": sysroot,
            }
        ],
        "sysroot/both-1": [
            {
                "action": "merge",
                "deps": {},
                "root": sysroot,
            }
        ],
        "sysroot/dep-1": [
            {
                "action": "merge",
                "deps": {},
                "root": sysroot,
            }
        ],
    }
    # The bdeps tree for build target and sysroot trees.
    bdep_tree = {
        "sysroot/both-1": [
            {
                "action": "merge",
                "deps": {},
                "root": "/",
            }
        ],
        "sysroot/bdep-1": [
            {
                "action": "merge",
                "deps": {},
                "root": "/",
            }
        ],
    }
    # The SDK tree.
    sdk_tree = {
        "virtual/sdk-1": [
            {
                "action": "merge",
                "deps": {
                    "sdk/dep-1": deps["sdk/dep-1"],
                    "sdk/bdep-1": deps["sdk/bdep-1"],
                },
                "root": "/",
            }
        ],
        "sdk/dep-1": [
            {
                "action": "merge",
                "deps": {},
                "root": "/",
            }
        ],
        "sdk/bdep-1": [
            {
                "action": "merge",
                "deps": {},
                "root": "/",
            }
        ],
    }
    return full_dep_tree, no_bdeps_dep_tree, bdep_tree, sdk_tree


def _get_raw_sdk_depgraph(*_args, **_kwargs):
    """Build a DepgraphResult instance corresponding to the test SDK data."""
    _, _, _, sdk_tree = _get_trees()
    return depgraph.DepgraphResult(sdk_tree, {}, ["virtual/sdk-1"])


def _get_raw_sysroot_depgraph(*_args, **_kwargs):
    """Get a DepgraphResult instance corresponding to the test sysroot data."""
    _, deps_tree, bdeps_tree, _ = _get_trees()
    return depgraph.DepgraphResult(deps_tree, bdeps_tree, ["virtual/sysroot-1"])


def _get_raw_build_target_depgraph(*_args, **_kwargs):
    """Get a DepgraphResult instance corresponding to the full depgraph data."""
    deps_tree, _, bdeps_tree, _ = _get_trees()
    return depgraph.DepgraphResult(deps_tree, bdeps_tree, ["virtual/sysroot-1"])


def test_get_sdk_dependency_graph(monkeypatch) -> None:
    """Test the SDK depgraph is built correctly."""
    monkeypatch.setattr(
        depgraph, "_get_raw_sdk_depgraph", _get_raw_sdk_depgraph
    )
    graph = depgraph.get_sdk_dependency_graph()

    assert "virtual/sdk-1" in graph
    assert "sdk/dep-1" in graph
    assert "sdk/bdep-1" in graph
    assert "virtual/sysroot-1" not in graph
    assert "sysroot/both-1" not in graph
    assert "sysroot/dep-1" not in graph
    assert "sysroot/bdep-1" not in graph
    assert graph.sysroot_path == "/"


def test_get_sysroot_dependency_graph(monkeypatch) -> None:
    """Test the sysroot depgraph is built correctly."""
    monkeypatch.setattr(
        depgraph, "_get_raw_sysroot_depgraph", _get_raw_sysroot_depgraph
    )
    graph = depgraph.get_sysroot_dependency_graph("/build/target")

    assert "virtual/sysroot-1" in graph
    assert "sysroot/both-1" in graph
    assert "sysroot/dep-1" in graph
    assert "sysroot/bdep-1" not in graph
    assert "virtual/sdk-1" not in graph
    assert "sdk/dep-1" not in graph
    assert "sdk/bdep-1" not in graph
    assert graph.sysroot_path == "/build/target"
    assert not graph.sdk_root
    assert len(graph.get_nodes(["sysroot/both-1"])) == 1
    assert graph.get_nodes(
        ["sysroot/both-1"], dependency_graph.RootType.SYSROOT
    )
    assert not graph.get_nodes(
        ["sysroot/both-1"], dependency_graph.RootType.SDK
    )
    # We currently skip uninstalls.
    assert "sysroot/uninstall-dep-1" not in graph
    assert (
        "sysroot/uninstall-dep-1"
        not in graph.get_nodes(["sysroot/dep-1"])[0].dependencies
    )


def test_get_build_target_dependency_graph(monkeypatch) -> None:
    """Test the build target depgraph is built correctly."""
    monkeypatch.setattr(
        depgraph,
        "_get_raw_build_target_depgraph",
        _get_raw_build_target_depgraph,
    )
    graph = depgraph.get_build_target_dependency_graph("/build/target")

    assert "virtual/sysroot-1" in graph
    assert "sysroot/both-1" in graph
    assert "sysroot/dep-1" in graph
    assert "sysroot/bdep-1" in graph
    assert "virtual/sdk-1" not in graph
    assert "sdk/dep-1" not in graph
    assert "sdk/bdep-1" not in graph
    assert graph.sysroot_path == "/build/target"
    assert graph.sdk_root
    assert len(graph.get_nodes(["sysroot/both-1"])) == 2
    assert graph.get_nodes(
        ["sysroot/both-1"], dependency_graph.RootType.SYSROOT
    )
    assert graph.get_nodes(["sysroot/both-1"], dependency_graph.RootType.SDK)
