hunk.code_window:       ['build'],
         /Could not find the '@angular-devkit\/build-angular:browser' builder's node package\./,
       );
       await execAndWaitForOutputToMatch('ng', ['build'], /Node packages may not be installed\./);
     } finally {
       await moveFile('temp_node_modules', 'node_modules');
       await installPackage('@angular-devkit/build-angular');
     }
   }
hunk.labels: keep keep keep replace keep keep keep keep keep
hunk.after_edit:     await execAndWaitForOutputToMatch(
         'ng',
         ['build'],
         new RegExp(
           `Node packages may not be installed\. Try installing with '${getActivePackageManager()} install'\.`,
         ),
       );
  
hunk.file_path: tests/legacy-cli/e2e/tests/commands/builder-not-found.ts
hunk.type: replace
file: /**
   * @license
   * Copyright Google LLC All Rights Reserved.
   *
   * Use of this source code is governed by an MIT-style license that can be
   * found in the LICENSE file at https://angular.io/license
   */
  
  import { urlJoin } from './url';
  
  describe('urlJoin', () => {
    it('should work with absolute url with trailing slash', () => {
      expect(urlJoin('http://foo.com/', '/one/')).toBe('http://foo.com/one/');
    });
  
    it('should work with absolute url without trailing slash', () => {
      expect(urlJoin('http://foo.com', '/one')).toBe('http://foo.com/one');
    });
  
    it('should work with absolute url without slashes', () => {
      expect(urlJoin('http://foo.com', 'one', 'two')).toBe('http://foo.com/one/two');
    });
  
    it('should work with relative url without slashes', () => {
      expect(urlJoin('one', 'two', 'three')).toBe('one/two/three');
    });
  
    it('should keep trailing slash if empty path is provided', () => {
      expect(urlJoin('one/', '')).toBe('one/');
    });
  });
  