| Index: test/test262/testcfg.py
 | 
| diff --git a/test/test262/testcfg.py b/test/test262/testcfg.py
 | 
| index aefda196a307db7677702cab6075c99d0cf65a3f..65d756b6274948d1ac3148487fb47f236e63c0e1 100644
 | 
| --- a/test/test262/testcfg.py
 | 
| +++ b/test/test262/testcfg.py
 | 
| @@ -29,8 +29,14 @@
 | 
|  import test
 | 
|  import os
 | 
|  from os.path import join, exists
 | 
| +import urllib
 | 
| +import hashlib
 | 
| +import tarfile
 | 
|  
 | 
|  
 | 
| +TEST_262_ARCHIVE_REVISION = '3a890174343c'  # This is the r309 revision.
 | 
| +TEST_262_ARCHIVE_MD5 = 'be5d4cfbe69cef70430907b8f3a92b50'
 | 
| +TEST_262_URL = 'http://hg.ecmascript.org/tests/test262/archive/%s.tar.bz2'
 | 
|  TEST_262_HARNESS = ['sta.js']
 | 
|  
 | 
|  
 | 
| @@ -93,6 +99,28 @@ class Test262TestConfiguration(test.TestConfiguration):
 | 
|              tests.append(test)
 | 
|      return tests
 | 
|  
 | 
| +  def DownloadData(self):
 | 
| +    revision = TEST_262_ARCHIVE_REVISION
 | 
| +    archive_url = TEST_262_URL % revision
 | 
| +    archive_name = join(self.root, 'test262-%s.tar.bz2' % revision)
 | 
| +    directory_name = join(self.root, "test262-%s" % revision)
 | 
| +    if not exists(directory_name) or not exists(archive_name):
 | 
| +      if not exists(archive_name):
 | 
| +        print "Downloading test data from %s ..." % archive_url
 | 
| +        urllib.urlretrieve(archive_url, archive_name)
 | 
| +      if not exists(directory_name):
 | 
| +        print "Extracting test262-%s.tar.bz2 ..." % revision
 | 
| +        md5 = hashlib.md5()
 | 
| +        with open(archive_name,'rb') as f:
 | 
| +          for chunk in iter(lambda: f.read(8192), ''):
 | 
| +            md5.update(chunk)
 | 
| +        if md5.hexdigest() != TEST_262_ARCHIVE_MD5:
 | 
| +          raise Exception("Hash mismatch of test data file")
 | 
| +        archive = tarfile.open(archive_name, 'r:bz2')
 | 
| +        archive.extractall(join(self.root))
 | 
| +      if not exists(join(self.root, 'data')):
 | 
| +        os.symlink(directory_name, join(self.root, 'data'))
 | 
| +
 | 
|    def GetBuildRequirements(self):
 | 
|      return ['d8']
 | 
|  
 | 
| @@ -101,6 +129,5 @@ class Test262TestConfiguration(test.TestConfiguration):
 | 
|      if exists(status_file):
 | 
|        test.ReadConfigurationInto(status_file, sections, defs)
 | 
|  
 | 
| -
 | 
|  def GetConfiguration(context, root):
 | 
|    return Test262TestConfiguration(context, root)
 | 
| 
 |