ctrl+shift+p filters: :st2 :st3 :win :osx :linux
浏览

Scoggle

ssanj ST3

Sublime Text 3 插件,用于在 Scala 和测试代码之间切换

标签 测试, Scala

详细信息

  • 0.0.12
  • github.com
  • github.com
  • 3年前
  • 12分钟前
  • 9年前

安装

  • 总数 69
  • Win 26
  • Mac 32
  • Linux 11
8月6日 8月5日 8月4日 8月3日 8月2日 8月1日 7月31日 7月30日 7月29日 7月28日 7月27日 7月26日 7月25日 7月24日 7月23日 7月22日 7月21日 7月20日 7月19日 7月18日 7月17日 7月16日 7月15日 7月14日 7月13日 7月12日 7月11日 7月10日 7月9日 7月8日 7月7日 7月6日 7月5日 7月4日 7月3日 7月2日 7月1日 6月30日 6月29日 6月28日 6月27日 6月26日 6月25日 6月24日 6月23日
Windows 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Mac 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Linux 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

读我

源代码
raw.githubusercontent——com

Scoggle

Scoggle 是一个 Sublime Text ¾ 插件,可以让您在生成代码和测试代码之间进行切换。它将允许您以多种可配置的方式完成此操作。

安装

以下是一些在您的系统上安装 Scoggle 的方法。

  1. 安装 Scoggle 最简单的方法是通过 包控制
  2. 将 Scoggle 存储库克隆到您的 软件包 目录中

    git clone [email protected]:ssanj/Scoggle.git

  3. 下载最新版本源代码并提取到 软件包 目录中。

“软件包”目录位于

  • OS X: ~/Library/Application Support/Sublime Text 3/Packages
  • Linux: ~/.config/sublime-text-3/Packages

配置

以下为默认的 Scoggle.sublime-settings 文件

{
    "production_srcs" :
    [
        "/src/main/scala"
    ],
    "test_srcs" :
    [
        "/src/test/scala",
    ],
    "test_suffixes" :
    [
        "Spec.scala",
        "IntSpec.scala",
        "Suite.scala",
        "Test.scala",
        "Specification.scala"
    ],
    "log" : false,
    "display_errors_in" : "dialog",
    "default_test_suffix": "Spec.scala"
}
  • production_src 列出要搜索的生成源目录,当切换到生成文件时。
  • test_srcs 列出要搜索的测试源目录,当切换到测试文件时。
  • test_suffixes 列出切换到测试文件时搜索的后缀。
  • log 指定是否开启调试日志。
  • display_errors_in 指定显示错误消息的位置。默认情况下,这些消息在模态对话框(“对话框”)中显示,但这可能会很烦人。为了克服这一点,我们还有另外两个选项:“status_bar”和“dont_display”。
  • default_test_suffix 指定创建测试文件时使用的默认测试文件名后缀。

插件设置文件可以在每个项目的基础上进行覆盖。配置与上述相同,但它与“Scoggle”相关联的命名空间。

以下是一个包含 Scoggle 设置的示例 .sublime-project 文件

{
    "folders":
    [
        {
            "path": "."
        }
    ],
    "settings": {
        "Scoggle" : {
            "production_srcs" :
            [
                "/app"
            ],
            "test_srcs" :
            [
                "/test"
            ],
            "test_suffixes" :
            [
                "Spec.scala"
            ]
        }
    }
}

注意:任何在项目设置中未提到的设置都将从默认设置或用户设置中获取(如果已覆盖)。

小心:请注意,只有通过将源目录以“项目”的形式通过 项目 > 打开项目... 打开时,项目设置才会生效,而不是通过 文件 > 打开 打开。

当为 Windows 自定义设置时,请记住将正斜杠替换为双反斜杠。

如果您不想手动编写自定义设置,可以使用 scoggle-gen 为大多数设置生成自定义配置。

匹配策略

Scoggle 内置了三种主要匹配策略。您也可以轻松地编写自己的匹配器。捆绑的匹配器从非常具体的匹配到更模糊的匹配。

前缀后缀

[CMD + SHIFT + E]

将生产源文件名与提供的 test_suffixes 结合使用,以找到匹配的测试源。

使用最大的匹配 test_suffixes 减去测试源文件名,以找到匹配的生产源。

Example Prefix Suffix Usage

示例

假设有一个名为 Contrast.scala 的生产文件位于 production_srcs 路径之一,test_suffixes 为 [“Spec.scala”, “Suite.scala”, “IntSpec.scala”],将在 test_srcs 路径之一中找到以下测试文件

  • Contrast Spec.scala
  • Contrast Suite.scala
  • Contrast IntSpec.scala

当从测试源切换回生产源时,它执行以下操作

  1. 从测试文件名中移除最大的匹配 test_suffixes
  2. production_srcs 中搜索与 (1) 匹配的文件名。

示例

