Skip to content

Commit 76fed9b

Browse files
committed
Extend shed_lint to check for required files based on type...
Packages need a tool_dependencies.xml and suites need repository_dependencies.xml. Since the shed realization process filters out invalid types I feel like this closes #156 (@peterjc - is this enough?).
1 parent 754f6a9 commit 76fed9b

File tree

7 files changed

+52
-1
lines changed

7 files changed

+52
-1
lines changed

planemo/shed/__init__.py

+20
Original file line numberDiff line numberDiff line change
@@ -921,6 +921,26 @@ def __init__(self, realized_path, real_path, config, multiple, missing):
921921
self.multiple = multiple
922922
self.missing = missing
923923

924+
@property
925+
def repository_type(self):
926+
return shed_repo_type(self.config, self.name)
927+
928+
@property
929+
def is_package(self):
930+
return self.repository_type == REPO_TYPE_TOOL_DEP
931+
932+
@property
933+
def is_suite(self):
934+
return self.repository_type == REPO_TYPE_SUITE
935+
936+
@property
937+
def repo_dependencies_path(self):
938+
return os.path.join(self.path, REPO_DEPENDENCIES_CONFIG_NAME)
939+
940+
@property
941+
def tool_dependencies_path(self):
942+
return os.path.join(self.path, TOOL_DEPENDENCIES_CONFIG_NAME)
943+
924944
def git_rev(self, ctx):
925945
return git.rev_if_git(ctx, self.real_path)
926946

planemo/shed_lint.py

+17-1
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,11 @@ def lint_repository(ctx, realized_repository, **kwds):
4747
lint_expansion,
4848
realized_repository,
4949
)
50-
50+
lint_ctx.lint(
51+
"lint_expected_files",
52+
lint_expected_files,
53+
realized_repository,
54+
)
5155
lint_ctx.lint(
5256
"lint_tool_dependencies_xsd",
5357
lint_tool_dependencies_xsd,
@@ -161,6 +165,18 @@ def lint_tool_dependencies_actions(path, lint_ctx):
161165
return
162166

163167

168+
def lint_expected_files(realized_repository, lint_ctx):
169+
if realized_repository.is_package:
170+
if not os.path.exists(realized_repository.tool_dependencies_path):
171+
lint_ctx.warn("Package repository does not contain a "
172+
"tool_dependencies.xml file.")
173+
174+
if realized_repository.is_suite:
175+
if not os.path.exists(realized_repository.repo_dependencies_path):
176+
lint_ctx.warn("Suite repository does not contain a "
177+
"repository_dependencies.xml file.")
178+
179+
164180
def lint_repository_dependencies(path, lint_ctx):
165181
repo_dependencies = os.path.join(path, "repository_dependencies.xml")
166182
if not os.path.exists(repo_dependencies):
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
name: suite_1
2+
owner: iuc
3+
description: suite_1 description
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Test Suite 1
2+
============
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
name: package_1
2+
owner: iuc
3+
description: package_1 description
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
Test Package 1
2+
===============
3+

tests/test_shed_lint.py

+4
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,10 @@ def test_invalid_repos(self):
2626
self._check_exit_code(["shed_lint"], exit_code=-1)
2727
with self._isolate_repo("bad_missing_include"):
2828
self._check_exit_code(["shed_lint"], exit_code=-1)
29+
with self._isolate_repo("bad_missing_tool_deps"):
30+
self._check_exit_code(["shed_lint"], exit_code=-1)
31+
with self._isolate_repo("bad_missing_repo_deps"):
32+
self._check_exit_code(["shed_lint"], exit_code=-1)
2933
with self._isolate_repo("bad_invalid_yaml"):
3034
self._check_exit_code(["shed_lint"], exit_code=254)
3135

0 commit comments

Comments
 (0)