old_contents: # Copyright (C) Ivan Kravets <me@ikravets.com>
  # See LICENSE for details.
  
  import requests
  from platformio.util import get_api_result
  
  
  def pytest_generate_tests(metafunc):
      if "package_data" not in metafunc.fixturenames:
          return
      pkgs_manifest = get_api_result("/packages")
      assert isinstance(pkgs_manifest, dict)
      packages = []
      for _, variants in pkgs_manifest.iteritems():
          for item in variants:
              packages.append(item)
      metafunc.parametrize("package_data", packages)
  
  
  def validate_response(req):
      assert req.status_code == 200
      assert int(req.headers['Content-Length']) > 0
  
  
  def validate_package(url):
      r = requests.head(url, allow_redirects=True)
      validate_response(r)
      assert r.headers['Content-Type'] in ("application/x-gzip",
                                           "application/octet-stream")
  
  
  def test_package(package_data):
      assert package_data['url'].endswith("%d.tar.gz" % package_data['version'])
      validate_package(package_data['url'])
  
new_contents: # Copyright (C) Ivan Kravets <me@ikravets.com>
  # See LICENSE for details.
  
  import pytest
  import requests
  from os.path import basename
  
  from platformio.util import get_api_result
  
  
  @pytest.fixture(scope="session")
  def sfpkglist():
      result = None
      r = None
  
      try:
          r = requests.get("http://sourceforge.net/projects"
                           "/platformio-storage/files/packages/list")
          result = r.json()
          r.raise_for_status()
      except:
          pass
      finally:
          if r:
              r.close()
      return result
  
  
  def pytest_generate_tests(metafunc):
      if "package_data" not in metafunc.fixturenames:
          return
      pkgs_manifest = get_api_result("/packages")
      assert isinstance(pkgs_manifest, dict)
      packages = []
      for _, variants in pkgs_manifest.iteritems():
          for item in variants:
              packages.append(item)
      metafunc.parametrize("package_data", packages)
  
  
  def validate_response(req):
      assert req.status_code == 200
      assert int(req.headers['Content-Length']) > 0
  
  
  def validate_package(url, sfpkglist):
      r = requests.head(url, allow_redirects=True)
      validate_response(r)
      assert r.headers['Content-Type'] in ("application/x-gzip",
                                           "application/octet-stream")
  
  
  def test_package(package_data, sfpkglist):
      assert package_data['url'].endswith("%d.tar.gz" % package_data['version'])
  
      # check content type and that file exists
      r = requests.head(package_data['url'], allow_redirects=True)
      validate_response(r)
      assert r.headers['Content-Type'] in ("application/x-gzip",
                                           "application/octet-stream")
  
      # check sha1 sum
      if sfpkglist is None:
          return
      pkgname = basename(package_data['url'])
      assert pkgname in sfpkglist
      assert package_data['sha1'] == sfpkglist.get(pkgname, {}).get("sha1")
  
subject: Extend validation of package for SHA1 // Resolve #69