From c4bbfea18d995948012f45a6afda7a6e6ba56f84 Mon Sep 17 00:00:00 2001 From: Eduardo Julian Date: Tue, 24 Nov 2020 05:18:04 -0400 Subject: Better error messages when re-using a name when making a definition. --- stdlib/source/test/aedifex/command/deps.lux | 88 +++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 stdlib/source/test/aedifex/command/deps.lux (limited to 'stdlib/source/test/aedifex/command/deps.lux') diff --git a/stdlib/source/test/aedifex/command/deps.lux b/stdlib/source/test/aedifex/command/deps.lux new file mode 100644 index 000000000..c0617188d --- /dev/null +++ b/stdlib/source/test/aedifex/command/deps.lux @@ -0,0 +1,88 @@ +(.module: + [lux #* + ["_" test (#+ Test)] + [abstract + [monad (#+ do)] + ["." predicate]] + [control + ["." try] + [concurrency + ["." promise]]] + [data + [text + ["%" format (#+ format)]] + [collection + ["." dictionary] + ["." set]]] + [math + ["." random (#+ Random)]] + [world + ["." file]]] + ["$." /// #_ + ["#." package] + ["#." artifact] + ["#." dependency #_ + ["#/." resolution]]] + {#program + ["." / + ["//#" /// #_ + ["#" profile] + ["#." action] + ["#." pom] + ["#." package] + ["#." cache] + ["#." repository] + ["#." artifact + ["#/." type]] + ["#." dependency + ["#/." resolution]]]]}) + +(def: #export test + Test + (<| (_.covering /._) + (do random.monad + [dependee-artifact $///artifact.random + depender-artifact (random.filter (predicate.complement + (:: ///artifact.equivalence = dependee-artifact)) + $///artifact.random) + + [_ dependee-package] $///package.random + [_ depender-package] $///package.random + + #let [dependee {#///dependency.artifact dependee-artifact + #///dependency.type ///artifact/type.lux-library} + depender {#///dependency.artifact depender-artifact + #///dependency.type ///artifact/type.lux-library} + + dependee-pom (|> (:: ///.monoid identity) + (set@ #///.identity (#.Some dependee-artifact)) + ///pom.write + try.assume) + depender-pom (|> (:: ///.monoid identity) + (set@ #///.identity (#.Some depender-artifact)) + (set@ #///.dependencies (set.from-list ///dependency.hash (list dependee))) + ///pom.write + try.assume) + + dependee-package (|> dependee-package + (set@ #///package.origin #///package.Remote) + (set@ #///package.pom dependee-pom)) + depender-package (|> depender-package + (set@ #///package.origin #///package.Remote) + (set@ #///package.pom depender-pom)) + + fs (file.mock (:: file.default separator))]] + (wrap (do promise.monad + [verdict (do ///action.monad + [pre (|> ///dependency/resolution.empty + (dictionary.put dependee dependee-package) + (///cache.write-all fs)) + post (|> (:: ///.monoid identity) + (set@ #///.dependencies (set.from-list ///dependency.hash (list dependee depender))) + (/.do! fs (list (///repository.mock ($///dependency/resolution.single depender-artifact depender-package) []))))] + (wrap (and (and (set.member? pre dependee-artifact) + (not (set.member? pre depender-artifact))) + (and (not (set.member? post dependee-artifact)) + (set.member? post depender-artifact)))))] + (_.claim [/.do!] + (try.default false verdict))))))) -- cgit v1.2.3