summaryrefslogtreecommitdiff
path: root/tests/src/CLRTest.Execute.Bash.targets
diff options
context:
space:
mode:
authordotnet-bot <dotnet-bot@microsoft.com>2015-01-30 14:14:42 -0800
committerdotnet-bot <dotnet-bot@microsoft.com>2015-01-30 14:14:42 -0800
commitef1e2ab328087c61a6878c1e84f4fc5d710aebce (patch)
treedee1bbb89e9d722e16b0d1485e3cdd1b6c8e2cfa /tests/src/CLRTest.Execute.Bash.targets
downloadcoreclr-ef1e2ab328087c61a6878c1e84f4fc5d710aebce.tar.gz
coreclr-ef1e2ab328087c61a6878c1e84f4fc5d710aebce.tar.bz2
coreclr-ef1e2ab328087c61a6878c1e84f4fc5d710aebce.zip
Initial commit to populate CoreCLR repo
[tfs-changeset: 1407945]
Diffstat (limited to 'tests/src/CLRTest.Execute.Bash.targets')
-rw-r--r--tests/src/CLRTest.Execute.Bash.targets191
1 files changed, 191 insertions, 0 deletions
diff --git a/tests/src/CLRTest.Execute.Bash.targets b/tests/src/CLRTest.Execute.Bash.targets
new file mode 100644
index 0000000000..c6e0f7a3c6
--- /dev/null
+++ b/tests/src/CLRTest.Execute.Bash.targets
@@ -0,0 +1,191 @@
+<!--
+***********************************************************************************************
+CLRTest.Execute.targets
+
+WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
+ created a backup copy. Incorrect changes to this file will make it
+ impossible to load or build your projects from the command-line or the IDE.
+
+This file contains the logic for providing Execution Script generation.
+
+WARNING: When setting properties based on their current state (for example:
+ <Foo Condition="'$(Foo)'==''>Bar</Foo>). Be very careful. Another script generation
+ target might be trying to do the same thing. It's better to avoid this by instead setting a new property.
+
+ Additionally, be careful with itemgroups. Include will propagate outside of the target too!
+
+***********************************************************************************************
+-->
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+
+ <!--
+ Target: GetExecuteShFullPath
+ Return Executed Sh Relative Full Path
+ We can use this target get its toRun Project's Sh Full Path to avoid hard-code
+ -->
+ <Target
+ Name="GetExecuteShFullPath"
+ Returns="$(ExecuteShFullPath)">
+ <PropertyGroup>
+ <ExecuteShFullPath>$(OutputPath)\$(AssemblyName).sh</ExecuteShFullPath>
+ </PropertyGroup>
+ </Target>
+
+ <!--
+ *******************************************************************************************
+ TARGET: GenerateExecutionScriptInternal
+
+ For tests that "run" we will generate an execution script that wraps any arguments or other
+ goo. This allows generated .lst files to be very simple and reusable to invoke any "stage"
+ of test execution.
+
+ Notice this is hooked up to run after targets that generate the stores that are marked with GenerateScripts metadata.
+ Note also that this means it will run after the first of such targets.
+ -->
+ <Target Name="GenerateBashExecutionScript"
+ Inputs="$(MSBuildProjectFullPath)"
+ Outputs="$(OutputPath)\$(AssemblyName).sh">
+
+ <PropertyGroup>
+
+ <!-- TODO:2 build in debugger experience support -->
+
+ <BashCLRTestExitCodePrep Condition="$(_CLRTestNeedsToRun)">
+<![CDATA[CLRTestExpectedExitCode=$(CLRTestExitCode)
+echo BEGIN EXECUTION]]>
+ </BashCLRTestExitCodePrep>
+
+ <BashCLRTestArgPrep Condition=" '$(CLRTestExecutionArguments)'!='' ">
+<![CDATA[CLRTestExecutionArguments=$(CLRTestExecutionArguments)]]>
+ </BashCLRTestArgPrep>
+
+ <!-- By default, be prepared to do a full check -->
+ <BashCLRTestExitCodeCheck><![CDATA[
+echo Expected: $CLRTestExpectedExitCode
+echo Actual: $CLRTestExitCode
+if [ ! $CLRTestExitCode == $CLRTestExpectedExitCode ]
+then
+ echo END EXECUTION - FAILED
+ echo FAILED
+ exit 1
+else
+ echo END EXECUTION - PASSED
+ echo PASSED
+ exit 0
+fi
+ ]]></BashCLRTestExitCodeCheck>
+ </PropertyGroup>
+
+ <ItemGroup Condition="$(_CLRTestNeedsToRun)">
+ <Clean Include="$(OutputPath)\$(AssemblyName).sh"/>
+
+ <BashCLRTestExecutionScriptArgument Include="debug">
+ <HasParam>true</HasParam>
+ <ParamText>=*</ParamText> <!-- Bash specific -->
+ <ParamName>debuggerFullPath</ParamName>
+ <Command><![CDATA[ _DebuggerFullPath="${i#*=}"
+ if [ ! -f DebuggerFullPath ]
+ then
+ echo The Debugger FullPath \"$_DebuggerFullPath\" doesn\'t exist
+ usage
+ fi]]></Command>
+ <Description>Run testcases under debugger.</Description>
+ </BashCLRTestExecutionScriptArgument>
+ </ItemGroup>
+
+ <!--Call GetExecuteShFullPath to get ToRunProject cmd file Path -->
+ <MSBuild Projects="$(CLRTestProjectToRun)" Targets="GetExecuteShFullPath" Condition="'$(_CLRTestNeedsProjectToRun)' == 'True'">
+ <Output TaskParameter="TargetOutputs" PropertyName="_CLRTestToRunFileFullPath"/>
+ </MSBuild>
+
+ <PropertyGroup>
+ <!-- Calculate the thing we're going to run -->
+ <_CLRTestRunFile Condition="'$(_CLRTestNeedsProjectToRun)' != 'True'">"$(AssemblyName).exe"</_CLRTestRunFile>
+
+ <!-- TODO: make this better? -->
+ <_CLRTestRunFile Condition=" '$(CLRTestIsHosted)'=='true' And !$(_CLRTestNeedsProjectToRun) ">"$Core_Root\mono" $(_CLRTestRunFile)</_CLRTestRunFile>
+
+ <BashCLRTestLaunchCmds Condition=" '$(BashCLRTestLaunchCmds)'=='' "><![CDATA[
+echo $(_CLRTestRunFile) $CLRTestExecutionArguments $Host_Args
+$_DebuggerFullPath $(_CLRTestRunFile) $CLRTestExecutionArguments $Host_Args
+CLRTestExitCode=$?
+ ]]></BashCLRTestLaunchCmds>
+
+ </PropertyGroup>
+
+ <Message Text="MSBuildProjectDirectory:$(MSBuildProjectDirectory)" />
+ <Message Text="_CLRTestToRunFileFullPath:$(_CLRTestToRunFileFullPath)"/>
+ <Message Text="_CLRTestRunFile:$(_CLRTestRunFile)" />
+
+ <ItemGroup>
+ <_RequiredProperties Include="_CLRTestRunFile">
+ <Value>$(_CLRTestRunFile)</Value>
+ </_RequiredProperties>
+ </ItemGroup>
+
+ <!-- Raise an error if any value in _RequiredProperties is missing -->
+ <Error Condition=" '%(_RequiredProperties.Value)'=='' "
+ Text="Missing required test property [%(_RequiredProperties.Identity)]. Something isn't plumbed through correctly. Contact $(_CLRTestBuildSystemOwner)." />
+ <!-- TODO: this is weird. Consider eliminating it. -->
+ <GenerateParamList ArgumentItems="@(BashCLRTestExecutionScriptArgument)">
+ <Output TaskParameter="ParamList" PropertyName="_CLRTestParamList"/>
+ </GenerateParamList>
+
+ <PropertyGroup>
+ <!--
+ This generates the script portion to parse all of the command line arguments.
+ The Command metadata for BashCLRTestExecutionScriptArgument items is executed
+ when the argument is found.
+ -->
+ <BashCLRTestArgPrep><![CDATA[
+usage()
+{
+ echo "Usage: $0 $(_CLRTestParamList)"
+ echo
+ echo "Arguments:"
+@(BatchCLRTestExecutionScriptArgument -> ' echo "-%(Identity) %(ParamName)"
+ echo "%(Description)"', '
+')
+ echo " -?,-h,--help show this message"
+ exit 1
+}
+
+# Parse Command Line
+
+for i in "$@"
+ do
+ case $i in
+ -?|-h|--help)
+ usage
+ %3B%3B
+@(BashCLRTestExecutionScriptArgument -> ' -%(Identity)%(ParamText)|/%(Identity)%(ParamText))
+%(Command)
+ %3B%3B')
+ *)
+ CLRTestExecutionArguments="$CLRTestExecutionArguments $i"
+ esac
+done
+
+$(BashCLRTestArgPrep)
+ ]]></BashCLRTestArgPrep>
+ <!-- NOTE! semicolons must be escaped with %3B boooo -->
+ <_CLRTestExecutionScriptText><![CDATA[
+$(BashCLRTestArgPrep)
+$(BashCLRTestExitCodePrep)
+# Precommands
+$(_CLRTestPreCommands)
+# Launch
+$(BashCLRTestLaunchCmds)
+# PostCommands
+$(_CLRTestPostCommands)
+$(BashCLRTestExitCodeCheck)
+ ]]></_CLRTestExecutionScriptText>
+ </PropertyGroup>
+ <!-- Write the file -->
+ <WriteLinesToFile
+ File="$(OutputPath)\$(AssemblyName).sh"
+ Lines="$(_CLRTestExecutionScriptText)"
+ Overwrite="true" />
+ </Target>
+
+</Project> \ No newline at end of file