X

提交插件到sublime text的Package Control

Sublime Text 的Package Control用于管理插件的安装、移除、启用、禁用等。当然Package Control本身就是一个插件,通常我们会先安装Package Control,再利用它安装其他插件。Sublime Text 2/3之所以很好用不仅仅是因为它本身就是强大的编辑器,而且更多的插件扩展在为它的强大添砖加瓦。

原由

使用Sublime Text有一段时间了,平时使用SVN就找到了Tortoise​SVN这个插件,又在gitHub上对该插件进行了修改。Tortoise​SVN之前使用的channel.json引用packages.json的描述文件,现在将描述信息转到到/repository/s.json里。

具体提交插件的方法在 Package Control的Developers里已经讲的很清楚了。这里只记录下提交插件遇到的问题。

发现错误

当我把Tortoise​SVN提交到package_control_channel后等待合并,一段时间后发现没有合并成功。

Failure: The Travis CI build failed

更详细的错误信息请看这里。下面只贴重要部分。

======================================================================
FAIL: test_repository_package_order('./repository/t.json', ...) (tests.test.RepositoryTests)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/travis/build/wbond/package_control_channel/tests/test.py", line 73, in wrapper
    return method(self, *params)
  File "/home/travis/build/wbond/package_control_channel/tests/test.py", line 166, in _test_repository_package_order
    self.assertEqual(packages, sorted(packages, key=str.lower))
AssertionError: Lists differ: ['Tab Filter', 'Table Cleaner'... != ['Tab Filter', 'Table Cleaner'...
First differing element 72:
Touch WSGI
TortoiseSVN
  ['Tab Filter',
   'Table Cleaner',
   'Tabright',
   'TabsLimiter',
   'TabsToTable',
   'Tag',
   'Tagify',
   'TagWrapper',
   'Task',
   'Task Timer',
   'Taskwarrior',
   'Tau Time Tracker',
   'TemplateNinja',
   'tern_for_sublime',
   'TernJS',
   'Test Double',
   'TestChooser',
   'Text Pastry',
   'Text Reader',
   'TextCommands',
   'Theme - Aqua',
   'Theme - Brackets',
   'Theme - Centurion',
   'Theme - Cobalt2',
   'Theme - Farzher',
   'Theme - Flatland',
   'Theme - Minimal',
   'Theme - Nexus',
   'Theme - Night',
   'Theme - Nil',
   'Theme - Phoenix',
   'Theme - Pseudo OSX',
   'Theme - Reeder',
   'Theme - Refined',
   'Theme - Refresh',
   'Theme - Soda',
   'Theme - Sodarized',
   'Theme - Tech49',
   'Themr',
   'Thesaurus',
   'Thinkphp',
   'Three.js Autocomplete',
   'TideSDK Autocomplete',
   'TidyHTML5',
   'TidyTabs',
   'TinTin++ Syntax Highlighter',
   'tipJS Snippets',
   'Titanium API Document',
   'Titanium API Search',
   'Titanium Build',
   'TJ3-syntax-sublimetext2',
   'Tmux',
   'To Hastebin',
   'today',
   'Todo',
   'Todo Manager',
   'Todo.txt Syntax',
   'Toggl Timer',
   'Toggle Css Format',
   'Toggle Delphi File',
   'Toggle File',
   'Toggle Read-Only',
   'Toggle Symbol to String',
   'Toggle words',
   'TogglinimapOnScroll',
   'ToggleQuotes',
   'ToggleSettings',
   'TomDoc',
   'TomDoc+',
   'TOML',
   'Tomorrow Color Schemes',
   'TopCoder Helper',
+  'TortoiseSVN',
   'Touch WSGI',
   'tQuery',
   'Tradsim',
   'TrailingSpaces',
   'Transience',
   'Translate',
   'Translit',
   'Traverse',
   'TreeTop',
   'Trimmer',
   'Tritium',
   'Tubaina (afc)',
   'Tubsted Color Schemes',
   'Tully Color Schemes',
   'Twee',
   'TweetLine',
   'Twig',
   'TWiki',
   'Twitter Bootstrap ClassNames Completions',
   'Twitter Bootstrap Snippets',
   'Twitter Recess',
   'TypeScript',
   'TypeScript Compiler',
   'Typewriter',
   'typo3-fluid-snippets',
-  'TypoScript',
?              ^
+  'TypoScript']
?              ^
-  'TortoiseSVN']
----------------------------------------------------------------------
Ran 3071 tests in 0.305s
FAILED (failures=1)

查看上面的信息发现这些插件名字前面有~+-?~的符号。原来这些插件信息需要按名字顺序排序的,不能随便添加到最后。修改到正确的位置错误消失。
结束下符号的意思:

  • +:表示这一行应该增加
  • -:表示这一行应该删除
  • ?:表示这一行不知道该怎么办了

测试工具

其实为了防止合并不成功,package_control_channel提供了合并前测试的Python测试工具。clone 自己的package_control_channel到本地,修改完毕后直接运行 package_control_channel/tests/test.py 就可以了。为了能够看到运行结果建议在Python IDE或者CMD命令行 里运行。

This post was last modified on 2019 年 02 月 28 日 01:23

This website uses cookies.