parent
4f930b6e42
commit
034a792df1
14 changed files with 138 additions and 108 deletions
|
@ -97,6 +97,10 @@ machine-mac-large-arm: &machine-mac-large-arm
|
||||||
macos:
|
macos:
|
||||||
xcode: "12.2.0"
|
xcode: "12.2.0"
|
||||||
|
|
||||||
|
machine-mac-arm64: &machine-mac-arm64
|
||||||
|
resource_class: electronjs/macos-arm64
|
||||||
|
machine: true
|
||||||
|
|
||||||
# Build configurations options.
|
# Build configurations options.
|
||||||
env-testing-build: &env-testing-build
|
env-testing-build: &env-testing-build
|
||||||
GN_CONFIG: //electron/build/args/testing.gn
|
GN_CONFIG: //electron/build/args/testing.gn
|
||||||
|
@ -141,6 +145,7 @@ env-apple-silicon: &env-apple-silicon
|
||||||
GN_EXTRA_ARGS: 'target_cpu = "arm64" use_prebuilt_v8_context_snapshot = true'
|
GN_EXTRA_ARGS: 'target_cpu = "arm64" use_prebuilt_v8_context_snapshot = true'
|
||||||
TARGET_ARCH: arm64
|
TARGET_ARCH: arm64
|
||||||
USE_PREBUILT_V8_CONTEXT_SNAPSHOT: 1
|
USE_PREBUILT_V8_CONTEXT_SNAPSHOT: 1
|
||||||
|
npm_config_arch: arm64
|
||||||
|
|
||||||
env-arm64: &env-arm64
|
env-arm64: &env-arm64
|
||||||
GN_EXTRA_ARGS: 'target_cpu = "arm64" fatal_linker_warnings = false enable_linux_installer = false'
|
GN_EXTRA_ARGS: 'target_cpu = "arm64" fatal_linker_warnings = false enable_linux_installer = false'
|
||||||
|
@ -457,7 +462,7 @@ step-install-signing-cert-on-mac: &step-install-signing-cert-on-mac
|
||||||
run:
|
run:
|
||||||
name: Import and trust self-signed codesigning cert on MacOS
|
name: Import and trust self-signed codesigning cert on MacOS
|
||||||
command: |
|
command: |
|
||||||
if [ "`uname`" == "Darwin" ]; then
|
if [ "$TARGET_ARCH" != "arm64" ] && [ "`uname`" == "Darwin" ]; then
|
||||||
cd src/electron
|
cd src/electron
|
||||||
./script/codesign/generate-identity.sh
|
./script/codesign/generate-identity.sh
|
||||||
fi
|
fi
|
||||||
|
@ -670,6 +675,7 @@ step-persist-data-for-tests: &step-persist-data-for-tests
|
||||||
- src/electron
|
- src/electron
|
||||||
- src/third_party/electron_node
|
- src/third_party/electron_node
|
||||||
- src/third_party/nan
|
- src/third_party/nan
|
||||||
|
- src/cross-arch-snapshots
|
||||||
|
|
||||||
step-electron-dist-unzip: &step-electron-dist-unzip
|
step-electron-dist-unzip: &step-electron-dist-unzip
|
||||||
run:
|
run:
|
||||||
|
@ -732,7 +738,11 @@ step-verify-mksnapshot: &step-verify-mksnapshot
|
||||||
name: Verify mksnapshot
|
name: Verify mksnapshot
|
||||||
command: |
|
command: |
|
||||||
cd src
|
cd src
|
||||||
python electron/script/verify-mksnapshot.py --source-root "$PWD" --build-dir out/Default
|
if [ "$TARGET_ARCH" == "arm64" ] &&[ "`uname`" == "Darwin" ]; then
|
||||||
|
python electron/script/verify-mksnapshot.py --source-root "$PWD" --build-dir out/Default --snapshot-files-dir $PWD/cross-arch-snapshots
|
||||||
|
else
|
||||||
|
python electron/script/verify-mksnapshot.py --source-root "$PWD" --build-dir out/Default
|
||||||
|
fi
|
||||||
|
|
||||||
step-verify-chromedriver: &step-verify-chromedriver
|
step-verify-chromedriver: &step-verify-chromedriver
|
||||||
run:
|
run:
|
||||||
|
@ -835,7 +845,7 @@ step-maybe-cross-arch-snapshot: &step-maybe-cross-arch-snapshot
|
||||||
run:
|
run:
|
||||||
name: Generate cross arch snapshot (arm/arm64)
|
name: Generate cross arch snapshot (arm/arm64)
|
||||||
command: |
|
command: |
|
||||||
if [ "$TRIGGER_ARM_TEST" == "true" ] && [ -z "$CIRCLE_PR_NUMBER" ]; then
|
if [ "$GENERATE_CROSS_ARCH_SNAPSHOT" == "true" ] && [ -z "$CIRCLE_PR_NUMBER" ]; then
|
||||||
cd src
|
cd src
|
||||||
if [ "$TARGET_ARCH" == "arm" ]; then
|
if [ "$TARGET_ARCH" == "arm" ]; then
|
||||||
export MKSNAPSHOT_PATH="clang_x86_v8_arm"
|
export MKSNAPSHOT_PATH="clang_x86_v8_arm"
|
||||||
|
@ -868,8 +878,13 @@ step-maybe-trigger-arm-test: &step-maybe-trigger-arm-test
|
||||||
if [ "$TRIGGER_ARM_TEST" == "true" ] && [ -z "$CIRCLE_PR_NUMBER" ]; then
|
if [ "$TRIGGER_ARM_TEST" == "true" ] && [ -z "$CIRCLE_PR_NUMBER" ]; then
|
||||||
#Trigger VSTS job, passing along CircleCI job number and branch to build
|
#Trigger VSTS job, passing along CircleCI job number and branch to build
|
||||||
if [ "`uname`" == "Darwin" ]; then
|
if [ "`uname`" == "Darwin" ]; then
|
||||||
echo "Triggering electron-arm2-testing build on Azure DevOps"
|
if [ x"$MAS_BUILD" == x"true" ]; then
|
||||||
node electron/script/release/ci-release-build.js --job=electron-arm2-testing --ci=DevOps --armTest --circleBuildNum=$CIRCLE_BUILD_NUM $CIRCLE_BRANCH
|
export DEVOPS_BUILD="electron-mas-arm64-testing"
|
||||||
|
else
|
||||||
|
export DEVOPS_BUILD="electron-osx-arm64-testing"
|
||||||
|
fi
|
||||||
|
echo "Triggering $DEVOPS_BUILD build on Azure DevOps"
|
||||||
|
node electron/script/release/ci-release-build.js --job=$DEVOPS_BUILD --ci=DevOps --armTest --circleBuildNum=$CIRCLE_BUILD_NUM $CIRCLE_BRANCH
|
||||||
else
|
else
|
||||||
echo "Triggering electron-$TARGET_ARCH-testing build on VSTS"
|
echo "Triggering electron-$TARGET_ARCH-testing build on VSTS"
|
||||||
node electron/script/release/ci-release-build.js --job=electron-$TARGET_ARCH-testing --ci=VSTS --armTest --circleBuildNum=$CIRCLE_BUILD_NUM $CIRCLE_BRANCH
|
node electron/script/release/ci-release-build.js --job=electron-$TARGET_ARCH-testing --ci=VSTS --armTest --circleBuildNum=$CIRCLE_BUILD_NUM $CIRCLE_BRANCH
|
||||||
|
@ -1290,8 +1305,14 @@ steps-tests: &steps-tests
|
||||||
ELECTRON_DISABLE_SECURITY_WARNINGS: 1
|
ELECTRON_DISABLE_SECURITY_WARNINGS: 1
|
||||||
command: |
|
command: |
|
||||||
cd src
|
cd src
|
||||||
(cd electron && node script/yarn test --runners=main --trace-uncaught --enable-logging --files $(circleci tests glob spec-main/*-spec.ts | circleci tests split))
|
if [ "$TARGET_ARCH" == "arm64" ] &&[ "`uname`" == "Darwin" ]; then
|
||||||
(cd electron && node script/yarn test --runners=remote --trace-uncaught --enable-logging --files $(circleci tests glob spec/*-spec.js | circleci tests split))
|
export ELECTRON_SKIP_NATIVE_MODULE_TESTS=true
|
||||||
|
(cd electron && node script/yarn test --runners=main --trace-uncaught --enable-logging)
|
||||||
|
(cd electron && node script/yarn test --runners=remote --trace-uncaught --enable-logging)
|
||||||
|
else
|
||||||
|
(cd electron && node script/yarn test --runners=main --trace-uncaught --enable-logging --files $(circleci tests glob spec-main/*-spec.ts | circleci tests split))
|
||||||
|
(cd electron && node script/yarn test --runners=remote --trace-uncaught --enable-logging --files $(circleci tests glob spec/*-spec.js | circleci tests split))
|
||||||
|
fi
|
||||||
- run:
|
- run:
|
||||||
name: Check test results existence
|
name: Check test results existence
|
||||||
command: |
|
command: |
|
||||||
|
@ -1889,6 +1910,7 @@ jobs:
|
||||||
<<: *env-testing-build
|
<<: *env-testing-build
|
||||||
<<: *env-ninja-status
|
<<: *env-ninja-status
|
||||||
TRIGGER_ARM_TEST: true
|
TRIGGER_ARM_TEST: true
|
||||||
|
GENERATE_CROSS_ARCH_SNAPSHOT: true
|
||||||
GCLIENT_EXTRA_ARGS: '--custom-var=checkout_arm=True --custom-var=checkout_arm64=True'
|
GCLIENT_EXTRA_ARGS: '--custom-var=checkout_arm=True --custom-var=checkout_arm64=True'
|
||||||
steps:
|
steps:
|
||||||
- electron-build:
|
- electron-build:
|
||||||
|
@ -1947,6 +1969,7 @@ jobs:
|
||||||
<<: *env-testing-build
|
<<: *env-testing-build
|
||||||
<<: *env-ninja-status
|
<<: *env-ninja-status
|
||||||
TRIGGER_ARM_TEST: true
|
TRIGGER_ARM_TEST: true
|
||||||
|
GENERATE_CROSS_ARCH_SNAPSHOT: true
|
||||||
GCLIENT_EXTRA_ARGS: '--custom-var=checkout_arm=True --custom-var=checkout_arm64=True'
|
GCLIENT_EXTRA_ARGS: '--custom-var=checkout_arm=True --custom-var=checkout_arm64=True'
|
||||||
steps:
|
steps:
|
||||||
- electron-build:
|
- electron-build:
|
||||||
|
@ -2098,6 +2121,7 @@ jobs:
|
||||||
<<: *env-macos-build
|
<<: *env-macos-build
|
||||||
<<: *env-apple-silicon
|
<<: *env-apple-silicon
|
||||||
GCLIENT_EXTRA_ARGS: '--custom-var=checkout_mac=True --custom-var=host_os=mac'
|
GCLIENT_EXTRA_ARGS: '--custom-var=checkout_mac=True --custom-var=host_os=mac'
|
||||||
|
GENERATE_CROSS_ARCH_SNAPSHOT: true
|
||||||
steps:
|
steps:
|
||||||
- electron-build:
|
- electron-build:
|
||||||
persist: true
|
persist: true
|
||||||
|
@ -2204,6 +2228,7 @@ jobs:
|
||||||
<<: *env-macos-build
|
<<: *env-macos-build
|
||||||
<<: *env-mas-apple-silicon
|
<<: *env-mas-apple-silicon
|
||||||
GCLIENT_EXTRA_ARGS: '--custom-var=checkout_mac=True --custom-var=host_os=mac'
|
GCLIENT_EXTRA_ARGS: '--custom-var=checkout_mac=True --custom-var=host_os=mac'
|
||||||
|
GENERATE_CROSS_ARCH_SNAPSHOT: true
|
||||||
steps:
|
steps:
|
||||||
- electron-build:
|
- electron-build:
|
||||||
persist: true
|
persist: true
|
||||||
|
@ -2357,6 +2382,14 @@ jobs:
|
||||||
<<: *env-send-slack-notifications
|
<<: *env-send-slack-notifications
|
||||||
<<: *steps-verify-ffmpeg
|
<<: *steps-verify-ffmpeg
|
||||||
|
|
||||||
|
osx-testing-arm64-tests:
|
||||||
|
<<: *machine-mac-arm64
|
||||||
|
environment:
|
||||||
|
<<: *env-mac-large
|
||||||
|
<<: *env-stack-dumping
|
||||||
|
<<: *env-apple-silicon
|
||||||
|
<<: *steps-tests
|
||||||
|
|
||||||
mas-testing-x64-tests:
|
mas-testing-x64-tests:
|
||||||
<<: *machine-mac-large
|
<<: *machine-mac-large
|
||||||
environment:
|
environment:
|
||||||
|
@ -2380,6 +2413,14 @@ jobs:
|
||||||
<<: *env-send-slack-notifications
|
<<: *env-send-slack-notifications
|
||||||
<<: *steps-verify-ffmpeg
|
<<: *steps-verify-ffmpeg
|
||||||
|
|
||||||
|
mas-testing-arm64-tests:
|
||||||
|
<<: *machine-mac-arm64
|
||||||
|
environment:
|
||||||
|
<<: *env-mac-large
|
||||||
|
<<: *env-stack-dumping
|
||||||
|
<<: *env-apple-silicon
|
||||||
|
<<: *steps-tests
|
||||||
|
|
||||||
# Layer 4: Summary.
|
# Layer 4: Summary.
|
||||||
linux-x64-release-summary:
|
linux-x64-release-summary:
|
||||||
<<: *machine-linux-medium
|
<<: *machine-linux-medium
|
||||||
|
@ -2591,6 +2632,14 @@ workflows:
|
||||||
requires:
|
requires:
|
||||||
- mac-checkout-and-save-cache
|
- mac-checkout-and-save-cache
|
||||||
|
|
||||||
|
- osx-testing-arm64-tests:
|
||||||
|
filters:
|
||||||
|
branches:
|
||||||
|
# Do not run this on forked pull requests
|
||||||
|
ignore: /pull\/[0-9]+/
|
||||||
|
requires:
|
||||||
|
- osx-testing-arm64
|
||||||
|
|
||||||
- mas-testing-x64:
|
- mas-testing-x64:
|
||||||
requires:
|
requires:
|
||||||
- mac-checkout-and-save-cache
|
- mac-checkout-and-save-cache
|
||||||
|
@ -2607,6 +2656,14 @@ workflows:
|
||||||
requires:
|
requires:
|
||||||
- mac-checkout-and-save-cache
|
- mac-checkout-and-save-cache
|
||||||
|
|
||||||
|
- mas-testing-arm64-tests:
|
||||||
|
filters:
|
||||||
|
branches:
|
||||||
|
# Do not run this on forked pull requests
|
||||||
|
ignore: /pull\/[0-9]+/
|
||||||
|
requires:
|
||||||
|
- mas-testing-arm64
|
||||||
|
|
||||||
nightly-linux-release-test:
|
nightly-linux-release-test:
|
||||||
triggers:
|
triggers:
|
||||||
- schedule:
|
- schedule:
|
||||||
|
|
|
@ -17,6 +17,7 @@ steps:
|
||||||
node script/download-circleci-artifacts.js --buildNum=$CIRCLE_BUILD_NUM --name=dist.zip --dest=$ZIP_DEST
|
node script/download-circleci-artifacts.js --buildNum=$CIRCLE_BUILD_NUM --name=dist.zip --dest=$ZIP_DEST
|
||||||
cd $ZIP_DEST
|
cd $ZIP_DEST
|
||||||
unzip -o dist.zip
|
unzip -o dist.zip
|
||||||
|
xattr -cr Electron.app
|
||||||
displayName: 'Download and unzip dist files for test'
|
displayName: 'Download and unzip dist files for test'
|
||||||
env:
|
env:
|
||||||
CIRCLE_TOKEN: $(CIRCLECI_TOKEN)
|
CIRCLE_TOKEN: $(CIRCLECI_TOKEN)
|
||||||
|
@ -48,38 +49,44 @@ steps:
|
||||||
mkdir -p $CROSS_ARCH_SNAPSHOTS
|
mkdir -p $CROSS_ARCH_SNAPSHOTS
|
||||||
cd src/electron
|
cd src/electron
|
||||||
node script/download-circleci-artifacts.js --buildNum=$CIRCLE_BUILD_NUM --name=cross-arch-snapshots/snapshot_blob.bin --dest=$CROSS_ARCH_SNAPSHOTS
|
node script/download-circleci-artifacts.js --buildNum=$CIRCLE_BUILD_NUM --name=cross-arch-snapshots/snapshot_blob.bin --dest=$CROSS_ARCH_SNAPSHOTS
|
||||||
node script/download-circleci-artifacts.js --buildNum=$CIRCLE_BUILD_NUM --name=cross-arch-snapshots/v8_context_snapshot.bin --dest=$CROSS_ARCH_SNAPSHOTS
|
node script/download-circleci-artifacts.js --buildNum=$CIRCLE_BUILD_NUM --name=cross-arch-snapshots/v8_context_snapshot.arm64.bin --dest=$CROSS_ARCH_SNAPSHOTS
|
||||||
displayName: 'Download cross arch snapshot files'
|
displayName: 'Download cross arch snapshot files'
|
||||||
env:
|
env:
|
||||||
CIRCLE_TOKEN: $(CIRCLECI_TOKEN)
|
CIRCLE_TOKEN: $(CIRCLECI_TOKEN)
|
||||||
|
|
||||||
- bash: |
|
|
||||||
export NATIVE_UNITTESTS_DEST=$PWD/src/out/Default
|
|
||||||
cd src/electron
|
|
||||||
node script/download-circleci-artifacts.js --buildNum=$CIRCLE_BUILD_NUM --name=shell_browser_ui_unittests --dest=$NATIVE_UNITTESTS_DEST
|
|
||||||
chmod +x $NATIVE_UNITTESTS_DEST/shell_browser_ui_unittests
|
|
||||||
displayName: 'Download native unittest executables'
|
|
||||||
env:
|
|
||||||
CIRCLE_TOKEN: $(CIRCLECI_TOKEN)
|
|
||||||
|
|
||||||
- bash: |
|
- bash: |
|
||||||
cd src
|
cd src
|
||||||
export ELECTRON_OUT_DIR=Default
|
export ELECTRON_OUT_DIR=Default
|
||||||
set npm_config_arch=arm64
|
export npm_config_arch=arm64
|
||||||
(cd electron && node script/yarn test -- --enable-logging)
|
(cd electron && node script/yarn test --enable-logging --runners main)
|
||||||
displayName: 'Run Electron tests'
|
displayName: 'Run Electron main tests'
|
||||||
timeoutInMinutes: 20
|
timeoutInMinutes: 20
|
||||||
env:
|
env:
|
||||||
ELECTRON_DISABLE_SECURITY_WARNINGS: 1
|
ELECTRON_DISABLE_SECURITY_WARNINGS: 1
|
||||||
IGNORE_YARN_INSTALL_ERROR: 1
|
IGNORE_YARN_INSTALL_ERROR: 1
|
||||||
ELECTRON_TEST_RESULTS_DIR: junit
|
ELECTRON_TEST_RESULTS_DIR: junit
|
||||||
|
|
||||||
|
- bash: |
|
||||||
|
cd src
|
||||||
|
export ELECTRON_OUT_DIR=Default
|
||||||
|
export npm_config_arch=arm64
|
||||||
|
(cd electron && node script/yarn test --enable-logging --runners remote)
|
||||||
|
displayName: 'Run Electron remote tests'
|
||||||
|
timeoutInMinutes: 20
|
||||||
|
condition: succeededOrFailed()
|
||||||
|
env:
|
||||||
|
ELECTRON_DISABLE_SECURITY_WARNINGS: 1
|
||||||
|
IGNORE_YARN_INSTALL_ERROR: 1
|
||||||
|
ELECTRON_TEST_RESULTS_DIR: junit
|
||||||
|
|
||||||
- bash: |
|
- bash: |
|
||||||
cd src
|
cd src
|
||||||
python electron/script/verify-ffmpeg.py --source-root "$PWD" --build-dir out/Default --ffmpeg-path out/ffmpeg
|
python electron/script/verify-ffmpeg.py --source-root "$PWD" --build-dir out/Default --ffmpeg-path out/ffmpeg
|
||||||
displayName: Verify non proprietary ffmpeg
|
displayName: Verify non proprietary ffmpeg
|
||||||
timeoutInMinutes: 5
|
timeoutInMinutes: 5
|
||||||
condition: succeededOrFailed()
|
condition: succeededOrFailed()
|
||||||
|
env:
|
||||||
|
TARGET_ARCH: arm64
|
||||||
|
|
||||||
- bash: |
|
- bash: |
|
||||||
cd src
|
cd src
|
||||||
|
@ -98,6 +105,16 @@ steps:
|
||||||
|
|
||||||
condition: succeededOrFailed()
|
condition: succeededOrFailed()
|
||||||
|
|
||||||
|
- bash: killall Electron || echo "No Electron processes left running"
|
||||||
|
displayName: 'Kill processes left running from last test run'
|
||||||
|
condition: always()
|
||||||
|
|
||||||
|
- bash: |
|
||||||
|
rm -rf ~/Library/Application\ Support/Electron*
|
||||||
|
rm -rf ~/Library/Application\ Support/electron*
|
||||||
|
displayName: 'Delete user app data directories'
|
||||||
|
condition: always()
|
||||||
|
|
||||||
- task: mspremier.PostBuildCleanup.PostBuildCleanup-task.PostBuildCleanup@3
|
- task: mspremier.PostBuildCleanup.PostBuildCleanup-task.PostBuildCleanup@3
|
||||||
displayName: 'Clean Agent Directories'
|
displayName: 'Clean Agent Directories'
|
||||||
|
|
||||||
|
|
|
@ -7,5 +7,4 @@ workaround_an_undefined_symbol_error.patch
|
||||||
do_not_export_private_v8_symbols_on_windows.patch
|
do_not_export_private_v8_symbols_on_windows.patch
|
||||||
revert_cleanup_switch_offset_of_to_offsetof_where_possible.patch
|
revert_cleanup_switch_offset_of_to_offsetof_where_possible.patch
|
||||||
fix_build_deprecated_attirbute_for_older_msvc_versions.patch
|
fix_build_deprecated_attirbute_for_older_msvc_versions.patch
|
||||||
fix_use_proper_page_size_for_mac_arm64.patch
|
|
||||||
chore_disallow_copying_cppheapcreateparams.patch
|
chore_disallow_copying_cppheapcreateparams.patch
|
||||||
|
|
|
@ -1,43 +0,0 @@
|
||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: John Kleinschmidt <jkleinsc@github.com>
|
|
||||||
Date: Wed, 8 Jul 2020 10:46:13 -0400
|
|
||||||
Subject: fix: use proper page size for mac arm64
|
|
||||||
|
|
||||||
This fix temporarily sets page size to 16k for mac arm64 so that mksnapshot can run on x64
|
|
||||||
and generate a mac arm64 snapshot
|
|
||||||
|
|
||||||
diff --git a/src/base/platform/platform-posix.cc b/src/base/platform/platform-posix.cc
|
|
||||||
index ab0d7839a453d87a8404ca791c1022871e8fd606..821a3925e91c229873f75ac024c1b388b4d0c06e 100644
|
|
||||||
--- a/src/base/platform/platform-posix.cc
|
|
||||||
+++ b/src/base/platform/platform-posix.cc
|
|
||||||
@@ -165,9 +165,19 @@ void* Allocate(void* hint, size_t size, OS::MemoryPermission access,
|
|
||||||
PageType page_type) {
|
|
||||||
int prot = GetProtectionFromMemoryPermission(access);
|
|
||||||
int flags = GetFlagsForMemoryPermission(access, page_type);
|
|
||||||
+#if defined(__APPLE__) && V8_TARGET_ARCH_ARM64 && defined(__x86_64__)
|
|
||||||
+ // XXX: This logic is simple and leaky as it is only used for mksnapshot.
|
|
||||||
+ size_t alignment = 16384;
|
|
||||||
+ void* result = mmap(hint, size + alignment, prot, flags, kMmapFd,
|
|
||||||
+ kMmapFdOffset);
|
|
||||||
+ if (result == MAP_FAILED) return nullptr;
|
|
||||||
+ return reinterpret_cast<void*>(
|
|
||||||
+ RoundUp(reinterpret_cast<uintptr_t>(result), alignment));
|
|
||||||
+#else
|
|
||||||
void* result = mmap(hint, size, prot, flags, kMmapFd, kMmapFdOffset);
|
|
||||||
if (result == MAP_FAILED) return nullptr;
|
|
||||||
return result;
|
|
||||||
+#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif // !V8_OS_FUCHSIA
|
|
||||||
@@ -224,7 +234,9 @@ void OS::Initialize(bool hard_abort, const char* const gc_fake_mmap) {
|
|
||||||
}
|
|
||||||
|
|
||||||
int OS::ActivationFrameAlignment() {
|
|
||||||
-#if V8_TARGET_ARCH_ARM
|
|
||||||
+#if defined(__APPLE__) && V8_TARGET_ARCH_ARM
|
|
||||||
+ return 4;
|
|
||||||
+#elif V8_TARGET_ARCH_ARM
|
|
||||||
// On EABI ARM targets this is required for fp correctness in the
|
|
||||||
// runtime system.
|
|
||||||
return 8;
|
|
|
@ -33,7 +33,8 @@ const circleCIJobs = circleCIPublishWorkflows.concat([
|
||||||
|
|
||||||
const vstsArmJobs = [
|
const vstsArmJobs = [
|
||||||
'electron-arm-testing',
|
'electron-arm-testing',
|
||||||
'electron-arm2-testing',
|
'electron-osx-arm64-testing',
|
||||||
|
'electron-mas-arm64-testing',
|
||||||
'electron-arm64-testing',
|
'electron-arm64-testing',
|
||||||
'electron-woa-testing'
|
'electron-woa-testing'
|
||||||
];
|
];
|
||||||
|
|
|
@ -48,7 +48,7 @@ def main():
|
||||||
# FIXME: Enable after ELECTRON_ENABLE_LOGGING works again
|
# FIXME: Enable after ELECTRON_ENABLE_LOGGING works again
|
||||||
# env['ELECTRON_ENABLE_LOGGING'] = 'true'
|
# env['ELECTRON_ENABLE_LOGGING'] = 'true'
|
||||||
testargs = [electron, test_path]
|
testargs = [electron, test_path]
|
||||||
if sys.platform == 'win32' and platform.machine() == 'ARM64':
|
if sys.platform != 'linux' and (platform.machine() == 'ARM64' or os.environ.get('TARGET_ARCH') == 'arm64'):
|
||||||
testargs.append('--disable-accelerated-video-decode')
|
testargs.append('--disable-accelerated-video-decode')
|
||||||
subprocess.check_call(testargs, env=env)
|
subprocess.check_call(testargs, env=env)
|
||||||
except subprocess.CalledProcessError as e:
|
except subprocess.CalledProcessError as e:
|
||||||
|
|
|
@ -32,7 +32,10 @@ def main():
|
||||||
print('ok mksnapshot successfully created snapshot_blob.bin.')
|
print('ok mksnapshot successfully created snapshot_blob.bin.')
|
||||||
context_snapshot = 'v8_context_snapshot.bin'
|
context_snapshot = 'v8_context_snapshot.bin'
|
||||||
if platform.system() == 'Darwin':
|
if platform.system() == 'Darwin':
|
||||||
context_snapshot = 'v8_context_snapshot.x86_64.bin'
|
if os.environ.get('TARGET_ARCH') == 'arm64':
|
||||||
|
context_snapshot = 'v8_context_snapshot.arm64.bin'
|
||||||
|
else:
|
||||||
|
context_snapshot = 'v8_context_snapshot.x86_64.bin'
|
||||||
context_snapshot_path = os.path.join(app_path, context_snapshot)
|
context_snapshot_path = os.path.join(app_path, context_snapshot)
|
||||||
gen_binary = get_binary_path('v8_context_snapshot_generator', \
|
gen_binary = get_binary_path('v8_context_snapshot_generator', \
|
||||||
app_path)
|
app_path)
|
||||||
|
|
|
@ -594,7 +594,7 @@ describe('app module', () => {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('app.get/setLoginItemSettings API', function () {
|
ifdescribe(process.platform !== 'linux' && !process.mas)('app.get/setLoginItemSettings API', function () {
|
||||||
const updateExe = path.resolve(path.dirname(process.execPath), '..', 'Update.exe');
|
const updateExe = path.resolve(path.dirname(process.execPath), '..', 'Update.exe');
|
||||||
const processStartArgs = [
|
const processStartArgs = [
|
||||||
'--processStart', `"${path.basename(process.execPath)}"`,
|
'--processStart', `"${path.basename(process.execPath)}"`,
|
||||||
|
@ -611,10 +611,6 @@ describe('app module', () => {
|
||||||
'/d'
|
'/d'
|
||||||
];
|
];
|
||||||
|
|
||||||
before(function () {
|
|
||||||
if (process.platform === 'linux' || process.mas) this.skip();
|
|
||||||
});
|
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
app.setLoginItemSettings({ openAtLogin: false });
|
app.setLoginItemSettings({ openAtLogin: false });
|
||||||
app.setLoginItemSettings({ openAtLogin: false, path: updateExe, args: processStartArgs });
|
app.setLoginItemSettings({ openAtLogin: false, path: updateExe, args: processStartArgs });
|
||||||
|
|
|
@ -54,7 +54,7 @@ ifdescribe(!process.mas)('autoUpdater module', function () {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
ifdescribe(process.platform === 'darwin')('on Mac', function () {
|
ifdescribe(process.platform === 'darwin' && process.arch !== 'arm64')('on Mac', function () {
|
||||||
it('emits an error when the application is unsigned', async () => {
|
it('emits an error when the application is unsigned', async () => {
|
||||||
const errorEvent = emittedOnce(autoUpdater, 'error');
|
const errorEvent = emittedOnce(autoUpdater, 'error');
|
||||||
autoUpdater.setFeedURL({ url: '' });
|
autoUpdater.setFeedURL({ url: '' });
|
||||||
|
|
|
@ -6,15 +6,14 @@ import * as fs from 'fs-extra';
|
||||||
import * as os from 'os';
|
import * as os from 'os';
|
||||||
import * as path from 'path';
|
import * as path from 'path';
|
||||||
import { AddressInfo } from 'net';
|
import { AddressInfo } from 'net';
|
||||||
|
import { ifdescribe } from './spec-helpers';
|
||||||
|
|
||||||
const features = process._linkedBinding('electron_common_features');
|
const features = process._linkedBinding('electron_common_features');
|
||||||
|
|
||||||
const fixturesPath = path.resolve(__dirname, 'fixtures');
|
const fixturesPath = path.resolve(__dirname, 'fixtures');
|
||||||
|
|
||||||
// We can only test the auto updater on darwin non-component builds
|
// We can only test the auto updater on darwin non-component builds
|
||||||
const describeFn = (process.platform === 'darwin' && !process.mas && !features.isComponentBuild() ? describe : describe.skip);
|
ifdescribe(process.platform === 'darwin' && process.arch !== 'arm64' && !process.mas && !features.isComponentBuild())('autoUpdater behavior', function () {
|
||||||
|
|
||||||
describeFn('autoUpdater behavior', function () {
|
|
||||||
this.timeout(120000);
|
this.timeout(120000);
|
||||||
|
|
||||||
let identity = '';
|
let identity = '';
|
||||||
|
|
|
@ -5,7 +5,7 @@ import * as path from 'path';
|
||||||
import { ifdescribe, delay } from './spec-helpers';
|
import { ifdescribe, delay } from './spec-helpers';
|
||||||
|
|
||||||
// FIXME: The tests are skipped on arm/arm64.
|
// FIXME: The tests are skipped on arm/arm64.
|
||||||
ifdescribe(!(process.platform !== 'win32' && ['arm', 'arm64'].includes(process.arch)))('contentTracing', () => {
|
ifdescribe(!(['arm', 'arm64'].includes(process.arch)))('contentTracing', () => {
|
||||||
const record = async (options: TraceConfig | TraceCategoriesAndOptions, outputFilePath: string | undefined, recordTimeInMilliseconds = 1e1) => {
|
const record = async (options: TraceConfig | TraceCategoriesAndOptions, outputFilePath: string | undefined, recordTimeInMilliseconds = 1e1) => {
|
||||||
await app.whenReady();
|
await app.whenReady();
|
||||||
|
|
||||||
|
|
|
@ -1483,7 +1483,7 @@ describe('net module', () => {
|
||||||
const urlRequest = net.request(serverUrl);
|
const urlRequest = net.request(serverUrl);
|
||||||
urlRequest.end(randomBuffer(kOneMegaByte));
|
urlRequest.end(randomBuffer(kOneMegaByte));
|
||||||
const [error] = await emittedOnce(urlRequest, 'error');
|
const [error] = await emittedOnce(urlRequest, 'error');
|
||||||
expect(error.message).to.be.oneOf(['net::ERR_CONNECTION_RESET', 'net::ERR_CONNECTION_ABORTED']);
|
expect(error.message).to.be.oneOf(['net::ERR_FAILED', 'net::ERR_CONNECTION_RESET', 'net::ERR_CONNECTION_ABORTED']);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should not emit any event after close', async () => {
|
it('should not emit any event after close', async () => {
|
||||||
|
|
|
@ -1738,28 +1738,6 @@ describe('webContents module', () => {
|
||||||
expect(data).to.be.an.instanceof(Buffer).that.is.not.empty();
|
expect(data).to.be.an.instanceof(Buffer).that.is.not.empty();
|
||||||
});
|
});
|
||||||
|
|
||||||
it('respects custom settings', async () => {
|
|
||||||
await w.loadFile(path.join(__dirname, 'fixtures', 'api', 'print-to-pdf.html'));
|
|
||||||
|
|
||||||
const data = await w.webContents.printToPDF({
|
|
||||||
pageRanges: {
|
|
||||||
from: 0,
|
|
||||||
to: 2
|
|
||||||
},
|
|
||||||
landscape: true
|
|
||||||
});
|
|
||||||
|
|
||||||
const doc = await pdfjs.getDocument(data).promise;
|
|
||||||
|
|
||||||
// Check that correct # of pages are rendered.
|
|
||||||
expect(doc.numPages).to.equal(3);
|
|
||||||
|
|
||||||
// Check that PDF is generated in landscape mode.
|
|
||||||
const firstPage = await doc.getPage(1);
|
|
||||||
const { width, height } = firstPage.getViewport({ scale: 100 });
|
|
||||||
expect(width).to.be.greaterThan(height);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('does not crash when called multiple times in parallel', async () => {
|
it('does not crash when called multiple times in parallel', async () => {
|
||||||
const promises = [];
|
const promises = [];
|
||||||
for (let i = 0; i < 3; i++) {
|
for (let i = 0; i < 3; i++) {
|
||||||
|
@ -1783,6 +1761,35 @@ describe('webContents module', () => {
|
||||||
expect(data).to.be.an.instanceof(Buffer).that.is.not.empty();
|
expect(data).to.be.an.instanceof(Buffer).that.is.not.empty();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('using a large document', () => {
|
||||||
|
beforeEach(async () => {
|
||||||
|
w = new BrowserWindow({ show: false, webPreferences: { sandbox: true } });
|
||||||
|
await w.loadFile(path.join(__dirname, 'fixtures', 'api', 'print-to-pdf.html'));
|
||||||
|
});
|
||||||
|
|
||||||
|
afterEach(closeAllWindows);
|
||||||
|
|
||||||
|
it('respects custom settings', async () => {
|
||||||
|
const data = await w.webContents.printToPDF({
|
||||||
|
pageRanges: {
|
||||||
|
from: 0,
|
||||||
|
to: 2
|
||||||
|
},
|
||||||
|
landscape: true
|
||||||
|
});
|
||||||
|
|
||||||
|
const doc = await pdfjs.getDocument(data).promise;
|
||||||
|
|
||||||
|
// Check that correct # of pages are rendered.
|
||||||
|
expect(doc.numPages).to.equal(3);
|
||||||
|
|
||||||
|
// Check that PDF is generated in landscape mode.
|
||||||
|
const firstPage = await doc.getPage(1);
|
||||||
|
const { width, height } = firstPage.getViewport({ scale: 100 });
|
||||||
|
expect(width).to.be.greaterThan(height);
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('PictureInPicture video', () => {
|
describe('PictureInPicture video', () => {
|
||||||
|
|
|
@ -5,7 +5,7 @@ const path = require('path');
|
||||||
const temp = require('temp').track();
|
const temp = require('temp').track();
|
||||||
const util = require('util');
|
const util = require('util');
|
||||||
const { emittedOnce } = require('./events-helpers');
|
const { emittedOnce } = require('./events-helpers');
|
||||||
const { ifit } = require('./spec-helpers');
|
const { ifit, ifdescribe } = require('./spec-helpers');
|
||||||
const nativeImage = require('electron').nativeImage;
|
const nativeImage = require('electron').nativeImage;
|
||||||
|
|
||||||
const features = process._linkedBinding('electron_common_features');
|
const features = process._linkedBinding('electron_common_features');
|
||||||
|
@ -1385,17 +1385,11 @@ describe('asar package', function () {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('child_process.execFile', function () {
|
ifdescribe(process.platform === 'darwin' && process.arch !== 'arm64')('child_process.execFile', function () {
|
||||||
const execFile = ChildProcess.execFile;
|
const execFile = ChildProcess.execFile;
|
||||||
const execFileSync = ChildProcess.execFileSync;
|
const execFileSync = ChildProcess.execFileSync;
|
||||||
const echo = path.join(asarDir, 'echo.asar', 'echo');
|
const echo = path.join(asarDir, 'echo.asar', 'echo');
|
||||||
|
|
||||||
before(function () {
|
|
||||||
if (process.platform !== 'darwin') {
|
|
||||||
this.skip();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
it('executes binaries', function (done) {
|
it('executes binaries', function (done) {
|
||||||
execFile(echo, ['test'], function (error, stdout) {
|
execFile(echo, ['test'], function (error, stdout) {
|
||||||
try {
|
try {
|
||||||
|
|
Loading…
Add table
Reference in a new issue