假设有一个名为 ContrastIntSpec.scala 的测试文件位于 test_srcs 路径之一,test_suffixes 为 [“Spec.scala”, “Suite.scala”, “IntSpec.scala”],它将在 production_srcs 路径之一中找到以下生产文件

  • Contrast.scala (Contrast IntSpec)

注意尽管 Spec 后缀也会与测试文件名匹配,但我们移除了最大的匹配后缀。在这种情况下,这将是以 IntSpec 为结尾。如果我们有一个名为 ContrastSpec.scala 的测试文件,我们仍然会到达相同的匹配生产文件:Constrast.scala。这一次,我们会移除 Spec 作为最大的匹配后缀。

前缀通配符后缀

[CMD + CTRL + SHIFT + E]

将生产源文件名与通配符和提供的 test_suffixes 结合使用,以找到匹配的测试源。

使用最大的匹配 test_suffixes 减去测试源文件名,以找到与匹配开始部分匹配的生产源。

Example Prefix Wildcard Suffix Usage

示例

假设有一个名为 Contrast.scala 的生产文件位于 production_srcs 路径之一,test_suffixes 为 [“Spec.scala”, “Suite.scala”, “IntSpec.scala”],将在 test_srcs 路径之一中找到以下测试文件

  • Contrast WithinSomeContext Spec.scala
  • Contrast WithinAnotherContext IntSpec.scala
  • Contrast ThrowingAnException Suite.scala

当从测试源切换回生产源时,它执行以下操作

  1. 从测试文件名中移除最大的匹配 test_suffixes
  2. production_srcs 中搜索与 (1) 开始匹配的文件名。

示例

假设有一个名为 ContrastThrowingAnExceptionSuite.scala 的测试文件位于 test_srcs 路径之一,test_suffixes 为 [“Spec.scala”, “Suite.scala”, “IntSpec.scala”],它将在 production_srcs 路径之一中找到以下生产文件

  • Contrast.scala (Contrast ThrowingAnException Suite)
  • ContrastThrowing.scala (ContrastThrowing AnException Suite)
  • ContrastThrowingAn.scala (ContrastThrowingAn Exception Suite)
  • ContrastThrowingAnException.scala (ContrastThrowingAnException Suite)

通配符前缀通配符后缀

[CMD + CTRL + SHIFT + X]

使用通配符结合生产源文件名以及提供的 test_suffixes 来找到匹配的测试源。

使用最大的匹配 test_suffixes 减去测试源文件名,以找到与匹配的任何部分匹配的生产源。

Example Wildcard Prefix Wildcard Suffix Usage

示例

假设有一个名为 Contrast.scala 的生产文件位于 production_srcs 路径之一,test_suffixes 为 [“Spec.scala”, “Suite.scala”, “IntSpec.scala”],将在 test_srcs 路径之一中找到以下测试文件

  • 在 SomeContext 上下文中的 对比 Spec.scala
  • 美丽的 对比 上下文 IntSpec.scala
  • 某个 对比 上下文 Suite.scala
  • 这个名字可能包含对比。例如:ThisCouldBeAnythingHavingContrastInItsName Spec.scala

当从测试源切换回生产源时,它执行以下操作

  1. 从测试文件名中移除最大的匹配 test_suffixes
  2. 通过首字母大写将剩余的名称拆分为单词。例如:ABeautifulContrastContext 拆分为 [“A”, “Beautiful”, “Contrast”, “Context”]。
  3. 从左到右,在 production_srcs 中搜索包含(2)中单词组合的文件名。例如:匹配 ABeautifulContrast 和 Context 但不匹配 AContrastContext。

假设有一个测试文件名为 ABeautifulContrastContextIntSpec.scala 位于 test_srcs 之一的路径中,且 test_suffixes 为 [“Spec.scala”, “Suite.scala”, “IntSpec.scala”],它将与 production_srcs 之一的路径中的以下产品文件匹配

  • Contrast.scala (ABeautiful 对比 上下文 IntSpec)
  • ABeautiful.scala (ABeautiful ContrastContext IntSpec)
  • ABeautifulContrast.scala (ABeautifulContrast Context IntSpec)
  • ABeautifulContrastContext.scala (ABeautifulContrastContext IntSpec)
  • BeautifulContrast.scala (BeautifulContrast Context IntSpec)
  • BeautifulContrastContext.scala (A BeautifulContrastContext IntSpec)
  • Context.scala (ABeautifulContrast 对比 IntSpec)
  • A.scala (A BeautifulContrastContext IntSpec)

编写自己的 Matcher

在介绍如何编写您的 matcher 之前,让我们看看当前的 matcher 如何工作。Matcher 快捷键在 .sublime-keymap 文件中定义。以 前缀后缀匹配器 为例

{ "keys": ["super+shift+e"], "command": "scoggle", "args": {"matcher": "prefix_suffix_matcher"}, "context" : [{"key": "selector", "operator": "equal", "operand": "source.scala", "match_all": true}]}

