Skip to content

Commit

Permalink
Merge branch 'next' into fix-date-parameters-with-zero
Browse files Browse the repository at this point in the history
  • Loading branch information
Shinigami92 authored Nov 8, 2022
2 parents bf815fe + 99b6fb2 commit 888714b
Show file tree
Hide file tree
Showing 5 changed files with 151 additions and 53 deletions.
6 changes: 3 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -105,8 +105,8 @@
"@types/validator": "~13.7.10",
"@typescript-eslint/eslint-plugin": "~5.42.0",
"@typescript-eslint/parser": "~5.42.0",
"@vitest/coverage-c8": "~0.24.5",
"@vitest/ui": "~0.24.5",
"@vitest/coverage-c8": "~0.25.1",
"@vitest/ui": "~0.25.1",
"@vueuse/core": "~9.4.0",
"c8": "~7.12.0",
"conventional-changelog-cli": "~2.2.2",
Expand Down Expand Up @@ -139,7 +139,7 @@
"validator": "~13.7.0",
"vite": "~3.2.3",
"vitepress": "1.0.0-alpha.27",
"vitest": "~0.24.5",
"vitest": "~0.25.1",
"vue": "~3.2.41"
},
"packageManager": "pnpm@7.14.2",
Expand Down
36 changes: 22 additions & 14 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

69 changes: 63 additions & 6 deletions src/modules/git/index.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,23 @@
import type { Faker } from '../..';

const GIT_DATE_FORMAT_BASE = new Intl.DateTimeFormat('en', {
weekday: 'short',
month: 'short',
day: 'numeric',
hour: '2-digit',
hourCycle: 'h24',
minute: '2-digit',
second: '2-digit',
year: 'numeric',
timeZone: 'UTC',
});
const GIT_TIMEZONE_FORMAT = new Intl.NumberFormat('en', {
minimumIntegerDigits: 4,
maximumFractionDigits: 0,
useGrouping: false,
signDisplay: 'always',
});

/**
* Module to generate git related entries.
*/
Expand Down Expand Up @@ -29,7 +47,7 @@ export class GitModule {
}

/**
* Generates a random commit entry.
* Generates a random commit entry as printed by `git log`.
*
* @param options Options for the commit entry.
* @param options.merge Set to `true` to generate a merge message line.
Expand All @@ -42,10 +60,10 @@ export class GitModule {
* @example
* faker.git.commitEntry()
* // commit fe8c38a965d13d9794eb36918cb24cebe49a45c2
* // Author: Mable Harvey <Cynthia_Quigley@yahoo.com>
* // Date: Sat Feb 05 2022 15:09:18 GMT+0100 (Mitteleuropäische Normalzeit)
* // Author: Marion Becker <Marion_Becker49@gmail.com>
* // Date: Mon Nov 7 05:38:37 2022 -0600
* //
* // copy primary system
* // generate open-source system
*
* @since 5.0.0
*/
Expand All @@ -68,9 +86,16 @@ export class GitModule {
lines.push(`Merge: ${this.shortSha()} ${this.shortSha()}`);
}

const firstName = this.faker.person.firstName();
const lastName = this.faker.person.lastName();
const fullName = this.faker.person.fullName({ firstName, lastName });
const username = this.faker.internet.userName(firstName, lastName);
const user = this.faker.helpers.arrayElement([fullName, username]);
const email = this.faker.internet.email(firstName, lastName);

