You've already forked setup-dotnet
							
							
				mirror of
				https://github.com/actions/setup-dotnet.git
				synced 2025-10-31 07:16:21 +07:00 
			
		
		
		
	Add and configure ESLint and update configuration for Prettier (#391)
* Apply ESLint config and update Prettier * Update dependencies and rebuild * Update docs
This commit is contained in:
		| @ -1,336 +1,336 @@ | ||||
| import * as io from '@actions/io'; | ||||
| import fs from 'fs'; | ||||
| import path from 'path'; | ||||
|  | ||||
| const fakeSourcesDirForTesting = path.join( | ||||
|   __dirname, | ||||
|   'runner', | ||||
|   path.join(Math.random().toString(36).substring(7)), | ||||
|   's' | ||||
| ); | ||||
|  | ||||
| const invalidNuGetConfig: string = `<?xml version="1.0" encoding="utf-8"?>`; | ||||
|  | ||||
| const emptyNuGetConfig: string = `<?xml version="1.0" encoding="utf-8"?> | ||||
| <configuration> | ||||
| </configuration>`; | ||||
|  | ||||
| const nugetorgNuGetConfig: string = `<?xml version="1.0" encoding="utf-8"?> | ||||
| <configuration> | ||||
|   <packageSources> | ||||
|     <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" /> | ||||
|   </packageSources> | ||||
| </configuration>`; | ||||
|  | ||||
| const gprnugetorgNuGetConfig: string = `<?xml version="1.0" encoding="utf-8"?> | ||||
| <configuration> | ||||
|   <packageSources> | ||||
|     <add key="GPR" value="https://nuget.pkg.github.com/OwnerName/index.json" protocolVersion="3" /> | ||||
|     <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" /> | ||||
|   </packageSources> | ||||
| </configuration>`; | ||||
|  | ||||
| const gprNuGetConfig: string = `<?xml version="1.0" encoding="utf-8"?> | ||||
| <configuration> | ||||
|   <packageSources> | ||||
|     <add key="GPR" value="https://nuget.pkg.github.com/OwnerName/index.json" protocolVersion="3" /> | ||||
|   </packageSources> | ||||
| </configuration>`; | ||||
|  | ||||
| const twogprNuGetConfig: string = `<?xml version="1.0" encoding="utf-8"?> | ||||
| <configuration> | ||||
|   <packageSources> | ||||
|     <add key="GPR-GitHub" value="https://nuget.pkg.github.com/OwnerName/index.json" protocolVersion="3" /> | ||||
|     <add key="GPR-Actions" value="https://nuget.pkg.github.com/actions/index.json" protocolVersion="3" /> | ||||
|   </packageSources> | ||||
| </configuration>`; | ||||
|  | ||||
| const spaceNuGetConfig: string = `<?xml version="1.0" encoding="utf-8"?> | ||||
| <configuration> | ||||
|   <packageSources> | ||||
|     <add key="GPR GitHub" value="https://nuget.pkg.github.com/OwnerName/index.json" protocolVersion="3" /> | ||||
|   </packageSources> | ||||
| </configuration>`; | ||||
|  | ||||
| const azureartifactsNuGetConfig: string = `<?xml version="1.0" encoding="utf-8"?> | ||||
| <configuration> | ||||
|   <packageSources> | ||||
|     <add key="AzureArtifacts" value="https://pkgs.dev.azure.com/amullans/_packaging/GitHubBuilds/nuget/v3/index.json" protocolVersion="3" /> | ||||
|   </packageSources> | ||||
| </configuration>`; | ||||
|  | ||||
| const azureartifactsnugetorgNuGetConfig: string = `<?xml version="1.0" encoding="utf-8"?> | ||||
| <configuration> | ||||
|   <packageSources> | ||||
|     <add key="AzureArtifacts" value="https://pkgs.dev.azure.com/amullans/_packaging/GitHubBuilds/nuget/v3/index.json" protocolVersion="3" /> | ||||
|     <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" /> | ||||
|   </packageSources> | ||||
| </configuration>`; | ||||
|  | ||||
| // We want a NuGet.config one level above the sources directory, so it doesn't trample a user's NuGet.config but is still picked up by NuGet/dotnet. | ||||
| const nugetConfigFile = path.join(fakeSourcesDirForTesting, '../nuget.config'); | ||||
|  | ||||
| process.env['GITHUB_REPOSITORY'] = 'OwnerName/repo'; | ||||
| import * as auth from '../src/authutil'; | ||||
|  | ||||
| describe('authutil tests', () => { | ||||
|   beforeEach(async () => { | ||||
|     await io.rmRF(fakeSourcesDirForTesting); | ||||
|     await io.mkdirP(fakeSourcesDirForTesting); | ||||
|   }, 30000); | ||||
|  | ||||
|   afterAll(async () => { | ||||
|     await io.rmRF(fakeSourcesDirForTesting); | ||||
|   }, 30000); | ||||
|  | ||||
|   beforeEach(() => { | ||||
|     if (fs.existsSync(nugetConfigFile)) { | ||||
|       fs.unlinkSync(nugetConfigFile); | ||||
|     } | ||||
|     process.env['INPUT_OWNER'] = ''; | ||||
|     process.env['NUGET_AUTH_TOKEN'] = ''; | ||||
|   }); | ||||
|  | ||||
|   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'; | ||||
|     await auth.configAuthentication( | ||||
|       'https://nuget.pkg.github.com/OwnerName/index.json', | ||||
|       '', | ||||
|       fakeSourcesDirForTesting | ||||
|     ); | ||||
|     expect(fs.existsSync(nugetConfigFile)).toBe(true); | ||||
|     expect( | ||||
|       fs.readFileSync(nugetConfigFile, {encoding: 'utf8'}) | ||||
|     ).toMatchSnapshot(); | ||||
|   }); | ||||
|  | ||||
|   it('No existing config, auth token environment variable not provided, throws', async () => { | ||||
|     let thrown = false; | ||||
|     try { | ||||
|       await auth.configAuthentication( | ||||
|         'https://nuget.pkg.github.com/OwnerName/index.json', | ||||
|         '', | ||||
|         fakeSourcesDirForTesting | ||||
|       ); | ||||
|     } catch { | ||||
|       thrown = true; | ||||
|     } | ||||
|     expect(thrown).toBe(true); | ||||
|   }); | ||||
|  | ||||
|   it('No existing config, sets up a full NuGet.config with URL and other owner/PAT for GPR', async () => { | ||||
|     process.env['NUGET_AUTH_TOKEN'] = 'TEST_FAKE_AUTH_TOKEN'; | ||||
|     process.env['INPUT_OWNER'] = 'otherorg'; | ||||
|     await auth.configAuthentication( | ||||
|       'https://nuget.pkg.github.com/otherorg/index.json', | ||||
|       '', | ||||
|       fakeSourcesDirForTesting | ||||
|     ); | ||||
|     expect(fs.existsSync(nugetConfigFile)).toBe(true); | ||||
|     expect( | ||||
|       fs.readFileSync(nugetConfigFile, {encoding: 'utf8'}) | ||||
|     ).toMatchSnapshot(); | ||||
|   }); | ||||
|  | ||||
|   it('Existing config (invalid), tries to parse an invalid NuGet.config and throws', async () => { | ||||
|     process.env['NUGET_AUTH_TOKEN'] = 'TEST_FAKE_AUTH_TOKEN'; | ||||
|     const inputNuGetConfigPath: string = path.join( | ||||
|       fakeSourcesDirForTesting, | ||||
|       'nuget.config' | ||||
|     ); | ||||
|     fs.writeFileSync(inputNuGetConfigPath, invalidNuGetConfig); | ||||
|     let thrown = false; | ||||
|     try { | ||||
|       await auth.configAuthentication( | ||||
|         'https://nuget.pkg.github.com/OwnerName/index.json', | ||||
|         '', | ||||
|         fakeSourcesDirForTesting | ||||
|       ); | ||||
|     } catch { | ||||
|       thrown = true; | ||||
|     } | ||||
|     expect(thrown).toBe(true); | ||||
|   }); | ||||
|  | ||||
|   it('Existing config w/ no sources, sets up a full NuGet.config with URL and user/PAT for GPR', async () => { | ||||
|     process.env['NUGET_AUTH_TOKEN'] = 'TEST_FAKE_AUTH_TOKEN'; | ||||
|     const inputNuGetConfigPath: string = path.join( | ||||
|       fakeSourcesDirForTesting, | ||||
|       'nuget.config' | ||||
|     ); | ||||
|     fs.writeFileSync(inputNuGetConfigPath, emptyNuGetConfig); | ||||
|     await auth.configAuthentication( | ||||
|       'https://nuget.pkg.github.com/OwnerName/index.json', | ||||
|       '', | ||||
|       fakeSourcesDirForTesting | ||||
|     ); | ||||
|     expect(fs.existsSync(nugetConfigFile)).toBe(true); | ||||
|     expect( | ||||
|       fs.readFileSync(nugetConfigFile, {encoding: 'utf8'}) | ||||
|     ).toMatchSnapshot(); | ||||
|   }); | ||||
|  | ||||
|   it('Existing config w/ no GPR sources, sets up a full NuGet.config with URL and user/PAT for GPR', async () => { | ||||
|     process.env['NUGET_AUTH_TOKEN'] = 'TEST_FAKE_AUTH_TOKEN'; | ||||
|     const inputNuGetConfigPath: string = path.join( | ||||
|       fakeSourcesDirForTesting, | ||||
|       'nuget.config' | ||||
|     ); | ||||
|     fs.writeFileSync(inputNuGetConfigPath, nugetorgNuGetConfig); | ||||
|     await auth.configAuthentication( | ||||
|       'https://nuget.pkg.github.com/OwnerName/index.json', | ||||
|       '', | ||||
|       fakeSourcesDirForTesting | ||||
|     ); | ||||
|     expect(fs.existsSync(nugetConfigFile)).toBe(true); | ||||
|     expect( | ||||
|       fs.readFileSync(nugetConfigFile, {encoding: 'utf8'}) | ||||
|     ).toMatchSnapshot(); | ||||
|   }); | ||||
|  | ||||
|   it('Existing config w/ only GPR source, sets up a partial NuGet.config user/PAT for GPR', async () => { | ||||
|     process.env['NUGET_AUTH_TOKEN'] = 'TEST_FAKE_AUTH_TOKEN'; | ||||
|     const inputNuGetConfigPath: string = path.join( | ||||
|       fakeSourcesDirForTesting, | ||||
|       'nuget.config' | ||||
|     ); | ||||
|     fs.writeFileSync(inputNuGetConfigPath, gprNuGetConfig); | ||||
|     await auth.configAuthentication( | ||||
|       'https://nuget.pkg.github.com/OwnerName/index.json', | ||||
|       '', | ||||
|       fakeSourcesDirForTesting | ||||
|     ); | ||||
|     expect(fs.existsSync(nugetConfigFile)).toBe(true); | ||||
|     expect( | ||||
|       fs.readFileSync(nugetConfigFile, {encoding: 'utf8'}) | ||||
|     ).toMatchSnapshot(); | ||||
|   }); | ||||
|  | ||||
|   it('Existing config w/ GPR source and NuGet.org, sets up a partial NuGet.config user/PAT for GPR', async () => { | ||||
|     process.env['NUGET_AUTH_TOKEN'] = 'TEST_FAKE_AUTH_TOKEN'; | ||||
|     const inputNuGetConfigPath: string = path.join( | ||||
|       fakeSourcesDirForTesting, | ||||
|       'nuget.config' | ||||
|     ); | ||||
|     fs.writeFileSync(inputNuGetConfigPath, gprnugetorgNuGetConfig); | ||||
|     await auth.configAuthentication( | ||||
|       'https://nuget.pkg.github.com/OwnerName/index.json', | ||||
|       '', | ||||
|       fakeSourcesDirForTesting | ||||
|     ); | ||||
|     expect(fs.existsSync(nugetConfigFile)).toBe(true); | ||||
|     expect( | ||||
|       fs.readFileSync(nugetConfigFile, {encoding: 'utf8'}) | ||||
|     ).toMatchSnapshot(); | ||||
|   }); | ||||
|  | ||||
|   it('Existing config w/ two GPR sources, sets up a partial NuGet.config user/PAT for GPR', async () => { | ||||
|     process.env['NUGET_AUTH_TOKEN'] = 'TEST_FAKE_AUTH_TOKEN'; | ||||
|     const inputNuGetConfigPath: string = path.join( | ||||
|       fakeSourcesDirForTesting, | ||||
|       'nuget.config' | ||||
|     ); | ||||
|     fs.writeFileSync(inputNuGetConfigPath, twogprNuGetConfig); | ||||
|     await auth.configAuthentication( | ||||
|       'https://nuget.pkg.github.com', | ||||
|       '', | ||||
|       fakeSourcesDirForTesting | ||||
|     ); | ||||
|     expect(fs.existsSync(nugetConfigFile)).toBe(true); | ||||
|     expect( | ||||
|       fs.readFileSync(nugetConfigFile, {encoding: 'utf8'}) | ||||
|     ).toMatchSnapshot(); | ||||
|   }); | ||||
|  | ||||
|   it('Existing config w/ spaces in key, throws for now', async () => { | ||||
|     process.env['NUGET_AUTH_TOKEN'] = 'TEST_FAKE_AUTH_TOKEN'; | ||||
|     const inputNuGetConfigPath: string = path.join( | ||||
|       fakeSourcesDirForTesting, | ||||
|       'nuget.config' | ||||
|     ); | ||||
|     fs.writeFileSync(inputNuGetConfigPath, spaceNuGetConfig); | ||||
|     let thrown = false; | ||||
|     try { | ||||
|       await auth.configAuthentication( | ||||
|         'https://nuget.pkg.github.com/OwnerName/index.json', | ||||
|         '', | ||||
|         fakeSourcesDirForTesting | ||||
|       ); | ||||
|     } catch { | ||||
|       thrown = true; | ||||
|     } | ||||
|     expect(thrown).toBe(true); | ||||
|   }); | ||||
|  | ||||
|   it('Existing config not in repo root, sets up a partial NuGet.config user/PAT for GPR', async () => { | ||||
|     process.env['NUGET_AUTH_TOKEN'] = 'TEST_FAKE_AUTH_TOKEN'; | ||||
|     const inputNuGetConfigDirectory: string = path.join( | ||||
|       fakeSourcesDirForTesting, | ||||
|       'subfolder' | ||||
|     ); | ||||
|     const inputNuGetConfigPath: string = path.join( | ||||
|       inputNuGetConfigDirectory, | ||||
|       'nuget.config' | ||||
|     ); | ||||
|     fs.mkdirSync(inputNuGetConfigDirectory, {recursive: true}); | ||||
|     fs.writeFileSync(inputNuGetConfigPath, gprNuGetConfig); | ||||
|     await auth.configAuthentication( | ||||
|       'https://nuget.pkg.github.com/OwnerName/index.json', | ||||
|       'subfolder/nuget.config', | ||||
|       fakeSourcesDirForTesting | ||||
|     ); | ||||
|     expect(fs.existsSync(nugetConfigFile)).toBe(true); | ||||
|     expect( | ||||
|       fs.readFileSync(nugetConfigFile, {encoding: 'utf8'}) | ||||
|     ).toMatchSnapshot(); | ||||
|   }); | ||||
|  | ||||
|   it('Existing config w/ only Azure Artifacts source, sets up a partial NuGet.config user/PAT for GPR', async () => { | ||||
|     process.env['NUGET_AUTH_TOKEN'] = 'TEST_FAKE_AUTH_TOKEN'; | ||||
|     const inputNuGetConfigPath: string = path.join( | ||||
|       fakeSourcesDirForTesting, | ||||
|       'nuget.config' | ||||
|     ); | ||||
|     fs.writeFileSync(inputNuGetConfigPath, azureartifactsNuGetConfig); | ||||
|     await auth.configAuthentication( | ||||
|       'https://pkgs.dev.azure.com/amullans/_packaging/GitHubBuilds/nuget/v3/index.json', | ||||
|       '', | ||||
|       fakeSourcesDirForTesting | ||||
|     ); | ||||
|     expect(fs.existsSync(nugetConfigFile)).toBe(true); | ||||
|     expect( | ||||
|       fs.readFileSync(nugetConfigFile, {encoding: 'utf8'}) | ||||
|     ).toMatchSnapshot(); | ||||
|   }); | ||||
|  | ||||
|   it('Existing config w/ Azure Artifacts source and NuGet.org, sets up a partial NuGet.config user/PAT for GPR', async () => { | ||||
|     process.env['NUGET_AUTH_TOKEN'] = 'TEST_FAKE_AUTH_TOKEN'; | ||||
|     const inputNuGetConfigPath: string = path.join( | ||||
|       fakeSourcesDirForTesting, | ||||
|       'nuget.config' | ||||
|     ); | ||||
|     fs.writeFileSync(inputNuGetConfigPath, azureartifactsnugetorgNuGetConfig); | ||||
|     await auth.configAuthentication( | ||||
|       'https://pkgs.dev.azure.com/amullans/_packaging/GitHubBuilds/nuget/v3/index.json', | ||||
|       '', | ||||
|       fakeSourcesDirForTesting | ||||
|     ); | ||||
|     expect(fs.existsSync(nugetConfigFile)).toBe(true); | ||||
|     expect( | ||||
|       fs.readFileSync(nugetConfigFile, {encoding: 'utf8'}) | ||||
|     ).toMatchSnapshot(); | ||||
|   }); | ||||
|  | ||||
|   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'; | ||||
|     await auth.configAuthentication( | ||||
|       'https://pkgs.dev.azure.com/amullans/_packaging/GitHubBuilds/nuget/v3/index.json', | ||||
|       '', | ||||
|       fakeSourcesDirForTesting | ||||
|     ); | ||||
|     expect(fs.existsSync(nugetConfigFile)).toBe(true); | ||||
|     expect( | ||||
|       fs.readFileSync(nugetConfigFile, {encoding: 'utf8'}) | ||||
|     ).toMatchSnapshot(); | ||||
|   }); | ||||
| }); | ||||
| import * as io from '@actions/io'; | ||||
| import fs from 'fs'; | ||||
| import path from 'path'; | ||||
|  | ||||
| const fakeSourcesDirForTesting = path.join( | ||||
|   __dirname, | ||||
|   'runner', | ||||
|   path.join(Math.random().toString(36).substring(7)), | ||||
|   's' | ||||
| ); | ||||
|  | ||||
| const invalidNuGetConfig = `<?xml version="1.0" encoding="utf-8"?>`; | ||||
|  | ||||
| const emptyNuGetConfig = `<?xml version="1.0" encoding="utf-8"?> | ||||
| <configuration> | ||||
| </configuration>`; | ||||
|  | ||||
| const nugetorgNuGetConfig = `<?xml version="1.0" encoding="utf-8"?> | ||||
| <configuration> | ||||
|   <packageSources> | ||||
|     <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" /> | ||||
|   </packageSources> | ||||
| </configuration>`; | ||||
|  | ||||
| const gprnugetorgNuGetConfig = `<?xml version="1.0" encoding="utf-8"?> | ||||
| <configuration> | ||||
|   <packageSources> | ||||
|     <add key="GPR" value="https://nuget.pkg.github.com/OwnerName/index.json" protocolVersion="3" /> | ||||
|     <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" /> | ||||
|   </packageSources> | ||||
| </configuration>`; | ||||
|  | ||||
| const gprNuGetConfig = `<?xml version="1.0" encoding="utf-8"?> | ||||
| <configuration> | ||||
|   <packageSources> | ||||
|     <add key="GPR" value="https://nuget.pkg.github.com/OwnerName/index.json" protocolVersion="3" /> | ||||
|   </packageSources> | ||||
| </configuration>`; | ||||
|  | ||||
| const twogprNuGetConfig = `<?xml version="1.0" encoding="utf-8"?> | ||||
| <configuration> | ||||
|   <packageSources> | ||||
|     <add key="GPR-GitHub" value="https://nuget.pkg.github.com/OwnerName/index.json" protocolVersion="3" /> | ||||
|     <add key="GPR-Actions" value="https://nuget.pkg.github.com/actions/index.json" protocolVersion="3" /> | ||||
|   </packageSources> | ||||
| </configuration>`; | ||||
|  | ||||
| const spaceNuGetConfig = `<?xml version="1.0" encoding="utf-8"?> | ||||
| <configuration> | ||||
|   <packageSources> | ||||
|     <add key="GPR GitHub" value="https://nuget.pkg.github.com/OwnerName/index.json" protocolVersion="3" /> | ||||
|   </packageSources> | ||||
| </configuration>`; | ||||
|  | ||||
| const azureartifactsNuGetConfig = `<?xml version="1.0" encoding="utf-8"?> | ||||
| <configuration> | ||||
|   <packageSources> | ||||
|     <add key="AzureArtifacts" value="https://pkgs.dev.azure.com/amullans/_packaging/GitHubBuilds/nuget/v3/index.json" protocolVersion="3" /> | ||||
|   </packageSources> | ||||
| </configuration>`; | ||||
|  | ||||
| const azureartifactsnugetorgNuGetConfig = `<?xml version="1.0" encoding="utf-8"?> | ||||
| <configuration> | ||||
|   <packageSources> | ||||
|     <add key="AzureArtifacts" value="https://pkgs.dev.azure.com/amullans/_packaging/GitHubBuilds/nuget/v3/index.json" protocolVersion="3" /> | ||||
|     <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" /> | ||||
|   </packageSources> | ||||
| </configuration>`; | ||||
|  | ||||
| // We want a NuGet.config one level above the sources directory, so it doesn't trample a user's NuGet.config but is still picked up by NuGet/dotnet. | ||||
| const nugetConfigFile = path.join(fakeSourcesDirForTesting, '../nuget.config'); | ||||
|  | ||||
| process.env['GITHUB_REPOSITORY'] = 'OwnerName/repo'; | ||||
| import * as auth from '../src/authutil'; | ||||
|  | ||||
| describe('authutil tests', () => { | ||||
|   beforeEach(async () => { | ||||
|     await io.rmRF(fakeSourcesDirForTesting); | ||||
|     await io.mkdirP(fakeSourcesDirForTesting); | ||||
|   }, 30000); | ||||
|  | ||||
|   afterAll(async () => { | ||||
|     await io.rmRF(fakeSourcesDirForTesting); | ||||
|   }, 30000); | ||||
|  | ||||
|   beforeEach(() => { | ||||
|     if (fs.existsSync(nugetConfigFile)) { | ||||
|       fs.unlinkSync(nugetConfigFile); | ||||
|     } | ||||
|     process.env['INPUT_OWNER'] = ''; | ||||
|     process.env['NUGET_AUTH_TOKEN'] = ''; | ||||
|   }); | ||||
|  | ||||
|   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'; | ||||
|     await auth.configAuthentication( | ||||
|       'https://nuget.pkg.github.com/OwnerName/index.json', | ||||
|       '', | ||||
|       fakeSourcesDirForTesting | ||||
|     ); | ||||
|     expect(fs.existsSync(nugetConfigFile)).toBe(true); | ||||
|     expect( | ||||
|       fs.readFileSync(nugetConfigFile, {encoding: 'utf8'}) | ||||
|     ).toMatchSnapshot(); | ||||
|   }); | ||||
|  | ||||
|   it('No existing config, auth token environment variable not provided, throws', async () => { | ||||
|     let thrown = false; | ||||
|     try { | ||||
|       await auth.configAuthentication( | ||||
|         'https://nuget.pkg.github.com/OwnerName/index.json', | ||||
|         '', | ||||
|         fakeSourcesDirForTesting | ||||
|       ); | ||||
|     } catch { | ||||
|       thrown = true; | ||||
|     } | ||||
|     expect(thrown).toBe(true); | ||||
|   }); | ||||
|  | ||||
|   it('No existing config, sets up a full NuGet.config with URL and other owner/PAT for GPR', async () => { | ||||
|     process.env['NUGET_AUTH_TOKEN'] = 'TEST_FAKE_AUTH_TOKEN'; | ||||
|     process.env['INPUT_OWNER'] = 'otherorg'; | ||||
|     await auth.configAuthentication( | ||||
|       'https://nuget.pkg.github.com/otherorg/index.json', | ||||
|       '', | ||||
|       fakeSourcesDirForTesting | ||||
|     ); | ||||
|     expect(fs.existsSync(nugetConfigFile)).toBe(true); | ||||
|     expect( | ||||
|       fs.readFileSync(nugetConfigFile, {encoding: 'utf8'}) | ||||
|     ).toMatchSnapshot(); | ||||
|   }); | ||||
|  | ||||
|   it('Existing config (invalid), tries to parse an invalid NuGet.config and throws', async () => { | ||||
|     process.env['NUGET_AUTH_TOKEN'] = 'TEST_FAKE_AUTH_TOKEN'; | ||||
|     const inputNuGetConfigPath: string = path.join( | ||||
|       fakeSourcesDirForTesting, | ||||
|       'nuget.config' | ||||
|     ); | ||||
|     fs.writeFileSync(inputNuGetConfigPath, invalidNuGetConfig); | ||||
|     let thrown = false; | ||||
|     try { | ||||
|       await auth.configAuthentication( | ||||
|         'https://nuget.pkg.github.com/OwnerName/index.json', | ||||
|         '', | ||||
|         fakeSourcesDirForTesting | ||||
|       ); | ||||
|     } catch { | ||||
|       thrown = true; | ||||
|     } | ||||
|     expect(thrown).toBe(true); | ||||
|   }); | ||||
|  | ||||
|   it('Existing config w/ no sources, sets up a full NuGet.config with URL and user/PAT for GPR', async () => { | ||||
|     process.env['NUGET_AUTH_TOKEN'] = 'TEST_FAKE_AUTH_TOKEN'; | ||||
|     const inputNuGetConfigPath: string = path.join( | ||||
|       fakeSourcesDirForTesting, | ||||
|       'nuget.config' | ||||
|     ); | ||||
|     fs.writeFileSync(inputNuGetConfigPath, emptyNuGetConfig); | ||||
|     await auth.configAuthentication( | ||||
|       'https://nuget.pkg.github.com/OwnerName/index.json', | ||||
|       '', | ||||
|       fakeSourcesDirForTesting | ||||
|     ); | ||||
|     expect(fs.existsSync(nugetConfigFile)).toBe(true); | ||||
|     expect( | ||||
|       fs.readFileSync(nugetConfigFile, {encoding: 'utf8'}) | ||||
|     ).toMatchSnapshot(); | ||||
|   }); | ||||
|  | ||||
|   it('Existing config w/ no GPR sources, sets up a full NuGet.config with URL and user/PAT for GPR', async () => { | ||||
|     process.env['NUGET_AUTH_TOKEN'] = 'TEST_FAKE_AUTH_TOKEN'; | ||||
|     const inputNuGetConfigPath: string = path.join( | ||||
|       fakeSourcesDirForTesting, | ||||
|       'nuget.config' | ||||
|     ); | ||||
|     fs.writeFileSync(inputNuGetConfigPath, nugetorgNuGetConfig); | ||||
|     await auth.configAuthentication( | ||||
|       'https://nuget.pkg.github.com/OwnerName/index.json', | ||||
|       '', | ||||
|       fakeSourcesDirForTesting | ||||
|     ); | ||||
|     expect(fs.existsSync(nugetConfigFile)).toBe(true); | ||||
|     expect( | ||||
|       fs.readFileSync(nugetConfigFile, {encoding: 'utf8'}) | ||||
|     ).toMatchSnapshot(); | ||||
|   }); | ||||
|  | ||||
|   it('Existing config w/ only GPR source, sets up a partial NuGet.config user/PAT for GPR', async () => { | ||||
|     process.env['NUGET_AUTH_TOKEN'] = 'TEST_FAKE_AUTH_TOKEN'; | ||||
|     const inputNuGetConfigPath: string = path.join( | ||||
|       fakeSourcesDirForTesting, | ||||
|       'nuget.config' | ||||
|     ); | ||||
|     fs.writeFileSync(inputNuGetConfigPath, gprNuGetConfig); | ||||
|     await auth.configAuthentication( | ||||
|       'https://nuget.pkg.github.com/OwnerName/index.json', | ||||
|       '', | ||||
|       fakeSourcesDirForTesting | ||||
|     ); | ||||
|     expect(fs.existsSync(nugetConfigFile)).toBe(true); | ||||
|     expect( | ||||
|       fs.readFileSync(nugetConfigFile, {encoding: 'utf8'}) | ||||
|     ).toMatchSnapshot(); | ||||
|   }); | ||||
|  | ||||
|   it('Existing config w/ GPR source and NuGet.org, sets up a partial NuGet.config user/PAT for GPR', async () => { | ||||
|     process.env['NUGET_AUTH_TOKEN'] = 'TEST_FAKE_AUTH_TOKEN'; | ||||
|     const inputNuGetConfigPath: string = path.join( | ||||
|       fakeSourcesDirForTesting, | ||||
|       'nuget.config' | ||||
|     ); | ||||
|     fs.writeFileSync(inputNuGetConfigPath, gprnugetorgNuGetConfig); | ||||
|     await auth.configAuthentication( | ||||
|       'https://nuget.pkg.github.com/OwnerName/index.json', | ||||
|       '', | ||||
|       fakeSourcesDirForTesting | ||||
|     ); | ||||
|     expect(fs.existsSync(nugetConfigFile)).toBe(true); | ||||
|     expect( | ||||
|       fs.readFileSync(nugetConfigFile, {encoding: 'utf8'}) | ||||
|     ).toMatchSnapshot(); | ||||
|   }); | ||||
|  | ||||
|   it('Existing config w/ two GPR sources, sets up a partial NuGet.config user/PAT for GPR', async () => { | ||||
|     process.env['NUGET_AUTH_TOKEN'] = 'TEST_FAKE_AUTH_TOKEN'; | ||||
|     const inputNuGetConfigPath: string = path.join( | ||||
|       fakeSourcesDirForTesting, | ||||
|       'nuget.config' | ||||
|     ); | ||||
|     fs.writeFileSync(inputNuGetConfigPath, twogprNuGetConfig); | ||||
|     await auth.configAuthentication( | ||||
|       'https://nuget.pkg.github.com', | ||||
|       '', | ||||
|       fakeSourcesDirForTesting | ||||
|     ); | ||||
|     expect(fs.existsSync(nugetConfigFile)).toBe(true); | ||||
|     expect( | ||||
|       fs.readFileSync(nugetConfigFile, {encoding: 'utf8'}) | ||||
|     ).toMatchSnapshot(); | ||||
|   }); | ||||
|  | ||||
|   it('Existing config w/ spaces in key, throws for now', async () => { | ||||
|     process.env['NUGET_AUTH_TOKEN'] = 'TEST_FAKE_AUTH_TOKEN'; | ||||
|     const inputNuGetConfigPath: string = path.join( | ||||
|       fakeSourcesDirForTesting, | ||||
|       'nuget.config' | ||||
|     ); | ||||
|     fs.writeFileSync(inputNuGetConfigPath, spaceNuGetConfig); | ||||
|     let thrown = false; | ||||
|     try { | ||||
|       await auth.configAuthentication( | ||||
|         'https://nuget.pkg.github.com/OwnerName/index.json', | ||||
|         '', | ||||
|         fakeSourcesDirForTesting | ||||
|       ); | ||||
|     } catch { | ||||
|       thrown = true; | ||||
|     } | ||||
|     expect(thrown).toBe(true); | ||||
|   }); | ||||
|  | ||||
|   it('Existing config not in repo root, sets up a partial NuGet.config user/PAT for GPR', async () => { | ||||
|     process.env['NUGET_AUTH_TOKEN'] = 'TEST_FAKE_AUTH_TOKEN'; | ||||
|     const inputNuGetConfigDirectory: string = path.join( | ||||
|       fakeSourcesDirForTesting, | ||||
|       'subfolder' | ||||
|     ); | ||||
|     const inputNuGetConfigPath: string = path.join( | ||||
|       inputNuGetConfigDirectory, | ||||
|       'nuget.config' | ||||
|     ); | ||||
|     fs.mkdirSync(inputNuGetConfigDirectory, {recursive: true}); | ||||
|     fs.writeFileSync(inputNuGetConfigPath, gprNuGetConfig); | ||||
|     await auth.configAuthentication( | ||||
|       'https://nuget.pkg.github.com/OwnerName/index.json', | ||||
|       'subfolder/nuget.config', | ||||
|       fakeSourcesDirForTesting | ||||
|     ); | ||||
|     expect(fs.existsSync(nugetConfigFile)).toBe(true); | ||||
|     expect( | ||||
|       fs.readFileSync(nugetConfigFile, {encoding: 'utf8'}) | ||||
|     ).toMatchSnapshot(); | ||||
|   }); | ||||
|  | ||||
|   it('Existing config w/ only Azure Artifacts source, sets up a partial NuGet.config user/PAT for GPR', async () => { | ||||
|     process.env['NUGET_AUTH_TOKEN'] = 'TEST_FAKE_AUTH_TOKEN'; | ||||
|     const inputNuGetConfigPath: string = path.join( | ||||
|       fakeSourcesDirForTesting, | ||||
|       'nuget.config' | ||||
|     ); | ||||
|     fs.writeFileSync(inputNuGetConfigPath, azureartifactsNuGetConfig); | ||||
|     await auth.configAuthentication( | ||||
|       'https://pkgs.dev.azure.com/amullans/_packaging/GitHubBuilds/nuget/v3/index.json', | ||||
|       '', | ||||
|       fakeSourcesDirForTesting | ||||
|     ); | ||||
|     expect(fs.existsSync(nugetConfigFile)).toBe(true); | ||||
|     expect( | ||||
|       fs.readFileSync(nugetConfigFile, {encoding: 'utf8'}) | ||||
|     ).toMatchSnapshot(); | ||||
|   }); | ||||
|  | ||||
|   it('Existing config w/ Azure Artifacts source and NuGet.org, sets up a partial NuGet.config user/PAT for GPR', async () => { | ||||
|     process.env['NUGET_AUTH_TOKEN'] = 'TEST_FAKE_AUTH_TOKEN'; | ||||
|     const inputNuGetConfigPath: string = path.join( | ||||
|       fakeSourcesDirForTesting, | ||||
|       'nuget.config' | ||||
|     ); | ||||
|     fs.writeFileSync(inputNuGetConfigPath, azureartifactsnugetorgNuGetConfig); | ||||
|     await auth.configAuthentication( | ||||
|       'https://pkgs.dev.azure.com/amullans/_packaging/GitHubBuilds/nuget/v3/index.json', | ||||
|       '', | ||||
|       fakeSourcesDirForTesting | ||||
|     ); | ||||
|     expect(fs.existsSync(nugetConfigFile)).toBe(true); | ||||
|     expect( | ||||
|       fs.readFileSync(nugetConfigFile, {encoding: 'utf8'}) | ||||
|     ).toMatchSnapshot(); | ||||
|   }); | ||||
|  | ||||
|   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'; | ||||
|     await auth.configAuthentication( | ||||
|       'https://pkgs.dev.azure.com/amullans/_packaging/GitHubBuilds/nuget/v3/index.json', | ||||
|       '', | ||||
|       fakeSourcesDirForTesting | ||||
|     ); | ||||
|     expect(fs.existsSync(nugetConfigFile)).toBe(true); | ||||
|     expect( | ||||
|       fs.readFileSync(nugetConfigFile, {encoding: 'utf8'}) | ||||
|     ).toMatchSnapshot(); | ||||
|   }); | ||||
| }); | ||||
|  | ||||
| @ -1,19 +1,19 @@ | ||||
| import cscFile from '../.github/csc.json'; | ||||
| describe('csc tests', () => { | ||||
|   it('Valid regular expression', async () => { | ||||
|     var cscFile = require('../.github/csc.json'); | ||||
|     var regex = cscFile['problemMatcher'][0]['pattern'][0]['regexp']; | ||||
|     const regex = cscFile['problemMatcher'][0]['pattern'][0]['regexp']; | ||||
|  | ||||
|     console.log(regex); | ||||
|     var re = new RegExp(regex); | ||||
|     const re = new RegExp(regex); | ||||
|  | ||||
|     // Ideally we would verify that this | ||||
|     var stringsToMatch = [ | ||||
|     const stringsToMatch = [ | ||||
|       'Program.cs(10,79): error CS1002: ; expected [/Users/zacharyeisinger/Documents/repo/setup-dotnet/__tests__/sample-broken-csproj/sample.csproj]', | ||||
|       "S:\\Msbuild\\src\\Build\\Evaluation\\ExpressionShredder.cs(33,7): error CS1003: Syntax error, ',' expected [S:\\msbuild\\src\\Build\\Microsoft.Build.csproj > Properties:prop]" | ||||
|     ]; | ||||
|  | ||||
|     stringsToMatch.forEach(string => { | ||||
|       var matchStr = string.match(re); | ||||
|       const matchStr = string.match(re); | ||||
|       console.log(matchStr); | ||||
|       expect(matchStr).toEqual(expect.anything()); | ||||
|     }); | ||||
|  | ||||
| @ -68,8 +68,8 @@ describe('DotnetCoreInstaller tests', () => { | ||||
|       expect(fs.existsSync(path.join(toolDir, 'dotnet'))).toBe(true); | ||||
|     } | ||||
|  | ||||
|     expect(process.env.DOTNET_ROOT).toBeDefined; | ||||
|     expect(process.env.PATH).toBeDefined; | ||||
|     expect(process.env.DOTNET_ROOT).toBeDefined(); | ||||
|     expect(process.env.PATH).toBeDefined(); | ||||
|     expect(process.env.DOTNET_ROOT).toBe(toolDir); | ||||
|     expect(process.env.PATH?.startsWith(toolDir)).toBe(true); | ||||
|   }, 600000); | ||||
| @ -83,15 +83,15 @@ describe('DotnetCoreInstaller tests', () => { | ||||
|       expect(fs.existsSync(path.join(toolDir, 'dotnet'))).toBe(true); | ||||
|     } | ||||
|  | ||||
|     expect(process.env.DOTNET_ROOT).toBeDefined; | ||||
|     expect(process.env.PATH).toBeDefined; | ||||
|     expect(process.env.DOTNET_ROOT).toBeDefined(); | ||||
|     expect(process.env.PATH).toBeDefined(); | ||||
|     expect(process.env.DOTNET_ROOT).toBe(toolDir); | ||||
|     expect(process.env.PATH?.startsWith(toolDir)).toBe(true); | ||||
|   }, 600000); //This needs some time to download on "slower" internet connections | ||||
|  | ||||
|   it('Acquires generic version of dotnet if no matching version is installed', async () => { | ||||
|     await getDotnet('3.1'); | ||||
|     var directory = fs | ||||
|     const directory = fs | ||||
|       .readdirSync(path.join(toolDir, 'sdk')) | ||||
|       .filter(fn => fn.startsWith('3.1.')); | ||||
|     expect(directory.length > 0).toBe(true); | ||||
| @ -101,17 +101,16 @@ describe('DotnetCoreInstaller tests', () => { | ||||
|       expect(fs.existsSync(path.join(toolDir, 'dotnet'))).toBe(true); | ||||
|     } | ||||
|  | ||||
|     expect(process.env.DOTNET_ROOT).toBeDefined; | ||||
|     expect(process.env.PATH).toBeDefined; | ||||
|     expect(process.env.DOTNET_ROOT).toBeDefined(); | ||||
|     expect(process.env.PATH).toBeDefined(); | ||||
|     expect(process.env.DOTNET_ROOT).toBe(toolDir); | ||||
|     expect(process.env.PATH?.startsWith(toolDir)).toBe(true); | ||||
|   }, 600000); //This needs some time to download on "slower" internet connections | ||||
|  | ||||
|   it('Returns string with installed SDK version', async () => { | ||||
|     const version = '3.1.120'; | ||||
|     let installedVersion: string; | ||||
|  | ||||
|     installedVersion = await getDotnet(version); | ||||
|     const installedVersion = await getDotnet(version); | ||||
|  | ||||
|     expect(installedVersion).toBe('3.1.120'); | ||||
|   }, 600000); | ||||
| @ -143,7 +142,7 @@ describe('DotnetCoreInstaller tests', () => { | ||||
|   }, 30000); | ||||
|  | ||||
|   it('Uses an up to date powershell download script', async () => { | ||||
|     var httpCallbackClient = new hc.HttpClient('setup-dotnet-test', [], { | ||||
|     const httpCallbackClient = new hc.HttpClient('setup-dotnet-test', [], { | ||||
|       allowRetries: true, | ||||
|       maxRetries: 3 | ||||
|     }); | ||||
| @ -180,7 +179,7 @@ describe('DotnetVersionResolver tests', () => { | ||||
|       ); | ||||
|       const versionObject = await dotnetVersionResolver.createDotNetVersion(); | ||||
|  | ||||
|       expect(!!versionObject.value).toBeTruthy; | ||||
|       expect(!!versionObject.value).toBe(true); | ||||
|     } | ||||
|   ); | ||||
|  | ||||
| @ -223,15 +222,27 @@ describe('DotnetVersionResolver tests', () => { | ||||
|   ); | ||||
|  | ||||
|   each(['3.1', '3.1.x', '3.1.*', '3.1.X']).test( | ||||
|     "if version: '%s' that can be resolved to 'channel' option is supplied, it should set quality flag to 'true' and type to 'channel' in version object", | ||||
|     "if version: '%s' that can be resolved to 'channel' option is supplied, it should set type to 'channel' in version object", | ||||
|     async version => { | ||||
|       const dotnetVersionResolver = new installer.DotnetVersionResolver( | ||||
|         version | ||||
|       ); | ||||
|       const versionObject = await dotnetVersionResolver.createDotNetVersion(); | ||||
|  | ||||
|       expect(versionObject.type.toLowerCase().includes('channel')).toBeTruthy; | ||||
|       expect(versionObject.qualityFlag).toBeTruthy; | ||||
|       expect(versionObject.type.toLowerCase().includes('channel')).toBe(true); | ||||
|     } | ||||
|   ); | ||||
|  | ||||
|   each(['6.0', '6.0.x', '6.0.*', '6.0.X']).test( | ||||
|     "if version: '%s' that can be resolved to 'channel' option is supplied and its major tag is >= 6, it should set type to 'channel' and qualityFlag to 'true' in version object", | ||||
|     async version => { | ||||
|       const dotnetVersionResolver = new installer.DotnetVersionResolver( | ||||
|         version | ||||
|       ); | ||||
|       const versionObject = await dotnetVersionResolver.createDotNetVersion(); | ||||
|  | ||||
|       expect(versionObject.type.toLowerCase().includes('channel')).toBe(true); | ||||
|       expect(versionObject.qualityFlag).toBe(true); | ||||
|     } | ||||
|   ); | ||||
|  | ||||
| @ -243,8 +254,8 @@ describe('DotnetVersionResolver tests', () => { | ||||
|       ); | ||||
|       const versionObject = await dotnetVersionResolver.createDotNetVersion(); | ||||
|  | ||||
|       expect(versionObject.type.toLowerCase().includes('version')).toBeTruthy; | ||||
|       expect(versionObject.qualityFlag).toBeFalsy; | ||||
|       expect(versionObject.type.toLowerCase().includes('version')).toBe(true); | ||||
|       expect(versionObject.qualityFlag).toBe(false); | ||||
|     } | ||||
|   ); | ||||
|  | ||||
| @ -259,11 +270,11 @@ describe('DotnetVersionResolver tests', () => { | ||||
|       const nonWindowsRegEx = new RegExp(/^--[vc]/); | ||||
|  | ||||
|       if (IS_WINDOWS) { | ||||
|         expect(windowsRegEx.test(versionObject.type)).toBeTruthy; | ||||
|         expect(nonWindowsRegEx.test(versionObject.type)).toBeFalsy; | ||||
|         expect(windowsRegEx.test(versionObject.type)).toBe(true); | ||||
|         expect(nonWindowsRegEx.test(versionObject.type)).toBe(false); | ||||
|       } else { | ||||
|         expect(nonWindowsRegEx.test(versionObject.type)).toBeTruthy; | ||||
|         expect(windowsRegEx.test(versionObject.type)).toBeFalsy; | ||||
|         expect(nonWindowsRegEx.test(versionObject.type)).toBe(true); | ||||
|         expect(windowsRegEx.test(versionObject.type)).toBe(false); | ||||
|       } | ||||
|     } | ||||
|   ); | ||||
| @ -276,10 +287,7 @@ function normalizeFileContents(contents: string): string { | ||||
|     .replace(new RegExp('\r', 'g'), '\n'); | ||||
| } | ||||
|  | ||||
| async function getDotnet( | ||||
|   version: string, | ||||
|   quality: string = '' | ||||
| ): Promise<string> { | ||||
| async function getDotnet(version: string, quality = ''): Promise<string> { | ||||
|   const dotnetInstaller = new installer.DotnetCoreInstaller( | ||||
|     version, | ||||
|     quality as QualityOptions | ||||
|  | ||||
| @ -21,11 +21,11 @@ if (IS_WINDOWS) { | ||||
| const tempDir = path.join(__dirname, 'runner', 'temp2'); | ||||
|  | ||||
| describe('setup-dotnet tests', () => { | ||||
|   let getInputSpy = jest.spyOn(core, 'getInput'); | ||||
|   let getMultilineInputSpy = jest.spyOn(core, 'getMultilineInput'); | ||||
|   let setOutputSpy = jest.spyOn(core, 'setOutput'); | ||||
|   const getInputSpy = jest.spyOn(core, 'getInput'); | ||||
|   const getMultilineInputSpy = jest.spyOn(core, 'getMultilineInput'); | ||||
|   const setOutputSpy = jest.spyOn(core, 'setOutput'); | ||||
|  | ||||
|   let inputs = {} as any; | ||||
|   const inputs = {} as any; | ||||
|  | ||||
|   beforeAll(async () => { | ||||
|     process.env.RUNNER_TOOL_CACHE = toolDir; | ||||
| @ -74,7 +74,7 @@ describe('setup-dotnet tests', () => { | ||||
|  | ||||
|     await setup.run(); | ||||
|  | ||||
|     expect(setOutputSpy).toBeCalledWith('dotnet-version', '6.0.401'); | ||||
|     expect(setOutputSpy).toHaveBeenCalledWith('dotnet-version', '6.0.401'); | ||||
|   }, 400000); | ||||
|  | ||||
|   it("Sets output with the version specified in global.json, if it's present", async () => { | ||||
| @ -93,6 +93,6 @@ describe('setup-dotnet tests', () => { | ||||
|  | ||||
|     await setup.run(); | ||||
|  | ||||
|     expect(setOutputSpy).toBeCalledWith('dotnet-version', '3.0.103'); | ||||
|     expect(setOutputSpy).toHaveBeenCalledWith('dotnet-version', '3.0.103'); | ||||
|   }, 400000); | ||||
| }); | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 Ivan
					Ivan