Skip to content
Snippets Groups Projects
Select Git revision
  • f98eafe4968a93d58ffddc702f8db99e0b24335b
  • main default protected
  • renovate/cloudflare-5.x
  • renovate/redis-21.x
  • renovate/mariadb-21.x
  • renovate/kubernetes-go
  • renovate/external-dns-1.x
  • renovate/docker.io-bitnami-kubectl-1.x
  • renovate/longhorn-1.8.x
  • renovate/docker.io-library-alpine-3.x
  • renovate/kubernetes-kubernetes-1.x
  • renovate/kubernetes-sigs-cluster-api-1.x
  • renovate/prometheus-json-exporter-0.x
  • renovate/tektoncd-cli-0.x
  • renovate/quay.io-shivering-isles-postfix-3.x
  • renovate/github.com-prometheus-common-0.x
  • renovate/docker.io-library-nextcloud-31.x
  • renovate/rancher-system-upgrade-controller-0.x
  • renovate/mikefarah-yq-4.x
  • renovate/go-1.x
  • renovate/siderolabs-kubelet-1.33.x
  • v25.07
  • v25.06
  • v25.05
  • v25.04
  • v25.03
  • v25.02
  • v25.01
  • v24.12
  • v24.11
  • v24.10
  • v24.09
  • v24.08
  • v24.07
  • v24.06
  • v24.05
  • v24.04
  • v24.03
  • v24.02
  • v24.01
  • v23.12
41 results

kubernetes-init.mk

