| # Copyright 2018 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. |
| |
| import json |
| import os |
| import shutil |
| import tempfile |
| import unittest |
| |
| |
| class CommandLineTest(unittest.TestCase): |
| # pylint: disable=super-with-arguments |
| def __init__(self, methodName, module): |
| super(CommandLineTest, self).__init__(methodName) |
| self._module = module |
| # pylint: disable=super-with-arguments |
| |
| def setUp(self): |
| self.temp_dir = tempfile.mkdtemp(prefix='common_merge_script_tests') |
| |
| def tearDown(self): |
| shutil.rmtree(self.temp_dir) |
| |
| def test_accepts_task_output_dir(self): |
| task_output_dir = os.path.join(self.temp_dir, 'task_output_dir') |
| shard0_dir = os.path.join(task_output_dir, '0') |
| os.makedirs(shard0_dir) |
| summary_json = os.path.join(task_output_dir, 'summary.json') |
| with open(summary_json, 'w') as summary_file: |
| summary_contents = { |
| u'shards': [ |
| { |
| u'state': u'COMPLETED', |
| }, |
| ], |
| } |
| json.dump(summary_contents, summary_file) |
| |
| shard0_json = os.path.join(shard0_dir, 'output.json') |
| with open(shard0_json, 'w') as shard0_file: |
| json.dump({}, shard0_file) |
| |
| output_json = os.path.join(self.temp_dir, 'merged.json') |
| |
| raw_args = [ |
| '--task-output-dir', task_output_dir, |
| '--summary-json', summary_json, |
| '--output-json', output_json, |
| shard0_json, |
| ] |
| self.assertEqual(0, self._module.main(raw_args)) |