Merge "ATest: Won't symlink LATEST for non-test options."
diff --git a/atest/atest.py b/atest/atest.py
index 8611e21..c4b993e 100755
--- a/atest/atest.py
+++ b/atest/atest.py
@@ -563,17 +563,17 @@
# pylint: disable=too-many-statements
# pylint: disable=too-many-branches
# pylint: disable=too-many-return-statements
-def main(argv, results_dir):
+def main(argv, results_dir, args):
"""Entry point of atest script.
Args:
argv: A list of arguments.
results_dir: A directory which stores the ATest execution information.
+ args: An argspace.Namespace class instance holding parsed args.
Returns:
Exit code.
"""
- args = _parse_args(argv)
_configure_logging(args.verbose)
_validate_args(args)
metrics_utils.get_start_time()
@@ -707,14 +707,16 @@
if __name__ == '__main__':
RESULTS_DIR = make_test_run_dir()
+ ARGS = _parse_args(sys.argv[1:])
with atest_execution_info.AtestExecutionInfo(sys.argv[1:],
- RESULTS_DIR) as result_file:
+ RESULTS_DIR,
+ ARGS) as result_file:
metrics_base.MetricsBase.tool_name = constants.TOOL_NAME
- EXIT_CODE = main(sys.argv[1:], RESULTS_DIR)
+ EXIT_CODE = main(sys.argv[1:], RESULTS_DIR, ARGS)
DETECTOR = bug_detector.BugDetector(sys.argv[1:], EXIT_CODE)
metrics.LocalDetectEvent(
detect_type=constants.DETECT_TYPE_BUG_DETECTED,
result=DETECTOR.caught_result)
if result_file:
- print('Execution detail has saved in %s' % result_file.name)
+ print("Run 'atest --history' to review test result history.")
sys.exit(EXIT_CODE)
diff --git a/atest/atest_execution_info.py b/atest/atest_execution_info.py
index a92fe1f..39cd3c1 100644
--- a/atest/atest_execution_info.py
+++ b/atest/atest_execution_info.py
@@ -100,6 +100,25 @@
pass
+def has_non_test_options(args):
+ """
+ check whether non-test option in the args.
+
+ Args:
+ args: An argspace.Namespace class instance holding parsed args.
+
+ Returns:
+ True, if args has at least one non-test option.
+ False, otherwise.
+ """
+ return (args.collect_tests_only
+ or args.dry_run
+ or args.help
+ or args.history
+ or args.info
+ or args.version)
+
+
class AtestExecutionInfo(object):
"""Class that stores the whole test progress information in JSON format.
@@ -139,12 +158,13 @@
result_reporters = []
- def __init__(self, args, work_dir):
+ def __init__(self, args, work_dir, args_ns):
"""Initialise an AtestExecutionInfo instance.
Args:
args: Command line parameters.
- work_dir : The directory for saving information.
+ work_dir: The directory for saving information.
+ args_ns: An argspace.Namespace class instance holding parsed args.
Returns:
A json format string.
@@ -152,6 +172,7 @@
self.args = args
self.work_dir = work_dir
self.result_file = None
+ self.args_ns = args_ns
def __enter__(self):
"""Create and return information file object."""
@@ -168,7 +189,8 @@
self.result_file.write(AtestExecutionInfo.
_generate_execution_detail(self.args))
self.result_file.close()
- symlink_latest_result(self.work_dir)
+ if not has_non_test_options(self.args_ns):
+ symlink_latest_result(self.work_dir)
main_module = sys.modules.get(_MAIN_MODULE_KEY)
main_exit_code = getattr(main_module, _EXIT_CODE_ATTR,
constants.EXIT_CODE_ERROR)