diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-15 03:34:42 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-15 03:34:42 +0000 |
commit | da4c7e7ed675c3bf405668739c3012d140856109 (patch) | |
tree | cdd868dba063fecba609a1d819de271f0d51b23e /taskcluster/scripts/lib/testrail_utils.py | |
parent | Adding upstream version 125.0.3. (diff) | |
download | firefox-da4c7e7ed675c3bf405668739c3012d140856109.tar.xz firefox-da4c7e7ed675c3bf405668739c3012d140856109.zip |
Adding upstream version 126.0.upstream/126.0
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'taskcluster/scripts/lib/testrail_utils.py')
-rw-r--r-- | taskcluster/scripts/lib/testrail_utils.py | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/taskcluster/scripts/lib/testrail_utils.py b/taskcluster/scripts/lib/testrail_utils.py new file mode 100644 index 0000000000..3f502397b8 --- /dev/null +++ b/taskcluster/scripts/lib/testrail_utils.py @@ -0,0 +1,84 @@ +#!/usr/bin/env python3 + +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" +This script contains utility functions designed to support the integration of automated +testing processes with TestRail, a test case management tool. The primary focus is on +creating and managing milestones in TestRail based on automated smoke tests for product +releases. It includes functions for building milestone names and descriptions, determining +release types, and loading TestRail credentials. + +Functions: +- build_milestone_name(product_type, release_type, version_number): Constructs a formatted + milestone name based on the product type, release type, and version number. +- build_milestone_description(milestone_name): Generates a detailed description for the + milestone, including the release date and placeholders for testing status and QA recommendations. +- get_release_version(): Reads and returns the release version number from a 'version.txt' file. +- get_release_type(version): Determines the release type (e.g., Alpha, Beta, RC) based on + the version string. +- load_testrail_credentials(json_file_path): Loads TestRail credentials from a JSON file + and handles potential errors during the loading process. +""" + +import json +import os +import textwrap +from datetime import datetime + + +def build_milestone_name(product_type, release_type, version_number): + return f"Build Validation sign-off - {product_type} {release_type} {version_number}" + + +def build_milestone_description(milestone_name): + current_date = datetime.now() + formatted_date = current_date = current_date.strftime("%B %d, %Y") + return textwrap.dedent( + f""" + RELEASE: {milestone_name}\n\n\ + RELEASE_TAG_URL: https://archive.mozilla.org/pub/fenix/releases/\n\n\ + RELEASE_DATE: {formatted_date}\n\n\ + TESTING_STATUS: [ TBD ]\n\n\ + QA_RECOMMENDATION:[ TBD ]\n\n\ + QA_RECOMENTATION_VERBOSE: \n\n\ + TESTING_SUMMARY\n\n\ + Known issues: n/a\n\ + New issue: n/a\n\ + Verified issue: + """ + ) + + +def get_release_version(): + # Check if version.txt was found + version_file_path = os.path.join( + os.environ.get("GECKO_PATH", "."), "mobile", "android", "version.txt" + ) + if not os.path.isfile(version_file_path): + raise FileNotFoundError(f"{version_file_path} not found.") + + # Read the version from the file + with open(version_file_path, "r") as file: + version = file.readline().strip() + + return version + + +def get_release_type(version): + release_map = {"a": "Alpha", "b": "Beta"} + # use generator expression to check each char for key else default to 'RC' + product_type = next( + (release_map[char] for char in version if char in release_map), "RC" + ) + return product_type + + +def load_testrail_credentials(json_file_path): + try: + with open(json_file_path, "r") as file: + credentials = json.load(file) + return credentials + except json.JSONDecodeError as e: + raise ValueError(f"Failed to load TestRail credentials: {e}") |