[SCM] ci-tooling packaging branch, master, updated. 147f3d9c426d1d083df39e92272a8cd3418ca825

Harald Sitter apachelogger-guest at moszumanska.debian.org
Thu Apr 30 08:16:12 UTC 2015


Gitweb-URL: http://git.debian.org/?p=pkg-kde/ci-tooling.git;a=commitdiff;h=68c0521

The following commit has been merged in the master branch:
commit 68c05212de3dca7fea4785b0d01985b21ced78d1
Author: Harald Sitter <sitter at kde.org>
Date:   Thu Apr 30 09:52:21 2015 +0200

    fix qml module parsing to handle ; and move the qml stuff in a subdir
    
    the parsing change has the somewhat unfortunate effect that parsing now
    returns arrays always. rationale being that semi-colon is equal to
    newline in a way so one line can have multiple imports as it were.
    
    current implementation does not care where the semi-colon is contextually
    (e.g. if it was under quotes it should be ignored but we don't), mostly
    because as far as import statements are concerned there is no opportunity
    to have one placed such that an import can be parsed. OTOH it could make
    imports be detected that aren't imports (e.g. quoted import string for
    whatever reason). we can deal with this when such a case arises though
---
 lib/{qml_ignore_rule.rb => qml/ignore_rule.rb} |  3 ++-
 lib/{qml.rb => qml/module.rb}                  | 19 +++++++++++++--
 lib/{qml_static_map.rb => qml/static_map.rb}   |  4 ++--
 lib/qml_dependency_verifier.rb                 | 16 ++++---------
 test/test_qml_ignore_rule.rb                   |  2 +-
 test/test_qml_module.rb                        | 33 +++++++++++++++++++-------
 test/test_qml_static_map.rb                    |  2 +-
 7 files changed, 52 insertions(+), 27 deletions(-)

diff --git a/lib/qml_ignore_rule.rb b/lib/qml/ignore_rule.rb
similarity index 96%
rename from lib/qml_ignore_rule.rb
rename to lib/qml/ignore_rule.rb
index af420bf..6595baf 100644
--- a/lib/qml_ignore_rule.rb
+++ b/lib/qml/ignore_rule.rb
@@ -1,4 +1,4 @@
-require_relative 'qml'
+require_relative 'module'
 
 module QML
   # Sepcifies an ignore rule for a qml module.
@@ -20,6 +20,7 @@ module QML
     def self.read(path)
       rules = File.read(path).split($/)
       rules.collect! do |line|
+        # FIXME: needs test baking
         next if line.start_with?('#')
         new(*line.split(/\s+/))
       end
diff --git a/lib/qml.rb b/lib/qml/module.rb
similarity index 78%
rename from lib/qml.rb
rename to lib/qml/module.rb
index 0637a7a..71f9763 100644
--- a/lib/qml.rb
+++ b/lib/qml/module.rb
@@ -1,4 +1,4 @@
-require_relative 'dpkg'
+require_relative '../dpkg'
 
 # Management construct for QML related bits.
 module QML
@@ -18,8 +18,23 @@ module QML
       @qualifier = qualifier
     end
 
+    # @return [Array<QML::Module>]
+    def self.read_file(path)
+      modules = []
+      File.read(path).lines.each do |line|
+        mods = QML::Module.parse(line)
+        modules += mods unless mods.empty?
+      end
+      modules.compact.uniq
+    end
+
+    # @return [Array<QML::Module>]
     def self.parse(line)
-      new.send(:parse, line)
+      modules = []
+      line.split(';').each do |statement|
+        modules << new.send(:parse, statement)
+      end
+      modules.compact.uniq
     end
 
     def import_paths
diff --git a/lib/qml_static_map.rb b/lib/qml/static_map.rb
similarity index 94%
rename from lib/qml_static_map.rb
rename to lib/qml/static_map.rb
index 3153a16..4d814fc 100644
--- a/lib/qml_static_map.rb
+++ b/lib/qml/static_map.rb
@@ -1,11 +1,11 @@
 require 'yaml'
 
-require_relative 'qml'
+require_relative 'module'
 
 module QML
   # Statically maps specific QML modules to fixed packages.
   class StaticMap
-    @base_dir = File.expand_path(File.dirname(File.dirname(__FILE__)))
+    @base_dir = File.expand_path(File.dirname(File.dirname(File.dirname(__FILE__))))
     @data_file = File.join(@base_dir, 'data', 'qml-static-map.yml')
 
     class << self
diff --git a/lib/qml_dependency_verifier.rb b/lib/qml_dependency_verifier.rb
index e5f1c21..b2b0dc2 100644
--- a/lib/qml_dependency_verifier.rb
+++ b/lib/qml_dependency_verifier.rb
@@ -6,9 +6,9 @@ require_relative 'ci/source'
 require_relative 'dpkg'
 require_relative 'lp'
 require_relative 'lsb'
