If you have a look in the tests you'll see how I override the config there, but it is a bit naff making you with-redefs one of the library's internal vars, and double naff that you have to wrap it in a delay.
(with-redefs [conf-er/config-map (delay {:test 42})] (fact (config :test) => 42)) If you do that for now, I'll include a tests util in the next release which does the same from a guaranteed stable api function Adam On 6 May 2013 01:46, "Russell Mull" <russell.m...@gmail.com> wrote: > This looks simple and useful, thanks! > > Supposing I had a function that called this library, how could I go about > testing it easily? That is, the configuration file becomes implicitly an > input to the function, one that I'd like to be able to control from my > tests. Perhaps something like this could be used to provide or override > config settings dynamically: > > (with-config {:username "bogus"} > (...)) > > I'm not trying to open the dynamic scoping can of worms here; this library > clearly is a choice for people already willing to work in that way. > > > On Thursday, May 2, 2013 9:40:29 PM UTC+9, Adam Clements wrote: >> >> A very simple library for loading application level config from a >> configuration file in a nice way, with caching and reloading functionality. >> >> Any other configuration libraries I found were either massively overkill >> for my needs (full on validation schemas built in), too complicated to set >> up and pass around or involved simply read-evaling a whole namespace which >> could be insecure depending where you get your config. >> >> Simple but useful - I found myself duplicating this code in almost all my >> projects before making it into a library! Well tested and documented, >> there are very few moving parts so I expect this to stay stable and not >> really change over time. >> >> Source: >> https://github.com/TouchType/**conf-er<https://github.com/TouchType/conf-er> >> Clojars: [conf-er "1.0.1"] >> >> The idea is to have a single configuration file which consists of a >> keyworded map, you then look up individual properties with nested keywords, >> for example your config file looks like this (simple EDN map): >> >> ;; my-config.conf >>> {:username "joe.bloggs" >>> :password "letmein" >>> :database {:host "127.0.0.1" >>> :port 1234} >>> :my.library/number 42} >> >> >> And then look up the configuration from anywhere within your program! >> Simply include the conf-er namespace >> >> (use 'conf-er) >> >> >>> (config :username) => "joe.bloggs" >>> (configured? :database) => true >>> (config :database) => {:host "127.0.0.1" :port 1234} >>> (config :database :port) => 1234 >> >> >> >> Tell your program where to find the configuration file from your >> leiningen project.clj during development, or if you are distributing a jar >> then add the property onto the java command line call: >>> >>> ... >>> :jvm-opts ["-Dconfig=~/my-config.conf"] >>> ... >> >> >> (config :database :connections) => (Exception "Couldn't find :database >> :connections in configuration file") >> (opt-config :database :connections) => nil >> >> If you use this from within a library, you must namespace your >> configuration in case the application using your library also wishes to use >> conf-er. You can do this like so: >> >> (ns my.library >>> (:require [conf-er :refer [config]])) >>> (config ::number) => 42 >> >> >> Here :number will expand out to the namespaced keyword >> :my.library/number, which we put in our configuration file earlier. >> >> Hope this is of use to some people. >> >> Adam >> > -- > -- > You received this message because you are subscribed to the Google > Groups "Clojure" group. > To post to this group, send email to clojure@googlegroups.com > Note that posts from new members are moderated - please be patient with > your first post. > To unsubscribe from this group, send email to > clojure+unsubscr...@googlegroups.com > For more options, visit this group at > http://groups.google.com/group/clojure?hl=en > --- > You received this message because you are subscribed to the Google Groups > "Clojure" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to clojure+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/groups/opt_out. > > > -- -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.