Skip to content

Commit

Permalink
devops: teach buildbots to run sanity check script (microsoft#2064)
Browse files Browse the repository at this point in the history
This should make sure that build actually runs.
  • Loading branch information
aslushnikov authored May 1, 2020
1 parent 7051c0b commit 4c2c485
Show file tree
Hide file tree
Showing 5 changed files with 105 additions and 3 deletions.
13 changes: 10 additions & 3 deletions browser_patches/checkout_build_archive_upload.sh
Original file line number Diff line number Diff line change
Expand Up @@ -164,14 +164,19 @@ function generate_and_upload_browser_build {
return 22
fi

echo "-- running sanity test"
if ! ./$BROWSER_NAME/run_sanity_check.sh; then
return 23
fi

echo "-- archiving to $ZIP_PATH"
if ! ./$BROWSER_NAME/archive.sh $ZIP_PATH "$EXTRA_ARCHIVE_ARGS"; then
return 23
return 24
fi

echo "-- uploading"
if ! ./upload.sh $BUILD_BLOB_PATH $ZIP_PATH; then
return 24
return 25
fi
return 0
}
Expand Down Expand Up @@ -206,8 +211,10 @@ else
elif (( RESULT_CODE == 22 )); then
FAILED_STEP="./build.sh"
elif (( RESULT_CODE == 23 )); then
FAILED_STEP="./archive.sh"
FAILED_STEP="./run_sanity_check.sh"
elif (( RESULT_CODE == 24 )); then
FAILED_STEP="./archive.sh"
elif (( RESULT_CODE == 25 )); then
FAILED_STEP="./upload.sh"
else
FAILED_STEP="<unknown step>"
Expand Down
17 changes: 17 additions & 0 deletions browser_patches/firefox/run_sanity_check.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#!/bin/bash
set -e
set +x

trap "cd $(pwd -P)" EXIT
cd "$(dirname $0)"

if [[ "$(uname)" == "Darwin" ]]; then
node ./sanity.js
elif [[ "$(uname)" == "Linux" ]]; then
xvfb-run --auto-servernum node ./sanity.js
elif [[ "$(uname)" == MINGW* ]]; then
node ./sanity.js
else
echo "ERROR: cannot check sanity on this platform!" 1>&2
exit 1;
fi
28 changes: 28 additions & 0 deletions browser_patches/firefox/sanity.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
const {firefox} = require('../..');
const os = require('os');
const path = require('path');

const executablePath = {
'darwin': path.join(__dirname, 'checkout', 'obj-build-playwright', 'dist', 'Nightly.app', 'Contents', 'MacOS', 'firefox'),
'linux': path.join(__dirname, 'checkout', 'obj-build-playwright', 'dist', 'bin', 'firefox'),
'win32': path.join(__dirname, 'checkout', 'obj-build-playwright', 'dist', 'bin', 'firefox.exe'),
}[os.platform()];

async function checkSanity(options) {
const browser = await firefox.launch({...options, executablePath});
const context = await browser.newContext();
const page = await context.newPage();
const result = await page.evaluate(() => 6 * 7);
await browser.close();
if (result !== 42)
throw new Error(`ERROR: computation failed!`);
console.log(`SUCCESS: ran firefox with options = ${JSON.stringify(options)}`);
}

Promise.all([
checkSanity({headless: true}),
checkSanity({headless: false}),
]).catch(e => {
console.error(e);
process.exitCode = 1;
});
17 changes: 17 additions & 0 deletions browser_patches/webkit/run_sanity_check.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#!/bin/bash
set -e
set +x

trap "cd $(pwd -P)" EXIT
cd "$(dirname $0)"

if [[ "$(uname)" == "Darwin" ]]; then
node ./sanity.js
elif [[ "$(uname)" == "Linux" ]]; then
xvfb-run --auto-servernum node ./sanity.js
elif [[ "$(uname)" == MINGW* ]]; then
echo "Sanity check on windows is not supported"
else
echo "ERROR: cannot check sanity on this platform!" 1>&2
exit 1;
fi
33 changes: 33 additions & 0 deletions browser_patches/webkit/sanity.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
const {firefox} = require('../..');
const os = require('os');
const path = require('path');

const executablePath = {
'darwin': path.join(__dirname, 'pw_run.sh'),
'linux': path.join(__dirname, 'pw_run.sh'),
'win32': undefined,
}[os.platform()];

// TODO: verify build on windows.
if (!executablePath)
return;

async function checkSanity(options) {
const browser = await firefox.launch({...options, executablePath});
const context = await browser.newContext();
const page = await context.newPage();
const result = await page.evaluate(() => 7 * 8);
await browser.close();
if (result !== 56)
throw new Error(`ERROR: computation failed!`);
console.log(`SUCCESS: ran webkit with options = ${JSON.stringify(options)}`);
}

Promise.all([
checkSanity({headless: true}),
checkSanity({headless: false}),
]).catch(e => {
console.error(e);
process.exitCode = 1;
});

0 comments on commit 4c2c485

Please sign in to comment.