summaryrefslogtreecommitdiffstats
path: root/taskcluster/scripts/misc/verify-devtools-bundle.py
blob: b36d63f07deb8c1b832260dde08c1d51b87bf047 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#!/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/.

"""
Check that the current sourcemap and worker bundles built for DevTools are up to date.
This job should fail if any file impacting the bundle creation was modified without
regenerating the bundles.

This check should be run after building the bundles via:
cd devtools/client/debugger
yarn && node bin/bundle.js

Those steps are done in the devtools-verify-bundle job, prior to calling this script.
The script will only run `hg status devtools/` and check that no change is detected by
mercurial.
"""

import subprocess
import sys

overall_failure = False

print("Run `hg status devtools/`")
status = (
    subprocess.check_output(["hg", "status", "devtools/"]).decode("utf-8").split("\n")
)
print(" status:")
print("-" * 80)

failures = []
for l in status:
    if not l:
        # Ignore empty lines
        continue

    if "module-manifest.json" in l:
        # Ignore module-manifest.json updates which can randomly happen when
        # building bundles.
        continue

    failures.append(l)
    overall_failure = True

# Revert all the changes created by `node bin/bundle.js`
subprocess.check_output(["hg", "revert", "-C", "."])

if overall_failure:
    doc = "https://firefox-source-docs.mozilla.org/devtools/tests/node-tests.html#devtools-bundle"
    print(
        "TEST-UNEXPECTED-FAIL | devtools-bundle | DevTools bundles need to be regenerated, "
        + f"instructions at: {doc}"
    )

    print("The following devtools bundles were detected as outdated:")
    for failure in failures:
        print(failure)

    sys.exit(1)