diff options
Diffstat (limited to 'cpp/test/Slice/errorDetection/test.py')
-rw-r--r-- | cpp/test/Slice/errorDetection/test.py | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/cpp/test/Slice/errorDetection/test.py b/cpp/test/Slice/errorDetection/test.py new file mode 100644 index 00000000000..71953c3086c --- /dev/null +++ b/cpp/test/Slice/errorDetection/test.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +# ********************************************************************** +# +# Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved. +# +# This copy of Ice is licensed to you under the terms described in the +# ICE_LICENSE file included in this distribution. +# +# ********************************************************************** + +import glob + +class SliceErrorDetectionTestCase(ClientTestCase): + + def runClientSide(self, current): + testdir = self.getPath() + slice2cpp = SliceTranslator("slice2cpp") + + files = glob.glob("{0}/*.ice".format(testdir)) + files.sort() + for file in files: + current.write(os.path.basename(file) + "... ") + + args = ["-I.", file] + if file.find("Underscore") >= 0: + args.append("--underscore") + + # Don't print out slice2cpp output and expect failures + slice2cpp.run(current, args=args, exitstatus=1) + output = slice2cpp.getOutput() + + regex1 = re.compile("\.ice$", re.IGNORECASE) + lines1 = output.strip().split("\n") + lines2 = open(os.path.join(testdir, regex1.sub(".err", file)), "r").readlines() + if len(lines1) != len(lines2): + raise RuntimeError("failed (lines1 = {0}, lines2 = {1})!".format(len(lines1), len(lines2))) + + regex2 = re.compile("^.*(?=" + os.path.basename(file) + ")") + i = 0 + while i < len(lines1): + line1 = regex2.sub("", lines1[i]).strip() + line2 = regex2.sub("", lines2[i]).strip() + if line1 != line2: + raise RuntimeError("failed! (line1 = \"{0}\", line2 = \"{1}\"".format(line1, line2)) + i = i + 1 + else: + current.writeln("ok") + +TestSuite(__name__, [ SliceErrorDetectionTestCase() ]) |