Chromium Code Reviews| 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 |
| index a1308212238fbb7e7dec54e0855c9c21dee08f63..73e316ca245c73136cbe8da697f4f9fe7cb3e63f 100644 |
| --- a/components/test/data/password_manager/run_tests.py |
| +++ b/components/test/data/password_manager/run_tests.py |
| @@ -6,8 +6,7 @@ |
| """This file allows the bots to be easily configure and run the tests.""" |
| import argparse |
| -import os |
| -import tempfile |
| +import urllib2 |
|
vabr (Chromium)
2014/07/22 07:54:27
This also needs to be deleted if |response| and }r
rchtara
2014/07/22 12:49:36
Done.
|
| from environment import Environment |
| import tests |
| @@ -38,63 +37,61 @@ if __name__ == "__main__": |
| 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) |
| - results_path = results.name |
| - results.close() |
| + xml = "<xml>" |
| - full_path = os.path.realpath(__file__) |
| - tests_dir = os.path.dirname(full_path) |
| - tests_path = os.path.join(tests_dir, "tests.py") |
| + all_successful = True |
| + for websitetest in environment.websitetests: |
| + successful = False |
| + # The tests can be flaky. This is why we try to rerun up to 3 times. |
| + for x in range(0, 3): |
| + print "Running tests for %s " % websitetest.name |
|
vabr (Chromium)
2014/07/22 07:54:28
nit: Please add a comment explaining that this mes
rchtara
2014/07/22 12:49:36
Done.
|
| - for websitetest in environment.websitetests: |
| - # The tests can be flaky. This is why we try to rerun up to 3 times. |
| - for x in range(0, 3): |
| - # TODO(rchtara): Using "pkill" is just temporary until a better, |
| - # platform-independent solution is found. |
| - os.system("pkill chrome") |
| - try: |
| - os.remove(results_path) |
| - except Exception: |
| - pass |
| - # TODO(rchtara): Using "timeout is just temporary until a better, |
| - # platform-independent solution is found. |
| + # Run the test without enable-automatic-password-saving to check whether |
| + # or not the prompt is shown in the way we expected. |
| + tests_results = tests.RunTests( |
| + args.chrome_path[0], |
| + args.chromedriver_path[0], |
| + args.profile_path[0], |
| + args.passwords_path[0], |
| + False, |
| + 10, # Debug log level. |
| + True, |
| + None, |
| + tests.TypeOfTestedWebsites.LIST_OF_TESTS, |
| + [websitetest.name]) |
| - # The website test runs in two passes, each pass has an internal |
| - # timeout of 200s for waiting (see |remaining_time_to_wait| and |
| - # Wait() in websitetest.py). Accounting for some more time spent on |
| - # the non-waiting execution, 300 seconds should be the upper bound on |
| - # the runtime of one pass, thus 600 seconds for the whole test. |
| - os.system("timeout 600 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") |
| - count = 0 # Count the number of successful tests. |
| - for line in results: |
| - xml.write(line) |
| - count += line.count("successful='True'") |
| - results.close() |
| - # There is only two tests running for every website: the prompt and |
| - # the normal test. If both of the tests were successful, the tests |
| - # would be stopped for the current website. |
| - if count == 2: |
| - break |
| - 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)) |
| - finally: |
| - try: |
| - os.remove(results_path) |
| - except Exception: |
| - pass |
| + # Run the test with enable-automatic-password-saving to check whether |
| + # or not the password is stored in the the way we expected. |
| + tests_results += tests.RunTests( |
| + args.chrome_path[0], |
| + args.chromedriver_path[0], |
| + args.profile_path[0], |
| + args.passwords_path[0], |
| + True, |
| + 10, # Debug log level. |
| + True, |
| + None, |
| + tests.TypeOfTestedWebsites.LIST_OF_TESTS, |
| + [websitetest.name]) |
| - xml.write("</xml>") |
| - xml.close() |
| + if len(tests_results) > 1: |
| + xml = xml + tests.resultsToXml(tests_results) |
|
vabr (Chromium)
2014/07/22 07:54:28
xml += ...
(also below)
rchtara
2014/07/22 12:49:36
Done.
|
| + if tests_results[0].successful and tests_results[1].successful: |
| + successful = True |
| + break |
| + else: |
|
vabr (Chromium)
2014/07/22 07:54:27
The "else" branch scraps the test results, even if
rchtara
2014/07/22 12:49:36
Done.
|
| + xml = xml + ( |
| + "<result><test name='%s' type='prompt' successful='false'>" |
| + "</test><test name='%s' type='normal' successful='false'></test>" |
| + "</result>" % (websitetest.name, websitetest.name)) |
| + |
| + all_successful = all_successful and successful |
| + |
| + xml = xml + "</xml>" |
| + |
| + request = urllib2.Request("http://dashbord", data=xml, |
|
vabr (Chromium)
2014/07/22 07:54:27
Please do not include code which is not working. U
rchtara
2014/07/22 12:49:36
Done.
|
| + headers={'Content-Type': 'application/xml'}) |
| + response = urllib2.urlopen(request).read() |
| + json = open(args.save_path[0], "w") |
|
vabr (Chromium)
2014/07/22 07:54:27
When I run a test in Rietveld, and want to see a r
rchtara
2014/07/22 12:49:36
Yes I confirm that.
The new patch allows to print
|
| + json.write("{'successful': '%s'}" % all_successful) |
| + json.close() |