Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Test GithubDependencyTreeTask #543

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion f8a_worker/workers/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
from f8a_worker.workers.csmock_worker import CsmockTask
from f8a_worker.workers.CVEchecker import CVEcheckerTask
from f8a_worker.workers.cvedbsync import CVEDBSyncTask
from f8a_worker.workers.dependency_parser import GithubDependencyTreeTask
from f8a_worker.workers.dependency_snapshot import DependencySnapshotTask
from f8a_worker.workers.digester import DigesterTask
from f8a_worker.workers.finalize import FinalizeTask, PackageFinalizeTask
Expand All @@ -33,5 +34,4 @@
from f8a_worker.workers.result_collector import ResultCollector, PackageResultCollector
from f8a_worker.workers.stackaggregator import StackAggregatorTask
from f8a_worker.workers.stackaggregator_v2 import StackAggregatorV2Task
from f8a_worker.workers.dependency_parser import GithubDependencyTreeTask
from f8a_worker.workers.unknown_dep_fetcher import UnknownDependencyFetcherTask
10 changes: 5 additions & 5 deletions f8a_worker/workers/dependency_parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

from f8a_worker.base import BaseTask
from f8a_worker.errors import TaskError
from f8a_worker.utils import TimedCommand, cwd, MavenCoordinates, add_maven_coords_to_set
from f8a_worker.utils import TimedCommand, cwd, add_maven_coords_to_set
from f8a_worker.process import Git
from tempfile import TemporaryDirectory
from pathlib import Path
Expand Down Expand Up @@ -36,16 +36,16 @@ def extract_dependencies(github_repo, github_sha):
repo = Git.clone(url=github_repo, path=workdir, timeout=3600)
repo.reset(revision=github_sha, hard=True)
with cwd(repo.repo_path):
output_file = Path.cwd() / "dependency-tree.txt"
cmd = ["mvn", "org.apache.maven.plugins:maven-dependency-plugin:3.0.2:tree",
"-DoutputType=dot",
"-DoutputFile={filename}".format(
filename=Path.cwd().joinpath("dependency-tree.txt")),
"-DoutputFile={filename}".format(filename=output_file),
"-DappendOutput=true"]
timed_cmd = TimedCommand(cmd)
status, output, error = timed_cmd.run(timeout=3600)
if status != 0 or not Path("dependency-tree.txt").is_file():
if status != 0 or not output_file.is_file():
raise TaskError(error)
with open("dependency-tree.txt") as f:
with output_file.open() as f:
return GithubDependencyTreeTask.parse_maven_dependency_tree(f.readlines())

@staticmethod
Expand Down
29 changes: 29 additions & 0 deletions tests/workers/test_github_dependency_tree.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
"""Test GithubDependencyTreeTask."""

import pytest

from f8a_worker.workers import GithubDependencyTreeTask


@pytest.mark.usefixtures("dispatcher_setup")
class TestGithubDependencyTreeTask(object):
"""Test GithubDependencyTreeTask."""

def test_maven_index_checker_repo(self):
"""Test GithubDependencyTreeTask."""
args = {'github_repo': 'https://github.com/fabric8-analytics/maven-index-checker.git',
'github_sha': 'de64e1534724e53766dda472e9418350b85a1521',
'email_ids': 'dummy'}
task = GithubDependencyTreeTask.create_test_instance(task_name='dependency_tree')
results = task.execute(args)

assert isinstance(results, dict)
assert set(results.keys()) == {'dependencies'}
obtained_dependencies = set(results['dependencies'])
expected_direct_dependencies = {'com.googlecode.json-simple:json-simple:1.1.1',
'org.apache.maven.indexer:indexer-core:6.0.0'}
assert expected_direct_dependencies.issubset(obtained_dependencies)
expected_transitive_dependencies = {'commons-io:commons-io:2.0.1',
'com.google.guava:guava:20.0',
'junit:junit:4.10'}
assert expected_transitive_dependencies.issubset(obtained_dependencies)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think obtained dependencies should be the exact same as expected_direct_dependencies + expected_transitive_dependencies. It can look something like this:

expected_dependencies = expected_direct_dependencies.union(expected_transitive_dependencies)
assertSetEqual(obtained_dependencies, expected_dependencies)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We don't need to test whether maven-dependency-plugin works correctly,
we just need to know whether the task runs it and the test as it is answers that sufficiently.