Skip to content

Commit

Permalink
test: support the ng-version option
Browse files Browse the repository at this point in the history
  • Loading branch information
clydin authored and filipesilva committed Mar 21, 2018
1 parent 41320bf commit e4a6f59
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 25 deletions.
38 changes: 14 additions & 24 deletions tests/e2e/setup/500-create-project.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,10 @@
import {join} from 'path';
import {git, ng, silentNpm} from '../utils/process';
import {expectFileToExist, replaceInFile} from '../utils/fs';
import {expectFileToExist} from '../utils/fs';
import {
updateTsConfig,
updateJsonFile,
useNg2,
useNg4,
useSha,
useNgVersion,
useCIChrome,
useCIDefaults,
useBuiltPackages,
Expand All @@ -16,40 +14,32 @@ import {gitClean, gitCommit} from '../utils/git';
import {getGlobalVariable} from '../utils/env';


let packages = require('../../../lib/packages').packages;


export default function() {
export default async function() {
const argv = getGlobalVariable('argv');
let createProject = null;

// This is a dangerous flag, but is useful for testing packages only.
if (argv.noproject) {
return Promise.resolve();
} else if (argv.reuse) {
// If we're set to reuse an existing project, just chdir to it and clean it.
createProject = Promise.resolve()
.then(() => process.chdir(argv.reuse))
.then(() => gitClean());
return;
}

if (argv.reuse) {
process.chdir(argv.reuse);
await gitClean();
} else {
// Otherwise create a project from scratch.
createProject = Promise.resolve()
.then(() => ng('new', 'test-project', '--skip-install'))
.then(() => expectFileToExist(join(process.cwd(), 'test-project')))
.then(() => process.chdir('./test-project'));
await ng('new', 'test-project', '--skip-install');
await expectFileToExist(join(process.cwd(), 'test-project'));
process.chdir('./test-project');
}

return Promise.resolve()
.then(() => createProject)
.then(() => useBuiltPackages())
.then(() => argv.devkit && useDevKit(argv.devkit))
.then(() => useCIChrome())
.then(() => useCIDefaults())
.then(() => argv['ng2'] ? useNg2() : Promise.resolve())
.then(() => argv['ng4'] ? useNg4() : Promise.resolve())
.then(() => argv['ng-version'] ? useNgVersion(argv['ng-version']) : Promise.resolve())
.then(() => argv.nightly || argv['ng-sha'] ? useSha() : Promise.resolve())
// npm link on Circle CI is very noisy.
.then(() => silentNpm('install'))
.then(() => ng('version'))
// Force sourcemaps to be from the root of the filesystem.
.then(() => updateTsConfig(json => {
json['compilerOptions']['sourceRoot'] = '/';
Expand Down
31 changes: 31 additions & 0 deletions tests/e2e/utils/project.ts
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,37 @@ export function useSha() {
}
}

export function useNgVersion(version: string) {
return updateJsonFile('package.json', json => {
// Install over the project with nightly builds.
Object.keys(json['dependencies'] || {})
.filter(name => name.match(/^@angular\//))
.forEach(name => {
const pkgName = name.split(/\//)[1];
if (pkgName == 'cli') {
return;
}
json['dependencies'][`@angular/${pkgName}`] = version;
});

Object.keys(json['devDependencies'] || {})
.filter(name => name.match(/^@angular\//))
.forEach(name => {
const pkgName = name.split(/\//)[1];
if (pkgName == 'cli') {
return;
}
json['devDependencies'][`@angular/${pkgName}`] = version;
});
// TODO: determine the appropriate version for the Angular version
if (version.startsWith('^5')) {
json['devDependencies']['typescript'] = '~2.6.0';
} else {
json['devDependencies']['typescript'] = '~2.7.0';
}
});
}

export function useCIDefaults() {
return updateJsonFile('.angular.json', workspaceJson => {
// Disable progress reporting on CI to reduce spam.
Expand Down
2 changes: 1 addition & 1 deletion tests/e2e_runner.ts
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ const argv = minimist(process.argv.slice(2), {
'noproject',
'verbose',
],
'string': ['devkit', 'glob', 'ignore', 'reuse', 'ng-sha', 'tmpdir'],
'string': ['devkit', 'glob', 'ignore', 'reuse', 'ng-sha', 'tmpdir', 'ng-version'],
'number': ['nb-shards', 'shard']
});

Expand Down

0 comments on commit e4a6f59

Please sign in to comment.