[Pkg-bazaar-commits] r175 ./bzr-builddeb/trunk: Finish of the chmod(debian/rules, 0755) change.

James Westby jw+debian at jameswestby.net
Tue Sep 4 21:30:33 UTC 2007


------------------------------------------------------------
revno: 175
committer: James Westby <jw+debian at jameswestby.net>
branch nick: trunk
timestamp: Tue 2007-09-04 22:30:33 +0100
message:
  Finish of the chmod(debian/rules, 0755) change.
  
  Add the tests for it, and also implement it for native packages as well.
modified:
  import_dsc.py
  tests/test_import_dsc.py
-------------- next part --------------
=== modified file 'import_dsc.py'
--- a/import_dsc.py	2007-09-02 14:45:05 +0000
+++ b/import_dsc.py	2007-09-04 21:30:33 +0000
@@ -26,9 +26,9 @@
 
 import gzip
 import os
+import stat
 from subprocess import Popen, PIPE
 import tarfile
-import stat
 
 from debian_bundle import deb822
 from debian_bundle.changelog import Version
@@ -314,6 +314,10 @@
           tree.add([config_filename], [file_id])
         else:
           tree.add([config_filename])
+      if os.path.isfile(os.path.join(tree.basedir, 'debian', 'rules')):
+        os.chmod(os.path.join(tree.basedir, 'debian', 'rules'),
+                 (stat.S_IRWXU|stat.S_IRGRP|stat.S_IXGRP|stat.S_IROTH|
+                  stat.S_IXOTH))
       tree.commit('import package from %s' % (os.path.basename(origname)))
       upstream_version = version.upstream_version
       tree.branch.tags.set_tag(make_upstream_tag(upstream_version),
@@ -401,7 +405,9 @@
     try:
       self._patch_tree(f, tree.basedir)
       if os.path.isfile(os.path.join(tree.basedir, 'debian', 'rules')):
-        os.chmod(os.path.join(tree.basedir, 'debian', 'rules'), (stat.S_IRWXU|stat.S_IRGRP|stat.S_IXGRP|stat.S_IROTH|stat.S_IXOTH))
+        os.chmod(os.path.join(tree.basedir, 'debian', 'rules'),
+                 (stat.S_IRWXU|stat.S_IRGRP|stat.S_IXGRP|stat.S_IROTH|
+                  stat.S_IXOTH))
       f.seek(0)
       touched_paths = self._get_touched_paths(f)
       self._update_path_info(tree, touched_paths, current_tree, up_tree)

=== modified file 'tests/test_import_dsc.py'
--- a/tests/test_import_dsc.py	2007-07-01 18:15:12 +0000
+++ b/tests/test_import_dsc.py	2007-09-04 21:30:33 +0000
@@ -20,6 +20,7 @@
 
 import os
 import shutil
+import stat
 import tarfile
 
 from bzrlib.config import ConfigObj
@@ -65,6 +66,10 @@
 
   config_files = ['.bzr-builddeb/', '.bzr-builddeb/default.conf']
 
+  def assertRulesExecutable(self, tree):
+    """Checks that the debian/rules in the tree is executable"""
+    self.assertTrue(tree.is_executable(tree.path2id('debian/rules')))
+
   def make_base_package(self):
     os.mkdir(self.basedir)
     write_to_file(os.path.join(self.basedir, 'README'), 'hello\n')
@@ -100,6 +105,7 @@
                   'version 1-1\n')
     write_to_file(os.path.join(diffdir, 'debian', 'install'), 'install\n')
     write_to_file(os.path.join(diffdir, 'Makefile'), 'good command\n')
+    write_to_file(os.path.join(diffdir, 'debian', 'rules'), '\n')
     os.system('diff -Nru %s %s | gzip -9 - > %s' % (self.basedir, diffdir,
                                                    self.diff_1))
 
