git-sync-js 0.4.6 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. package/README.md +3 -2
  2. package/dist/src/clone.d.ts +13 -0
  3. package/dist/src/clone.d.ts.map +1 -0
  4. package/dist/src/clone.js +55 -0
  5. package/dist/src/clone.js.map +1 -0
  6. package/dist/src/commitAndSync.d.ts +21 -0
  7. package/dist/src/commitAndSync.d.ts.map +1 -0
  8. package/dist/src/commitAndSync.js +143 -0
  9. package/dist/src/commitAndSync.js.map +1 -0
  10. package/dist/{credential.d.ts → src/credential.d.ts} +3 -2
  11. package/dist/src/credential.d.ts.map +1 -0
  12. package/dist/{credential.js → src/credential.js} +7 -7
  13. package/dist/src/credential.js.map +1 -0
  14. package/dist/{defaultGitInfo.d.ts → src/defaultGitInfo.d.ts} +2 -0
  15. package/dist/src/defaultGitInfo.d.ts.map +1 -0
  16. package/dist/{defaultGitInfo.js → src/defaultGitInfo.js} +2 -0
  17. package/dist/src/defaultGitInfo.js.map +1 -0
  18. package/dist/{errors.d.ts → src/errors.d.ts} +5 -1
  19. package/dist/src/errors.d.ts.map +1 -0
  20. package/dist/{errors.js → src/errors.js} +5 -5
  21. package/dist/src/errors.js.map +1 -0
  22. package/dist/src/index.d.ts +12 -0
  23. package/dist/src/index.d.ts.map +1 -0
  24. package/dist/src/index.js +12 -0
  25. package/dist/src/index.js.map +1 -0
  26. package/dist/src/init.d.ts +25 -0
  27. package/dist/src/init.d.ts.map +1 -0
  28. package/dist/src/init.js +22 -0
  29. package/dist/src/init.js.map +1 -0
  30. package/dist/src/initGit.d.ts +26 -0
  31. package/dist/src/initGit.d.ts.map +1 -0
  32. package/dist/src/initGit.js +40 -0
  33. package/dist/src/initGit.js.map +1 -0
  34. package/dist/{inspect.d.ts → src/inspect.d.ts} +20 -7
  35. package/dist/src/inspect.d.ts.map +1 -0
  36. package/dist/{inspect.js → src/inspect.js} +100 -49
  37. package/dist/src/inspect.js.map +1 -0
  38. package/dist/{interface.d.ts → src/interface.d.ts} +8 -1
  39. package/dist/src/interface.d.ts.map +1 -0
  40. package/dist/{interface.js → src/interface.js} +5 -0
  41. package/dist/src/interface.js.map +1 -0
  42. package/dist/{sync.d.ts → src/sync.d.ts} +18 -1
  43. package/dist/src/sync.d.ts.map +1 -0
  44. package/dist/{sync.js → src/sync.js} +57 -4
  45. package/dist/src/sync.js.map +1 -0
  46. package/dist/src/utils.d.ts +3 -0
  47. package/dist/src/utils.d.ts.map +1 -0
  48. package/dist/src/utils.js +3 -0
  49. package/dist/src/utils.js.map +1 -0
  50. package/dist/test/clone.test.d.ts +2 -0
  51. package/dist/test/clone.test.d.ts.map +1 -0
  52. package/dist/test/clone.test.js +42 -0
  53. package/dist/test/clone.test.js.map +1 -0
  54. package/dist/test/commitAndSync.test.d.ts +2 -0
  55. package/dist/test/commitAndSync.test.d.ts.map +1 -0
  56. package/dist/test/commitAndSync.test.js +27 -0
  57. package/dist/test/commitAndSync.test.js.map +1 -0
  58. package/dist/test/constants.d.ts +23 -0
  59. package/dist/test/constants.d.ts.map +1 -0
  60. package/dist/test/constants.js +51 -0
  61. package/dist/test/constants.js.map +1 -0
  62. package/dist/test/constants.test.d.ts +2 -0
  63. package/dist/test/constants.test.d.ts.map +1 -0
  64. package/dist/test/constants.test.js +7 -0
  65. package/dist/test/constants.test.js.map +1 -0
  66. package/dist/test/initGit.test.d.ts +2 -0
  67. package/dist/test/initGit.test.d.ts.map +1 -0
  68. package/dist/test/initGit.test.js +90 -0
  69. package/dist/test/initGit.test.js.map +1 -0
  70. package/dist/test/inspect.test.d.ts +2 -0
  71. package/dist/test/inspect.test.d.ts.map +1 -0
  72. package/dist/test/inspect.test.js +224 -0
  73. package/dist/test/inspect.test.js.map +1 -0
  74. package/dist/test/jest.setup.d.ts +2 -0
  75. package/dist/test/jest.setup.d.ts.map +1 -0
  76. package/dist/test/jest.setup.js +30 -0
  77. package/dist/test/jest.setup.js.map +1 -0
  78. package/dist/test/sync.test.d.ts +2 -0
  79. package/dist/test/sync.test.d.ts.map +1 -0
  80. package/dist/test/sync.test.js +75 -0
  81. package/dist/test/sync.test.js.map +1 -0
  82. package/dist/test/utils.d.ts +5 -0
  83. package/dist/test/utils.d.ts.map +1 -0
  84. package/dist/test/utils.js +38 -0
  85. package/dist/test/utils.js.map +1 -0
  86. package/package.json +24 -17
  87. package/dist/credential.d.ts.map +0 -1
  88. package/dist/credential.js.map +0 -1
  89. package/dist/defaultGitInfo.d.ts.map +0 -1
  90. package/dist/defaultGitInfo.js.map +0 -1
  91. package/dist/errors.d.ts.map +0 -1
  92. package/dist/errors.js.map +0 -1
  93. package/dist/index.d.ts +0 -46
  94. package/dist/index.d.ts.map +0 -1
  95. package/dist/index.js +0 -234
  96. package/dist/index.js.map +0 -1
  97. package/dist/inspect.d.ts.map +0 -1
  98. package/dist/inspect.js.map +0 -1
  99. package/dist/interface.d.ts.map +0 -1
  100. package/dist/interface.js.map +0 -1
  101. package/dist/sync.d.ts.map +0 -1
  102. package/dist/sync.js.map +0 -1
