this repo has no description
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

cue/load: add test case for non-package directories

Currently if we use a pattern like `./...:foo` and there's a `package
foo` file in the root directory, every single directory counts as an
instance of package foo even if it doesn't have any `package foo` files.

This can result in serious performance issues.

We add a test to demonstrate that issue and test a few other edge cases.
We'll fix the issue in the next CL.

Signed-off-by: Roger Peppe <rogpeppe@gmail.com>
Change-Id: Iaeb2440dec3ac3af29ce1472e6cf4f459837ca48
Reviewed-on: https://cue.gerrithub.io/c/cue-lang/cue/+/1230081
Reviewed-by: Daniel Martí <mvdan@mvdan.cc>
Unity-Result: CUE porcuepine <cue.porcuepine@gmail.com>
TryBot-Result: CUEcueckoo <cueckoo@cuelang.org>

+77
+54
cue/load/loader_test.go
··· 98 98 imports: 99 99 mod.test/test/sub: $CWD/testdata/testmod/sub/sub.cue`, 100 100 }, { 101 + name: "ExplicitPackageWithNonCUEDirectories", 102 + cfg: &Config{ 103 + Dir: testdataDir, 104 + Tools: false, 105 + }, 106 + args: []string{"./noncuedirectories/...:foo"}, 107 + want: `path: mod.test/test/noncuedirectories@v0:foo 108 + module: mod.test/test@v0 109 + root: $CWD/testdata/testmod 110 + dir: $CWD/testdata/testmod/noncuedirectories 111 + display:./noncuedirectories 112 + files: 113 + $CWD/testdata/testmod/noncuedirectories/root.cue 114 + 115 + path: mod.test/test/noncuedirectories/a@v0:foo 116 + module: mod.test/test@v0 117 + root: $CWD/testdata/testmod 118 + dir: $CWD/testdata/testmod/noncuedirectories/a 119 + display:./noncuedirectories/a 120 + files: 121 + $CWD/testdata/testmod/noncuedirectories/root.cue 122 + 123 + path: mod.test/test/noncuedirectories/b@v0:foo 124 + module: mod.test/test@v0 125 + root: $CWD/testdata/testmod 126 + dir: $CWD/testdata/testmod/noncuedirectories/b 127 + display:./noncuedirectories/b 128 + files: 129 + $CWD/testdata/testmod/noncuedirectories/root.cue 130 + 131 + path: mod.test/test/noncuedirectories/b/c@v0:foo 132 + module: mod.test/test@v0 133 + root: $CWD/testdata/testmod 134 + dir: $CWD/testdata/testmod/noncuedirectories/b/c 135 + display:./noncuedirectories/b/c 136 + files: 137 + $CWD/testdata/testmod/noncuedirectories/root.cue 138 + $CWD/testdata/testmod/noncuedirectories/b/c/foo.cue 139 + 140 + path: mod.test/test/noncuedirectories/if@v0:foo 141 + module: mod.test/test@v0 142 + root: $CWD/testdata/testmod 143 + dir: $CWD/testdata/testmod/noncuedirectories/if 144 + display:./noncuedirectories/if 145 + files: 146 + $CWD/testdata/testmod/noncuedirectories/root.cue 147 + 148 + path: mod.test/test/noncuedirectories/tool@v0:foo 149 + module: mod.test/test@v0 150 + root: $CWD/testdata/testmod 151 + dir: $CWD/testdata/testmod/noncuedirectories/tool 152 + display:./noncuedirectories/tool 153 + files: 154 + $CWD/testdata/testmod/noncuedirectories/root.cue`}, { 101 155 name: "DefaultPackageWithExplicitDotArgument", 102 156 // Even though the directory is called testdata, the last path in 103 157 // the module is test. So "package test" is correctly the default
+3
cue/load/testdata/testmod/noncuedirectories/a/foo.txt
··· 1 + this non-CUE file keeps the directory around 2 + and used to be counted as CUE instance in some cases. 3 +
+6
cue/load/testdata/testmod/noncuedirectories/b/c/foo.cue
··· 1 + // This file should be unified with ../../root.cue even 2 + // though there are no CUE files in its immediate parent 3 + // directory. 4 + 5 + package foo 6 +
+7
cue/load/testdata/testmod/noncuedirectories/if/foo.cue
··· 1 + // This file will be excluded because the @if constraint 2 + // isn't satisfied but ../root.cue should be included even so. 3 + 4 + @if(never) 5 + 6 + package foo 7 +
+2
cue/load/testdata/testmod/noncuedirectories/root.cue
··· 1 + package foo 2 +
+5
cue/load/testdata/testmod/noncuedirectories/tool/foo_tool.cue
··· 1 + // This file will be excluded because it's a tool file 2 + // but ../root.cue should be included even so. 3 + 4 + package foo 5 +