Merge pull request #7605 from dsplaisted/dev-guide
Add build and test environment setup scripts, update developer guide
This commit is contained in:
commit
6fdc98c23b
8 changed files with 86 additions and 64 deletions
|
@ -27,8 +27,7 @@ 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.
|
||||
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 +39,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
17
scripts/cli-build-env.bat
Normal 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
|
20
scripts/dev-dotnet.sh → scripts/cli-build-env.sh
Executable file → Normal file
20
scripts/dev-dotnet.sh → scripts/cli-build-env.sh
Executable file → Normal file
|
@ -4,22 +4,20 @@
|
|||
# Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
||||
#
|
||||
|
||||
set -e
|
||||
|
||||
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
|
||||
DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
|
||||
|
||||
source "$DIR/common/_common.sh"
|
||||
REPO_ROOT="$( cd -P "$( dirname "$SOURCE" )/../" && pwd )"
|
||||
|
||||
if [ -d "$STAGE2_DIR" ]; then
|
||||
PATH=$STAGE2_DIR/bin:$PATH
|
||||
dotnet "$@"
|
||||
else
|
||||
echo "You don't have a dev build!" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
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
20
scripts/cli-test-env.bat
Normal 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
|
33
scripts/cli-test-env.sh
Normal file
33
scripts/cli-test-env.sh
Normal file
|
@ -0,0 +1,33 @@
|
|||
#!/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 )"
|
||||
|
||||
if [ "$uname" = "Darwin" ]
|
||||
then
|
||||
RID=osx-x64
|
||||
else
|
||||
RID=linux-x64
|
||||
fi
|
||||
|
||||
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
|
|
@ -1,24 +0,0 @@
|
|||
#
|
||||
# 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.
|
||||
#
|
||||
|
||||
$oldPath = $env:PATH
|
||||
try {
|
||||
# Put the stage2 output on the front of the path
|
||||
if(!(Get-Command dotnet -ErrorAction SilentlyContinue)) {
|
||||
throw "You need to have a version of 'dotnet' on your path so we can determine the RID"
|
||||
}
|
||||
|
||||
$rid = dotnet --version | where { $_ -match "^ Runtime Id:\s*(.*)$" } | foreach { $matches[1] }
|
||||
$stage2 = "$PSScriptRoot\..\artifacts\$rid\stage2\bin"
|
||||
if (Test-Path $stage2) {
|
||||
$env:PATH="$stage2;$env:PATH"
|
||||
} else {
|
||||
Write-Host "You don't have a dev build in the 'artifacts\$rid\stage2' folder!"
|
||||
}
|
||||
|
||||
dotnet @args
|
||||
} finally {
|
||||
$env:PATH = $oldPath
|
||||
}
|
|
@ -1,9 +0,0 @@
|
|||
#
|
||||
# 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.
|
||||
#
|
||||
|
||||
# Remove the stage2 output from the path
|
||||
$splat = $env:PATH.Split(";")
|
||||
$stripped = @($splat | where { $_ -notlike "*artifacts\win7-x64\stage2*" })
|
||||
$env:PATH = [string]::Join(";", $stripped)
|
|
@ -1,16 +0,0 @@
|
|||
#
|
||||
# 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.
|
||||
#
|
||||
|
||||
# Put the stage2 output on the front of the path
|
||||
$stage2 = "$PSScriptRoot\..\artifacts\win10-x64\stage2"
|
||||
if (Test-Path $stage2) {
|
||||
$splat = $env:PATH.Split(";")
|
||||
$stage2 = Convert-Path $stage2
|
||||
if ($splat -notcontains $stage2) {
|
||||
$env:PATH="$stage2;$env:PATH"
|
||||
}
|
||||
} else {
|
||||
Write-Host "You don't have a dev build in the 'artifacts\win10-x64\stage2' folder!"
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue