Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(636)

Unified Diff: components/test/data/password_manager/run_tests.py

Issue 386423002: Allow the test bots to easily run the password manager python tests. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: components/test/data/password_manager/run_tests.py
diff --git a/components/test/data/password_manager/run_tests.py b/components/test/data/password_manager/run_tests.py
new file mode 100644
index 0000000000000000000000000000000000000000..5c1e81b07958007384b1f8123aa2928519f16f65
--- /dev/null
+++ b/components/test/data/password_manager/run_tests.py
@@ -0,0 +1,92 @@
+# -*- coding: utf-8 -*-
+# Copyright 2014 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+"""This file allows the bots to be easily configure and run the tests."""
+
+import argparse
+import os
+import tempfile
+
+from environment import Environment
+import tests
+
+if __name__ == "__main__":
+ parser = argparse.ArgumentParser(
+ description="Password Manager automated tests runner help.")
+ parser.add_argument(
+ "--chrome-path", action="store", dest="chrome_path",
+ help="Set the chrome path (required).", nargs=1, required=True)
+ parser.add_argument(
+ "--chromedriver-path", action="store", dest="chromedriver_path",
+ help="Set the chromedriver path (required).", nargs=1, required=True)
+ parser.add_argument(
+ "--profile-path", action="store", dest="profile_path",
+ help="Set the profile path (required). You just need to choose a "
+ "temporary empty folder. If the folder is not empty all its content "
+ "is going to be removed.",
+ nargs=1, required=True)
+ parser.add_argument(
+ "--passwords-path", action="store", dest="passwords_path",
+ help="Set the usernames/passwords path (required).", nargs=1,
+ required=True)
+ parser.add_argument("--save-path", action="store", nargs=1, dest="save_path",
+ help="Write the results in a file.", required=True)
+ args = parser.parse_args()
+
+ environment = Environment('', '', '', None, False)
+ tests.Tests(environment)
+
+ xml = open(args.save_path[0],"w")
+ xml.write("<xml>")
+ try:
+ results = tempfile.NamedTemporaryFile(
+ dir=os.path.join(tempfile.gettempdir()),
+ delete=False)
vabr (Chromium) 2014/07/16 08:48:44 nit: That's not what I meant -- the arguments do f
rchtara 2014/07/16 16:31:58 Done.
+ results_path = results.name
+ results.close()
+
+ full_path = os.path.realpath(__file__)
+ tests_dir = os.path.dirname(full_path)
+ tests_path = os.path.join(tests_dir, "tests.py")
+
+ for websitetest in environment.websitetests:
+ # The tests are not robust and could some time fail for reasons that are
+ # not related to the password manager(ex: unexpected chrome crash). This
vabr (Chromium) 2014/07/16 08:48:44 I don't think we should tolerate unexpected chrome
vabr (Chromium) 2014/07/16 08:48:44 nits: (1) space before "(" (2) ex: -> e.g.,
rchtara 2014/07/16 16:31:58 Done.
+ # is why we need to run them many times to reduce the effect of such
vabr (Chromium) 2014/07/16 08:48:44 I can see 2 issues with the current approach: (1)
rchtara 2014/07/16 16:31:59 Done.
+ # problems.
+ for x in range(0, 3):
+ os.system("pkill -f chrome")
+ try:
+ os.remove(results_path)
+ except OSError:
+ pass
+ # The test could sometimes be blocked waiting for a page to be loaded
+ # or an HTML element to appear. This why we need to run them with a
+ # timeout to stop the test in this case. The timeout is 200 seconds and
+ # it's more than enough to run the test.
vabr (Chromium) 2014/07/16 08:48:44 "it's more than enough" -- that's a bold claim. If
rchtara 2014/07/16 16:31:59 Done.
+ os.system("timeout 200 python %s %s --chrome-path %s "
+ "--chromedriver-path %s --passwords-path %s --profile-path %s "
+ "--save-path %s" %
+ (tests_path, websitetest.name, args.chrome_path[0],
+ args.chromedriver_path[0], args.passwords_path[0],
+ args.profile_path[0], results_path))
+ if os.path.isfile(results_path):
+ results = open(results_path, "r")
+ for line in results:
+ xml.write(line)
+ results.close()
+ else:
+ xml.write("<result><test name='%s' type='prompt' successful='false'>"
+ "</test><test name='%s' type='normal' successful='false'></test>"
+ "</result>" % (websitetest.name, websitetest.name))
+ except Exception:
vabr (Chromium) 2014/07/16 08:48:44 Are you sure you want to flush all exceptions here
rchtara 2014/07/16 16:31:59 Done.
+ pass
+ try:
+ os.remove(results_path)
+ except Exception:
+ pass
+
+ xml.write("</xml>")
+ xml.close()
« no previous file with comments | « components/test/data/password_manager/environment.py ('k') | components/test/data/password_manager/tests.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698