mirror of https://github.com/lukechilds/node.git
Timothy J Fontaine
11 years ago
5 changed files with 152 additions and 519 deletions
@ -1,133 +1,6 @@ |
|||||
# Copyright 2008 the V8 project authors. All rights reserved. |
import sys, os |
||||
# Redistribution and use in source and binary forms, with or without |
sys.path.append(os.path.join(os.path.dirname(__file__), '..')) |
||||
# modification, are permitted provided that the following conditions are |
import testpy |
||||
# met: |
|
||||
# |
|
||||
# * Redistributions of source code must retain the above copyright |
|
||||
# notice, this list of conditions and the following disclaimer. |
|
||||
# * Redistributions in binary form must reproduce the above |
|
||||
# copyright notice, this list of conditions and the following |
|
||||
# disclaimer in the documentation and/or other materials provided |
|
||||
# with the distribution. |
|
||||
# * Neither the name of Google Inc. nor the names of its |
|
||||
# contributors may be used to endorse or promote products derived |
|
||||
# from this software without specific prior written permission. |
|
||||
# |
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
|
||||
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
|
||||
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
|
||||
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
|
||||
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
|
||||
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
|
||||
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
|
||||
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
|
||||
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
|
||||
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
|
||||
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
|
||||
|
|
||||
import test |
|
||||
import os |
|
||||
import shutil |
|
||||
from shutil import rmtree |
|
||||
from os import mkdir |
|
||||
from glob import glob |
|
||||
from os.path import join, dirname, exists |
|
||||
import re |
|
||||
|
|
||||
|
|
||||
FLAGS_PATTERN = re.compile(r"//\s+Flags:(.*)") |
|
||||
FILES_PATTERN = re.compile(r"//\s+Files:(.*)") |
|
||||
|
|
||||
|
|
||||
class GCTestCase(test.TestCase): |
|
||||
|
|
||||
def __init__(self, path, file, mode, context, config): |
|
||||
super(GCTestCase, self).__init__(context, path, mode) |
|
||||
self.file = file |
|
||||
self.config = config |
|
||||
self.mode = mode |
|
||||
self.tmpdir = join(dirname(self.config.root), 'tmp') |
|
||||
|
|
||||
def AfterRun(self, result): |
|
||||
# delete the whole tmp dir |
|
||||
try: |
|
||||
rmtree(self.tmpdir) |
|
||||
except: |
|
||||
pass |
|
||||
# make it again. |
|
||||
try: |
|
||||
mkdir(self.tmpdir) |
|
||||
except: |
|
||||
pass |
|
||||
|
|
||||
def BeforeRun(self): |
|
||||
# delete the whole tmp dir |
|
||||
try: |
|
||||
rmtree(self.tmpdir) |
|
||||
except: |
|
||||
pass |
|
||||
# make it again. |
|
||||
# intermittently fails on win32, so keep trying |
|
||||
while not os.path.exists(self.tmpdir): |
|
||||
try: |
|
||||
mkdir(self.tmpdir) |
|
||||
except: |
|
||||
pass |
|
||||
|
|
||||
def GetLabel(self): |
|
||||
return "%s %s" % (self.mode, self.GetName()) |
|
||||
|
|
||||
def GetName(self): |
|
||||
return self.path[-1] |
|
||||
|
|
||||
def GetCommand(self): |
|
||||
result = [self.config.context.GetVm(self.mode)] |
|
||||
source = open(self.file).read() |
|
||||
flags_match = FLAGS_PATTERN.search(source) |
|
||||
if flags_match: |
|
||||
result += flags_match.group(1).strip().split() |
|
||||
files_match = FILES_PATTERN.search(source); |
|
||||
additional_files = [] |
|
||||
if files_match: |
|
||||
additional_files += files_match.group(1).strip().split() |
|
||||
for a_file in additional_files: |
|
||||
result.append(join(dirname(self.config.root), '..', a_file)) |
|
||||
result += ["--expose-gc"] |
|
||||
result += [self.file] |
|
||||
return result |
|
||||
|
|
||||
def GetSource(self): |
|
||||
return open(self.file).read() |
|
||||
|
|
||||
|
|
||||
class GCTestConfiguration(test.TestConfiguration): |
|
||||
|
|
||||
def __init__(self, context, root): |
|
||||
super(GCTestConfiguration, self).__init__(context, root) |
|
||||
|
|
||||
def Ls(self, path): |
|
||||
def SelectTest(name): |
|
||||
return name.startswith('test-') and name.endswith('.js') |
|
||||
return [f[:-3] for f in os.listdir(path) if SelectTest(f)] |
|
||||
|
|
||||
def ListTests(self, current_path, path, mode): |
|
||||
all_tests = [current_path + [t] for t in self.Ls(join(self.root))] |
|
||||
result = [] |
|
||||
for test in all_tests: |
|
||||
if self.Contains(path, test): |
|
||||
file_path = join(self.root, reduce(join, test[1:], "") + ".js") |
|
||||
result.append(GCTestCase(test, file_path, mode, self.context, self)) |
|
||||
return result |
|
||||
|
|
||||
def GetBuildRequirements(self): |
|
||||
return ['sample', 'sample=shell'] |
|
||||
|
|
||||
def GetTestStatus(self, sections, defs): |
|
||||
status_file = join(self.root, 'gc.status') |
|
||||
if exists(status_file): |
|
||||
test.ReadConfigurationInto(status_file, sections, defs) |
|
||||
|
|
||||
|
|
||||
|
|
||||
def GetConfiguration(context, root): |
def GetConfiguration(context, root): |
||||
return GCTestConfiguration(context, root) |
return testpy.SimpleTestConfiguration(context, root, 'gc', ['--expose-gc']) |
||||
|
@ -1,132 +1,6 @@ |
|||||
# Copyright 2008 the V8 project authors. All rights reserved. |
import sys, os |
||||
# Redistribution and use in source and binary forms, with or without |
sys.path.append(os.path.join(os.path.dirname(__file__), '..')) |
||||
# modification, are permitted provided that the following conditions are |
import testpy |
||||
# met: |
|
||||
# |
|
||||
# * Redistributions of source code must retain the above copyright |
|
||||
# notice, this list of conditions and the following disclaimer. |
|
||||
# * Redistributions in binary form must reproduce the above |
|
||||
# copyright notice, this list of conditions and the following |
|
||||
# disclaimer in the documentation and/or other materials provided |
|
||||
# with the distribution. |
|
||||
# * Neither the name of Google Inc. nor the names of its |
|
||||
# contributors may be used to endorse or promote products derived |
|
||||
# from this software without specific prior written permission. |
|
||||
# |
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
|
||||
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
|
||||
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
|
||||
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
|
||||
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
|
||||
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
|
||||
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
|
||||
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
|
||||
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
|
||||
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
|
||||
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
|
||||
|
|
||||
import test |
|
||||
import os |
|
||||
import shutil |
|
||||
from shutil import rmtree |
|
||||
from os import mkdir |
|
||||
from glob import glob |
|
||||
from os.path import join, dirname, exists |
|
||||
import re |
|
||||
|
|
||||
|
|
||||
FLAGS_PATTERN = re.compile(r"//\s+Flags:(.*)") |
|
||||
FILES_PATTERN = re.compile(r"//\s+Files:(.*)") |
|
||||
|
|
||||
|
|
||||
class InternetTestCase(test.TestCase): |
|
||||
|
|
||||
def __init__(self, path, file, mode, context, config): |
|
||||
super(InternetTestCase, self).__init__(context, path, mode) |
|
||||
self.file = file |
|
||||
self.config = config |
|
||||
self.mode = mode |
|
||||
self.tmpdir = join(dirname(self.config.root), 'tmp') |
|
||||
|
|
||||
def AfterRun(self, result): |
|
||||
# delete the whole tmp dir |
|
||||
try: |
|
||||
rmtree(self.tmpdir) |
|
||||
except: |
|
||||
pass |
|
||||
# make it again. |
|
||||
try: |
|
||||
mkdir(self.tmpdir) |
|
||||
except: |
|
||||
pass |
|
||||
|
|
||||
def BeforeRun(self): |
|
||||
# delete the whole tmp dir |
|
||||
try: |
|
||||
rmtree(self.tmpdir) |
|
||||
except: |
|
||||
pass |
|
||||
# make it again. |
|
||||
# intermittently fails on win32, so keep trying |
|
||||
while not os.path.exists(self.tmpdir): |
|
||||
try: |
|
||||
mkdir(self.tmpdir) |
|
||||
except: |
|
||||
pass |
|
||||
|
|
||||
def GetLabel(self): |
|
||||
return "%s %s" % (self.mode, self.GetName()) |
|
||||
|
|
||||
def GetName(self): |
|
||||
return self.path[-1] |
|
||||
|
|
||||
def GetCommand(self): |
|
||||
result = [self.config.context.GetVm(self.mode)] |
|
||||
source = open(self.file).read() |
|
||||
flags_match = FLAGS_PATTERN.search(source) |
|
||||
if flags_match: |
|
||||
result += flags_match.group(1).strip().split() |
|
||||
files_match = FILES_PATTERN.search(source); |
|
||||
additional_files = [] |
|
||||
if files_match: |
|
||||
additional_files += files_match.group(1).strip().split() |
|
||||
for a_file in additional_files: |
|
||||
result.append(join(dirname(self.config.root), '..', a_file)) |
|
||||
result += [self.file] |
|
||||
return result |
|
||||
|
|
||||
def GetSource(self): |
|
||||
return open(self.file).read() |
|
||||
|
|
||||
|
|
||||
class InternetTestConfiguration(test.TestConfiguration): |
|
||||
|
|
||||
def __init__(self, context, root): |
|
||||
super(InternetTestConfiguration, self).__init__(context, root) |
|
||||
|
|
||||
def Ls(self, path): |
|
||||
def SelectTest(name): |
|
||||
return name.startswith('test-') and name.endswith('.js') |
|
||||
return [f[:-3] for f in os.listdir(path) if SelectTest(f)] |
|
||||
|
|
||||
def ListTests(self, current_path, path, mode): |
|
||||
all_tests = [current_path + [t] for t in self.Ls(join(self.root))] |
|
||||
result = [] |
|
||||
for test in all_tests: |
|
||||
if self.Contains(path, test): |
|
||||
file_path = join(self.root, reduce(join, test[1:], "") + ".js") |
|
||||
result.append(InternetTestCase(test, file_path, mode, self.context, self)) |
|
||||
return result |
|
||||
|
|
||||
def GetBuildRequirements(self): |
|
||||
return ['sample', 'sample=shell'] |
|
||||
|
|
||||
def GetTestStatus(self, sections, defs): |
|
||||
status_file = join(self.root, 'simple.status') |
|
||||
if exists(status_file): |
|
||||
test.ReadConfigurationInto(status_file, sections, defs) |
|
||||
|
|
||||
|
|
||||
|
|
||||
def GetConfiguration(context, root): |
def GetConfiguration(context, root): |
||||
return InternetTestConfiguration(context, root) |
return testpy.SimpleTestConfiguration(context, root, 'internet') |
||||
|
@ -1,130 +1,6 @@ |
|||||
# Copyright 2008 the V8 project authors. All rights reserved. |
import sys, os |
||||
# Redistribution and use in source and binary forms, with or without |
sys.path.append(os.path.join(os.path.dirname(__file__), '..')) |
||||
# modification, are permitted provided that the following conditions are |
import testpy |
||||
# met: |
|
||||
# |
|
||||
# * Redistributions of source code must retain the above copyright |
|
||||
# notice, this list of conditions and the following disclaimer. |
|
||||
# * Redistributions in binary form must reproduce the above |
|
||||
# copyright notice, this list of conditions and the following |
|
||||
# disclaimer in the documentation and/or other materials provided |
|
||||
# with the distribution. |
|
||||
# * Neither the name of Google Inc. nor the names of its |
|
||||
# contributors may be used to endorse or promote products derived |
|
||||
# from this software without specific prior written permission. |
|
||||
# |
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
|
||||
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
|
||||
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
|
||||
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
|
||||
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
|
||||
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
|
||||
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
|
||||
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
|
||||
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
|
||||
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
|
||||
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
|
||||
|
|
||||
import test |
|
||||
import os |
|
||||
import shutil |
|
||||
from shutil import rmtree |
|
||||
from os import mkdir |
|
||||
from glob import glob |
|
||||
from os.path import join, dirname, exists |
|
||||
import re |
|
||||
|
|
||||
|
|
||||
FLAGS_PATTERN = re.compile(r"//\s+Flags:(.*)") |
|
||||
FILES_PATTERN = re.compile(r"//\s+Files:(.*)") |
|
||||
|
|
||||
|
|
||||
class PummelTestCase(test.TestCase): |
|
||||
|
|
||||
def __init__(self, path, file, mode, context, config): |
|
||||
super(PummelTestCase, self).__init__(context, path, mode) |
|
||||
self.file = file |
|
||||
self.config = config |
|
||||
self.mode = mode |
|
||||
self.tmpdir = join(dirname(self.config.root), 'tmp') |
|
||||
|
|
||||
def AfterRun(self, result): |
|
||||
# delete the whole tmp dir |
|
||||
try: |
|
||||
rmtree(self.tmpdir) |
|
||||
except: |
|
||||
pass |
|
||||
# make it again. |
|
||||
try: |
|
||||
mkdir(self.tmpdir) |
|
||||
except: |
|
||||
pass |
|
||||
|
|
||||
def BeforeRun(self): |
|
||||
# delete the whole tmp dir |
|
||||
try: |
|
||||
rmtree(self.tmpdir) |
|
||||
except: |
|
||||
pass |
|
||||
# make it again. |
|
||||
try: |
|
||||
mkdir(self.tmpdir) |
|
||||
except: |
|
||||
pass |
|
||||
|
|
||||
def GetLabel(self): |
|
||||
return "%s %s" % (self.mode, self.GetName()) |
|
||||
|
|
||||
def GetName(self): |
|
||||
return self.path[-1] |
|
||||
|
|
||||
def GetCommand(self): |
|
||||
result = [self.config.context.GetVm(self.mode)] |
|
||||
source = open(self.file).read() |
|
||||
flags_match = FLAGS_PATTERN.search(source) |
|
||||
if flags_match: |
|
||||
result += flags_match.group(1).strip().split() |
|
||||
files_match = FILES_PATTERN.search(source); |
|
||||
additional_files = [] |
|
||||
if files_match: |
|
||||
additional_files += files_match.group(1).strip().split() |
|
||||
for a_file in additional_files: |
|
||||
result.append(join(dirname(self.config.root), '..', a_file)) |
|
||||
result += [self.file] |
|
||||
return result |
|
||||
|
|
||||
def GetSource(self): |
|
||||
return open(self.file).read() |
|
||||
|
|
||||
|
|
||||
class PummelTestConfiguration(test.TestConfiguration): |
|
||||
|
|
||||
def __init__(self, context, root): |
|
||||
super(PummelTestConfiguration, self).__init__(context, root) |
|
||||
|
|
||||
def Ls(self, path): |
|
||||
def SelectTest(name): |
|
||||
return name.startswith('test-') and name.endswith('.js') |
|
||||
return [f[:-3] for f in os.listdir(path) if SelectTest(f)] |
|
||||
|
|
||||
def ListTests(self, current_path, path, mode): |
|
||||
all_tests = [current_path + [t] for t in self.Ls(join(self.root))] |
|
||||
result = [] |
|
||||
for test in all_tests: |
|
||||
if self.Contains(path, test): |
|
||||
file_path = join(self.root, reduce(join, test[1:], "") + ".js") |
|
||||
result.append(PummelTestCase(test, file_path, mode, self.context, self)) |
|
||||
return result |
|
||||
|
|
||||
def GetBuildRequirements(self): |
|
||||
return ['sample', 'sample=shell'] |
|
||||
|
|
||||
def GetTestStatus(self, sections, defs): |
|
||||
status_file = join(self.root, 'simple.status') |
|
||||
if exists(status_file): |
|
||||
test.ReadConfigurationInto(status_file, sections, defs) |
|
||||
|
|
||||
|
|
||||
|
|
||||
def GetConfiguration(context, root): |
def GetConfiguration(context, root): |
||||
return PummelTestConfiguration(context, root) |
return testpy.SimpleTestConfiguration(context, root, 'pummel') |
||||
|
@ -1,132 +1,6 @@ |
|||||
# Copyright 2008 the V8 project authors. All rights reserved. |
import sys, os |
||||
# Redistribution and use in source and binary forms, with or without |
sys.path.append(os.path.join(os.path.dirname(__file__), '..')) |
||||
# modification, are permitted provided that the following conditions are |
import testpy |
||||
# met: |
|
||||
# |
|
||||
# * Redistributions of source code must retain the above copyright |
|
||||
# notice, this list of conditions and the following disclaimer. |
|
||||
# * Redistributions in binary form must reproduce the above |
|
||||
# copyright notice, this list of conditions and the following |
|
||||
# disclaimer in the documentation and/or other materials provided |
|
||||
# with the distribution. |
|
||||
# * Neither the name of Google Inc. nor the names of its |
|
||||
# contributors may be used to endorse or promote products derived |
|
||||
# from this software without specific prior written permission. |
|
||||
# |
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
|
||||
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
|
||||
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
|
||||
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
|
||||
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
|
||||
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
|
||||
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
|
||||
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
|
||||
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
|
||||
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
|
||||
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
|
||||
|
|
||||
import test |
|
||||
import os |
|
||||
import shutil |
|
||||
from shutil import rmtree |
|
||||
from os import mkdir |
|
||||
from glob import glob |
|
||||
from os.path import join, dirname, exists |
|
||||
import re |
|
||||
|
|
||||
|
|
||||
FLAGS_PATTERN = re.compile(r"//\s+Flags:(.*)") |
|
||||
FILES_PATTERN = re.compile(r"//\s+Files:(.*)") |
|
||||
|
|
||||
|
|
||||
class SimpleTestCase(test.TestCase): |
|
||||
|
|
||||
def __init__(self, path, file, mode, context, config): |
|
||||
super(SimpleTestCase, self).__init__(context, path, mode) |
|
||||
self.file = file |
|
||||
self.config = config |
|
||||
self.mode = mode |
|
||||
self.tmpdir = join(dirname(self.config.root), 'tmp') |
|
||||
|
|
||||
def AfterRun(self, result): |
|
||||
# delete the whole tmp dir |
|
||||
try: |
|
||||
rmtree(self.tmpdir) |
|
||||
except: |
|
||||
pass |
|
||||
# make it again. |
|
||||
try: |
|
||||
mkdir(self.tmpdir) |
|
||||
except: |
|
||||
pass |
|
||||
|
|
||||
def BeforeRun(self): |
|
||||
# delete the whole tmp dir |
|
||||
try: |
|
||||
rmtree(self.tmpdir) |
|
||||
except: |
|
||||
pass |
|
||||
# make it again. |
|
||||
# intermittently fails on win32, so keep trying |
|
||||
while not os.path.exists(self.tmpdir): |
|
||||
try: |
|
||||
mkdir(self.tmpdir) |
|
||||
except: |
|
||||
pass |
|
||||
|
|
||||
def GetLabel(self): |
|
||||
return "%s %s" % (self.mode, self.GetName()) |
|
||||
|
|
||||
def GetName(self): |
|
||||
return self.path[-1] |
|
||||
|
|
||||
def GetCommand(self): |
|
||||
result = [self.config.context.GetVm(self.mode)] |
|
||||
source = open(self.file).read() |
|
||||
flags_match = FLAGS_PATTERN.search(source) |
|
||||
if flags_match: |
|
||||
result += flags_match.group(1).strip().split() |
|
||||
files_match = FILES_PATTERN.search(source); |
|
||||
additional_files = [] |
|
||||
if files_match: |
|
||||
additional_files += files_match.group(1).strip().split() |
|
||||
for a_file in additional_files: |
|
||||
result.append(join(dirname(self.config.root), '..', a_file)) |
|
||||
result += [self.file] |
|
||||
return result |
|
||||
|
|
||||
def GetSource(self): |
|
||||
return open(self.file).read() |
|
||||
|
|
||||
|
|
||||
class SimpleTestConfiguration(test.TestConfiguration): |
|
||||
|
|
||||
def __init__(self, context, root): |
|
||||
super(SimpleTestConfiguration, self).__init__(context, root) |
|
||||
|
|
||||
def Ls(self, path): |
|
||||
def SelectTest(name): |
|
||||
return name.startswith('test-') and name.endswith('.js') |
|
||||
return [f[:-3] for f in os.listdir(path) if SelectTest(f)] |
|
||||
|
|
||||
def ListTests(self, current_path, path, mode): |
|
||||
all_tests = [current_path + [t] for t in self.Ls(join(self.root))] |
|
||||
result = [] |
|
||||
for test in all_tests: |
|
||||
if self.Contains(path, test): |
|
||||
file_path = join(self.root, reduce(join, test[1:], "") + ".js") |
|
||||
result.append(SimpleTestCase(test, file_path, mode, self.context, self)) |
|
||||
return result |
|
||||
|
|
||||
def GetBuildRequirements(self): |
|
||||
return ['sample', 'sample=shell'] |
|
||||
|
|
||||
def GetTestStatus(self, sections, defs): |
|
||||
status_file = join(self.root, 'simple.status') |
|
||||
if exists(status_file): |
|
||||
test.ReadConfigurationInto(status_file, sections, defs) |
|
||||
|
|
||||
|
|
||||
|
|
||||
def GetConfiguration(context, root): |
def GetConfiguration(context, root): |
||||
return SimpleTestConfiguration(context, root) |
return testpy.SimpleTestConfiguration(context, root, 'simple') |
||||
|
@ -0,0 +1,136 @@ |
|||||
|
# Copyright 2008 the V8 project authors. All rights reserved. |
||||
|
# Redistribution and use in source and binary forms, with or without |
||||
|
# modification, are permitted provided that the following conditions are |
||||
|
# met: |
||||
|
# |
||||
|
# * Redistributions of source code must retain the above copyright |
||||
|
# notice, this list of conditions and the following disclaimer. |
||||
|
# * Redistributions in binary form must reproduce the above |
||||
|
# copyright notice, this list of conditions and the following |
||||
|
# disclaimer in the documentation and/or other materials provided |
||||
|
# with the distribution. |
||||
|
# * Neither the name of Google Inc. nor the names of its |
||||
|
# contributors may be used to endorse or promote products derived |
||||
|
# from this software without specific prior written permission. |
||||
|
# |
||||
|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
||||
|
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
||||
|
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
||||
|
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
||||
|
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
||||
|
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
||||
|
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
||||
|
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
||||
|
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
||||
|
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
||||
|
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||
|
|
||||
|
import test |
||||
|
import os |
||||
|
import shutil |
||||
|
from shutil import rmtree |
||||
|
from os import mkdir |
||||
|
from glob import glob |
||||
|
from os.path import join, dirname, exists |
||||
|
import re |
||||
|
|
||||
|
|
||||
|
FLAGS_PATTERN = re.compile(r"//\s+Flags:(.*)") |
||||
|
FILES_PATTERN = re.compile(r"//\s+Files:(.*)") |
||||
|
|
||||
|
|
||||
|
class SimpleTestCase(test.TestCase): |
||||
|
|
||||
|
def __init__(self, path, file, mode, context, config, additional=[]): |
||||
|
super(SimpleTestCase, self).__init__(context, path, mode) |
||||
|
self.file = file |
||||
|
self.config = config |
||||
|
self.mode = mode |
||||
|
self.tmpdir = join(dirname(self.config.root), 'tmp') |
||||
|
self.additional_flags = additional |
||||
|
|
||||
|
def AfterRun(self, result): |
||||
|
# delete the whole tmp dir |
||||
|
try: |
||||
|
rmtree(self.tmpdir) |
||||
|
except: |
||||
|
pass |
||||
|
# make it again. |
||||
|
try: |
||||
|
mkdir(self.tmpdir) |
||||
|
except: |
||||
|
pass |
||||
|
|
||||
|
def BeforeRun(self): |
||||
|
# delete the whole tmp dir |
||||
|
try: |
||||
|
rmtree(self.tmpdir) |
||||
|
except: |
||||
|
pass |
||||
|
# make it again. |
||||
|
# intermittently fails on win32, so keep trying |
||||
|
while not os.path.exists(self.tmpdir): |
||||
|
try: |
||||
|
mkdir(self.tmpdir) |
||||
|
except: |
||||
|
pass |
||||
|
|
||||
|
def GetLabel(self): |
||||
|
return "%s %s" % (self.mode, self.GetName()) |
||||
|
|
||||
|
def GetName(self): |
||||
|
return self.path[-1] |
||||
|
|
||||
|
def GetCommand(self): |
||||
|
result = [self.config.context.GetVm(self.mode)] |
||||
|
source = open(self.file).read() |
||||
|
flags_match = FLAGS_PATTERN.search(source) |
||||
|
if flags_match: |
||||
|
result += flags_match.group(1).strip().split() |
||||
|
files_match = FILES_PATTERN.search(source); |
||||
|
additional_files = [] |
||||
|
if files_match: |
||||
|
additional_files += files_match.group(1).strip().split() |
||||
|
for a_file in additional_files: |
||||
|
result.append(join(dirname(self.config.root), '..', a_file)) |
||||
|
|
||||
|
if self.additional_flags: |
||||
|
result += self.additional_flags |
||||
|
|
||||
|
result += [self.file] |
||||
|
|
||||
|
return result |
||||
|
|
||||
|
def GetSource(self): |
||||
|
return open(self.file).read() |
||||
|
|
||||
|
|
||||
|
class SimpleTestConfiguration(test.TestConfiguration): |
||||
|
|
||||
|
def __init__(self, context, root, section, additional=[]): |
||||
|
super(SimpleTestConfiguration, self).__init__(context, root) |
||||
|
self.section = section |
||||
|
self.additional_flags = additional |
||||
|
|
||||
|
def Ls(self, path): |
||||
|
def SelectTest(name): |
||||
|
return name.startswith('test-') and name.endswith('.js') |
||||
|
return [f[:-3] for f in os.listdir(path) if SelectTest(f)] |
||||
|
|
||||
|
def ListTests(self, current_path, path, mode): |
||||
|
all_tests = [current_path + [t] for t in self.Ls(join(self.root))] |
||||
|
result = [] |
||||
|
for test in all_tests: |
||||
|
if self.Contains(path, test): |
||||
|
file_path = join(self.root, reduce(join, test[1:], "") + ".js") |
||||
|
result.append(SimpleTestCase(test, file_path, mode, self.context, self, |
||||
|
self.additional_flags)) |
||||
|
return result |
||||
|
|
||||
|
def GetBuildRequirements(self): |
||||
|
return ['sample', 'sample=shell'] |
||||
|
|
||||
|
def GetTestStatus(self, sections, defs): |
||||
|
status_file = join(self.root, '%s.status' % (self.section)) |
||||
|
if exists(status_file): |
||||
|
test.ReadConfigurationInto(status_file, sections, defs) |
Loading…
Reference in new issue