aboutsummaryrefslogtreecommitdiff
path: root/llvm_tools/upload_lexan_crashes_to_forcey_test.py
diff options
context:
space:
mode:
Diffstat (limited to 'llvm_tools/upload_lexan_crashes_to_forcey_test.py')
-rwxr-xr-xllvm_tools/upload_lexan_crashes_to_forcey_test.py122
1 files changed, 122 insertions, 0 deletions
diff --git a/llvm_tools/upload_lexan_crashes_to_forcey_test.py b/llvm_tools/upload_lexan_crashes_to_forcey_test.py
new file mode 100755
index 00000000..3c9c0d4b
--- /dev/null
+++ b/llvm_tools/upload_lexan_crashes_to_forcey_test.py
@@ -0,0 +1,122 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+"""Tests for upload_lexan_crashes_to_forcey."""
+
+import datetime
+import unittest
+import unittest.mock
+
+import upload_lexan_crashes_to_forcey
+
+
+class Test(unittest.TestCase):
+ """Tests for upload_lexan_crashes_to_forcey."""
+
+ def test_date_parsing_functions(self):
+ self.assertEqual(
+ datetime.date(2020, 2, 1),
+ upload_lexan_crashes_to_forcey.from_ymd('2020-02-01'))
+
+ @unittest.mock.patch(
+ 'upload_lexan_crashes_to_forcey.test_cases_on_or_after',
+ return_value=(
+ (
+ datetime.date(2020, 1, 1),
+ ('gs://test-case-1', 'gs://test-case-1.1'),
+ ),
+ (datetime.date(2020, 1, 2), ('gs://test-case-2',)),
+ (datetime.date(2020, 1, 1), ('gs://test-case-3',)),
+ (datetime.date(2020, 1, 4), ('gs://test-case-4',)),
+ ))
+ @unittest.mock.patch('upload_lexan_crashes_to_forcey.submit_test_case')
+ @unittest.mock.patch('upload_lexan_crashes_to_forcey.persist_state')
+ def test_new_test_case_submission_functions(self, persist_state_mock,
+ submit_test_case_mock,
+ test_cases_on_or_after_mock):
+ forcey_path = '/path/to/4c'
+ real_state_file_path = '/path/to/state/file'
+ earliest_date = datetime.date(2020, 1, 1)
+
+ persist_state_calls = []
+
+ # Since the set this gets is mutated, we need to copy it somehow.
+ def persist_state_side_effect(test_cases_to_persist, state_file_path,
+ most_recent_date):
+ self.assertEqual(state_file_path, real_state_file_path)
+ persist_state_calls.append(
+ (sorted(test_cases_to_persist), most_recent_date))
+
+ persist_state_mock.side_effect = persist_state_side_effect
+
+ upload_lexan_crashes_to_forcey.submit_new_test_cases(
+ last_seen_test_cases=(
+ 'gs://test-case-0',
+ 'gs://test-case-1',
+ ),
+ earliest_date_to_check=earliest_date,
+ forcey=forcey_path,
+ state_file_path=real_state_file_path,
+ )
+
+ test_cases_on_or_after_mock.assert_called_once_with(earliest_date)
+ self.assertEqual(submit_test_case_mock.call_args_list, [
+ unittest.mock.call('gs://test-case-1.1', forcey_path),
+ unittest.mock.call('gs://test-case-2', forcey_path),
+ unittest.mock.call('gs://test-case-3', forcey_path),
+ unittest.mock.call('gs://test-case-4', forcey_path),
+ ])
+
+ self.assertEqual(persist_state_calls, [
+ (
+ ['gs://test-case-0', 'gs://test-case-1', 'gs://test-case-1.1'],
+ datetime.date(2020, 1, 1),
+ ),
+ (
+ [
+ 'gs://test-case-0',
+ 'gs://test-case-1',
+ 'gs://test-case-1.1',
+ 'gs://test-case-2',
+ ],
+ datetime.date(2020, 1, 2),
+ ),
+ (
+ [
+ 'gs://test-case-0',
+ 'gs://test-case-1',
+ 'gs://test-case-1.1',
+ 'gs://test-case-2',
+ 'gs://test-case-3',
+ ],
+ datetime.date(2020, 1, 2),
+ ),
+ (
+ [
+ 'gs://test-case-0',
+ 'gs://test-case-1',
+ 'gs://test-case-1.1',
+ 'gs://test-case-2',
+ 'gs://test-case-3',
+ 'gs://test-case-4',
+ ],
+ datetime.date(2020, 1, 4),
+ ),
+ (
+ [
+ 'gs://test-case-1',
+ 'gs://test-case-1.1',
+ 'gs://test-case-2',
+ 'gs://test-case-3',
+ 'gs://test-case-4',
+ ],
+ datetime.date(2020, 1, 4),
+ ),
+ ])
+
+
+if __name__ == '__main__':
+ unittest.main()