@@ -128,6 +134,7 @@
     write_to_file(os.path.join(diffdir, 'debian', 'changelog'),
                   'version 1-1\nversion 1-2\nversion 1-3\nversion 2-1\n')
     write_to_file(os.path.join(diffdir, 'debian', 'install'), 'install\n')
+    write_to_file(os.path.join(diffdir, 'debian', 'rules'), '\n')
     os.system('diff -Nru %s %s | gzip -9 - > %s' % (self.basedir, diffdir,
                                                    self.diff_2))
 
@@ -221,7 +228,7 @@
     tree = WorkingTree.open(self.target)
     tree.lock_read()
     expected_inv = ['README', 'CHANGELOG', 'Makefile', 'debian/',
-                    'debian/changelog', 'debian/install']
+                    'debian/changelog', 'debian/install', 'debian/rules']
     try:
       self.check_inventory_shape(tree.inventory, expected_inv)
     finally:
@@ -234,6 +241,7 @@
                            'version 1-1\n')
     self.assertEqual(tree.changes_from(tree.basis_tree()).has_changed(),
                      False)
+    self.assertRulesExecutable(tree)
 
   def test_import_one_dsc_history(self):
     self.import_dsc_1()
@@ -245,7 +253,8 @@
     self.check_revision_message(tree, rh[1],
                           'merge packaging changes from %s' % self.diff_1)
     changes = tree.changes_from(tree.branch.repository.revision_tree(rh[0]))
-    expected_added = ['debian/', 'debian/changelog', 'debian/install']
+    expected_added = ['debian/', 'debian/changelog', 'debian/install',
+                      'debian/rules']
     expected_modified = ['Makefile']
     self.check_changes(changes, added=expected_added,
                        modified=expected_modified)
@@ -258,7 +267,7 @@
     tree = WorkingTree.open(self.target)
     tree.lock_read()
     expected_inv = ['README', 'CHANGELOG', 'Makefile', 'debian/',
-                    'debian/changelog', 'debian/control']
+                    'debian/changelog', 'debian/control', 'debian/rules']
     try:
       self.check_inventory_shape(tree.inventory, expected_inv)
     finally:
@@ -271,6 +280,7 @@
                            'version 1-1\nversion 1-2\n')
     self.assertEqual(tree.changes_from(tree.basis_tree()).has_changed(),
                      False)
+    self.assertRulesExecutable(tree)
 
   def test_import_two_dsc_one_upstream_history(self):
     self.import_dsc_1b()
@@ -283,12 +293,14 @@
                           'merge packaging changes from %s' % self.diff_1)
     self.check_revision_message(tree, rh[2],
                           'merge packaging changes from %s' % self.diff_1b)
-    changes = tree.changes_from(tree.branch.repository.revision_tree(rh[1]))
+    prev_tree = tree.branch.repository.revision_tree(rh[1])
+    changes = tree.changes_from(prev_tree)
     expected_added = ['debian/control']
     expected_removed = ['debian/install']
     expected_modified = ['debian/changelog']
     self.check_changes(changes, added=expected_added,
                        removed=expected_removed, modified=expected_modified)
+    self.assertRulesExecutable(prev_tree)
 
   def test_import_two_dsc_one_upstream_history_repeated_diff(self):
     self.import_dsc_1b_repeated_diff()
@@ -301,12 +313,14 @@
                           'merge packaging changes from %s' % self.diff_1)
     self.check_revision_message(tree, rh[2],
                           'merge packaging changes from %s' % self.diff_1b)
-    changes = tree.changes_from(tree.branch.repository.revision_tree(rh[1]))
+    prev_tree = tree.branch.repository.revision_tree(rh[1])
+    changes = tree.changes_from(prev_tree)
     expected_added = ['debian/control']
     expected_removed = ['debian/install']
     expected_modified = ['debian/changelog']
     self.check_changes(changes, added=expected_added,
                        removed=expected_removed, modified=expected_modified)
+    self.assertRulesExecutable(prev_tree)
 
   def test_import_three_dsc_one_upstream_tree(self):
     self.import_dsc_1c()
