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

Side by Side 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 unified diff | Download patch
OLDNEW
(Empty)
1 # -*- coding: utf-8 -*-
2 # Copyright 2014 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file.
5
6 """This file allows the bots to be easily configure and run the tests."""
7
8 import argparse
9 import os
10 import tempfile
11
12 from environment import Environment
13 import tests
14
15 if __name__ == "__main__":
16 parser = argparse.ArgumentParser(
17 description="Password Manager automated tests runner help.")
18 parser.add_argument(
19 "--chrome-path", action="store", dest="chrome_path",
20 help="Set the chrome path (required).", nargs=1, required=True)
21 parser.add_argument(
22 "--chromedriver-path", action="store", dest="chromedriver_path",
23 help="Set the chromedriver path (required).", nargs=1, required=True)
24 parser.add_argument(
25 "--profile-path", action="store", dest="profile_path",
26 help="Set the profile path (required). You just need to choose a "
27 "temporary empty folder. If the folder is not empty all its content "
28 "is going to be removed.",
29 nargs=1, required=True)
30 parser.add_argument(
31 "--passwords-path", action="store", dest="passwords_path",
32 help="Set the usernames/passwords path (required).", nargs=1,
33 required=True)
34 parser.add_argument("--save-path", action="store", nargs=1, dest="save_path",
35 help="Write the results in a file.", required=True)
36 args = parser.parse_args()
37
38 environment = Environment('', '', '', None, False)
39 tests.Tests(environment)
40
41 xml = open(args.save_path[0],"w")
42 xml.write("<xml>")
43 try:
44 results = tempfile.NamedTemporaryFile(
45 dir=os.path.join(tempfile.gettempdir()), delete=False)
46 results_path = results.name
47 results.close()
48
49 full_path = os.path.realpath(__file__)
50 tests_dir = os.path.dirname(full_path)
51 tests_path = os.path.join(tests_dir, "tests.py")
52
53 for websitetest in environment.websitetests:
54 # The tests are not robust and could some time fail for reasons that are
55 # not related to the password manager (e.g., unexpected chrome crash).
vabr (Chromium) 2014/07/17 09:15:44 I still oppose to mentioning "unexpected chrome cr
rchtara 2014/07/17 14:05:17 Done.
56 # This is why we need to run them many times to reduce the effect of such
57 # problems.
58 for x in range(0, 3):
59 os.system("pkill -f chrome")
60 try:
61 os.remove(results_path)
62 except OSError:
63 pass
64 # Two tests are going to be run here: the normal test and the prompt
65 # test. Each of these tests have a |remaining_time_to_wait| timeout
vabr (Chromium) 2014/07/17 09:15:44 nit: I'd suggest a slight rephrasing to indicate t
rchtara 2014/07/17 14:05:18 Done.
66 # limit set in websitetest.py to 200 seconds that does not include
67 # everything, only time spent in Wait() calls. So we need 300 seconds
68 # for every test and 600 seconds for both of the tests.
69 os.system("timeout 600 python %s %s --chrome-path %s "
vabr (Chromium) 2014/07/17 09:15:44 Please add a "TODO(rchtara): " comment explaining
rchtara 2014/07/17 14:05:17 Done.
70 "--chromedriver-path %s --passwords-path %s --profile-path %s "
71 "--save-path %s" %
72 (tests_path, websitetest.name, args.chrome_path[0],
73 args.chromedriver_path[0], args.passwords_path[0],
74 args.profile_path[0], results_path))
75 if os.path.isfile(results_path):
76 results = open(results_path, "r")
77 count = 0 # Count the number of successful tests.
78 for line in results:
79 xml.write(line)
80 count += line.count("successful='True'")
81 results.close()
82 # There is only two tests running for every website: the prompt and
83 # the normal test. If both of the tests were successful, the tests
84 # would be stopped for the current website.
85 if count == 2:
86 break
87 else:
88 xml.write("<result><test name='%s' type='prompt' successful='false'>"
89 "</test><test name='%s' type='normal' successful='false'></test>"
90 "</result>" % (websitetest.name, websitetest.name))
91 finally:
92 try:
93 os.remove(results_path)
94 except Exception:
95 pass
96
97 xml.write("</xml>")
98 xml.close()
OLDNEW
« 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