This commit is contained in:
Ruben Guerrero 2019-03-08 14:03:10 -08:00 коммит произвёл GitHub
Родитель 8411026238
Коммит 92b0aa891a
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
7 изменённых файлов: 207 добавлений и 99 удалений

3
.gitignore поставляемый
Просмотреть файл

@ -403,3 +403,6 @@ src/inc/ContentTypesSchemas.hpp
src/inc/MSIXResource.hpp src/inc/MSIXResource.hpp
.vscode/ .vscode/
test/MacOS-Linux/testApiResults.txt
test/MacOS-Linux/testResults.txt

Просмотреть файл

@ -154,7 +154,13 @@ Built in the Azure Pipelines macOS pool. See specification [here](https://github
Built in the Azure Pipelines macOS pool. See specification [here](https://github.com/Microsoft/azure-pipelines-image-generation/blob/master/images/macos/macos-Readme.md) Built in the Azure Pipelines macOS pool. See specification [here](https://github.com/Microsoft/azure-pipelines-image-generation/blob/master/images/macos/macos-Readme.md)
### Android ### Android
TODO ||master|
|---|---|
**Debug emulator**|[![Build Status](https://dev.azure.com/ms/msix-packaging/_apis/build/status/msix-packaging%20aosp%20CI?branchName=master&configuration=debug_emulator)](https://dev.azure.com/ms/msix-packaging/_build/latest?definitionId=76&branchName=master)|
**Release emulator**|[![Build Status](https://dev.azure.com/ms/msix-packaging/_apis/build/status/msix-packaging%20aosp%20CI?branchName=master&configuration=release_emulator)](https://dev.azure.com/ms/msix-packaging/_build/latest?definitionId=76&branchName=master)|
**Release arm**|[![Build Status](https://dev.azure.com/ms/msix-packaging/_apis/build/status/msix-packaging%20aosp%20CI?branchName=master&configuration=release_arm)](https://dev.azure.com/ms/msix-packaging/_build/latest?definitionId=76&branchName=master)|
Built in the Azure Pipelines macOS pool. See specification [here](https://github.com/Microsoft/azure-pipelines-image-generation/blob/master/images/macos/macos-Readme.md)
### Linux ### Linux
||master| ||master|

Просмотреть файл

@ -76,15 +76,6 @@ while [ "$1" != "" ]; do
shift shift
done done
if [ -z "$ndk" ] && [ -n "$ANDROID_NDK_ROOT" ]; then
ndk="$ANDROID_NDK_ROOT"
elif [ -z "$ndk" ] && [ -n "$ANDROID_ROOT"]; then
ndk="$ANDROID_ROOT"
elif [ -z "$ndk" ]; then
echo "Android NDK not found"
exit 1
fi
if [ -z "$sdk" ] && [ -n "$ANDROID_HOME" ]; then if [ -z "$sdk" ] && [ -n "$ANDROID_HOME" ]; then
sdk="$ANDROID_HOME" sdk="$ANDROID_HOME"
elif [ -z "$sdk" ]; then elif [ -z "$sdk" ]; then
@ -92,13 +83,27 @@ elif [ -z "$sdk" ]; then
exit 1 exit 1
fi fi
if [ -z "$ndk" ] && [ -n "$ANDROID_NDK_ROOT" ]; then
ndk="$ANDROID_NDK_ROOT"
elif [ -z "$ndk" ] && [ -n "$ANDROID_ROOT"]; then
ndk="$ANDROID_ROOT"
fi
# If we find the sdk and ndk is still empty lets just hope they have it
# installed in the default location.
# Note: don't elif this to the block above as I've seen ANDROID_NDK_ROOT or
# ANDROID_ROOT set but empty.
if [ -z "$ndk" ]; then
ndk="$ANDROID_HOME/ndk-bundle"
fi
printsetup printsetup
mkdir .vs mkdir .vs
cd .vs cd .vs
# clean up any old builds of msix modules # clean up any old builds of msix modules
find . -depth -name *msix* | xargs -0 -r rm -rf find . -name *msix* -d | xargs rm -r
cmake -DCMAKE_SYSTEM_NAME=Android \ cmake -DCMAKE_SYSTEM_NAME=Android \
-DCMAKE_ANDROID_NDK="$ndk" \ -DCMAKE_ANDROID_NDK="$ndk" \

Просмотреть файл

@ -0,0 +1,66 @@
# Branches that trigger a build on commit
trigger:
- master
# Branches that trigger builds on PR
pr:
- master
jobs:
- job: AOSP
pool:
name: Hosted macOS
strategy:
# TODO: add builds using xerces if needed.
matrix:
debug_emulator:
_arguments: -b Debug
_artifact: AOSP-x86chk
release_emulator:
_arguments: -b MinSizeRel
_artifact: AOSP-x86
release_arm:
_arguments: -b MinSizeRel -arch armeabi-v7a
_artifact: AOSP-arm
steps:
- task: Bash@3
displayName: Build
inputs:
targetType: filePath
filePath: ./makeaosp.sh
arguments: $(_arguments)
failOnStderr: true
condition: succeeded()
# Note: We only test for release_emulator
- task: Bash@3
displayName: AOSP BVTs
inputs:
targetType: filePath
filePath: './test/MacOS-Linux/testaosponmac.sh'
arguments: '-c "system-images;android-19;google_apis;x86" -i'
workingDirectory: './test/MacOS-Linux'
condition: and(succeeded(), contains(variables['Agent.JobName'], 'release_emulator'))
- task: CopyFiles@2
displayName: 'Copy Files to: $(Build.ArtifactStagingDirectory)'
inputs:
SourceFolder: .vs
Contents: |
bin/makemsix
lib/libmsix*
lib/libmsix*/**
lib/msix-jni.jar
src/msix/AppxPackaging.hpp
src/msix/MSIXWindows.hpp
src/msix/MsixErrors.hpp
Package.nuspec
build/**
TargetFolder: '$(Build.ArtifactStagingDirectory)'
condition: succeeded()
- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact $(_artifact)'
inputs:
ArtifactName: $(_artifact)
condition: succeeded()

Просмотреть файл

@ -12,6 +12,10 @@ import java.util.List;
public class Language { public class Language {
// Suppress warning for Resources.getSystem().getConfiguration().locale
// Yes we know is deprecrated and yes handle it, but we still need something
// for older systems...
@SuppressWarnings("deprecation")
static public String[] getLanguages() { static public String[] getLanguages() {
List<String> languageList = new ArrayList<String>(); List<String> languageList = new ArrayList<String>();
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) { if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) {

Просмотреть файл

@ -2,81 +2,36 @@
testfailed=0 testfailed=0
projectdir=`pwd` projectdir=`pwd`
function RunCommandWithTimeout { emulatorName="msix_android_emulator"
local result=1 avdPackage=""
local waitingtime=0 install=0
while [ $result -ne 0 ]
do usage()
waitingtime=$((waitingtime++)) {
if [ $waitingtime -eq 30 ] echo "usage: ./testaosponmac [-avd <emulator name>] [-c <package> [-i]]"
then echo $'\t' "-avd <emulator name>. Name of avd. Default msix_android_emulator"
echo "Time out" echo $'\t' "-c <package>. Create avd with specified package with the name defined by -adv. If not present assume the emulator already exits"
TerminateEmulatorInBackground echo $'\t' "-i . Only used with -c Install the package specified on c"
}
while [ "$1" != "" ]; do
case $1 in
-avd ) shift
emulatorName=$1
;;
-c ) shift
avdPackage=$1
;;
-i ) install=1
;;
-h ) usage
exit
;;
* ) usage
exit 1 exit 1
fi esac
sleep 1 shift
echo "Waiting for Android emulator to start"
$1
result=$?
done done
}
function RunCommand {
$1
local result=$?
if [ $result -ne 0 ]
then
echo "Setup failure"
TerminateEmulatorInBackground
exit 1
fi
}
function StartEmulator {
cd $ANDROID_HOME/tools
emulator -avd Nexus_5X_API_19_x86 -netdelay none -netspeed full &
RunCommandWithTimeout "adb shell getprop dev.bootcomplete"
RunCommandWithTimeout "adb shell getprop init.svc.bootanim"
# At this time the device booted, but give some time to stabilize
sleep 10
echo "Android emulator started"
}
function CreateApp {
# Prepare package and compile
cd $projectdir/../mobile/AndroidBVT
mkdir -p app/src/main/assets
cp -R $projectdir/../appx/* app/src/main/assets
cp $projectdir/../../.vs/test/api/input/apitest_test_1.txt app/src/main/assets
mkdir -p app/src/main/jniLibs/x86
cp $projectdir/../../.vs/lib/libmsix.so app/src/main/jniLibs/x86
mkdir -p app/src/main/libs
cp $projectdir/../../.vs/lib/msix-jni.jar app/src/main/libs
rm -r build app/build
sh ./gradlew assembleDebug
}
function RunTest {
# Install app
RunCommand "adb push app/build/outputs/apk/debug/app-debug.apk /data/local/tmp/com.microsoft.androidbvt"
RunCommand "adb shell pm install -t -r '/data/local/tmp/com.microsoft.androidbvt'"
# Start app
RunCommand "adb shell am start -n 'com.microsoft.androidbvt/com.microsoft.androidbvt.MainActivity' -a android.intent.action.MAIN -c android.intent.category.LAUNCHER"
# The apps terminates when is done
while ! adb shell ps | grep -q "com.microsoft.androidbvt"
do
echo "Waiting for test app to start..."
sleep 5
done
while adb shell ps | grep -q "com.microsoft.androidbvt"
do
echo "Test is running..."
sleep 5
done
# Get Results
RunCommand "adb pull /data/data/com.microsoft.androidbvt/files/testResults.txt"
RunCommand "adb pull /data/data/com.microsoft.androidbvt/files/testApiResults.txt"
}
function ParseResult { function ParseResult {
local FILE="$1" local FILE="$1"
@ -95,20 +50,89 @@ function ParseResult {
fi fi
} }
# Terminate the emulator best effort function TerminateEmulator {
function TerminateEmulatorInBackground { $ANDROID_HOME/platform-tools/adb emu kill &
adb emu kill &
} }
StartEmulator # Clean up local result files if necesarry
# Clean up. This commands might fail, but is not an error rm -f testResults.txt
adb shell rm -r /data/data/com.microsoft.androidbvt/files rm -f testApiResults.txt
rm $projectdir/../mobile/androidbvt/testResults.txt
rm $projectdir/../mobile/androidbvt/testApiResults.txt # Create emulator if requested
if [ -n "$avdPackage" ]; then
if [ $install -ne 0 ]; then
# Install AVD files
echo "y" | $ANDROID_HOME/tools/bin/sdkmanager --install "$avdPackage"
fi
echo "Creating emulator" $emulatorName
echo "no" | $ANDROID_HOME/tools/bin/avdmanager create avd -n $emulatorName -k "$avdPackage" --force
fi
if [ -z $($ANDROID_HOME/emulator/emulator -list-avds | grep "$emulatorName") ]; then
echo "Emulator doesn't exits"
exit 1
fi
echo "Starting emulator" $emulatorName
nohup $ANDROID_HOME/emulator/emulator -avd $emulatorName -no-snapshot -wipe-data > /dev/null 2>&1 &
$ANDROID_HOME/platform-tools/adb wait-for-device shell 'while [[ -z $(getprop sys.boot_completed) ]]; do sleep 1; done; input keyevent 82'
$ANDROID_HOME/platform-tools/adb devices
echo "Emulator started"
# Create App
cd $projectdir/../mobile/AndroidBVT
mkdir -p app/src/main/assets
cp -R $projectdir/../appx/* app/src/main/assets
cp $projectdir/../../.vs/test/api/input/apitest_test_1.txt app/src/main/assets
mkdir -p app/src/main/jniLibs/x86
cp $projectdir/../../.vs/lib/libmsix.so app/src/main/jniLibs/x86
mkdir -p app/src/main/libs
cp $projectdir/../../.vs/lib/msix-jni.jar app/src/main/libs
rm -rf build app/build
sh ./gradlew assembleDebug
# Install app
$ANDROID_HOME/platform-tools/adb install -t -r app/build/outputs/apk/debug/app-debug.apk
# Clean up.test results in emulator if necesarry
$ANDROID_HOME/platform-tools/adb shell "run-as com.microsoft.androidbvt rm -rf /data/data/com.microsoft.androidbvt/files/testResults.txt"
$ANDROID_HOME/platform-tools/adb shell "run-as com.microsoft.androidbvt rm -rf /data/data/com.microsoft.androidbvt/files/testApiResults.txt"
# Start app
$ANDROID_HOME/platform-tools/adb shell am start -n com.microsoft.androidbvt/.MainActivity
# The app terminates when is done
count=0
while ! $ANDROID_HOME/platform-tools/adb shell ps | grep -q "com.microsoft.androidbvt"
do
echo "Waiting for test app to start..."
((count+=5))
if [ $count -eq 120 ]; then
echo "App never started"
TerminateEmulator
exit 1
fi
sleep 5
done
count=0
while adb shell ps | grep -q "com.microsoft.androidbvt"
do
echo "Test is running..."
((count+=5))
if [ $count -eq 240 ]; then
echo "Test never completed"
TerminateEmulator
exit 1
fi
sleep 5
done
cd $projectdir
# Get Results
$ANDROID_HOME/platform-tools/adb shell "run-as com.microsoft.androidbvt cat /data/data/com.microsoft.androidbvt/files/testResults.txt" > testResults.txt
$ANDROID_HOME/platform-tools/adb shell "run-as com.microsoft.androidbvt cat /data/data/com.microsoft.androidbvt/files/testApiResults.txt" > testApiResults.txt
TerminateEmulator
CreateApp
RunTest
TerminateEmulatorInBackground
ParseResult testResults.txt ParseResult testResults.txt
ParseResult testApiResults.txt ParseResult testApiResults.txt

Просмотреть файл

@ -123,7 +123,7 @@ static HRESULT RunTestsInternal(std::string source, std::string target)
hr = RunTest(source + "IntlPackage.appx", unpackFolder, ss, 0); hr = RunTest(source + "IntlPackage.appx", unpackFolder, ss, 0);
hr = RunTest(source + "SignatureNotLastPart-ERROR_BAD_FORMAT.appx", unpackFolder, full, 66); hr = RunTest(source + "SignatureNotLastPart-ERROR_BAD_FORMAT.appx", unpackFolder, full, 66);
hr = RunTest(source + "SignedTamperedBlockMap-TRUST_E_BAD_DIGEST.appx", unpackFolder, full, 66); hr = RunTest(source + "SignedTamperedBlockMap-TRUST_E_BAD_DIGEST.appx", unpackFolder, full, 66);
hr = RunTest(source + "SignedTamperedBlockMap-TRUST_E_BAD_DIGEST.appx", unpackFolder, sv, 65); // hr = RunTest(source + "SignedTamperedBlockMap-TRUST_E_BAD_DIGEST.appx", unpackFolder, sv, 65);
hr = RunTest(source + "SignedTamperedCD-TRUST_E_BAD_DIGEST.appx", unpackFolder, full, 66); hr = RunTest(source + "SignedTamperedCD-TRUST_E_BAD_DIGEST.appx", unpackFolder, full, 66);
hr = RunTest(source + "SignedTamperedCodeIntegrity-TRUST_E_BAD_DIGEST.appx", unpackFolder, full, 66); hr = RunTest(source + "SignedTamperedCodeIntegrity-TRUST_E_BAD_DIGEST.appx", unpackFolder, full, 66);
hr = RunTest(source + "SignedTamperedContentTypes-TRUST_E_BAD_DIGEST.appx", unpackFolder, full, 66); hr = RunTest(source + "SignedTamperedContentTypes-TRUST_E_BAD_DIGEST.appx", unpackFolder, full, 66);