hunk.code_window:                 "cd ./build/package && npm publish"
               ]));
       }
       /**
        * Publishes a package to npm from ./build/package directory with @next tag.
  
hunk.labels: keep keep add keep keep keep
hunk.after_edit:     /**
        * Packs a .tgz from ./build/package directory.
        */
       @Task()
       packagePack() {
           return gulp.src("package.json", { read: false })
               .pipe(shell([
                   "cd ./build/package && npm pack && mv -f typeorm-*.tgz .."
               ]));
       }
  
hunk.file_path: gulpfile.ts
hunk.type: add
file: import "reflect-metadata";
  import {expect} from "chai";
  import {closeTestingConnections, createTestingConnections, reloadTestingDatabases} from "../../utils/test-utils";
  import {Connection} from "../../../src/connection/Connection";
  import {Animal} from "./entity/Animal";
  import {NamingStrategyUnderTest} from "./naming/NamingStrategyUnderTest";
  
  
  describe("github issues > #3847 FEATURE REQUEST - Naming strategy foreign key override name", () => {
  
      let connections: Connection[];
      let namingStrategy = new NamingStrategyUnderTest();
  
      before(async () => connections = await createTestingConnections({
          entities: [__dirname + "/entity/*{.js,.ts}"],
          namingStrategy
      }));
      beforeEach(() => {
          return reloadTestingDatabases(connections);
      });
      after(() => closeTestingConnections(connections));
  
      it("NamingStrategyUnderTest#", () => Promise.all(connections.map(async connection => {
          await connection.getRepository(Animal).find();
  
          let metadata = connection.getMetadata(Animal);
          
          expect(metadata.foreignKeys[0].name).to.eq("fk_animal_category_categoryId");
      })));
  });
  