aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/cli/internal/lockfile/berry_lockfile_test.go
diff options
context:
space:
mode:
author简律纯 <hsiangnianian@outlook.com>2023-04-28 01:36:55 +0800
committer简律纯 <hsiangnianian@outlook.com>2023-04-28 01:36:55 +0800
commitfc8c5fdce62fb229202659408798a7b6c98f6e8b (patch)
tree7554f80e50de4af6fd255afa7c21bcdd58a7af34 /cli/internal/lockfile/berry_lockfile_test.go
parentdd84b9d64fb98746a230cd24233ff50a562c39c9 (diff)
downloadHydroRoll-fc8c5fdce62fb229202659408798a7b6c98f6e8b.tar.gz
HydroRoll-fc8c5fdce62fb229202659408798a7b6c98f6e8b.zip
Diffstat (limited to 'cli/internal/lockfile/berry_lockfile_test.go')
-rw-r--r--cli/internal/lockfile/berry_lockfile_test.go273
1 files changed, 0 insertions, 273 deletions
diff --git a/cli/internal/lockfile/berry_lockfile_test.go b/cli/internal/lockfile/berry_lockfile_test.go
deleted file mode 100644
index afcbe46..0000000
--- a/cli/internal/lockfile/berry_lockfile_test.go
+++ /dev/null
@@ -1,273 +0,0 @@
-package lockfile
-
-import (
- "bytes"
- "testing"
-
- "github.com/vercel/turbo/cli/internal/turbopath"
- "gotest.tools/v3/assert"
-)
-
-func getBerryLockfile(t *testing.T, filename string) *BerryLockfile {
- content, err := getFixture(t, filename)
- if err != nil {
- t.Error(err)
- }
- lockfile, err := DecodeBerryLockfile(content)
- if err != nil {
- t.Error(err)
- }
- return lockfile
-}
-
-func Test_DecodingBerryLockfile(t *testing.T) {
- lockfile := getBerryLockfile(t, "berry.lock")
- assert.Equal(t, lockfile.version, 6)
- assert.Equal(t, lockfile.cacheKey, "8c0")
-}
-
-func Test_ResolvePackage(t *testing.T) {
- lockfile := getBerryLockfile(t, "berry.lock")
-
- type Case struct {
- name string
- semver string
- key string
- version string
- found bool
- }
-
- cases := map[string]Case{
- "can resolve '||' semver syntax": {
- name: "js-tokens",
- semver: "^3.0.0 || ^4.0.0",
- key: "js-tokens@npm:4.0.0",
- version: "4.0.0",
- found: true,
- },
- "handles packages with multiple descriptors": {
- name: "js-tokens",
- semver: "^4.0.0",
- key: "js-tokens@npm:4.0.0",
- version: "4.0.0",
- found: true,
- },
- "doesn't find nonexistent descriptors": {
- name: "@babel/code-frame",
- semver: "^7.12.11",
- found: false,
- },
- "handles workspace packages": {
- name: "eslint-config-custom",
- semver: "*",
- key: "eslint-config-custom@workspace:packages/eslint-config-custom",
- version: "0.0.0-use.local",
- found: true,
- },
- }
-
- for testName, testCase := range cases {
- pkg, err := lockfile.ResolvePackage("some-pkg", testCase.name, testCase.semver)
- assert.NilError(t, err)
- if testCase.found {
- assert.Equal(t, pkg.Key, testCase.key, testName)
- assert.Equal(t, pkg.Version, testCase.version, testName)
- }
- assert.Equal(t, pkg.Found, testCase.found, testName)
- }
-}
-
-func Test_AllDependencies(t *testing.T) {
- lockfile := getBerryLockfile(t, "berry.lock")
-
- pkg, err := lockfile.ResolvePackage("some-pkg", "react-dom", "18.2.0")
- assert.NilError(t, err)
- assert.Assert(t, pkg.Found, "expected to find react-dom")
- deps, found := lockfile.AllDependencies(pkg.Key)
- assert.Assert(t, found, "expected lockfile key for react-dom to be present")
- assert.Equal(t, len(deps), 2, "expected to find all react-dom direct dependencies")
- for pkgName, version := range deps {
- pkg, err := lockfile.ResolvePackage("some-pkg", pkgName, version)
- assert.NilError(t, err, "error finding %s@%s", pkgName, version)
- assert.Assert(t, pkg.Found, "expected to find lockfile entry for %s@%s", pkgName, version)
- }
-}
-
-func Test_BerryPatchList(t *testing.T) {
- lockfile := getBerryLockfile(t, "berry.lock")
-
- var locator _Locator
- if err := locator.parseLocator("resolve@npm:2.0.0-next.4"); err != nil {
- t.Error(err)
- }
-
- patchLocator, ok := lockfile.patches[locator]
- assert.Assert(t, ok, "Expected to find patch locator")
- patch, ok := lockfile.packages[patchLocator]
- assert.Assert(t, ok, "Expected to find patch")
- assert.Equal(t, patch.Version, "2.0.0-next.4")
-}
-
-func Test_PackageExtensions(t *testing.T) {
- lockfile := getBerryLockfile(t, "berry.lock")
-
- expectedExtensions := map[_Descriptor]_void{}
- for _, extension := range []string{"@babel/types@npm:^7.8.3", "lodash@npm:4.17.21"} {
- var extensionDescriptor _Descriptor
- if err := extensionDescriptor.parseDescriptor(extension); err != nil {
- t.Error(err)
- }
- expectedExtensions[extensionDescriptor] = _void{}
- }
-
- assert.DeepEqual(t, lockfile.packageExtensions, expectedExtensions)
-}
-
-func Test_StringifyMetadata(t *testing.T) {
- metadata := BerryLockfileEntry{
- Version: "6",
- CacheKey: "8c0",
- }
- lockfile := map[string]*BerryLockfileEntry{"__metadata": &metadata}
-
- var b bytes.Buffer
- err := _writeBerryLockfile(&b, lockfile)
- assert.Assert(t, err == nil)
- assert.Equal(t, b.String(), `
-__metadata:
- version: 6
- cacheKey: 8c0
-`)
-}
-
-func Test_BerryRoundtrip(t *testing.T) {
- content, err := getFixture(t, "berry.lock")
- if err != nil {
- t.Error(err)
- }
- lockfile, err := DecodeBerryLockfile(content)
- if err != nil {
- t.Error(err)
- }
-
- var b bytes.Buffer
- if err := lockfile.Encode(&b); err != nil {
- t.Error(err)
- }
-
- assert.Equal(t, b.String(), string(content))
-}
-
-func Test_PatchPathExtraction(t *testing.T) {
- type Case struct {
- locator string
- patchPath string
- isPatch bool
- }
- cases := []Case{
- {
- locator: "lodash@patch:lodash@npm%3A4.17.21#./.yarn/patches/lodash-npm-4.17.21-6382451519.patch::version=4.17.21&hash=2c6e9e&locator=berry-patch%40workspace%3A.",
- patchPath: ".yarn/patches/lodash-npm-4.17.21-6382451519.patch",
- isPatch: true,
- },
- {
- locator: "lodash@npm:4.17.21",
- isPatch: false,
- },
- {
- locator: "resolve@patch:resolve@npm%3A2.0.0-next.4#~builtin<compat/resolve>::version=2.0.0-next.4&hash=07638b",
- patchPath: "~builtin<compat/resolve>",
- isPatch: true,
- },
- }
-
- for _, testCase := range cases {
- var locator _Locator
- err := locator.parseLocator(testCase.locator)
- if err != nil {
- t.Error(err)
- }
- patchPath, isPatch := locator.patchPath()
- assert.Equal(t, isPatch, testCase.isPatch, locator)
- assert.Equal(t, patchPath, testCase.patchPath, locator)
- }
-}
-
-func Test_PatchPrimaryVersion(t *testing.T) {
- // todo write tests to make sure extraction actually works
- type TestCase struct {
- descriptor string
- version string
- isPatch bool
- }
- testCases := []TestCase{
- {
- descriptor: "lodash@patch:lodash@npm%3A4.17.21#./.yarn/patches/lodash-npm-4.17.21-6382451519.patch::locator=berry-patch%40workspace%3A.",
- version: "npm:4.17.21",
- isPatch: true,
- },
- {
- descriptor: "typescript@patch:typescript@^4.5.2#~builtin<compat/typescript>",
- version: "npm:^4.5.2",
- isPatch: true,
- },
- {
- descriptor: "react@npm:18.2.0",
- isPatch: false,
- },
- }
-
- for _, testCase := range testCases {
- var d _Descriptor
- err := d.parseDescriptor(testCase.descriptor)
- assert.NilError(t, err, testCase.descriptor)
- actual, isPatch := d.primaryVersion()
- assert.Equal(t, isPatch, testCase.isPatch, testCase)
- if testCase.isPatch {
- assert.Equal(t, actual, testCase.version, testCase.descriptor)
- }
- }
-}
-
-func Test_BerryPruneDescriptors(t *testing.T) {
- lockfile := getBerryLockfile(t, "minimal-berry.lock")
- prunedLockfile, err := lockfile.Subgraph(
- []turbopath.AnchoredSystemPath{
- turbopath.AnchoredUnixPath("packages/a").ToSystemPath(),
- turbopath.AnchoredUnixPath("packages/c").ToSystemPath(),
- },
- []string{"lodash@npm:4.17.21"},
- )
- if err != nil {
- t.Error(err)
- }
- lockfileA := prunedLockfile.(*BerryLockfile)
-
- prunedLockfile, err = lockfile.Subgraph(
- []turbopath.AnchoredSystemPath{
- turbopath.AnchoredUnixPath("packages/b").ToSystemPath(),
- turbopath.AnchoredUnixPath("packages/c").ToSystemPath(),
- },
- []string{"lodash@npm:4.17.21"},
- )
- if err != nil {
- t.Error(err)
- }
- lockfileB := prunedLockfile.(*BerryLockfile)
-
- lodashIdent := _Ident{name: "lodash"}
- lodashA := _Descriptor{lodashIdent, "npm:^4.17.0"}
- lodashB := _Descriptor{lodashIdent, "npm:^3.0.0 || ^4.0.0"}
-
- lodashEntryA, hasLodashA := lockfileA.descriptors[lodashA]
- lodashEntryB, hasLodashB := lockfileB.descriptors[lodashB]
-
- assert.Assert(t, hasLodashA, "Expected lockfile a to have descriptor used by a")
- assert.Assert(t, hasLodashB, "Expected lockfile b to have descriptor used by b")
- assert.DeepEqual(t, lodashEntryA.reference, lodashEntryB.reference)
-
- _, lockfileAHasB := lockfileA.descriptors[lodashB]
- _, lockfileBHasA := lockfileB.descriptors[lodashA]
- assert.Assert(t, !lockfileAHasB, "Expected lockfile a not to have descriptor used by b")
- assert.Assert(t, !lockfileBHasA, "Expected lockfile b not to have descriptor used by a")
-}