Honor specified nuget file location (#109)

* Honor specified nuget file location

* Generate and verify nuget.config
This commit is contained in:
Zachary Eisinger 2020-09-02 11:11:56 -07:00 committed by GitHub
parent 985d576ba0
commit 3569a93d9f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 71 additions and 21 deletions

View File

@ -42,6 +42,10 @@ jobs:
uses: ./ uses: ./
with: with:
dotnet-version: 3.0.100 dotnet-version: 3.0.100
# We are including this veriable to force the generation of the nuget config file to verify that it is created in the correct place
source-url: https://api.nuget.org/v3/index.json
env:
NUGET_AUTH_TOKEN: NOTATOKEN
- name: Verify dotnet - name: Verify dotnet
if: runner.os != 'windows' if: runner.os != 'windows'
run: __tests__/verify-dotnet.sh 3.0.100 run: __tests__/verify-dotnet.sh 3.0.100
@ -70,6 +74,9 @@ jobs:
uses: ./ uses: ./
with: with:
dotnet-version: 3.0.100 dotnet-version: 3.0.100
source-url: https://api.nuget.org/v3/index.json
env:
NUGET_AUTH_TOKEN: NOTATOKEN
- name: Verify dotnet - name: Verify dotnet
run: __tests__/verify-dotnet.sh 3.0.100 run: __tests__/verify-dotnet.sh 3.0.100
@ -87,5 +94,8 @@ jobs:
uses: ./ uses: ./
with: with:
dotnet-version: 3.0.100 dotnet-version: 3.0.100
source-url: https://api.nuget.org/v3/index.json
env:
NUGET_AUTH_TOKEN: NOTATOKEN
- name: Verify dotnet - name: Verify dotnet
run: __tests__/verify-dotnet.sh 3.0.100 run: __tests__/verify-dotnet.sh 3.0.100

View File

@ -75,7 +75,6 @@ const azureartifactsnugetorgNuGetConfig: string = `<?xml version="1.0" encoding=
const nugetConfigFile = path.join(fakeSourcesDirForTesting, '../nuget.config'); const nugetConfigFile = path.join(fakeSourcesDirForTesting, '../nuget.config');
process.env['GITHUB_REPOSITORY'] = 'OwnerName/repo'; process.env['GITHUB_REPOSITORY'] = 'OwnerName/repo';
process.env['RUNNER_TEMP'] = fakeSourcesDirForTesting;
import * as auth from '../src/authutil'; import * as auth from '../src/authutil';
describe('authutil tests', () => { describe('authutil tests', () => {
@ -95,7 +94,9 @@ describe('authutil tests', () => {
it('No existing config, sets up a full NuGet.config with URL and user/PAT for GPR', async () => { it('No existing config, sets up a full NuGet.config with URL and user/PAT for GPR', async () => {
process.env['NUGET_AUTH_TOKEN'] = 'TEST_FAKE_AUTH_TOKEN'; process.env['NUGET_AUTH_TOKEN'] = 'TEST_FAKE_AUTH_TOKEN';
await auth.configAuthentication( await auth.configAuthentication(
'https://nuget.pkg.github.com/OwnerName/index.json' 'https://nuget.pkg.github.com/OwnerName/index.json',
'',
fakeSourcesDirForTesting
); );
expect(fs.existsSync(nugetConfigFile)).toBe(true); expect(fs.existsSync(nugetConfigFile)).toBe(true);
expect( expect(
@ -107,7 +108,9 @@ describe('authutil tests', () => {
let thrown = false; let thrown = false;
try { try {
await auth.configAuthentication( await auth.configAuthentication(
'https://nuget.pkg.github.com/OwnerName/index.json' 'https://nuget.pkg.github.com/OwnerName/index.json',
'',
fakeSourcesDirForTesting
); );
} catch { } catch {
thrown = true; thrown = true;
@ -119,7 +122,9 @@ describe('authutil tests', () => {
process.env['NUGET_AUTH_TOKEN'] = 'TEST_FAKE_AUTH_TOKEN'; process.env['NUGET_AUTH_TOKEN'] = 'TEST_FAKE_AUTH_TOKEN';
process.env['INPUT_OWNER'] = 'otherorg'; process.env['INPUT_OWNER'] = 'otherorg';
await auth.configAuthentication( await auth.configAuthentication(
'https://nuget.pkg.github.com/otherorg/index.json' 'https://nuget.pkg.github.com/otherorg/index.json',
'',
fakeSourcesDirForTesting
); );
expect(fs.existsSync(nugetConfigFile)).toBe(true); expect(fs.existsSync(nugetConfigFile)).toBe(true);
expect( expect(
@ -137,7 +142,9 @@ describe('authutil tests', () => {
let thrown = false; let thrown = false;
try { try {
await auth.configAuthentication( await auth.configAuthentication(
'https://nuget.pkg.github.com/OwnerName/index.json' 'https://nuget.pkg.github.com/OwnerName/index.json',
'',
fakeSourcesDirForTesting
); );
} catch { } catch {
thrown = true; thrown = true;
@ -153,7 +160,9 @@ describe('authutil tests', () => {
); );
fs.writeFileSync(inputNuGetConfigPath, emptyNuGetConfig); fs.writeFileSync(inputNuGetConfigPath, emptyNuGetConfig);
await auth.configAuthentication( await auth.configAuthentication(
'https://nuget.pkg.github.com/OwnerName/index.json' 'https://nuget.pkg.github.com/OwnerName/index.json',
'',
fakeSourcesDirForTesting
); );
expect(fs.existsSync(nugetConfigFile)).toBe(true); expect(fs.existsSync(nugetConfigFile)).toBe(true);
expect( expect(
@ -169,7 +178,9 @@ describe('authutil tests', () => {
); );
fs.writeFileSync(inputNuGetConfigPath, nugetorgNuGetConfig); fs.writeFileSync(inputNuGetConfigPath, nugetorgNuGetConfig);
await auth.configAuthentication( await auth.configAuthentication(
'https://nuget.pkg.github.com/OwnerName/index.json' 'https://nuget.pkg.github.com/OwnerName/index.json',
'',
fakeSourcesDirForTesting
); );
expect(fs.existsSync(nugetConfigFile)).toBe(true); expect(fs.existsSync(nugetConfigFile)).toBe(true);
expect( expect(
@ -185,7 +196,9 @@ describe('authutil tests', () => {
); );
fs.writeFileSync(inputNuGetConfigPath, gprNuGetConfig); fs.writeFileSync(inputNuGetConfigPath, gprNuGetConfig);
await auth.configAuthentication( await auth.configAuthentication(
'https://nuget.pkg.github.com/OwnerName/index.json' 'https://nuget.pkg.github.com/OwnerName/index.json',
'',
fakeSourcesDirForTesting
); );
expect(fs.existsSync(nugetConfigFile)).toBe(true); expect(fs.existsSync(nugetConfigFile)).toBe(true);
expect( expect(
@ -201,7 +214,9 @@ describe('authutil tests', () => {
); );
fs.writeFileSync(inputNuGetConfigPath, gprnugetorgNuGetConfig); fs.writeFileSync(inputNuGetConfigPath, gprnugetorgNuGetConfig);
await auth.configAuthentication( await auth.configAuthentication(
'https://nuget.pkg.github.com/OwnerName/index.json' 'https://nuget.pkg.github.com/OwnerName/index.json',
'',
fakeSourcesDirForTesting
); );
expect(fs.existsSync(nugetConfigFile)).toBe(true); expect(fs.existsSync(nugetConfigFile)).toBe(true);
expect( expect(
@ -216,7 +231,11 @@ describe('authutil tests', () => {
'nuget.config' 'nuget.config'
); );
fs.writeFileSync(inputNuGetConfigPath, twogprNuGetConfig); fs.writeFileSync(inputNuGetConfigPath, twogprNuGetConfig);
await auth.configAuthentication('https://nuget.pkg.github.com'); await auth.configAuthentication(
'https://nuget.pkg.github.com',
'',
fakeSourcesDirForTesting
);
expect(fs.existsSync(nugetConfigFile)).toBe(true); expect(fs.existsSync(nugetConfigFile)).toBe(true);
expect( expect(
fs.readFileSync(nugetConfigFile, {encoding: 'utf8'}) fs.readFileSync(nugetConfigFile, {encoding: 'utf8'})
@ -233,7 +252,9 @@ describe('authutil tests', () => {
let thrown = false; let thrown = false;
try { try {
await auth.configAuthentication( await auth.configAuthentication(
'https://nuget.pkg.github.com/OwnerName/index.json' 'https://nuget.pkg.github.com/OwnerName/index.json',
'',
fakeSourcesDirForTesting
); );
} catch { } catch {
thrown = true; thrown = true;
@ -255,7 +276,8 @@ describe('authutil tests', () => {
fs.writeFileSync(inputNuGetConfigPath, gprNuGetConfig); fs.writeFileSync(inputNuGetConfigPath, gprNuGetConfig);
await auth.configAuthentication( await auth.configAuthentication(
'https://nuget.pkg.github.com/OwnerName/index.json', 'https://nuget.pkg.github.com/OwnerName/index.json',
'subfolder/nuget.config' 'subfolder/nuget.config',
fakeSourcesDirForTesting
); );
expect(fs.existsSync(nugetConfigFile)).toBe(true); expect(fs.existsSync(nugetConfigFile)).toBe(true);
expect( expect(
@ -271,7 +293,9 @@ describe('authutil tests', () => {
); );
fs.writeFileSync(inputNuGetConfigPath, azureartifactsNuGetConfig); fs.writeFileSync(inputNuGetConfigPath, azureartifactsNuGetConfig);
await auth.configAuthentication( await auth.configAuthentication(
'https://pkgs.dev.azure.com/amullans/_packaging/GitHubBuilds/nuget/v3/index.json' 'https://pkgs.dev.azure.com/amullans/_packaging/GitHubBuilds/nuget/v3/index.json',
'',
fakeSourcesDirForTesting
); );
expect(fs.existsSync(nugetConfigFile)).toBe(true); expect(fs.existsSync(nugetConfigFile)).toBe(true);
expect( expect(
@ -287,7 +311,9 @@ describe('authutil tests', () => {
); );
fs.writeFileSync(inputNuGetConfigPath, azureartifactsnugetorgNuGetConfig); fs.writeFileSync(inputNuGetConfigPath, azureartifactsnugetorgNuGetConfig);
await auth.configAuthentication( await auth.configAuthentication(
'https://pkgs.dev.azure.com/amullans/_packaging/GitHubBuilds/nuget/v3/index.json' 'https://pkgs.dev.azure.com/amullans/_packaging/GitHubBuilds/nuget/v3/index.json',
'',
fakeSourcesDirForTesting
); );
expect(fs.existsSync(nugetConfigFile)).toBe(true); expect(fs.existsSync(nugetConfigFile)).toBe(true);
expect( expect(
@ -298,7 +324,9 @@ describe('authutil tests', () => {
it('No existing config, sets up a full NuGet.config with URL and token for other source', async () => { it('No existing config, sets up a full NuGet.config with URL and token for other source', async () => {
process.env['NUGET_AUTH_TOKEN'] = 'TEST_FAKE_AUTH_TOKEN'; process.env['NUGET_AUTH_TOKEN'] = 'TEST_FAKE_AUTH_TOKEN';
await auth.configAuthentication( await auth.configAuthentication(
'https://pkgs.dev.azure.com/amullans/_packaging/GitHubBuilds/nuget/v3/index.json' 'https://pkgs.dev.azure.com/amullans/_packaging/GitHubBuilds/nuget/v3/index.json',
'',
fakeSourcesDirForTesting
); );
expect(fs.existsSync(nugetConfigFile)).toBe(true); expect(fs.existsSync(nugetConfigFile)).toBe(true);
expect( expect(

View File

@ -3,6 +3,11 @@ if (!$args[0])
throw "Must supply dotnet version argument" throw "Must supply dotnet version argument"
} }
if (-Not (Test-Path "../nuget.config"))
{
throw "nuget file not generated correctly"
}
$dotnet = Get-Command dotnet | Select-Object -First 1 | ForEach-Object { $_.Path } $dotnet = Get-Command dotnet | Select-Object -First 1 | ForEach-Object { $_.Path }
Write-Host "Found '$dotnet'" Write-Host "Found '$dotnet'"

View File

@ -3,6 +3,11 @@ if [ -z "$1" ]; then
exit 1 exit 1
fi fi
if [ ! -f "../nuget.config" ]; then
echo "nuget file not generated correctly"
exit 1
fi
dotnet_version="$(dotnet --version)" dotnet_version="$(dotnet --version)"
echo "Found dotnet version '$dotnet_version'" echo "Found dotnet version '$dotnet_version'"
if [ -z "$(echo $dotnet_version | grep $1)" ]; then if [ -z "$(echo $dotnet_version | grep $1)" ]; then

6
dist/index.js vendored
View File

@ -4964,9 +4964,9 @@ const core = __importStar(__webpack_require__(470));
const github = __importStar(__webpack_require__(469)); const github = __importStar(__webpack_require__(469));
const xmlbuilder = __importStar(__webpack_require__(312)); const xmlbuilder = __importStar(__webpack_require__(312));
const xmlParser = __importStar(__webpack_require__(989)); const xmlParser = __importStar(__webpack_require__(989));
function configAuthentication(feedUrl, existingFileLocation = '') { function configAuthentication(feedUrl, existingFileLocation = '', processRoot = process.cwd()) {
const existingNuGetConfig = path.resolve(process.env['RUNNER_TEMP'] || process.cwd(), existingFileLocation == '' ? 'nuget.config' : existingFileLocation); const existingNuGetConfig = path.resolve(processRoot, existingFileLocation == '' ? 'nuget.config' : existingFileLocation);
const tempNuGetConfig = path.resolve(process.env['RUNNER_TEMP'] || process.cwd(), '../', 'nuget.config'); const tempNuGetConfig = path.resolve(processRoot, '../', 'nuget.config');
writeFeedToFile(feedUrl, existingNuGetConfig, tempNuGetConfig); writeFeedToFile(feedUrl, existingNuGetConfig, tempNuGetConfig);
} }
exports.configAuthentication = configAuthentication; exports.configAuthentication = configAuthentication;

View File

@ -4,18 +4,20 @@ import * as core from '@actions/core';
import * as github from '@actions/github'; import * as github from '@actions/github';
import * as xmlbuilder from 'xmlbuilder'; import * as xmlbuilder from 'xmlbuilder';
import * as xmlParser from 'fast-xml-parser'; import * as xmlParser from 'fast-xml-parser';
import {ProcessEnvOptions} from 'child_process';
export function configAuthentication( export function configAuthentication(
feedUrl: string, feedUrl: string,
existingFileLocation: string = '' existingFileLocation: string = '',
processRoot: string = process.cwd()
) { ) {
const existingNuGetConfig: string = path.resolve( const existingNuGetConfig: string = path.resolve(
process.env['RUNNER_TEMP'] || process.cwd(), processRoot,
existingFileLocation == '' ? 'nuget.config' : existingFileLocation existingFileLocation == '' ? 'nuget.config' : existingFileLocation
); );
const tempNuGetConfig: string = path.resolve( const tempNuGetConfig: string = path.resolve(
process.env['RUNNER_TEMP'] || process.cwd(), processRoot,
'../', '../',
'nuget.config' 'nuget.config'
); );