On Thu, Sep 26, 2019 at 9:49 AM Lukáš Doktor <ldok...@redhat.com> wrote: > > Hello guys, > > what a nice discussion. But before you start, what lead you to pick this > card? It's one of the nice-to-have-ideas card and we have plenty of > well-defined-and-useful cards that also needs attention, so unless you have a > real-world usage, I'd probably suggest to focus on something you can directly > benefit from. (unless you have other interest in eg. learning something, or > other kind of interest).
Fair point. A RFC would do some good here. > > Dne 25. 09. 19 v 23:39 Cleber Rosa napsal(a): > > On Wed, Sep 25, 2019 at 06:01:22PM -0300, Willian Rampazzo wrote: > >> After going thru the suggestions, and thinking about it, I came up > >> with the following starting point: > >> > >> 1 - Support a limited test source code parsing. This feature brings a > >> simple solution to those tests already using strings into their > >> fetch_asset parameters, as stated by Cleber. > >> > > > > Keep in mind that I'm assuming this is a viable option without > > attempting to do it myself. I hope it's viable, because it makes > > "simple things easy" from the test writer's side. > > > > Yes, this makes sense to me and would be useful even for some human-asset > interface (list assets, list cached assets, see details of cached assets...). > Btw cache-management interface is IMO higher in the priority than actually > fetching the assets without executing tests (but it's just my priority list, > don't take this as an official statement). > > >> 2 - Add an option to use assets.json, as stated by Amador. This file > >> would sit in the test data folder and list all assets that are > >> necessary for the test. As a list of assets, I thought about a new > >> method, fetch_assets, as a wrapper that load all assets from the file > >> and call fetch_asset for each one. > >> > > > > Sounds good. Also consider the need for dynamic asset definition (the > > idea about executable scripts that produces JSON). > > > > Hmm, this is tricky. I don't like much having "reserved" file names as people > might get unwanted clashes. Yes, it should be fairly harmless with a json > file (either it matches or is skipped) but it's a semi-hidden feature. We > also have the > https://trello.com/c/WPd4FrIy/1479-add-support-to-specify-assets-in-test-docstring > that sounds more explicit to me. Another alternative I'd prefer is a `Test` > class variable, which can be obtained by a static analysis, or even `Test` > variable initialized on `__init__`, which could be executed by the asset > fetcher interface (when asked for, because it might eventually execute some > nasty code). Having a pre-defined file names in datadir locations is the last > interface I'd like to see in Avocado (out of these). > I don't think reserved filenames are a good way either. The baseline from my suggestion is an external file containing the arguments that will be used by both the asset.Asset(from_file=filename.json) and by the command line tool that will cache things: avocado fetch-asset filename.json filename2.json filename3.json. > As before, if you have some real-world use case, please share it as it can > change everything. > > > class variable > -------------- > > class MyTest(avocado.test): > assets = {"foo": ["http://aaa"], "bar": {"location": "http://fdsa", > hash="..."}} This seems like a good alternative, but it also seems like one more source or parametrization. I'd then use the parametrization interface instead. > > initialized variable > -------------------- > > class MyTest(avocado.test): > def __init__(self, ...): > self.assets = {} > for asset in something: > self.assets[asset] = get_asset_url(asset) I would not ask users to deal with __init__ in their test classes. > > --- > > Regards, > Lukáš > -- Pahim