@@ -315,7 +329,7 @@
     tree.lock_read()
     expected_inv = ['README', 'CHANGELOG', 'Makefile', 'from_debian',
                     'debian/', 'debian/changelog', 'debian/control',
-                    'debian/install']
+                    'debian/install', 'debian/rules']
     try:
       self.check_inventory_shape(tree.inventory, expected_inv)
     finally:
@@ -328,6 +342,7 @@
                            'version 1-1\nversion 1-2\nversion 1-3\n')
     self.assertEqual(tree.changes_from(tree.basis_tree()).has_changed(),
                      False)
+    self.assertRulesExecutable(tree)
 
   def test_import_three_dsc_one_upstream_history(self):
     self.import_dsc_1c()
@@ -342,11 +357,13 @@
                           'merge packaging changes from %s' % self.diff_1b)
     self.check_revision_message(tree, rh[3],
                           'merge packaging changes from %s' % self.diff_1c)
-    changes = tree.changes_from(tree.branch.repository.revision_tree(rh[2]))
+    prev_tree = tree.branch.repository.revision_tree(rh[2])
+    changes = tree.changes_from(prev_tree)
     expected_added = ['debian/install', 'from_debian']
     expected_modified = ['debian/changelog']
     self.check_changes(changes, added=expected_added,
                        modified=expected_modified)
+    self.assertRulesExecutable(prev_tree)
 
   def test_import_three_dsc_two_upstream_tree(self):
     self.import_dsc_2()
@@ -354,7 +371,8 @@
     tree = WorkingTree.open(self.target)
     tree.lock_read()
     expected_inv = ['README', 'CHANGELOG', 'Makefile', 'NEWS', 'from_debian',
-                    'debian/', 'debian/changelog', 'debian/install']
+                    'debian/', 'debian/changelog', 'debian/install',
+                    'debian/rules']
     try:
       self.check_inventory_shape(tree.inventory, expected_inv)
     finally:
@@ -367,6 +385,7 @@
                      'version 1-1\nversion 1-2\nversion 1-3\nversion 2-1\n')
     self.assertEqual(tree.changes_from(tree.basis_tree()).has_changed(),
                      False)
+    self.assertRulesExecutable(tree)
 
   def assertContentsAre(self, filename, expected_contents):
     f = open(filename)
@@ -397,16 +416,19 @@
                      'merge packaging changes from %s' % self.diff_1c)
     # Check the diff against upstream.
     changes = tree.changes_from(tree.branch.repository.revision_tree(rh[1]))
-    expected_added = ['debian/', 'debian/changelog', 'debian/install']
+    expected_added = ['debian/', 'debian/changelog', 'debian/install',
+                      'debian/rules']
     self.check_changes(changes, added=expected_added)
     # Check the diff against last packaging version
-    changes = tree.changes_from(
-                 tree.branch.repository.revision_tree(parents[1]))
+    last_package_tree = tree.branch.repository.revision_tree(parents[1])
+    changes = tree.changes_from(last_package_tree)
     expected_added = ['NEWS']
     expected_removed = ['debian/control']
     expected_modified = ['debian/changelog']
     self.check_changes(changes, added=expected_added,
                        removed=expected_removed, modified=expected_modified)
+    self.assertRulesExecutable(tree)
+    self.assertRulesExecutable(last_package_tree)
 
   def test_import_dsc_restrictions_on_dscs(self):
     """Test that errors are raised for confusing sets of .dsc files."""
@@ -454,16 +476,19 @@
                      'merge packaging changes from %s' % self.diff_1c)
     # Check the diff against upstream.
     changes = tree.changes_from(tree.branch.repository.revision_tree(rh[1]))
-    expected_added = ['debian/', 'debian/changelog', 'debian/install']
+    expected_added = ['debian/', 'debian/changelog', 'debian/install',
+                      'debian/rules']
     self.check_changes(changes, added=expected_added)
     # Check the diff against last packaging version