-require_relative 'qml'
-require_relative 'qml_ignore_rule'
-require_relative 'qml_static_map'
+require_relative 'qml/ignore_rule'
+require_relative 'qml/module'
+require_relative 'qml/static_map'
 
 class QMLDependencyVerifier
   def initialize
@@ -87,18 +87,12 @@ class QMLDependencyVerifier
 
       modules = []
       files.each do |file|
-        lines = File.read(file).lines
-        lines.each do |l|
-          m = QML::Module.parse(l)
-          if m
-            next if ignores.include?(m)
-            modules << m
-          end
-        end
+        modules += QML::Module.read_file(file)
       end
       @log.info "Imported modules: #{modules}"
 
       modules.each do |mod|
+        next if ignores.include?(mod)
         found = false
         static_package = static_map.package(mod)
         if static_package
diff --git a/test/test_qml_ignore_rule.rb b/test/test_qml_ignore_rule.rb
index 9a2d0ee..a90f69a 100644
--- a/test/test_qml_ignore_rule.rb
+++ b/test/test_qml_ignore_rule.rb
@@ -1,4 +1,4 @@
-require_relative '../lib/qml_ignore_rule'
+require_relative '../lib/qml/ignore_rule'
 require_relative 'lib/testcase'
 
 # Test qml ignore rules
diff --git a/test/test_qml_module.rb b/test/test_qml_module.rb
index 77aee9c..0d1c0c5 100644
--- a/test/test_qml_module.rb
+++ b/test/test_qml_module.rb
@@ -1,4 +1,4 @@
-require_relative '../lib/qml'
+require_relative '../lib/qml/module'
 require_relative 'lib/testcase'
 
 # Test qml module parsing
@@ -11,29 +11,31 @@ class QMLTest < TestCase
   end
 
   def test_empty_line
-    assert_nil(QML::Module.parse(''))
+    assert_empty(QML::Module.parse(''))
   end
 
   def test_short_line
-    assert_nil(QML::Module.parse('import QtQuick'))
+    assert_empty(QML::Module.parse('import QtQuick'))
   end
   # Too long line is in fact allowed for now
 
   def test_no_import
-    assert_nil(QML::Module.parse('QtQuick import 1'))
+    assert_empty(QML::Module.parse('QtQuick import 1'))
   end
 
   def test_simple_parse
-    mod = QML::Module.parse('import QtQuick 1')
+    mods = QML::Module.parse('import QtQuick 1')
+    assert_equal(1, mods.size)
+    mod = mods.first
     assert_equal('QtQuick', mod.identifier)
     assert_equal('1', mod.version)
     assert_equal("#{mod.identifier}[#{mod.version}]", mod.to_s)
   end
 
   def test_comment
-    assert_nil(QML::Module.parse('#import QtQuick 1'))
-    assert_nil(QML::Module.parse('#     import QtQuick 1'))
-    assert_nil(QML::Module.parse('    #   import QtQuick 1'))
+    assert_empty(QML::Module.parse('#import QtQuick 1'))
+    assert_empty(QML::Module.parse('#     import QtQuick 1'))
+    assert_empty(QML::Module.parse('    #   import QtQuick 1'))
   end
 
   def test_compare
@@ -48,6 +50,19 @@ class QMLTest < TestCase
   end
 
   def test_directory
-    assert_nil(QML::Module.parse('import "private" as Private'))
+    assert_empty(QML::Module.parse('import "private" as Private'))
+  end
+
+  def test_trailing_semi_colon
+    mods = QML::Module.parse('import org.kde.kwin 2.0  ; import org.kde.plasma 1.0  ;')
+    assert_equal(2, mods.size)
+    mod = mods.first
+    assert_equal('org.kde.kwin', mod.identifier)
+    assert_equal('2.0', mod.version)
+    assert_equal("#{mod.identifier}[#{mod.version}]", mod.to_s)
+    mod = mods.last
+    assert_equal('org.kde.plasma', mod.identifier)
+    assert_equal('1.0', mod.version)
+    assert_equal("#{mod.identifier}[#{mod.version}]", mod.to_s)
   end
 end
diff --git a/test/test_qml_static_map.rb b/test/test_qml_static_map.rb
index ac2d041..2189067 100644
--- a/test/test_qml_static_map.rb
+++ b/test/test_qml_static_map.rb
@@ -1,4 +1,4 @@
-require_relative '../lib/qml_static_map'
+require_relative '../lib/qml/static_map'
 require_relative 'lib/testcase'
 
 # test qml_static_map

-- 
ci-tooling packaging



More information about the pkg-kde-commits mailing list