test(3p/nix): Add test for derivation parse/serialize
Add a rapidcheck test covering roundtrip parse and serialize for Nix
derivations. This covers a bug we discovered in ef54f5d which broke this
roundtrip.
Change-Id: I72d140334b5f24f79e82e34f98609c695dbfbf93
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1582
Tested-by: BuildkiteCI
Reviewed-by: kanepyork <rikingcoding@gmail.com>
This commit is contained in:
parent
7aebba7531
commit
cc82d6e360
4 changed files with 121 additions and 2 deletions
2
third_party/nix/src/libstore/derivations.cc
vendored
2
third_party/nix/src/libstore/derivations.cc
vendored
|
|
@ -144,7 +144,7 @@ static StringSet parseStrings(std::istream& str, bool arePaths) {
|
|||
return res;
|
||||
}
|
||||
|
||||
static Derivation parseDerivation(const std::string& s) {
|
||||
Derivation parseDerivation(const std::string& s) {
|
||||
Derivation drv;
|
||||
istringstream_nocopy str(s);
|
||||
expect(str, "Derive([");
|
||||
|
|
|
|||
4
third_party/nix/src/libstore/derivations.hh
vendored
4
third_party/nix/src/libstore/derivations.hh
vendored
|
|
@ -16,10 +16,10 @@ const std::string drvExtension = ".drv";
|
|||
|
||||
struct DerivationOutput {
|
||||
Path path;
|
||||
// TODO(grfn): make these two fields a Hash
|
||||
std::string hashAlgo; /* hash used for expected hash computation */
|
||||
std::string hash; /* expected hash, may be null */
|
||||
DerivationOutput() {}
|
||||
// TODO(grfn): Make explicit
|
||||
DerivationOutput(Path path, std::string hashAlgo, std::string hash) {
|
||||
this->path = path;
|
||||
this->hashAlgo = hashAlgo;
|
||||
|
|
@ -92,6 +92,8 @@ Path writeDerivation(const ref<Store>& store, const Derivation& drv,
|
|||
/* Read a derivation from a file. */
|
||||
Derivation readDerivation(const Path& drvPath);
|
||||
|
||||
Derivation parseDerivation(const std::string& s);
|
||||
|
||||
/* Check whether a file name ends with the extension for
|
||||
derivations. */
|
||||
bool isDerivation(const std::string& fileName);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue