+(test-assert "reverse bag DAG"
+ (let-values (((dune bap ocaml-base)
+ (values (specification->package "dune")
+ (specification->package "bap")
+ (specification->package "ocaml4.07-base")))
+ ((backend nodes+edges) (make-recording-backend)))
+ (run-with-store %store
+ (export-graph (list dune) 'port
+ #:node-type %reverse-bag-node-type
+ #:backend backend))
+
+ (run-with-store %store
+ (mlet %store-monad ((dune-drv (package->derivation dune))
+ (bap-drv (package->derivation bap))
+ (ocaml-base-drv (package->derivation ocaml-base)))
+ ;; OCAML-BASE uses 'dune-build-system' so DUNE is a direct dependency.
+ ;; BAP is much higher in the stack but it should be there.
+ (let-values (((nodes edges) (nodes+edges)))
+ (return
+ (and (member `(,(derivation-file-name bap-drv)
+ ,(package-full-name bap))
+ nodes)
+ (->bool (member (map derivation-file-name
+ (list dune-drv ocaml-base-drv))
+ edges)))))))))
+