@@ -0,0 +1,27 @@
1
+ /* eslint-disable security/detect-non-literal-fs-filename */
2
+ import { getSyncState } from '../src/inspect';
3
+ import { defaultGitInfo } from '../src/defaultGitInfo';
4
+ import {
5
+ // eslint-disable-next-line unicorn/prevent-abbreviations
6
+ dir, exampleToken,
7
+ // eslint-disable-next-line unicorn/prevent-abbreviations
8
+ upstreamDir, } from './constants';
9
+ import { addBareUpstream, addSomeFiles } from './utils';
10
+ import { commitAndSync } from '../src/commitAndSync';
11
+ describe('commitAndSync', () => {
12
+ beforeEach(async () => {
13
+ await addBareUpstream();
14
+ });
15
+ const getCommitAndSyncOptions = () => ({
16
+ dir,
17
+ remoteUrl: upstreamDir,
18
+ userInfo: { ...defaultGitInfo, accessToken: exampleToken },
19
+ });
20
+ test('equal to upstream that been commitAndSync to', async () => {
21
+ expect(await getSyncState(dir, defaultGitInfo.branch, defaultGitInfo.remote)).toBe('noUpstreamOrBareUpstream');
22
+ await addSomeFiles();
23
+ await commitAndSync(getCommitAndSyncOptions());
24
+ expect(await getSyncState(dir, defaultGitInfo.branch, defaultGitInfo.remote)).toBe('equal');
25
+ });
26
+ });
27
+ //# sourceMappingURL=commitAndSync.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commitAndSync.test.js","sourceRoot":"","sources":["../../test/commitAndSync.test.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,OAAO,EAAE,YAAY,EAAa,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO;AACL,yDAAyD;AACzD,GAAG,EACH,YAAY;AACZ,yDAAyD;AACzD,WAAW,GACZ,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACxD,OAAO,EAAE,aAAa,EAAyB,MAAM,sBAAsB,CAAC;AAE5E,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,MAAM,eAAe,EAAE,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,MAAM,uBAAuB,GAAG,GAA0B,EAAE,CAAC,CAAC;QAC5D,GAAG;QACH,SAAS,EAAE,WAAW;QACtB,QAAQ,EAAE,EAAE,GAAG,cAAc,EAAE,WAAW,EAAE,YAAY,EAAE;KAC3D,CAAC,CAAC;IAEH,IAAI,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAC9D,MAAM,CAAC,MAAM,YAAY,CAAC,GAAG,EAAE,cAAc,CAAC,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAY,0BAA0B,CAAC,CAAC;QAC1H,MAAM,YAAY,EAAE,CAAC;QACrB,MAAM,aAAa,CAAC,uBAAuB,EAAE,CAAC,CAAC;QAC/C,MAAM,CAAC,MAAM,YAAY,CAAC,GAAG,EAAE,cAAc,CAAC,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAY,OAAO,CAAC,CAAC;IACzG,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,23 @@
1
+ /// <reference types="node" />
2
+ /**
3
+ * mockRepoLocation
4
+ */
5
+ export declare let dir: string;
6
+ export declare let upstreamDir: string;
7
+ export declare let gitDirectory: string;
8
+ export declare let upstreamDirGitDirectory: string;
9
+ export declare let gitSyncRepoDirectory: string;
10
+ export declare let gitSyncRepoDirectoryGitDirectory: string;
11
+ /**
12
+ * use currentTestName to get better constants, should call in jest functions as early as possible
13
+ */
14
+ export declare const setGlobalConstants: () => void;
15
+ export declare const exampleRepoName = "tiddly-gittly/git-sync-js";
16
+ /**
17
+ * In TidGi, we use https remote without `.git` suffix, we will add `.git` when we need it.
18
+ */
19
+ export declare const exampleRemoteUrl: string;
20
+ export declare const exampleToken = "testToken";
21
+ /** from https://stackoverflow.com/questions/39062595/how-can-i-create-a-png-blob-from-binary-data-in-a-typed-array */
22
+ export declare const exampleImageBuffer: Buffer;
23
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../test/constants.ts"],"names":[],"mappings":";AASA;;GAEG;AAEH,eAAO,IAAI,GAAG,EAAE,MAAM,CAAC;AACvB,eAAO,IAAI,WAAW,EAAE,MAAM,CAAC;AAE/B,eAAO,IAAI,YAAY,EAAE,MAAM,CAAC;AAChC,eAAO,IAAI,uBAAuB,EAAE,MAAM,CAAC;AAC3C,eAAO,IAAI,oBAAoB,EAAE,MAAM,CAAC;AACxC,eAAO,IAAI,gCAAgC,EAAE,MAAM,CAAC;AAEpD;;GAEG;AACH,eAAO,MAAM,kBAAkB,QAAO,IAiBrC,CAAC;AAEF,eAAO,MAAM,eAAe,8BAA8B,CAAC;AAC3D;;GAEG;AACH,eAAO,MAAM,gBAAgB,QAA0C,CAAC;AACxE,eAAO,MAAM,YAAY,cAAc,CAAC;AAExC,sHAAsH;AACtH,eAAO,MAAM,kBAAkB,QAM9B,CAAC"}
@@ -0,0 +1,51 @@
1
+ /* eslint-disable security-node/detect-insecure-randomness */
2
+ /* eslint-disable unicorn/prevent-abbreviations */
3
+ /* eslint-disable unicorn/prefer-module */
4
+ import path from 'path';
5
+ /**
6
+ * Random dir name to prevent parallel test execution collision
7
+ */
8
+ let repoName = Math.random().toString();
9
+ /**
10
+ * mockRepoLocation
11
+ */
12
+ // eslint-disable-next-line unicorn/prevent-abbreviations
13
+ export let dir;
14
+ export let upstreamDir;
15
+ export let gitDirectory;
16
+ export let upstreamDirGitDirectory;
17
+ export let gitSyncRepoDirectory;
18
+ export let gitSyncRepoDirectoryGitDirectory;
19
+ /**
20
+ * use currentTestName to get better constants, should call in jest functions as early as possible
21
+ */
22
+ export const setGlobalConstants = () => {
23
+ /**
24
+ * Random dir name to prevent parallel test execution collision
25
+ * This is undefined in describe! Only work inside test block.
26
+ */
27
+ repoName = expect.getState().currentTestName;
28
+ /**
29
+ * mockRepoLocation
30
+ */
31
+ // eslint-disable-next-line unicorn/prevent-abbreviations
32
+ dir = path.join(__dirname, 'mockRepo', repoName);
33
+ upstreamDir = path.join(__dirname, 'mockUpstreamRepo', repoName);
34
+ gitDirectory = path.join(dir, '.git');
35
+ upstreamDirGitDirectory = path.join(upstreamDir, '.git');
36
+ gitSyncRepoDirectory = path.join(__dirname, '..');
37
+ gitSyncRepoDirectoryGitDirectory = path.join(gitSyncRepoDirectory, '.git');
38
+ };
39
+ export const exampleRepoName = 'tiddly-gittly/git-sync-js';
40
+ /**
41
+ * In TidGi, we use https remote without `.git` suffix, we will add `.git` when we need it.
42
+ */
43
+ export const exampleRemoteUrl = `https://github.com/${exampleRepoName}`;
44
+ export const exampleToken = 'testToken';
45
+ /** from https://stackoverflow.com/questions/39062595/how-can-i-create-a-png-blob-from-binary-data-in-a-typed-array */
46
+ export const exampleImageBuffer = Buffer.from(new Uint8Array([
47
+ 137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73, 72, 68, 82, 0, 0, 0, 8, 0, 0, 0, 8, 8, 2, 0, 0, 0, 75, 109, 41, 220, 0, 0, 0, 34, 73, 68, 65, 84, 8, 215,
48
+ 99, 120, 173, 168, 135, 21, 49, 0, 241, 255, 15, 90, 104, 8, 33, 129, 83, 7, 97, 163, 136, 214, 129, 93, 2, 43, 2, 0, 181, 31, 90, 179, 225, 252, 176, 37,
49
+ 0, 0, 0, 0, 73, 69, 78, 68, 174, 66, 96, 130,
50
+ ]));
51
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../test/constants.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,kDAAkD;AAClD,0CAA0C;AAC1C,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB;;GAEG;AACH,IAAI,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;AACxC;;GAEG;AACH,yDAAyD;AACzD,MAAM,CAAC,IAAI,GAAW,CAAC;AACvB,MAAM,CAAC,IAAI,WAAmB,CAAC;AAE/B,MAAM,CAAC,IAAI,YAAoB,CAAC;AAChC,MAAM,CAAC,IAAI,uBAA+B,CAAC;AAC3C,MAAM,CAAC,IAAI,oBAA4B,CAAC;AACxC,MAAM,CAAC,IAAI,gCAAwC,CAAC;AAEpD;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAS,EAAE;IAC3C;;;OAGG;IACH,QAAQ,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,eAAe,CAAC;IAC7C;;OAEG;IACH,yDAAyD;IACzD,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IACjD,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,kBAAkB,EAAE,QAAQ,CAAC,CAAC;IAEjE,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACtC,uBAAuB,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACzD,oBAAoB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAClD,gCAAgC,GAAG,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;AAC7E,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,2BAA2B,CAAC;AAC3D;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,sBAAsB,eAAe,EAAE,CAAC;AACxE,MAAM,CAAC,MAAM,YAAY,GAAG,WAAW,CAAC;AAExC,sHAAsH;AACtH,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,IAAI,CAC3C,IAAI,UAAU,CAAC;IACb,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG;IAC1J,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;IACzJ,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG;CAC7C,CAAC,CACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=constants.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.test.d.ts","sourceRoot":"","sources":["../../test/constants.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ import { defaultGitInfo } from '../src/defaultGitInfo';
2
+ describe('defaultGitInfo', () => {
3
+ test('default branch now should be main', () => {
4
+ expect(defaultGitInfo.branch).toBe('main');
5
+ });
6
+ });
7
+ //# sourceMappingURL=constants.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.test.js","sourceRoot":"","sources":["../../test/constants.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,IAAI,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC7C,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=initGit.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"initGit.test.d.ts","sourceRoot":"","sources":["../../test/initGit.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,90 @@
1
+ /* eslint-disable security/detect-non-literal-fs-filename */
2
+ import { GitProcess } from 'dugite';
3
+ import fs from 'fs-extra';
4
+ import { assumeSync, getDefaultBranchName, getSyncState, hasGit, haveLocalChanges } from '../src/inspect';
5
+ import { defaultGitInfo } from '../src/defaultGitInfo';
6
+ import { AssumeSyncError } from '../src/errors';
7
+ import {
8
+ // eslint-disable-next-line unicorn/prevent-abbreviations
9
+ dir, exampleToken, gitDirectory,
10
+ // eslint-disable-next-line unicorn/prevent-abbreviations
11
+ upstreamDir, } from './constants';
12
+ import { addAndCommitUsingDugite, addAnUpstream, addSomeFiles } from './utils';
13
+ import { commitFiles } from '../src/sync';
14
+ import { initGit } from '../src/initGit';
15
+ describe('initGit', () => {
16
+ beforeEach(async () => {
17
+ // remove dir's .git folder in this test suit, so we have a clean folder to init
18
+ await fs.remove(gitDirectory);
19
+ });
20
+ const testBranchName = 'test-branch';
21
+ test('Have a valid local repo after init', async () => {
22
+ await initGit({ dir, syncImmediately: false, userInfo: { ...defaultGitInfo, branch: testBranchName } });
23
+ expect(await hasGit(dir)).toBe(true);
24
+ expect(await haveLocalChanges(dir)).toBe(false);
25
+ expect(await getSyncState(dir, defaultGitInfo.branch, defaultGitInfo.remote)).toBe('noUpstreamOrBareUpstream');
26
+ expect(await getDefaultBranchName(dir)).toBe(testBranchName);
27
+ });
28
+ test('Fallback to default info', async () => {
29
+ await initGit({ dir, syncImmediately: false, defaultGitInfo: { ...defaultGitInfo, branch: testBranchName } });
30
+ expect(await getDefaultBranchName(dir)).toBe(testBranchName);
31
+ });
32
+ test("Don't use fallback if have provided info", async () => {
33
+ await initGit({
34
+ dir,
35
+ syncImmediately: false,
36
+ userInfo: { ...defaultGitInfo, branch: testBranchName },
37
+ defaultGitInfo: { ...defaultGitInfo, branch: testBranchName + '-bad' },
38
+ });
39
+ expect(await getDefaultBranchName(dir)).toBe(testBranchName);
40
+ });
41
+ describe('with upstream', () => {
42
+ test('equal to upstream that using dugite add', async () => {
43
+ await initGit({
44
+ dir,
45
+ syncImmediately: false,
46
+ defaultGitInfo,
47
+ });
48
+ // nested describe > beforeEach execute first, so after we add upstream, the .git folder is deleted and recreated, we need to manually fetch here
49
+ await GitProcess.exec(['fetch', defaultGitInfo.remote, defaultGitInfo.branch], dir);
50
+ // basically same as other test suit
51
+ const sharedCommitMessage = 'some commit message';
52
+ // syncImmediately: false, so we don't have a remote yet
53
+ expect(await getSyncState(dir, defaultGitInfo.branch, defaultGitInfo.remote)).toBe('noUpstreamOrBareUpstream');
54
+ await addAnUpstream();
55
+ expect(await getSyncState(dir, defaultGitInfo.branch, defaultGitInfo.remote)).toBe('equal');
56
+ await addSomeFiles();
57
+ await commitFiles(dir, defaultGitInfo.gitUserName, defaultGitInfo.email, sharedCommitMessage);
58
+ expect(await getSyncState(dir, defaultGitInfo.branch, defaultGitInfo.remote)).toBe('ahead');
59
+ await expect(async () => await assumeSync(dir, defaultGitInfo.branch, defaultGitInfo.remote)).rejects.toThrowError(new AssumeSyncError('ahead'));
60
+ // modify upstream
61
+ await addSomeFiles(upstreamDir);
62
+ await addAndCommitUsingDugite(upstreamDir, () => { }, sharedCommitMessage);
63
+ // it is equal until we fetch the latest remote
64
+ await GitProcess.exec(['fetch', defaultGitInfo.remote], dir);
65
+ expect(await getSyncState(dir, defaultGitInfo.branch, defaultGitInfo.remote)).toBe('equal');
66
+ });
67
+ test('syncImmediately to get equal state', async () => {
68
+ await initGit({
69
+ dir,
70
+ syncImmediately: true,
71
+ remoteUrl: upstreamDir,
72
+ userInfo: { ...defaultGitInfo, accessToken: exampleToken },
73
+ });
74
+ // basically same as other test suit
75
+ const sharedCommitMessage = 'some commit message';
76
+ expect(await getSyncState(dir, defaultGitInfo.branch, defaultGitInfo.remote)).toBe('equal');
77
+ await addSomeFiles();
78
+ await commitFiles(dir, defaultGitInfo.gitUserName, defaultGitInfo.email, sharedCommitMessage);
79
+ expect(await getSyncState(dir, defaultGitInfo.branch, defaultGitInfo.remote)).toBe('ahead');
80
+ await expect(async () => await assumeSync(dir, defaultGitInfo.branch, defaultGitInfo.remote)).rejects.toThrowError(new AssumeSyncError('ahead'));
81
+ // modify upstream
82
+ await addSomeFiles(upstreamDir);
83
+ await addAndCommitUsingDugite(upstreamDir, () => { }, sharedCommitMessage);
84
+ // it is equal until we fetch the latest remote
85
+ await GitProcess.exec(['fetch', defaultGitInfo.remote], dir);
86
+ expect(await getSyncState(dir, defaultGitInfo.branch, defaultGitInfo.remote)).toBe('equal');
87
+ });
88
+ });
89
+ });
90
+ //# sourceMappingURL=initGit.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"initGit.test.js","sourceRoot":"","sources":["../../test/initGit.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=inspect.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspect.test.d.ts","sourceRoot":"","sources":["../../test/inspect.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,224 @@
1
+ /* eslint-disable security/detect-non-literal-fs-filename */
2
+ import fs from 'fs-extra';
3
+ import { GitProcess } from 'dugite';
4
+ import os from 'os';
5
+ import { assumeSync, getDefaultBranchName, getGitDirectory, getGitRepositoryState, getModifiedFileList, getRemoteName, getRemoteRepoName, getRemoteUrl, getSyncState, hasGit, haveLocalChanges, } from '../src/inspect';
6
+ import { credentialOff, credentialOn, getGitUrlWithCredential } from '../src/credential';
7
+ import { defaultGitInfo } from '../src/defaultGitInfo';
8
+ import { AssumeSyncError } from '../src/errors';
9
+ import {
10
+ // eslint-disable-next-line unicorn/prevent-abbreviations
11
+ dir, exampleImageBuffer, exampleRemoteUrl, exampleRepoName, exampleToken, gitDirectory, gitSyncRepoDirectoryGitDirectory,
12
+ // eslint-disable-next-line unicorn/prevent-abbreviations
13
+ upstreamDir, } from './constants';
14
+ import { addAndCommitUsingDugite, addAnUpstream, addSomeFiles } from './utils';
15
+ import { getGitUrlWithGitSuffix, getGitUrlWithOutGitSuffix } from '../src/utils';
16
+ describe('getGitDirectory', () => {
17
+ test('echo the git dir, hasGit is true', async () => {
18
+ expect(await getGitDirectory(dir)).toBe(gitDirectory);
19
+ expect(await hasGit(dir)).toBe(true);
20
+ });
21
+ describe('when no git', () => {
22
+ beforeEach(async () => {
23
+ await fs.remove(gitDirectory);
24
+ });
25
+ test("the git dir will be git-sync's dir", async () => {
26
+ expect(await getGitDirectory(dir)).toBe(gitSyncRepoDirectoryGitDirectory);
27
+ });
28
+ test('hasGit is false when strictly no git', async () => {
29
+ // will detect git-sync's repo git
30
+ expect(await hasGit(dir, false)).toBe(true);
31
+ // default is strictly check
32
+ expect(await hasGit(dir)).toBe(false);
33
+ });
34
+ });
35
+ });
36
+ describe('getDefaultBranchName', () => {
37
+ test('return undefined on a non git folder', async () => {
38
+ const branch = await getDefaultBranchName(os.tmpdir());
39
+ expect(branch).toBe(undefined);
40
+ });
41
+ test('return undefined on a not existed folder', async () => {
42
+ const branch = await getDefaultBranchName(os.tmpdir() + '/not-existed');
43
+ expect(branch).toBe(undefined);
44
+ });
45
+ test('it is main now due to BLM activities', async () => {
46
+ const branch = await getDefaultBranchName(dir);
47
+ expect(branch).toBe('main');
48
+ });
49
+ test("But if we are still using master because there wasn't a black man slavery history in Chinese", async () => {
50
+ await GitProcess.exec(['branch', '-m', 'main', 'master'], dir);
51
+ const branch = await getDefaultBranchName(dir);
52
+ expect(branch).toBe('master');
53
+ });
54
+ });
55
+ describe('getModifiedFileList', () => {
56
+ test('list multiple English file names in different ext name', async () => {
57
+ const paths = await addSomeFiles();
58
+ const fileList = await getModifiedFileList(dir);
59
+ expect(fileList).toStrictEqual([
60
+ { filePath: paths[0], fileRelativePath: paths[0].replace(`${dir}/`, ''), type: '??' },
61
+ { filePath: paths[1], fileRelativePath: paths[1].replace(`${dir}/`, ''), type: '??' },
62
+ ]);
63
+ });
64
+ test('list multiple CJK file names', async () => {
65
+ const paths = [`${dir}/试试啊.json`, `${dir}/一个破图片.png`];
66
+ await fs.writeJSON(paths[0], { test: 'test' });
67
+ await fs.writeFile(paths[1], exampleImageBuffer);
68
+ const fileList = await getModifiedFileList(dir);
69
+ expect(fileList).toStrictEqual([
70
+ { filePath: paths[0], fileRelativePath: paths[0].replace(`${dir}/`, ''), type: '??' },
71
+ { filePath: paths[1], fileRelativePath: paths[1].replace(`${dir}/`, ''), type: '??' },
72
+ ]);
73
+ });
74
+ });
75
+ describe('getRemoteUrl', () => {
76
+ test("New repo don't have remote", async () => {
77
+ const remoteUrl = await getRemoteUrl(dir, defaultGitInfo.remote);
78
+ expect(remoteUrl).toBe('');
79
+ });
80
+ describe('credential can be added to the remote', () => {
81
+ test('it has remote with token after calling credentialOn', async () => {
82
+ await credentialOn(dir, exampleRemoteUrl, defaultGitInfo.gitUserName, exampleToken, defaultGitInfo.remote);
83
+ const remoteUrl = await getRemoteUrl(dir, defaultGitInfo.remote);
84
+ expect(remoteUrl.length).toBeGreaterThan(0);
85
+ expect(remoteUrl).toBe(getGitUrlWithCredential(exampleRemoteUrl, defaultGitInfo.gitUserName, exampleToken));
86
+ // github use https://${username}:${accessToken}@github.com/ format
87
+ expect(remoteUrl.includes('@')).toBe(true);
88
+ expect(remoteUrl.includes(exampleToken)).toBe(true);
89
+ // we want user add .git himself before credentialOn
90
+ expect(remoteUrl.endsWith('.git')).toBe(false);
91
+ });
92
+ test('it has a credential-free remote with .git suffix after calling credentialOff', async () => {
93
+ await credentialOn(dir, exampleRemoteUrl, defaultGitInfo.gitUserName, exampleToken, defaultGitInfo.remote);
94
+ await credentialOff(dir, defaultGitInfo.remote);
95
+ const remoteUrl = await getRemoteUrl(dir, defaultGitInfo.remote);
96
+ expect(remoteUrl.length).toBeGreaterThan(0);
97
+ expect(remoteUrl).toBe(exampleRemoteUrl);
98
+ expect(remoteUrl.includes('@')).toBe(false);
99
+ expect(remoteUrl.includes(exampleToken)).toBe(false);
100
+ expect(remoteUrl.endsWith('.git')).toBe(false);
101
+ });
102
+ test('it keeps .git suffix, letting user add and remove it', async () => {
103
+ const exampleRemoteUrlWithSuffix = getGitUrlWithGitSuffix(exampleRemoteUrl);
104
+ expect(exampleRemoteUrlWithSuffix.endsWith('.git')).toBe(true);
105
+ await credentialOn(dir, exampleRemoteUrlWithSuffix, defaultGitInfo.gitUserName, exampleToken, defaultGitInfo.remote);
106
+ await credentialOff(dir, defaultGitInfo.remote);
107
+ const remoteUrl = await getRemoteUrl(dir, defaultGitInfo.remote);
108
+ expect(remoteUrl.endsWith('.git')).toBe(true);
109
+ const remoteUrlWithoutSuffix = getGitUrlWithOutGitSuffix(remoteUrl);
110
+ expect(remoteUrlWithoutSuffix.endsWith('.git')).toBe(false);
111
+ });
112
+ });
113
+ });
114
+ describe('getRemoteRepoName', () => {
115
+ test('Get github repo name', () => {
116
+ const repoName = getRemoteRepoName(exampleRemoteUrl);
117
+ expect(repoName).toBe(exampleRepoName);
118
+ });
119
+ test('Get gitlab repo name', () => {
120
+ const repoName = getRemoteRepoName('https://code.byted.org/ad/bytedance-secret-notes');
121
+ expect(repoName).toBe('ad/bytedance-secret-notes');
122
+ });
123
+ test('Return undefined from malformed url', () => {
124
+ const repoName = getRemoteRepoName('https://asdfasdf-asdfadsf');
125
+ expect(repoName).toBe(undefined);
126
+ });
127
+ test('Return last slash when unknown', () => {
128
+ const repoName = getRemoteRepoName('https://asdfasdf/asdfadsf');
129
+ expect(repoName).toBe('asdfadsf');
130
+ });
131
+ test('Throw when not a url', () => {
132
+ expect(() => getRemoteRepoName('sdfasdf/asdfadsf')).toThrowError(new TypeError('Invalid URL'));
133
+ });
134
+ });
135
+ describe('getRemoteName', () => {
136
+ test('Get default origin when no config found', async () => {
137
+ const remoteName = await getRemoteName(dir, defaultGitInfo.branch);
138
+ expect(remoteName).toBe(defaultGitInfo.remote);
139
+ });
140
+ });
141
+ describe('haveLocalChanges', () => {
142
+ test('When there are newly added files', async () => {
143
+ expect(await haveLocalChanges(dir)).toBe(false);
144
+ });
145
+ describe('we touch some files', () => {
146
+ beforeEach(async () => {
147
+ await addSomeFiles();
148
+ });
149
+ test('When there are newly added files', async () => {
150
+ expect(await haveLocalChanges(dir)).toBe(true);
151
+ });
152
+ test('No change after commit', async () => {
153
+ await addAndCommitUsingDugite(dir, async () => expect(await haveLocalChanges(dir)).toBe(true));
154
+ expect(await haveLocalChanges(dir)).toBe(false);
155
+ });
156
+ });
157
+ });
158
+ describe('getSyncState and getGitRepositoryState', () => {
159
+ test('It should have no upstream by default', async () => {
160
+ expect(await getSyncState(dir, defaultGitInfo.branch, defaultGitInfo.remote)).toBe('noUpstreamOrBareUpstream');
161
+ });
162
+ describe('Add a repo as the upstream', () => {
163
+ beforeEach(async () => {
164
+ await addAnUpstream();
165
+ });
166
+ test('have a mock upstream', async () => {
167
+ expect(await getRemoteUrl(dir, defaultGitInfo.remote)).toBe(upstreamDir);
168
+ });
169
+ test('equal to upstream', async () => {
170
+ expect(await getSyncState(dir, defaultGitInfo.branch, defaultGitInfo.remote)).toBe('equal');
171
+ expect(await assumeSync(dir, defaultGitInfo.branch, defaultGitInfo.remote)).toBe(undefined);
172
+ });
173
+ test('still equal there are newly added files', async () => {
174
+ await addSomeFiles();
175
+ expect(await getSyncState(dir, defaultGitInfo.branch, defaultGitInfo.remote)).toBe('equal');
176
+ });
177
+ test('ahead after commit', async () => {
178
+ await addSomeFiles();
179
+ await addAndCommitUsingDugite();
180
+ expect(await getSyncState(dir, defaultGitInfo.branch, defaultGitInfo.remote)).toBe('ahead');
181
+ await expect(async () => await assumeSync(dir, defaultGitInfo.branch, defaultGitInfo.remote)).rejects.toThrowError(new AssumeSyncError('ahead'));
182
+ });
183
+ test('behind after modify the remote', async () => {
184
+ await addSomeFiles(upstreamDir);
185
+ await addAndCommitUsingDugite(upstreamDir, async () => expect(await getSyncState(dir, defaultGitInfo.branch, defaultGitInfo.remote)).toBe('equal'));
186
+ expect(await getSyncState(dir, defaultGitInfo.branch, defaultGitInfo.remote)).toBe('equal');
187
+ // it is equal until we fetch the latest remote
188
+ await GitProcess.exec(['fetch', defaultGitInfo.remote], dir);
189
+ expect(await getSyncState(dir, defaultGitInfo.branch, defaultGitInfo.remote)).toBe('behind');
190
+ await expect(async () => await assumeSync(dir, defaultGitInfo.branch, defaultGitInfo.remote)).rejects.toThrowError(new AssumeSyncError('behind'));
191
+ });
192
+ test('diverged after modify both remote and local', async () => {
193
+ await addSomeFiles(upstreamDir);
194
+ await addAndCommitUsingDugite(upstreamDir, async () => expect(await getSyncState(dir, defaultGitInfo.branch, defaultGitInfo.remote)).toBe('equal'));
195
+ expect(await getSyncState(dir, defaultGitInfo.branch, defaultGitInfo.remote)).toBe('equal');
196
+ await addSomeFiles(dir);
197
+ // if use same file and same commit message, it will be equal than diverged in the end
198
+ await addAndCommitUsingDugite(dir, async () => expect(await getSyncState(dir, defaultGitInfo.branch, defaultGitInfo.remote)).toBe('equal'), 'some different commit message');
199
+ // not latest remote data, so we thought we are ahead
200
+ expect(await getSyncState(dir, defaultGitInfo.branch, defaultGitInfo.remote)).toBe('ahead');
201
+ // it is equal until we fetch the latest remote
202
+ await GitProcess.exec(['fetch', defaultGitInfo.remote], dir);
203
+ expect(await getSyncState(dir, defaultGitInfo.branch, defaultGitInfo.remote)).toBe('diverged');
204
+ await expect(async () => await assumeSync(dir, defaultGitInfo.branch, defaultGitInfo.remote)).rejects.toThrowError(new AssumeSyncError('diverged'));
205
+ });
206
+ });
207
+ });
208
+ describe('getGitRepositoryState', () => {
209
+ test('normal git state', async () => {
210
+ expect(await getGitRepositoryState(dir)).toBe('');
211
+ await addSomeFiles(dir);
212
+ await addAndCommitUsingDugite();
213
+ expect(await getGitRepositoryState(dir)).toBe('');
214
+ });
215
+ test("'when no git, it say NOGIT", async () => {
216
+ await fs.remove(gitDirectory);
217
+ expect(await getGitRepositoryState(dir)).toBe('NOGIT');
218
+ });
219
+ test('dirty when there are some files', async () => {
220
+ await addSomeFiles(dir);
221
+ expect(await getGitRepositoryState(dir)).toBe('|DIRTY');
222
+ });
223
+ });
224
+ //# sourceMappingURL=inspect.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspect.test.js","sourceRoot":"","sources":["../../test/inspect.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=jest.setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jest.setup.d.ts","sourceRoot":"","sources":["../../test/jest.setup.ts"],"names":[],"mappings":""}
@@ -0,0 +1,30 @@
1
+ /* eslint-disable security/detect-non-literal-fs-filename */
2
+ /* eslint-disable @typescript-eslint/explicit-function-return-type */
3
+ import fs from 'fs-extra';
4
+ // eslint-disable-next-line unicorn/prevent-abbreviations
5
+ import { dir, setGlobalConstants, upstreamDir } from './constants';
6
+ import { initGitWithBranch } from '../src/init';
7
+ import { defaultGitInfo } from '../src/defaultGitInfo';
8
+ beforeEach(async () => {
9
+ setGlobalConstants();
10
+ await resetMockGitRepositories();
11
+ return await setUpMockGitRepositories();
12
+ });
13
+ // afterAll(async () => {
14
+ // return await resetMockGitRepositories();
15
+ // });
16
+ async function setUpMockGitRepositories() {
17
+ if (!(await fs.pathExists(dir))) {
18
+ await fs.mkdirp(dir);
19
+ }
20
+ if (!(await fs.pathExists(upstreamDir))) {
21
+ await fs.mkdirp(upstreamDir);
22
+ }
23
+ await initGitWithBranch(dir);
24
+ await initGitWithBranch(upstreamDir, defaultGitInfo.branch);
25
+ }
26
+ async function resetMockGitRepositories() {
27
+ await fs.remove(dir);
28
+ await fs.remove(upstreamDir);
29
+ }
30
+ //# sourceMappingURL=jest.setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jest.setup.js","sourceRoot":"","sources":["../../test/jest.setup.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,qEAAqE;AACrE,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,yDAAyD;AACzD,OAAO,EAAE,GAAG,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,UAAU,CAAC,KAAK,IAAI,EAAE;IACpB,kBAAkB,EAAE,CAAC;IACrB,MAAM,wBAAwB,EAAE,CAAC;IACjC,OAAO,MAAM,wBAAwB,EAAE,CAAC;AAC1C,CAAC,CAAC,CAAC;AAEH,yBAAyB;AACzB,6CAA6C;AAC7C,MAAM;AAEN,KAAK,UAAU,wBAAwB;IACrC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE;QAC/B,MAAM,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;KACtB;IACD,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,EAAE;QACvC,MAAM,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;KAC9B;IACD,MAAM,iBAAiB,CAAC,GAAG,CAAC,CAAC;IAC7B,MAAM,iBAAiB,CAAC,WAAW,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;AAC9D,CAAC;AAED,KAAK,UAAU,wBAAwB;IACrC,MAAM,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACrB,MAAM,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AAC/B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=sync.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.test.d.ts","sourceRoot":"","sources":["../../test/sync.test.ts"],"names":[],"mappings":""}