aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/test/aedifex/command/deps.lux
diff options
context:
space:
mode:
authorEduardo Julian2020-11-24 05:18:04 -0400
committerEduardo Julian2020-11-24 05:18:04 -0400
commitc4bbfea18d995948012f45a6afda7a6e6ba56f84 (patch)
treeb3c425471830788965776fd173169f084d9f6af4 /stdlib/source/test/aedifex/command/deps.lux
parentd89d837de3475b75587a4293e094d755d2cd4626 (diff)
Better error messages when re-using a name when making a definition.
Diffstat (limited to 'stdlib/source/test/aedifex/command/deps.lux')
-rw-r--r--stdlib/source/test/aedifex/command/deps.lux88
1 files changed, 88 insertions, 0 deletions
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)))))))