Just to follow up on this, "tenant-name" is what we'll get from the
environment, and what we would expect users to write themselves.
"tenant-id" would be something that we get from talking to the API.
So if we need to use it/store it we can, but ideally we would just go
with tenant name in the config.
I would also mention that I don't usually see 1-line functions. They
pretty much are always wrapped to 3 lines. Am I mistaken about that?
https://codereview.appspot.com/6858052/diff/1/environs/openstack/config_test.go#newcode110
environs/openstack/config_test.go:110: func (s *ConfigSuite) SetUpTest(c
*C) {
On 2012/11/21 17:28:20, gz wrote:
> This is kind of ugly, and we'll need to do better for testing envvars
as there
> are a bunch of different ones beyond these. The tests for this in the
python
> code used a change_environment helper that you passed a dict of new
values to
> within the test which were then stashed and restored at the end.
If we switch to using CredentialsFromEnv, do we need a lot of env
variable testing here? It seems like permutation testing can be done at
the goose level, and then some sort of smoke test can be done here.
https://codereview.appspot.com/6858052/diff/1/environs/openstack/config_test.go#newcode130
environs/openstack/config_test.go:130: {
If we are going to go with table based tests instead of a bunch of named
tests, I'd like us to add summary: to the definitions, so that we have
some sort of name identifying what this permutation is trying to do.
Table based tests aren't that different from using a TestSuite that has
a common SetUp and TearDown and then you get a named test case for each
one. Hopefully these have less infrastructure making them easier to use,
but they do have the downside of not having human-sensible names unless
we put them there.
As a thought, I wonder if we might try writing this as TestSuite with
some helper setup functions, rather than as one big 'check' function.
And see which one is clearer. I can see where table based tests have
nice definitions. But you also tend to end up with a 'check' function
that mixes setup and assertions.
The 'check' function can become overloaded with lots of if checks,
because some cases want to test a failure mode, some want to test
setting a value, etc.
So there are bits I like (simple table definition), and bits I'm not
sure about (actual assertions are intermixed with a lot of setup code,
and many assertions are not actually valid for all of the rows in the
table.)
LGTM
Worth landing with some tweaks, and iterating from here.
https:/ /codereview. appspot. com/6858052/ diff/1/ environs/ openstack/ config. go openstack/ config. go (right):
File environs/
https:/ /codereview. appspot. com/6858052/ diff/1/ environs/ openstack/ config. go#newcode46 openstack/ config. go:46: func (c *environConfig) tenantId()
environs/
string {
On 2012/11/21 17:28:20, gz wrote:
> Using tenant-id vs. tenant-name is something we'll need to watch out
for later.
Just to follow up on this, "tenant-name" is what we'll get from the
environment, and what we would expect users to write themselves.
"tenant-id" would be something that we get from talking to the API.
So if we need to use it/store it we can, but ideally we would just go
with tenant name in the config.
https:/ /codereview. appspot. com/6858052/ diff/1/ environs/ openstack/ config_ test.go openstack/ config_ test.go (right):
File environs/
https:/ /codereview. appspot. com/6858052/ diff/1/ environs/ openstack/ config_ test.go# newcode18 openstack/ config_ test.go: 18: // Hook up gocheck into the gotest
environs/
runner.
On 2012/11/21 17:26:12, rog wrote:
> this is ubiquitous enough that it probably doesn't need a comment.
I would also mention that I don't usually see 1-line functions. They
pretty much are always wrapped to 3 lines. Am I mistaken about that?
https:/ /codereview. appspot. com/6858052/ diff/1/ environs/ openstack/ config_ test.go# newcode110 openstack/ config_ test.go: 110: func (s *ConfigSuite) SetUpTest(c
environs/
*C) {
On 2012/11/21 17:28:20, gz wrote:
> This is kind of ugly, and we'll need to do better for testing envvars
as there
> are a bunch of different ones beyond these. The tests for this in the
python
> code used a change_environment helper that you passed a dict of new
values to
> within the test which were then stashed and restored at the end.
If we switch to using CredentialsFromEnv, do we need a lot of env
variable testing here? It seems like permutation testing can be done at
the goose level, and then some sort of smoke test can be done here.
https:/ /codereview. appspot. com/6858052/ diff/1/ environs/ openstack/ config_ test.go# newcode130 openstack/ config_ test.go: 130: {
environs/
If we are going to go with table based tests instead of a bunch of named
tests, I'd like us to add summary: to the definitions, so that we have
some sort of name identifying what this permutation is trying to do.
Table based tests aren't that different from using a TestSuite that has
a common SetUp and TearDown and then you get a named test case for each
one. Hopefully these have less infrastructure making them easier to use,
but they do have the downside of not having human-sensible names unless
we put them there.
As a thought, I wonder if we might try writing this as TestSuite with
some helper setup functions, rather than as one big 'check' function.
And see which one is clearer. I can see where table based tests have
nice definitions. But you also tend to end up with a 'check' function
that mixes setup and assertions.
The 'check' function can become overloaded with lots of if checks,
because some cases want to test a failure mode, some want to test
setting a value, etc.
So there are bits I like (simple table definition), and bits I'm not
sure about (actual assertions are intermixed with a lot of setup code,
and many assertions are not actually valid for all of the rows in the
table.)
Is it worth trying?
https:/ /codereview. appspot. com/6858052/