请注意 args 参数提供了 matcher 参数?matcher 的值映射到要使用的 matcher。映射如下

  1. 给定一个 prefix_suffix_matcher matcher,在 matchers 目录中查找具有相同名称的 python 文件:prefix_suffix_matcher.py。
  2. 加载该文件中名为 PrefixSuffixMatcher 的类。基本上将 snake_case 转换为 CamelCase。每个 matcher 类扩展 scoggle_types.BaseMatcher 并提供三个方法的定义
  • 构造函数 (_init_) - 接收一个 scoggle_types.MatcherParam 实例。
  • match_test_file - 当生产文件需要找到匹配的测试文件时被调用。
  • match_prod_file - 当测试文件需要找到匹配的生产文件时被调用。

上述两种方法都提供一个文件名及其相关路径。这些方法仅需返回 True 将文件作为匹配项包含,返回 False 将文件排除。

matcher 类使用以下六种字段提供 MatcherParam 构造函数参数

  1. root_dir - 存含目标文件的 production_srcs 或 test_srcs 列表中第一个匹配的目录。
  2. test_dirs - 在 test_srcs (Scoggle.sublime-settings) 中定义的测试目录列表。
  3. prefix - 目标文件(产品或测试)不带扩展名。
  4. suffixes - 在 test_suffixes (Scoggle.sublime-settings) 中定义的测试后缀列表。
  5. scoggle - 对 scoggle 模块的引用。
  6. logger:用于日志记录的日志记录器。

定义您自己的 matcher

  1. 在 __matchers_ 模块(目录)中创建一个名为 your_matcher_name.py 的 matcher python 文件。
  2. 在其中定义一个具有以下属性 YourMatcherName 类
    1. 扩展 scoggle_types.BaseMatcher 类
    2. 一个接受 MatcherParam 的构造函数
    3. 重新实现 match_test_file
    4. 重新实现 match_prod_file
  3. 在与 matcher 参数为 your_matcher_name 的 .sublime-keymap 文件中添加键绑定
{ "keys": ["your_shortcuts"], "command": "scoggle", "args": {"matcher": "your_matcher_name"}, "context" : [{"key": "selector", "operator": "equal", "operand": "source.scala", "match_all": true}]},

如果您想将其添加到命令面板,请在 .sublime-commads 文件中添加条目

{ "caption": "Scoggle: Your matcher description", "command": "scoggle", "args": {"matcher": "your_matcher_name"} }

如果您想将其添加到上下文菜单,请在 Context.sublime-menu 文件中添加条目

{
    "id" : "scoggle",
    "caption" : "Scoggle: Your matcher description",
    "command" : "scoggle",
    "args": {"matcher": "your_matcher_name"}
}

要调试您的 matcher,请将 .sublime-settings 或 .sublime-project 中的调试日志打开

"log" : true

使用 (CTRL + ) 打开控制台以查看调试日志。

此外,请查看现有匹配器,以了解一切是如何联系起来的。

附加功能

插入包

[快捷键:CMD + SHIFT + G]

将包声明插入Scala文件顶部。当前文件的包由生产源路径或测试源路径推导而出,取决于文件所在的位置。

package your.awesome.packagename

Inserting a package through Scoggle

折叠包

[快捷键:CMD + SHIFT + H]

当给出前缀时,将当前文件的包声明折叠到子包中。包将被插入Scala文件顶部。当前文件的包由生产源路径或测试源路径推导而出,取决于文件所在的位置。

给定一个包

your.awesome.packagename.project.feature

和一个前缀

your.awesome.packagename

插入

package your.awesome.packagename
package project
package feature

Collapsing a package through Scoggle

创建测试文件

[快捷键:CMD + CTRL + SHIFT + T]

Creating a Test File

在所需测试源目录中创建一个与生产源目录中的文件匹配的测试文件。创建的测试文件名可以通过以下方式选择:

  • 将光标放在构成测试文件名的单词内并启动测试文件创建功能(选择光标下的单词)
  • 选择一个单词并启动测试文件创建功能(选择高亮的单词)
  • 将光标放在空行内并启动测试文件创建功能(选择当前文件名)

在下面的示例中,光标位于《 EitherValidations》对象名称内。

Word Under Cursor Selected

如果只有一个测试源目录,则会显示要创建的测试文件名及其路径。如果需要对测试文件名进行修改,可以在此处进行。注意,使用了default_test_suffix来创建文件名。

Edit Test File

enter键将创建路径(如果需要)和测试文件。测试文件将包含包路径和类名。

Test File Created

如果指定的路径上已经存在同名测试文件,您将被提供选择新文件名的选项。

Retry Duplicate Test File Names

使用的默认测试文件后缀(如上例中的Spec.scala)是从设置文件中的default_test_suffix键检索的。

显示当前模块

[快捷键:CMD + CTRL + SHIFT + M]

Displaying the current Module

在使用多模块项目时,可能会弄不清楚你当前正在哪个模块中工作。运行此命令将显示当前模块,无论位于任何生产或测试文件中。