michael@0: #!/usr/bin/env python michael@0: michael@0: # This Source Code Form is subject to the terms of the Mozilla Public michael@0: # License, v. 2.0. If a copy of the MPL was not distributed with this file, michael@0: # You can obtain one at http://mozilla.org/MPL/2.0/. michael@0: michael@0: import os michael@0: import tempfile michael@0: import unittest michael@0: import zipfile michael@0: michael@0: import mozfile michael@0: from mozversion import get_version michael@0: michael@0: michael@0: class SourcesTest(unittest.TestCase): michael@0: """test getting version information from a sources xml""" michael@0: michael@0: def setUp(self): michael@0: self.tempdir = tempfile.mkdtemp() michael@0: michael@0: self.binary = os.path.join(self.tempdir, 'binary') michael@0: with open(self.binary, 'w') as f: michael@0: f.write('foobar') michael@0: michael@0: with open(os.path.join(self.tempdir, 'application.ini'), 'w') as f: michael@0: f.writelines("""[App]\nName = B2G\n""") michael@0: michael@0: def tearDown(self): michael@0: mozfile.remove(self.tempdir) michael@0: michael@0: def _create_zip(self, revision, date='date'): michael@0: zip_path = os.path.join( michael@0: self.tempdir, 'gaia', 'profile', 'webapps', michael@0: 'settings.gaiamobile.org', 'application.zip') michael@0: os.makedirs(os.path.dirname(zip_path)) michael@0: app_zip = zipfile.ZipFile(zip_path, 'w') michael@0: app_zip.writestr('resources/gaia_commit.txt', revision + '\n' + date) michael@0: app_zip.close() michael@0: michael@0: def test_gaia_commit(self): michael@0: self._create_zip('a' * 40, 'date') michael@0: v = get_version(self.binary) michael@0: self.assertEqual(v.get('gaia_changeset'), 'a' * 40) michael@0: self.assertEqual(v.get('gaia_date'), 'date') michael@0: michael@0: def test_invalid_gaia_commit(self): michael@0: self._create_zip('a' * 41) michael@0: v = get_version(self.binary) michael@0: self.assertIsNone(v.get('gaia_changeset')) michael@0: michael@0: def test_missing_gaia_commit(self): michael@0: v = get_version(self.binary) michael@0: self.assertIsNone(v.get('gaia_changeset')) michael@0: self.assertIsNone(v.get('gaia_date')) michael@0: michael@0: michael@0: if __name__ == '__main__': michael@0: unittest.main()