Add build and test environment setup scripts, update developer guide

This commit is contained in:
Daniel Plaisted 2017-09-06 17:59:04 -07:00
parent 483e03704f
commit ce7ff1cf6b
5 changed files with 96 additions and 4 deletions

View file

@ -27,8 +27,8 @@ In order to build .NET Command Line Interface, you need the following installed
## Building/Running
1. Run `build.cmd` or `build.sh` from the root depending on your OS. If you don't want to execute tests, run `build.cmd /t:Compile` or `./build.sh /t:Compile`.
- To build the CLI in macOS Sierra, you need to set the DOTNET_RUNTIME_ID environment variable by running `export DOTNET_RUNTIME_ID=osx.10.11-x64`.
2. Use `artifacts/{RID}/stage2/dotnet` to try out the `dotnet` command. You can also add `artifacts/{os}-{arch}/stage2` to the PATH if you want to use the build output when invoking `dotnet` from the current console.
- To build the CLI in macOS Sierra, you need to set the DOTNET_RUNTIME_ID environment variable by running `export DOTNET_RUNTIME_ID=osx.10.11-x64`.
2. The CLI that is built (we call it stage 2) will be laid out in the `bin\2\{RID}\dotnet` folder. You can run `dotnet.exe` or `dotnet` from that folder to try out the `dotnet` command.
## A simple test
Using the `dotnet` built in the previous step:
@ -40,8 +40,12 @@ Using the `dotnet` built in the previous step:
## Running tests
1. To run all tests invoke `build.cmd` or `build.sh` which will build the product and run the tests.
2. To run a specific test, cd into that test's directory and execute `dotnet test`. If using this approach, make sure to add `artifacts/{RID}/stage2` to your `PATH` and set the `NUGET_PACKAGES` environment variable to point to the repo's `.nuget/packages` directory.
1. To run all tests, invoke `build.cmd` or `build.sh` which will build the product and run the tests.
2. To run a specific test project:
- Run `scripts\cli-test-env.bat` on Windows, or [source](https://en.wikipedia.org/wiki/Source_(command)) `scripts/cli-test-env.sh` on Linux or OS X. This will add the stage 2 `dotnet` folder to your path and set up other environment variables which are used for running tests.
- `cd` into the test's directory
- Run `dotnet test`
- Refer to the command-line help for `dotnet test` if you want to run a specific test in the test project
## Adding a Command

17
scripts/cli-build-env.bat Normal file
View file

@ -0,0 +1,17 @@
@echo off
REM Copyright (c) .NET Foundation and contributors. All rights reserved.
REM Licensed under the MIT license. See LICENSE file in the project root for full license information.
REM Get normalized version of parent path
for %%i in (%~dp0..\) DO (
SET CLI_REPO_ROOT=%%~dpi
)
title CLI Build (%CLI_REPO_ROOT%)
REM Add Stage 0 CLI to path
set PATH=%CLI_REPO_ROOT%.dotnet_stage0\x64;%PATH%
set DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
set DOTNET_MULTILEVEL_LOOKUP=0
set NUGET_PACKAGES=%CLI_REPO_ROOT%.nuget\packages

23
scripts/cli-build-env.sh Normal file
View file

@ -0,0 +1,23 @@
#!/usr/bin/env bash
#
# Copyright (c) .NET Foundation and contributors. All rights reserved.
# Licensed under the MIT license. See LICENSE file in the project root for full license information.
#
SOURCE="${BASH_SOURCE[0]}"
while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
SOURCE="$(readlink "$SOURCE")"
[[ "$SOURCE" != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
done
REPO_ROOT="$( cd -P "$( dirname "$SOURCE" )/../" && pwd )"
STAGE0_DIR=$REPO_ROOT.dotnet_stage0/x64
export PATH=$STAGE0_DIR:$PATH
export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
export DOTNET_MULTILEVEL_LOOKUP=0
export NUGET_PACKAGES=$REPO_ROOT/.nuget/packages

20
scripts/cli-test-env.bat Normal file
View file

@ -0,0 +1,20 @@
@echo off
REM Copyright (c) .NET Foundation and contributors. All rights reserved.
REM Licensed under the MIT license. See LICENSE file in the project root for full license information.
REM Get normalized version of parent path
for %%i in (%~dp0..\) DO (
SET CLI_REPO_ROOT=%%~dpi
)
title CLI Test (%CLI_REPO_ROOT%)
REM Add Stage 2 CLI to path
set PATH=%CLI_REPO_ROOT%bin\2\win10-x64\dotnet
set DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
set DOTNET_MULTILEVEL_LOOKUP=0
set NUGET_PACKAGES=%CLI_REPO_ROOT%.nuget\packages
set TEST_PACKAGES=%CLI_REPO_ROOT%bin\2\win10-x64\test\packages
set TEST_ARTIFACTS=%CLI_REPO_ROOT%bin\2\win10-x64\test\artifacts
set PreviousStageProps=%CLI_REPO_ROOT%bin\2\win10-x64\PreviousStage.props

28
scripts/cli-test-env.sh Normal file
View file

@ -0,0 +1,28 @@
#!/usr/bin/env bash
#
# Copyright (c) .NET Foundation and contributors. All rights reserved.
# Licensed under the MIT license. See LICENSE file in the project root for full license information.
#
SOURCE="${BASH_SOURCE[0]}"
while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
SOURCE="$(readlink "$SOURCE")"
[[ "$SOURCE" != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
done
REPO_ROOT="$( cd -P "$( dirname "$SOURCE" )/../" && pwd )"
RID=linux-x64
STAGE2_DIR=$REPO_ROOT/bin/2/$RID/dotnet
export PATH=$STAGE2_DIR:$PATH
export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
export DOTNET_MULTILEVEL_LOOKUP=0
export NUGET_PACKAGES=$REPO_ROOT/.nuget/packages
export TEST_PACKAGES=$REPO_ROOT/bin/2/$RID/test/packages
export TEST_ARTIFACTS=$REPO_ROOT/bin/2/$RID/test/artifacts
export PreviousStageProps=$REPO_ROOT/bin/2/$RID/PreviousStage.props