lines.push(
`Author: ${this.faker.person.firstName()} ${this.faker.person.lastName()} <${this.faker.internet.email()}>`,
`Date: ${this.faker.date.recent(1, refDate).toString()}`,
`Author: ${user} <${email}>`,
`Date: ${this.commitDate({ refDate })}`,
'',
`\xa0\xa0\xa0\xa0${this.commitMessage()}`,
// to end with a eol char
Expand All @@ -95,6 +120,38 @@ export class GitModule {
return `${this.faker.hacker.verb()} ${this.faker.hacker.adjective()} ${this.faker.hacker.noun()}`;
}

/**
* Generates a date string for a git commit using the same format as `git log`.
*
* @param options The optional options object.
* @param options.refDate The date to use as reference point for the commit. Defaults to now.
*
* @example
* faker.git.commitDate() // 'Mon Nov 7 14:40:58 2022 +0600'
* faker.git.commitDate({ refDate: '2020-01-01' }) // 'Tue Dec 31 05:40:59 2019 -0400'
*
* @since 8.0.0
*/
commitDate(options: { refDate?: string | Date | number } = {}): string {
const { refDate } = options;

const dateParts = GIT_DATE_FORMAT_BASE.format(
this.faker.date.recent(1, refDate)
)
.replace(/,/g, '')
.split(' ');
[dateParts[3], dateParts[4]] = [dateParts[4], dateParts[3]];

// Timezone offset
dateParts.push(
GIT_TIMEZONE_FORMAT.format(
this.faker.datatype.number({ min: -11, max: 12 }) * 100
)
);

return dateParts.join(' ');
}

/**
* Generates a random commit sha (full).
*
Expand Down
72 changes: 45 additions & 27 deletions test/__snapshots__/git.spec.ts.snap
Original file line number Diff line number Diff line change
Expand Up @@ -2,30 +2,36 @@

exports[`git > 42 > branch 1`] = `"array-transmit"`;

exports[`git > 42 > commitDate > with only Date refDate 1`] = `"Tue Dec 31 15:00:39 2019 +0800"`;

exports[`git > 42 > commitDate > with only number refDate 1`] = `"Tue Dec 31 15:00:39 2019 +0800"`;

exports[`git > 42 > commitDate > with only string refDate 1`] = `"Tue Dec 31 15:00:39 2019 +0800"`;

exports[`git > 42 > commitEntry > with only Date refDate 1`] = `
"commit be4abdd39321ad7d3fe01ffce404f4d6db0906bd
Author: Gregg Conn <Eladio.Wiza@gmail.com>
Date: Tue Dec 31 2019 13:03:15 GMT+0000 (Coordinated Universal Time)
Author: Gregg Conn <Gregg_Conn19@gmail.com>
Date: Tue Dec 31 14:49:14 2019 +0100
    bypass neural pixel
    parse multi-byte sensor
"
`;

exports[`git > 42 > commitEntry > with only number refDate 1`] = `
"commit be4abdd39321ad7d3fe01ffce404f4d6db0906bd
Author: Gregg Conn <Eladio.Wiza@gmail.com>
Date: Tue Dec 31 2019 13:03:15 GMT+0000 (Coordinated Universal Time)
Author: Gregg Conn <Gregg_Conn19@gmail.com>
Date: Tue Dec 31 14:49:14 2019 +0100
    bypass neural pixel
    parse multi-byte sensor
"
`;

exports[`git > 42 > commitEntry > with only string refDate 1`] = `
"commit be4abdd39321ad7d3fe01ffce404f4d6db0906bd
Author: Gregg Conn <Eladio.Wiza@gmail.com>
Date: Tue Dec 31 2019 13:03:15 GMT+0000 (Coordinated Universal Time)
Author: Gregg Conn <Gregg_Conn19@gmail.com>
Date: Tue Dec 31 14:49:14 2019 +0100
    bypass neural pixel
    parse multi-byte sensor
"
`;

Expand All @@ -37,30 +43,36 @@ exports[`git > 42 > shortSha 1`] = `"8be4abd"`;

exports[`git > 1211 > branch 1`] = `"capacitor-connect"`;

exports[`git > 1211 > commitDate > with only Date refDate 1`] = `"Tue Dec 31 01:42:55 2019 +0000"`;

exports[`git > 1211 > commitDate > with only number refDate 1`] = `"Tue Dec 31 01:42:55 2019 +0000"`;

exports[`git > 1211 > commitDate > with only string refDate 1`] = `"Tue Dec 31 01:42:55 2019 +0000"`;

exports[`git > 1211 > commitEntry > with only Date refDate 1`] = `
"commit adb42f0e3f4a973fab0aeefce96dfcf49cd438df
Author: Imani Runolfsson <Gracie.Gutmann53@gmail.com>
Date: Tue Dec 31 2019 13:53:17 GMT+0000 (Coordinated Universal Time)
Author: Imani Runolfsson <Imani22@hotmail.com>
Date: Tue Dec 31 10:07:32 2019 -0400
    parse back-end program
    override wireless interface
"
`;

exports[`git > 1211 > commitEntry > with only number refDate 1`] = `
"commit adb42f0e3f4a973fab0aeefce96dfcf49cd438df
Author: Imani Runolfsson <Gracie.Gutmann53@gmail.com>
Date: Tue Dec 31 2019 13:53:17 GMT+0000 (Coordinated Universal Time)
Author: Imani Runolfsson <Imani22@hotmail.com>
Date: Tue Dec 31 10:07:32 2019 -0400
    parse back-end program
    override wireless interface
"
`;

exports[`git > 1211 > commitEntry > with only string refDate 1`] = `
"commit adb42f0e3f4a973fab0aeefce96dfcf49cd438df
Author: Imani Runolfsson <Gracie.Gutmann53@gmail.com>
Date: Tue Dec 31 2019 13:53:17 GMT+0000 (Coordinated Universal Time)
Author: Imani Runolfsson <Imani22@hotmail.com>
Date: Tue Dec 31 10:07:32 2019 -0400
    parse back-end program
    override wireless interface
"
`;

Expand All @@ -72,30 +84,36 @@ exports[`git > 1211 > shortSha 1`] = `"eadb42f"`;

exports[`git > 1337 > branch 1`] = `"port-quantify"`;

exports[`git > 1337 > commitDate > with only Date refDate 1`] = `"Tue Dec 31 17:42:40 2019 +0200"`;

exports[`git > 1337 > commitDate > with only number refDate 1`] = `"Tue Dec 31 17:42:40 2019 +0200"`;

exports[`git > 1337 > commitDate > with only string refDate 1`] = `"Tue Dec 31 17:42:40 2019 +0200"`;

exports[`git > 1337 > commitEntry > with only Date refDate 1`] = `
"commit c346ba075bd57f5a62b82d72af39cbbb07a98cba
Author: Friedrich Dibbert <Edward.Stracke49@yahoo.com>
Date: Tue Dec 31 2019 13:25:40 GMT+0000 (Coordinated Universal Time)
Author: Friedrich Dibbert <Friedrich41@gmail.com>
Date: Tue Dec 31 04:18:56 2019 -0700
    override back-end interface
    reboot haptic capacitor
"
`;

exports[`git > 1337 > commitEntry > with only number refDate 1`] = `
"commit c346ba075bd57f5a62b82d72af39cbbb07a98cba
Author: Friedrich Dibbert <Edward.Stracke49@yahoo.com>
Date: Tue Dec 31 2019 13:25:40 GMT+0000 (Coordinated Universal Time)
Author: Friedrich Dibbert <Friedrich41@gmail.com>
Date: Tue Dec 31 04:18:56 2019 -0700
    override back-end interface
    reboot haptic capacitor
"
`;

exports[`git > 1337 > commitEntry > with only string refDate 1`] = `
"commit c346ba075bd57f5a62b82d72af39cbbb07a98cba
Author: Friedrich Dibbert <Edward.Stracke49@yahoo.com>
Date: Tue Dec 31 2019 13:25:40 GMT+0000 (Coordinated Universal Time)
Author: Friedrich Dibbert <Friedrich41@gmail.com>
Date: Tue Dec 31 04:18:56 2019 -0700
    override back-end interface
    reboot haptic capacitor
"
`;

Expand Down
Loading

0 comments on commit 888714b

Please sign in to comment.