aboutsummaryrefslogtreecommitdiffstats
path: root/python/servo/mutation/init.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/servo/mutation/init.py')
-rw-r--r--python/servo/mutation/init.py55
1 files changed, 55 insertions, 0 deletions
diff --git a/python/servo/mutation/init.py b/python/servo/mutation/init.py
new file mode 100644
index 00000000000..a3461779bbb
--- /dev/null
+++ b/python/servo/mutation/init.py
@@ -0,0 +1,55 @@
+# Copyright 2013 The Servo Project Developers. See the COPYRIGHT
+# file at the top-level directory of this distribution.
+#
+# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+# option. This file may not be copied, modified, or distributed
+# except according to those terms.
+
+from os import listdir
+from os.path import isfile, isdir, join
+import json
+import sys
+import test
+test_summary = {
+ test.Status.KILLED: 0,
+ test.Status.SURVIVED: 0,
+ test.Status.SKIPPED: 0,
+ test.Status.UNEXPECTED: 0
+}
+
+
+def get_folders_list(path):
+ folder_list = []
+ for filename in listdir(path):
+ if isdir(join(path, filename)):
+ folder_name = join(path, filename)
+ folder_list.append(folder_name)
+ return folder_list
+
+
+def mutation_test_for(mutation_path):
+ test_mapping_file = join(mutation_path, 'test_mapping.json')
+ if isfile(test_mapping_file):
+ json_data = open(test_mapping_file).read()
+ test_mapping = json.loads(json_data)
+ # Run mutation test for all source files in mapping file.
+ for src_file in test_mapping.keys():
+ status = test.mutation_test(join(mutation_path, src_file.encode('utf-8')), test_mapping[src_file])
+ test_summary[status] += 1
+ # Run mutation test in all folder in the path.
+ for folder in get_folders_list(mutation_path):
+ mutation_test_for(folder)
+ else:
+ print("This folder {0} has no test mapping file.".format(mutation_path))
+
+
+mutation_test_for(sys.argv[1])
+print "\nTest Summary:"
+print "Mutant Killed (Success) \t{0}".format(test_summary[test.Status.KILLED])
+print "Mutant Survived (Failure) \t{0}".format(test_summary[test.Status.SURVIVED])
+print "Mutation Skipped \t\t{0}".format(test_summary[test.Status.SKIPPED])
+print "Unexpected error in mutation \t{0}".format(test_summary[test.Status.UNEXPECTED])
+if test_summary[test.Status.SURVIVED]:
+ sys.exit(1)