Blame
  • index.spec.ts 8.78 KiB
    import fs from 'fs';
    import path from 'path';
    import { getConfig } from '../../../config/defaults';
    import * as _gitfs from '../../../util/gitfs/fs';
    import * as npmExtract from '.';
    
    const gitfs: any = _gitfs;
    
    // TODO: fix types
    const defaultConfig = getConfig();
    
    function readFixture(fixture: string) {
      return fs.readFileSync(
        path.resolve(__dirname, `../__fixtures__/${fixture}`),
        'utf8'
      );
    }
    
    const input01Content = readFixture('inputs/01.json');
    const workspacesContent = readFixture('inputs/workspaces.json');
    const workspacesSimpleContent = readFixture('inputs/workspaces-simple.json');
    const vendorisedContent = readFixture('is-object.json');
    const invalidNameContent = readFixture('invalid-name.json');
    
    describe('manager/npm/extract', () => {
      describe('.extractPackageFile()', () => {
        beforeEach(() => {
          gitfs.readLocalFile = jest.fn(() => null);
        });
        it('returns null if cannot parse', async () => {
          const res = await npmExtract.extractPackageFile(
            'not json',
            'package.json',
            defaultConfig
          );
          expect(res).toBeNull();
        });
        it('catches invalid names', async () => {
          const res = await npmExtract.extractPackageFile(
            invalidNameContent,
            'package.json',
            defaultConfig
          );
          expect(res).toMatchSnapshot();
        });
        it('ignores vendorised package.json', async () => {
          const res = await npmExtract.extractPackageFile(
            vendorisedContent,
            'package.json',
            defaultConfig
          );
          expect(res).toBeNull();
        });
        it('throws error if non-root renovate config', async () => {
          await expect(
            npmExtract.extractPackageFile(
              '{ "renovate": {} }',
              'backend/package.json',
              defaultConfig
            )
          ).rejects.toThrow();
        });
        it('returns null if no deps', async () => {
          const res = await npmExtract.extractPackageFile(
            '{ "renovate": {} }',
            'package.json',
            defaultConfig
          );
          expect(res).toBeNull();
        });
        it('handles invalid', async () => {
          const res = await npmExtract.extractPackageFile(
            '{"dependencies": true, "devDependencies": []}',
            'package.json',
            defaultConfig
          );
          expect(res).toBeNull();
        });
        it('returns an array of dependencies', async () => {
          const res = await npmExtract.extractPackageFile(
            input01Content,
            'package.json',
            defaultConfig
          );
          expect(res).toMatchSnapshot();
        });
        it('finds a lock file', async () => {
          gitfs.readLocalFile = jest.fn((fileName) => {
            if (fileName === 'yarn.lock') {
              return '# yarn.lock';
            }
            return null;
          });
          const res = await npmExtract.extractPackageFile(
            input01Content,
            'package.json',
            defaultConfig
          );
          expect(res).toMatchSnapshot();
        });
        it('finds and filters .npmrc', async () => {
          gitfs.readLocalFile = jest.fn((fileName) => {
            if (fileName === '.npmrc') {
              return 'save-exact = true\npackage-lock = false\n';
            }
            return null;
          });
          const res = await npmExtract.extractPackageFile(
            input01Content,
            'package.json',
            { global: {} }
          );
          expect(res.npmrc).toBeDefined();
        });
        it('finds and discards .npmrc', async () => {
          gitfs.readLocalFile = jest.fn((fileName) => {
            if (fileName === '.npmrc') {
              // eslint-disable-next-line
              return '//registry.npmjs.org/:_authToken=${NPM_AUTH_TOKEN}\n';
            }
            return null;
          });
          const res = await npmExtract.extractPackageFile(
            input01Content,
            'package.json',
            { global: {} }
          );
          expect(res.npmrc).toBeUndefined();
        });
        it('finds lerna', async () => {
          gitfs.readLocalFile = jest.fn((fileName) => {
            if (fileName === 'lerna.json') {
              return '{}';
            }
            return null;
          });
          const res = await npmExtract.extractPackageFile(
            input01Content,
            'package.json',
            defaultConfig
          );
          expect(res).toMatchSnapshot();
        });
        it('finds "npmClient":"npm" in lerna.json', async () => {
          gitfs.readLocalFile = jest.fn((fileName) => {
            if (fileName === 'lerna.json') {
              return '{ "npmClient": "npm" }';
            }
            return null;
          });
          const res = await npmExtract.extractPackageFile(
            input01Content,
            'package.json',
            defaultConfig
          );
          expect(res).toMatchSnapshot();
        });
        it('finds "npmClient":"yarn" in lerna.json', async () => {
          gitfs.readLocalFile = jest.fn((fileName) => {
            if (fileName === 'lerna.json') {
              return '{ "npmClient": "yarn" }';
            }
            return null;
          });
          const res = await npmExtract.extractPackageFile(
            input01Content,
            'package.json',
            defaultConfig
          );
          expect(res).toMatchSnapshot();
        });
        it('finds simple yarn workspaces', async () => {
          gitfs.readLocalFile = jest.fn((fileName) => {
            if (fileName === 'lerna.json') {
              return '{}';
            }
            return null;
          });
          const res = await npmExtract.extractPackageFile(
            workspacesSimpleContent,
            'package.json',
            defaultConfig
          );
          expect(res).toMatchSnapshot();
        });
        it('finds complex yarn workspaces', async () => {
          gitfs.readLocalFile = jest.fn((fileName) => {
            if (fileName === 'lerna.json') {
              return '{}';
            }
            return null;
          });
          const res = await npmExtract.extractPackageFile(
            workspacesContent,
            'package.json',
            defaultConfig
          );
          expect(res).toMatchSnapshot();
        });
        it('extracts engines', async () => {
          const pJson = {
            dependencies: {
              angular: '1.6.0',
            },
            devDependencies: {
              '@angular/cli': '1.6.0',
              foo: '*',
              bar: 'file:../foo/bar',
              baz: '',
              other: 'latest',
            },
            engines: {
              atom: '>=1.7.0 <2.0.0',
              node: '>= 8.9.2',
              npm: '^8.0.0',
              pnpm: '^1.2.0',
              yarn: 'disabled',
            },
            main: 'index.js',
          };
          const pJsonStr = JSON.stringify(pJson);
          const res = await npmExtract.extractPackageFile(
            pJsonStr,
            'package.json',
            defaultConfig
          );
          expect(res).toMatchSnapshot();
        });
        it('extracts volta', async () => {
          const pJson = {
            main: 'index.js',
            engines: {
              node: '8.9.2',
            },
            volta: {
              node: '8.9.2',
              yarn: '1.12.3',
              npm: '5.9.0',
            },
          };
          const pJsonStr = JSON.stringify(pJson);
          const res = await npmExtract.extractPackageFile(
            pJsonStr,
            'package.json',
            defaultConfig
          );
          expect(res).toMatchSnapshot();
        });
    
        it('extracts volta yarn unknown-version', async () => {
          const pJson = {
            main: 'index.js',
            engines: {
              node: '8.9.2',
            },
            volta: {
              node: '8.9.2',
              yarn: 'unknown',
            },
          };
          const pJsonStr = JSON.stringify(pJson);
          const res = await npmExtract.extractPackageFile(
            pJsonStr,
            'package.json',
            defaultConfig
          );
          expect(res).toMatchSnapshot();
        });
        it('extracts non-npmjs', async () => {
          const pJson = {
            dependencies: {
              a: 'github:owner/a',
              b: 'github:owner/b#master',
              c: 'github:owner/c#v1.1.0',
              d: 'github:owner/d#a7g3eaf',
              e: 'github:owner/e#49b5aca613b33c5b626ae68c03a385f25c142f55',
              f: 'owner/f#v2.0.0',
              g: 'gitlab:owner/g#v1.0.0',
              h: 'github:-hello/world#v1.0.0',
              i: '@foo/bar#v2.0.0',
              j: 'github:frank#v0.0.1',
              k: 'github:owner/k#49b5aca',
              l: 'github:owner/l.git#abcdef0',
              m: 'https://github.com/owner/m.git#v1.0.0',
              n: 'git+https://github.com/owner/n#v2.0.0',
            },
          };
          const pJsonStr = JSON.stringify(pJson);
          const res = await npmExtract.extractPackageFile(
            pJsonStr,
            'package.json',
            defaultConfig
          );
          expect(res).toMatchSnapshot();
        });
        it('extracts npm package alias', async () => {
          const pJson = {
            dependencies: {
              a: 'npm:foo@1',
              b: 'npm:@foo/bar@1.2.3',
              c: 'npm:foo',
            },
          };
          const pJsonStr = JSON.stringify(pJson);
          const res = await npmExtract.extractPackageFile(
            pJsonStr,
            'package.json',
            defaultConfig
          );
          expect(res).toMatchSnapshot();
        });
      });
      describe('.postExtract()', () => {
        it('runs', async () => {
          await expect(npmExtract.postExtract([])).resolves.not.toThrow();
        });
      });
    });