-    changes = tree.changes_from(
-                 tree.branch.repository.revision_tree(parents[1]))
+    last_package_tree = tree.branch.repository.revision_tree(parents[1])
+    changes = tree.changes_from(last_package_tree)
     expected_added = ['NEWS']
     expected_removed = ['debian/control']
     expected_modified = ['debian/changelog']
     self.check_changes(changes, added=expected_added,
                        removed=expected_removed, modified=expected_modified)
+    self.assertRulesExecutable(tree)
+    self.assertRulesExecutable(last_package_tree)
 
   def test_import_dsc_different_dir(self):
     source = 'source'
@@ -476,19 +501,21 @@
     tree = WorkingTree.open(self.target)
     tree.lock_read()
     expected_inv = ['README', 'CHANGELOG', 'Makefile', 'debian/',
-                    'debian/changelog', 'debian/install']
+                    'debian/changelog', 'debian/install', 'debian/rules']
     try:
       self.check_inventory_shape(tree.inventory, expected_inv)
     finally:
       tree.unlock()
     for path in expected_inv:
       self.failUnlessExists(os.path.join(self.target, path))
+    self.assertRulesExecutable(tree)
 
   def make_native_dsc_1(self):
     self.make_base_package()
     os.mkdir(os.path.join(self.basedir, 'debian'))
     write_to_file(os.path.join(self.basedir, 'debian', 'changelog'),
                   'version 1\n')
+    write_to_file(os.path.join(self.basedir, 'debian', 'rules'), '\n')
     tar = tarfile.open(self.native_1, 'w:gz')
     try:
       tar.add(self.basedir)
@@ -500,6 +527,7 @@
     self.extend_base_package()
     append_to_file(os.path.join(self.basedir, 'debian', 'changelog'),
                    'version 2\n')
+    write_to_file(os.path.join(self.basedir, 'debian', 'rules'), '\n')
     tar = tarfile.open(self.native_2, 'w:gz')
     try:
       tar.add(self.basedir)
@@ -512,6 +540,7 @@
     os.mkdir(os.path.join(self.basedir, 'debian'))
     write_to_file(os.path.join(self.basedir, 'debian', 'changelog'),
                   'version 1\nversion 2\n')
+    write_to_file(os.path.join(self.basedir, 'debian', 'rules'), '\n')
     tar = tarfile.open(self.native_2, 'w:gz')
     try:
       tar.add(self.basedir)
@@ -525,7 +554,7 @@
     importer.import_dsc(self.target)
     tree = WorkingTree.open(self.target)
     expected_inv = ['CHANGELOG', 'README', 'Makefile', 'debian/',
-                    'debian/changelog'] + self.config_files
+                    'debian/changelog', 'debian/rules'] + self.config_files
     tree.lock_read()
     try:
       self.check_inventory_shape(tree.inventory, expected_inv)
@@ -537,6 +566,7 @@
                      os.path.basename(self.native_1))
     self.assertEqual(len(tree.get_parent_ids()), 1)
     self.check_is_native_in_config(tree)
+    self.assertRulesExecutable(tree)
 
   def test_import_dsc_native_double(self):
     self.make_native_dsc_1()
@@ -545,7 +575,8 @@
     importer.import_dsc(self.target)
     tree = WorkingTree.open(self.target)
     expected_inv = ['CHANGELOG', 'README', 'Makefile', 'NEWS', 'from_debian',
-                    'debian/', 'debian/changelog'] + self.config_files
+                    'debian/', 'debian/changelog', 'debian/rules'] \
+                   + self.config_files
     tree.lock_read()
     try:
       self.check_inventory_shape(tree.inventory, expected_inv)
@@ -568,6 +599,8 @@
     expected_modified = ['Makefile', 'debian/changelog']
     self.check_changes(changes, added=expected_added,
                        modified=expected_modified)
+    self.assertRulesExecutable(tree)
+    self.assertRulesExecutable(old_tree)
 
   def check_revision_message(self, tree, revision, expected_message):
     rev = tree.branch.repository.get_revision(revision)
