summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTimothy J Fontaine <tjfontaine@gmail.com>2014-01-13 17:09:12 -0800
committerAlexis Campailla <alexis@janeasystems.com>2015-07-16 20:21:28 -0400
commit3bb8174b947d095f2f745d01c062fb67c7551199 (patch)
tree7d57ba019a7c67a7da6f5e40f29c290c28ba1d8f
parentd103d4ed9a58dbe7a16eedbbacbcf4fb7587d0cd (diff)
downloadnode-3bb8174b947d095f2f745d01c062fb67c7551199.tar.gz
test: refactor to use common testcfg
PR-URL: https://github.com/joyent/node/pull/25686 Reviewed-By: Julien Gilli <julien.gilli@joyent.com>
-rw-r--r--test/gc/testcfg.py135
-rw-r--r--test/internet/testcfg.py134
-rw-r--r--test/pummel/testcfg.py132
-rw-r--r--test/simple/testcfg.py134
-rw-r--r--test/testpy/__init__.py136
5 files changed, 152 insertions, 519 deletions
diff --git a/test/gc/testcfg.py b/test/gc/testcfg.py
index 30f3bdbeb..d6bbcd60f 100644
--- a/test/gc/testcfg.py
+++ b/test/gc/testcfg.py
@@ -1,133 +1,6 @@
-# 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 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)
-
-
+import sys, os
+sys.path.append(os.path.join(os.path.dirname(__file__), '..'))
+import testpy
def GetConfiguration(context, root):
- return GCTestConfiguration(context, root)
+ return testpy.SimpleTestConfiguration(context, root, 'gc', ['--expose-gc'])
diff --git a/test/internet/testcfg.py b/test/internet/testcfg.py
index 3e3e900e6..73e70e340 100644
--- a/test/internet/testcfg.py
+++ b/test/internet/testcfg.py
@@ -1,132 +1,6 @@
-# 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 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)
-
-
+import sys, os
+sys.path.append(os.path.join(os.path.dirname(__file__), '..'))
+import testpy
def GetConfiguration(context, root):
- return InternetTestConfiguration(context, root)
+ return testpy.SimpleTestConfiguration(context, root, 'internet')
diff --git a/test/pummel/testcfg.py b/test/pummel/testcfg.py
index 02f5ec6a9..c91fe39dc 100644
--- a/test/pummel/testcfg.py
+++ b/test/pummel/testcfg.py
@@ -1,130 +1,6 @@
-# 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 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)
-
-
+import sys, os
+sys.path.append(os.path.join(os.path.dirname(__file__), '..'))
+import testpy
def GetConfiguration(context, root):
- return PummelTestConfiguration(context, root)
+ return testpy.SimpleTestConfiguration(context, root, 'pummel')
diff --git a/test/simple/testcfg.py b/test/simple/testcfg.py
index bb2c4d1af..3d9b6296b 100644
--- a/test/simple/testcfg.py
+++ b/test/simple/testcfg.py
@@ -1,132 +1,6 @@
-# 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):
- 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)
-
-
+import sys, os
+sys.path.append(os.path.join(os.path.dirname(__file__), '..'))
+import testpy
def GetConfiguration(context, root):
- return SimpleTestConfiguration(context, root)
+ return testpy.SimpleTestConfiguration(context, root, 'simple')
diff --git a/test/testpy/__init__.py b/test/testpy/__init__.py
new file mode 100644
index 000000000..54b0f1991
--- /dev/null
+++ b/test/testpy/__init__.py
@@ -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)