hunk.code_window:       }
         ngCliVersion = `local (v${pkg.version}, branch: ${gitBranch})`;
       }
       const config = CliConfig.fromProject();
       if (config && config.config.project.version !== pkg.version) {
         ngCliVersion += ` [${config.config.project.version}]`;
       }
       if (config && config.config.project.ejected) {
         ngCliVersion += ' (e)';
       }
       if (projPkg) {
         roots.forEach(root => {
  
hunk.labels: keep keep keep keep keep replace replace replace replace replace keep keep keep keep
hunk.after_edit:     if (config && config.config && config.config.project) {
         if (config.config.project.version !== pkg.version) {
           ngCliVersion += ` [${config.config.project.version}]`;
         }
         if (config.config.project.ejected) {
           ngCliVersion += ' (e)';
         }
  
hunk.file_path: packages/@angular/cli/commands/version.ts
hunk.type: replace
file: import {readFileSync} from 'fs';
  import {join} from 'path';
  
  import {RootSchemaTreeNode} from './schema-tree';
  
  
  describe('@ngtools/json-schema', () => {
  
    describe('OneOfSchemaTreeNode', () => {
      const schemaJsonFilePath = join(__dirname, '../tests/schema1.json');
      const schemaJson = JSON.parse(readFileSync(schemaJsonFilePath, 'utf-8'));
      const valueJsonFilePath = join(__dirname, '../tests/value1-1.json');
      const valueJson = JSON.parse(readFileSync(valueJsonFilePath, 'utf-8'));
  
  
      it('works', () => {
        const proto: any = Object.create(null);
        new RootSchemaTreeNode(proto, {
          value: valueJson,
          schema: schemaJson
        });
  
        expect(proto.oneOfKey2 instanceof Array).toBe(true);
        expect(proto.oneOfKey2.length).toBe(2);
  
        // Set it to a string, which is valid.
        proto.oneOfKey2 = 'hello';
        expect(proto.oneOfKey2 instanceof Array).toBe(false);
      });
  
      it('returns undefined for values that are non-existent', () => {
        const proto: any = Object.create(null);
        const root = new RootSchemaTreeNode(proto, { value: valueJson, schema: schemaJson });
  
        const value = root.children['objectKey1'].children['objectKey'].children['stringKey'].get();
        expect(value).toBe(undefined);
      });
    });
  
  
    describe('EnumSchemaTreeNode', () => {
      const schemaJsonFilePath = join(__dirname, '../tests/schema2.json');
      const schemaJson = JSON.parse(readFileSync(schemaJsonFilePath, 'utf-8'));
      const valueJsonFilePath = join(__dirname, '../tests/value2-1.json');
      const valueJson = JSON.parse(readFileSync(valueJsonFilePath, 'utf-8'));
  
  
      it('works', () => {
        const proto: any = Object.create(null);
        new RootSchemaTreeNode(proto, {
          value: valueJson,
          schema: schemaJson
        });
  
        expect(proto.a instanceof Array).toBe(true);
        expect(proto.a).toEqual([undefined, 'v1', undefined, 'v3']);
  
        // Set it to a string, which is valid.
        proto.a[0] = 'v2';
        proto.a[1] = 'INVALID';
        expect(proto.a).toEqual(['v2', undefined, undefined, 'v3']);
      });
  
      it('supports default values', () => {
        const proto: any = Object.create(null);
        const schema = new RootSchemaTreeNode(proto, {
          value: valueJson,
          schema: schemaJson
        });
  
        expect(schema.children['b'].get()).toEqual('default');
      });
    });
  
  });
  