• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright 2015 The Chromium Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5# Generates a script in the output bin directory which runs the test
6# target using the test runner script in build/android/pylib/test_runner.py.
7#
8# To use this, include this file in a gtest or instrumentation test target.
9# {
10#   'target_name': 'gtest',
11#   'type': 'none',
12#   'variables': {
13#     'test_type': 'gtest',  # string
14#     'test_suite_name': 'gtest_suite'  # string
15#     'isolate_file': 'path/to/gtest.isolate'  # string
16#   },
17#   'includes': ['path/to/this/gypi/file'],
18# }
19#
20# {
21#   'target_name': 'instrumentation_apk',
22#   'type': 'none',
23#   'variables': {
24#     'test_type': 'instrumentation',  # string
25#     'apk_name': 'TestApk'  # string
26#     'isolate_file': 'path/to/instrumentation_test.isolate'  # string
27#   },
28#   'includes': ['path/to/this/gypi/file'],
29# }
30#
31# {
32#   'target_name': 'junit_test',
33#   'type': 'none',
34#   'variables': {
35#     'test_type': 'junit',  # string
36#   },
37#   'includes': ['path/to/this/gypi/file'],
38# }
39#
40
41{
42  'variables': {
43    'variables': {
44      'additional_apks%': [],
45      'isolate_file%': '',
46      'shard_timeout%': '',
47      'test_runner_path%': '',
48    },
49    'test_runner_args': ['--output-directory', '<(PRODUCT_DIR)'],
50    'conditions': [
51      ['test_type == "gtest"', {
52        'test_runner_args': ['--suite', '<(test_suite_name)'],
53        'script_name': 'run_<(test_suite_name)',
54      }],
55      ['test_type == "instrumentation"', {
56        'test_runner_args': [
57          '--apk-under-test', '>(tested_apk_path)',
58          '--test-apk', '>(final_apk_path)',
59        ],
60        'script_name': 'run_<(_target_name)',
61        'conditions': [
62          ['emma_instrument != 0', {
63            'test_runner_args': [
64              '--coverage-dir', '<(PRODUCT_DIR)/coverage',
65            ],
66          }],
67        ],
68      }],
69      ['test_type == "junit"', {
70        'test_runner_args': ['--test-suite', '<(_target_name)'],
71        'script_name': 'run_<(_target_name)',
72      }],
73      ['additional_apks != []', {
74        'test_runner_args': ['--additional-apk-list', '>(additional_apks)'],
75      }],
76      ['isolate_file != ""', {
77        'test_runner_args': ['--isolate-file-path', '<(isolate_file)']
78      }],
79      ['shard_timeout != ""', {
80        'test_runner_args': ['--shard-timeout', '<(shard_timeout)']
81      }],
82      ['test_runner_path != ""', {
83        'test_runner_args': ['--test-runner-path', '<(test_runner_path)']
84      }],
85    ],
86  },
87  'actions': [
88    {
89      'action_name': 'create_test_runner_script_<(script_name)',
90      'message': 'Creating test runner script <(script_name)',
91      'variables': {
92        'script_output_path': '<(PRODUCT_DIR)/bin/<(script_name)',
93      },
94      'inputs': [
95        '<(DEPTH)/build/android/gyp/create_test_runner_script.py',
96      ],
97      'outputs': [
98        '<(script_output_path)'
99      ],
100      'action': [
101        'python', '<(DEPTH)/build/android/gyp/create_test_runner_script.py',
102        '--script-output-path=<(script_output_path)',
103        '<(test_type)', '<@(test_runner_args)',
104      ],
105    },
106  ],
107}
108