Remember the insertion order for pbr.json

When we were reviewing all the tarballs in the release
team, we were comparing the generated tar.gz from sdist
and what was actually uploaded, we saw that the pbr.json
contents keeps changing but with the same key/value pairs.
So let's try to stick to a specific order by using
sort_keys when we are converting json into a string

Change-Id: I82186522240599a240737e2c87ad524d0ed8bd28
This commit is contained in:
Davanum Srinivas 2016-04-18 14:15:55 -04:00
parent 83b9e6f3a6
commit b340c3990e
2 changed files with 31 additions and 1 deletions

View File

@ -31,4 +31,4 @@ def write_pbr_json(cmd, basename, filename):
if git_version is not None:
values['git_version'] = git_version
values['is_release'] = is_release
cmd.write_file('pbr', filename, json.dumps(values))
cmd.write_file('pbr', filename, json.dumps(values, sort_keys=True))

View File

@ -0,0 +1,30 @@
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
import mock
from pbr import pbr_json
from pbr.tests import base
class TestJsonContent(base.BaseTestCase):
@mock.patch('pbr.git._run_git_functions', return_value=True)
@mock.patch('pbr.git.get_git_short_sha', return_value="123456")
@mock.patch('pbr.git.get_is_release', return_value=True)
def test_content(self, mock_get_is, mock_get_git, mock_run):
cmd = mock.Mock()
pbr_json.write_pbr_json(cmd, "basename", "pbr.json")
cmd.write_file.assert_called_once_with(
'pbr',
'pbr.json',
'{"git_version": "123456", "is_release": true}'
)