@@ -580,7 +613,8 @@
     importer.import_dsc(self.target)
     tree = WorkingTree.open(self.target)
     expected_inv = ['CHANGELOG', 'README', 'Makefile', 'NEWS', 'from_debian',
-                    'debian/', 'debian/changelog'] + self.config_files
+                    'debian/', 'debian/changelog', 'debian/rules'] \
+                   + self.config_files
     tree.lock_read()
     try:
       self.check_inventory_shape(tree.inventory, expected_inv)
@@ -601,7 +635,8 @@
                      os.path.basename(self.diff_1))
     up_tree = tree.branch.repository.revision_tree(rh[0])
     changes = tree.changes_from(up_tree)
-    expected_added = ['NEWS', 'debian/', 'debian/changelog', 'from_debian']
+    expected_added = ['NEWS', 'debian/', 'debian/changelog', 'debian/rules',
+                      'from_debian']
     expected_added += self.config_files
     self.check_changes(changes, added=expected_added, modified=['Makefile'])
     package_tree = tree.branch.repository.revision_tree(parents[1])
@@ -614,6 +649,8 @@
     self.check_is_not_native_in_config(up_tree)
     self.check_is_not_native_in_config(package_tree)
     self.check_is_native_in_config(tree)
+    self.assertRulesExecutable(tree)
+    self.assertRulesExecutable(package_tree)
 
   def check_changes(self, changes, added=[], removed=[], modified=[],
                     renamed=[]):
@@ -676,7 +713,8 @@
     importer.import_dsc(self.target)
     tree = WorkingTree.open(self.target)
     expected_inv = ['CHANGELOG', 'README', 'Makefile', 'NEWS', 'from_debian',
-                    'debian/', 'debian/changelog', 'debian/install']
+                    'debian/', 'debian/changelog', 'debian/install',
+                    'debian/rules']
     tree.lock_read()
     try:
       self.check_inventory_shape(tree.inventory, expected_inv)
@@ -701,26 +739,31 @@
     self.assertEqual(len(parents), 1)
     up_tree = tree.branch.repository.revision_tree(rh[1])
     changes = tree.changes_from(up_tree)
-    expected_added = ['debian/', 'debian/changelog', 'debian/install']
+    expected_added = ['debian/', 'debian/changelog', 'debian/install',
+                      'debian/rules']
     self.check_changes(changes, added=expected_added)
     native_tree = tree.branch.repository.revision_tree(rh[0])
     changes = up_tree.changes_from(native_tree)
     expected_added = ['NEWS', 'from_debian']
     expected_modified = ['Makefile']
-    expected_removed = ['debian/', 'debian/changelog'] + self.config_files
+    expected_removed = ['debian/', 'debian/changelog', 'debian/rules'] \
+                       + self.config_files
     self.check_changes(changes, added=expected_added, removed=expected_removed,
                        modified=expected_modified)
     # FIXME: Should changelog etc. be added/removed or not?
     changes = tree.changes_from(native_tree)
     expected_added = ['NEWS', 'debian/', 'debian/install', 'from_debian',
-                      'debian/changelog']
+                      'debian/changelog', 'debian/rules']
     expected_modified = ['Makefile']
-    expected_removed = ['debian/', 'debian/changelog'] + self.config_files
+    expected_removed = ['debian/', 'debian/changelog', 'debian/rules'] \
+                       + self.config_files
     self.check_changes(changes, added=expected_added,
                        modified=expected_modified, removed=expected_removed)
     self.check_is_native_in_config(native_tree)
     self.check_is_not_native_in_config(up_tree)
     self.check_is_not_native_in_config(tree)
+    self.assertRulesExecutable(tree)
+    self.assertRulesExecutable(native_tree)
 
   def _get_tree_default_config(self, tree, fail_on_none=True):
     config_file_id = tree.path2id('.bzr-builddeb/default.conf')



More information about the Pkg-bazaar-commits mailing list