about summary refs log tree commit diff
path: root/lib/fileset/tests.sh
AgeCommit message (Collapse)AuthorFilesLines
2024-02-27lib.fileset: Fix tests on Darwin, more POSIXSilvan Mosberger1-48/+52
This was found when trying to run the fileset tests on Darwin (https://github.com/NixOS/nix/pull/9546#issuecomment-1967409445), which mysteriously fail on Darwin: test case at lib/fileset/tests.sh:342 failed: toSource { root = "/nix/store/foobar"; fileset = ./.; } should have errored with this regex pattern: lib.fileset.toSource: `root` \(/nix/store/foobar\) is a string-like value, but it should be a path instead. \s*Paths in strings are not supported by `lib.fileset`, use `lib.sources` or derivations instead. but this was the actual error: error: lib.fileset.toSource: `root` (/nix/store/foobar) is a string-like value, but it should be a path instead. Paths in strings are not supported by `lib.fileset`, use `lib.sources` or derivations instead. After dissecting this, I find out that apparently \s works on Linux, but not on Darwin for some reason! From the bash source code, it looks like <regex.h> with `REG_EXTENDED` is used for all platforms the same, so there's nothing odd there. It's almost impossible to know where <regex.h> comes from, but it looks to be a POSIX thing. So after digging through the almost impossible to find POSIX specifications (https://pubs.opengroup.org/onlinepubs/007908799/xbd/re.html#tag_007_003_005), I can indeed confirm that there's no mention of \s or the like! _However_, there is a mention of `[[:blank:]]`, so we'll use that instead.
2024-02-26lib.fileset.toList: initSilvan Mosberger1-2/+22
2024-02-01lib.fileset.gitTracked: Allow clones of shallow repositoriesibbem1-0/+13
The only reason shallow clones are not the default in `builtins.fetchGit` is that `revCount` can't be provided when cloning a shallow repository. However, `revCount` isn't used or exposed by `lib.fileset`. Hence, allowing cloning shallow repositories makes `gitTracked` more general without any drawbacks. Co-authored-by: Silvan Mosberger <github@infinisil.com>
2023-12-19Remove --simulate-pure-evalSilvan Mosberger1-36/+18
2023-12-19lib.fileset.gitTracked: Support out-of-tree buildsSilvan Mosberger1-3/+53
2023-12-11lib.fileset.gitTracked: Improve error when passing filesSilvan Mosberger1-0/+6
2023-11-24Merge pull request #266362 from tweag/fileset.fileFilter-extSilvan Mosberger1-1/+34
`lib.fileset.fileFilter`: Predicate attribute for file extension
2023-11-23lib.fileset.fileFilter: Predicate attribute for file extensionSilvan Mosberger1-1/+34
2023-11-20lib.fileset.maybeMissing: initSilvan Mosberger1-1/+36
2023-11-19lib.fileset: Minor changesSilvan Mosberger1-1/+6
- Make fromSource's missing file error message more consistent with others, and add a test for it - Indent some function arguments - Fix an internal type
2023-11-16lib.fileset.gitTracked: Better error in pure evalSilvan Mosberger1-16/+42
2023-11-16lib.fileset.gitTrackedWith: Introduce recurseSubmodules parameterSilvan Mosberger1-3/+26
2023-11-16lib.fileset.gitTracked/gitTrackedWith: initSilvan Mosberger1-1/+146
A configuration parameter for gitTrackedWith will be introduced in the next commit
2023-11-15lib.fileset.fileFilter: Restrict second argument to pathsSilvan Mosberger1-11/+4
While this change is backwards-incompatible, I think it's okay because: - The `fileFilter` function is not yet in a stable NixOS release, it was only merged about [a month ago](https://github.com/NixOS/nixpkgs/pull/257356). - All public uses of the function on GitHub only pass a path - Any `fileFilter pred fileset` can also be expressed as `intersection fileset (fileFilter pred path)` without loss of functionality. - This is furthermore pointed out in the new error message when a file set is passed
2023-11-15Merge pull request #267381 from tweag/fileset.fileFilter-pathSilvan Mosberger1-0/+27
`fileset.fileFilter`: Don't run predicate unnecessarily
2023-11-14lib.fileset.fileFilter: Don't run predicate unnecessarilySilvan Mosberger1-0/+20
Before: nix-repl> fileset.trace (fileset.fileFilter (file: builtins.trace file.name false) ./default.nix) trace: README.md trace: benchmark.sh trace: default.nix trace: internal.nix trace: mock-splitRoot.nix trace: tests.sh After: nix-repl> fileset.trace (fileset.fileFilter (file: builtins.trace file.name false) ./default.nix) trace: default.nix
2023-11-14lib.fileset.fileFilter: Minor cleanups and more testsSilvan Mosberger1-0/+7
2023-11-10Merge pull request #261732 from tweag/fileset.fromSourceRobert Hensing1-26/+262
`lib.fileset.fromSource`: init
2023-11-08lib.fileset: Make error messages more uniformSilvan Mosberger1-23/+23
Just minor changes like: - Always using "X is a Y, but it should be Z" - "X is a path that does not exist" rather than "X does not exist" - Always using multi-line strings for errors - Always quoting string-like values and not quoting path-like values - But do quote filesystem roots. Even though they're paths, they might be very small, good to have quotes to know the start/end - Capitalise the first word - Distinguish root vs filesystem root more
2023-11-08lib.fileset.toSource: Mention fromSource in errorsSilvan Mosberger1-0/+7
2023-11-08lib.fileset.fromSource: initSilvan Mosberger1-0/+213
2023-11-08lib.fileset: Split out internal test helperSilvan Mosberger1-26/+42
2023-11-01Merge pull request #259065 from tweag/fileset.differenceSilvan Mosberger1-0/+98
`lib.fileset.difference`: init
2023-10-30lib.fileset.difference: initSilvan Mosberger1-0/+98
2023-10-30lib.fileset.toSource: Improve error for unknown file typesSilvan Mosberger1-1/+3
This does decrease performance unfortunately Benchmarking expression toSource { root = ./.; fileset = ./.; } Mean CPU time 0.103747 (σ = 0.012415) for 10 runs is 97.32181384964636% (σ = 16.34179537413021%) of the old value 0.106602 (σ = 0.0125571) Statistic .envs.elements (205920) is 105.5842% (+10891) of the old value 195029 Statistic .gc.totalBytes (20247696) is 101.7495% (+348160) of the old value 19899536 Statistic .nrThunks (134824) is 108.7878% (+10891) of the old value 123933 Statistic .symbols.number (996) is 100.1005% (+1) of the old value 995 Statistic .values.number (275238) is 104.1199% (+10891) of the old value 264347
2023-10-26lib.fileset.toSource: Test with unknown file typeSilvan Mosberger1-0/+5
Currently just throws the Nix error because unknown file types are not supported by the Nix store, but nothing catches this error earlier (yet, see next commit)
2023-10-26lib.fileset: Fix shellcheck warnings in testsSilvan Mosberger1-4/+4
2023-10-24lib.fileset.fileFilter: initSilvan Mosberger1-0/+67
2023-10-16lib.fileset: Improved error for unsupported coercion valuesSilvan Mosberger1-2/+2
2023-10-11lib.fileset.intersection: initSilvan Mosberger1-0/+95
2023-10-04Merge pull request #256417 from tweag/fileset.traceSilvan Mosberger1-59/+286
`lib.fileset.trace`, `lib.fileset.traceVal`: init
2023-10-04lib.fileset: Don't use ulimit for testing tracingSilvan Mosberger1-8/+13
2023-10-04lib.fileset: Refactor inotify testing to be reusableSilvan Mosberger1-51/+87
2023-10-04lib.fileset: Mention trace functions in the file set evaluation errorSilvan Mosberger1-2/+6
2023-10-04lib.fileset.traceVal: initSilvan Mosberger1-0/+14
2023-10-04lib.fileset.trace: initSilvan Mosberger1-0/+151
2023-10-04lib.fileset: Make expectEqual check moreSilvan Mosberger1-4/+21
2023-10-03lib.fileset.unions: Fix outdated docsSilvan Mosberger1-1/+1
Since 4f35f003e6e5b800be75e3985054e5fce2dea50a unions supports empty lists too
2023-10-03lib.fileset: Order noEval lastSilvan Mosberger1-2/+2
2023-10-03Merge pull request #257351 from tweag/fileset.emptyRobert Hensing1-7/+33
`lib.fileset`: Representation for empty file sets without a base path
2023-10-03lib.fileset: Internal representation v3, empty value without a baseSilvan Mosberger1-7/+33
`unions []` now works! Notably the new empty value without a base is not exposed in the interface. I don't know of any use case for it.
2023-09-29lib.fileset: Don't use non-reproducible ulimit for stack overflow testingSilvan Mosberger1-6/+7
2023-09-21lib.fileset: Minor changes from feedbackSilvan Mosberger1-14/+14
Co-authored-by: Robert Hensing <robert@roberthensing.nl> Co-authored-by: Valentin Gagarin <valentin.gagarin@tweag.io>
2023-09-21lib.fileset: Internal representation v2, ~12x faster unions!Silvan Mosberger1-5/+7
$ ./benchmark.sh HEAD [...] Mean CPU time 0.04006 (σ = 0.0040146) for 10 runs is 8.193619775953792% (σ = 0.9584251052704821%) of the old value 0.488917 (σ = 0.0294955) [...]
2023-09-21lib.fileset: Ignore irrelevant shellcheck warningsSilvan Mosberger1-0/+2
2023-09-21lib.fileset.unions: Don't stack overflow for many filesSilvan Mosberger1-0/+13
2023-09-21lib.fileset: Optimise testsSilvan Mosberger1-4/+18
Previously a lot of processes were used, slowing it down considerably the more files were tested
2023-09-21lib.fileset: Various updates relating to union/unionsSilvan Mosberger1-1/+1
Also some minor formatting improvements
2023-09-21lib.fileset: Create tests for union and unionsSilvan Mosberger1-0/+82
2023-09-13lib.fileset.toSource: Evaluate fileset even for empty directoriesSilvan Mosberger1-0/+3