From a82266c4aea10627e8d10f5be2d2c72a86b7b164 Mon Sep 17 00:00:00 2001 From: Willie Xu Date: Fri, 29 Jun 2018 12:47:53 -0700 Subject: [PATCH 1/2] changes to dependency check --- scripts/ci/test_index.py | 6 +++--- scripts/ci/test_source.py | 6 +++--- scripts/ci/util.py | 11 +++++++++-- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/scripts/ci/test_index.py b/scripts/ci/test_index.py index 7ea897c2b44..11635c2d3ea 100755 --- a/scripts/ci/test_index.py +++ b/scripts/ci/test_index.py @@ -16,7 +16,7 @@ import hashlib import shutil from wheel.install import WHEEL_INFO_RE -from util import get_ext_metadata, get_whl_from_url, get_index_data, SKIP_DEP_CHECK +from util import get_ext_metadata, get_whl_from_url, get_index_data, verify_dependency def get_sha256sum(a_file): @@ -136,10 +136,10 @@ def test_metadata(self): "{}".format(item['filename'], json.dumps(metadata, indent=2, sort_keys=True, separators=(',', ': ')))) run_requires = metadata.get('run_requires') - if run_requires and ext_name not in SKIP_DEP_CHECK: + if run_requires: deps = run_requires[0]['requires'] self.assertTrue( - all(not dep.startswith('azure-') or dep.startswith('azure-batch-extensions') for dep in deps), + all(verify_dependency(dep) for dep in deps), "Dependencies of {} use disallowed extension dependencies. " "Remove these dependencies: {}".format(item['filename'], deps)) shutil.rmtree(extensions_dir) diff --git a/scripts/ci/test_source.py b/scripts/ci/test_source.py index 42d323878d5..f89af572f11 100755 --- a/scripts/ci/test_source.py +++ b/scripts/ci/test_source.py @@ -18,7 +18,7 @@ from wheel.install import WHEEL_INFO_RE from six import with_metaclass -from util import get_ext_metadata, SRC_PATH, SKIP_DEP_CHECK +from util import get_ext_metadata, verify_dependency, SRC_PATH ALL_TESTS = [] @@ -86,9 +86,9 @@ def test_source_wheels(self): ext_name = WHEEL_INFO_RE(filename).groupdict().get('name') metadata = get_ext_metadata(ext_dir, ext_file, ext_name) run_requires = metadata.get('run_requires') - if run_requires and ext_name not in SKIP_DEP_CHECK: + if run_requires: deps = run_requires[0]['requires'] - self.assertTrue(all(not dep.startswith('azure-') for dep in deps), + self.assertTrue(all(verify_dependency(dep) for dep in deps), "Dependencies of {} use disallowed extension dependencies. " "Remove these dependencies: {}".format(filename, deps)) shutil.rmtree(built_whl_dir) diff --git a/scripts/ci/util.py b/scripts/ci/util.py index 439c1a30c66..373c96f1214 100644 --- a/scripts/ci/util.py +++ b/scripts/ci/util.py @@ -8,8 +8,9 @@ import zipfile from wheel.install import WHEEL_INFO_RE -# Extensions to skip dep. check. Aim to keep this list empty. -SKIP_DEP_CHECK = ['azure-cli-iot-ext'] +# Dependencies that will not be checked. +# This is for packages starting with 'azure-' but do not use the 'azure' namespace. +SKIP_DEP_CHECK = ['azure-batch-extensions'] def get_repo_root(): @@ -99,3 +100,9 @@ def get_index_data(): return json.load(f, object_pairs_hook=_catch_dup_keys) except ValueError as err: raise AssertionError("Invalid JSON in {}: {}".format(INDEX_PATH, err)) + +def verify_dependency(dep): + # ex. "azure-batch-extensions (<3.1,>=3.0.0)", "paho-mqtt (==1.3.1)", "pyyaml" + # check if 'azure-' dependency, as they use 'azure' namespace. + dep_split = dep.split() + return not (dep_split and dep_split[0].startswith('azure-') and dep_split[0] not in SKIP_DEP_CHECK) From d318e69dac45b3c713069eb97cbb73ba360cf476 Mon Sep 17 00:00:00 2001 From: Willie Xu Date: Fri, 29 Jun 2018 16:59:15 -0700 Subject: [PATCH 2/2] CI --- scripts/ci/util.py | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/ci/util.py b/scripts/ci/util.py index 373c96f1214..6081d4dad11 100644 --- a/scripts/ci/util.py +++ b/scripts/ci/util.py @@ -101,6 +101,7 @@ def get_index_data(): except ValueError as err: raise AssertionError("Invalid JSON in {}: {}".format(INDEX_PATH, err)) + def verify_dependency(dep): # ex. "azure-batch-extensions (<3.1,>=3.0.0)", "paho-mqtt (==1.3.1)", "pyyaml" # check if 'azure-' dependency, as they use 'azure' namespace.