Skip to content

Commit

Permalink
test(cli): check for consistent results with partial extracts
Browse files Browse the repository at this point in the history
  • Loading branch information
nicolas-cherel committed Jun 25, 2024
1 parent 6d02e73 commit 2317d95
Show file tree
Hide file tree
Showing 5 changed files with 179 additions and 1 deletion.
53 changes: 53 additions & 0 deletions packages/cli/test/extract-partial-consistency/existing/en.po
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
msgid ""
msgstr ""
"POT-Creation-Date: 2023-03-15 10:00+0000\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: @lingui/cli\n"
"Language: en\n"
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: \n"
"Plural-Forms: \n"

#. js-lingui-explicit-id
#: fixtures/file-a.ts:11
#~ msgid "custom.id"
#~ msgstr "This message has custom id"

#. js-lingui-explicit-id
#: fixtures/file-a.ts:22
#: fixtures/file-a.ts:23
msgid "addToCart"
msgstr "Add To Cart with change ignored"

#. this is a comment
#: fixtures/file-b.tsx:6
msgid "Hello this is JSX Translation"
msgstr "Hello this is JSX Translation"

#: fixtures/file-b.tsx:11
msgctxt "my context"
msgid "Hello this is JSX Translation"
msgstr "Hello this is JSX Translation"

#: fixtures/file-a.ts:4
msgid "Hello world"
msgstr "Hello world"

#: fixtures/file-a.ts:6
msgctxt "custom context"
msgid "Hello world"
msgstr "Hello world"

#: fixtures/file-a.ts:16
msgid "Message in descriptor"
msgstr "Message in descriptor"

#. js-lingui-explicit-id
#: fixtures/file-b.tsx:15
msgid "jsx.custom.id"
msgstr "This JSX element has custom id"
53 changes: 53 additions & 0 deletions packages/cli/test/extract-partial-consistency/expected/en.po
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
msgid ""
msgstr ""
"POT-Creation-Date: 2023-03-15 10:00+0000\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: @lingui/cli\n"
"Language: en\n"
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: \n"
"Plural-Forms: \n"

#. js-lingui-explicit-id
#: fixtures/file-a.ts:11
#~ msgid "custom.id"
#~ msgstr "This message has custom id"

#. js-lingui-explicit-id
#: fixtures/file-a.ts:22
#: fixtures/file-a.ts:23
msgid "addToCart"
msgstr "Add To Cart with change ignored"

#. this is a comment
#: fixtures/file-b.tsx:6
msgid "Hello this is JSX Translation"
msgstr "Hello this is JSX Translation"

#: fixtures/file-b.tsx:11
msgctxt "my context"
msgid "Hello this is JSX Translation"
msgstr "Hello this is JSX Translation"

#: fixtures/file-a.ts:4
msgid "Hello world"
msgstr "Hello world"

#: fixtures/file-a.ts:6
msgctxt "custom context"
msgid "Hello world"
msgstr "Hello world"

#: fixtures/file-a.ts:16
msgid "Message in descriptor"
msgstr "Message in descriptor"

#. js-lingui-explicit-id
#: fixtures/file-b.tsx:15
msgid "jsx.custom.id"
msgstr "This JSX element has custom id"
23 changes: 23 additions & 0 deletions packages/cli/test/extract-partial-consistency/fixtures/file-a.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import { i18n } from "@lingui/core"
import { defineMessage, t } from "@lingui/macro"

const msg = t`Hello world`

const msg2 = t({
message: "Hello world",
context: "custom context",
})

const msg3 = null /* original translation commented to mark message obsolete *//*t({
message: "This message has custom id",
id: "custom.id",
})*/

const msgDescriptor = defineMessage({
message: "Message in descriptor",
})

i18n._(msgDescriptor)

i18n._("addToCart")
i18n._({id: "addToCart", message: "Add To Cart with change ignored"})
16 changes: 16 additions & 0 deletions packages/cli/test/extract-partial-consistency/fixtures/file-b.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import { Trans } from "@lingui/macro"
import React from "react"

export function MyComponent() {
return (
<Trans comment={"this is a comment"}>Hello this is JSX Translation</Trans>
)
}

export function MyComponent2() {
return <Trans context="my context">Hello this is JSX Translation</Trans>
}

export function MyComponent3() {
return <Trans id={"jsx.custom.id"}>This JSX element has custom id</Trans>
}
35 changes: 34 additions & 1 deletion packages/cli/test/index.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import { command as compileCommand } from "../src/lingui-compile"
import fs from "fs/promises"
import os from "os"
import nodepath from "path"
import glob from "glob"
import { makeConfig } from "@lingui/conf"
import { listingToHumanReadable, readFsToJson } from "../src/tests"
import { getConsoleMockCalls, mockConsole } from "@lingui/jest-mocks"
Expand All @@ -22,13 +23,18 @@ async function prepare(caseFolderName: string) {

const actualPath = nodepath.join(rootDir, "actual")
const expectedPath = nodepath.join(rootDir, "expected")
const existingPath = nodepath.join(rootDir, "existing")

await fs.rm(actualPath, {
recursive: true,
force: true,
})

return { rootDir, actualPath, expectedPath }
if (glob.sync(existingPath).length === 1) {
await fs.cp(existingPath, actualPath, { recursive: true })
}

return { rootDir, actualPath, existingPath, expectedPath }
}

describe("E2E Extractor Test", () => {
Expand Down Expand Up @@ -288,4 +294,31 @@ describe("E2E Extractor Test", () => {
compareFolders(actualPath, expectedPath)
})
})

it("should extract consistently with files argument", async () => {
const { rootDir, actualPath, expectedPath } = await prepare(
"extract-partial-consistency"
)

await extractCommand(
makeConfig({
rootDir: rootDir,
locales: ["en"],
sourceLocale: "en",
format: "po",
catalogs: [
{
path: "<rootDir>/actual/{locale}",
include: ["<rootDir>/fixtures"],
},
],
}),
{
files: [nodepath.join(rootDir, "fixtures", "file-b.tsx")]
}
)

compareFolders(actualPath, expectedPath)
})

})

0 comments on commit 2317d95

Please sign in to comment.