def run(self): pkg_name = self.context.package_name if pkg_name in self.package_dependency_dict: logging.info("Running regression test for {}".format(pkg_name)) self.whl_path = os.path.join( self.context.whl_directory, find_whl(pkg_name, self.context.pkg_version, self.context.whl_directory)) if find_packages_missing_on_pypi(self.whl_path): logging.error( "Required packages are not available on PyPI. Skipping regression test" ) exit(0) dep_packages = self.package_dependency_dict[pkg_name] logging.info("Dependent packages for [{0}]: {1}".format( pkg_name, dep_packages)) for dep_pkg_path in dep_packages: dep_pkg_name, _, _, _ = parse_setup(dep_pkg_path) logging.info( "Starting regression test of {0} against released {1}". format(pkg_name, dep_pkg_name)) self._run_test(dep_pkg_path) logging.info( "Completed regression test of {0} against released {1}". format(pkg_name, dep_pkg_name)) logging.info("Completed regression test for {}".format(pkg_name)) else: logging.info( "Package {} is not added as required by any package".format( pkg_name))
if __name__ == "__main__": parser = argparse.ArgumentParser( description= "This script is used during a release stage to prevent releasing packages on PyPI with missing dependencies." ) parser.add_argument( "--package-name", required=True, help= "name of package (accepts both formats: azure-service-package and azure_service_package)", ) parser.add_argument( "--service", required=True, help= "name of the service for which to set the dev build id (e.g. keyvault)", ) args = parser.parse_args() package_name = args.package_name.replace("_", "-") path_to_setup = os.path.join(root_dir, "sdk", args.service, package_name, "setup.py") missing_packages = find_packages_missing_on_pypi(path_to_setup) if missing_packages: exit(1)