问题标签 [modulino]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
perl - 在 Perl 中,如何确定我的文件是作为模块使用还是作为脚本运行?
假设我有一个 Perl 文件,其中的某些部分只有在作为脚本调用时才需要运行。我记得以前读过有关将这些部分包含在 main() 方法中并执行
但我忘记了条件是什么。搜索谷歌并没有取得任何成果。有人可以指出寻找这个的正确位置吗?
ruby - 如何在 ruby 模块中包含单元测试?
我正在尝试按照Perl modulino模型将模块的单元测试包含在与模块本身相同的源文件中。
现在,我可以运行执行此源文件的单元测试。
但是,当我需要/从另一个脚本加载它们时,它们也会运行。如何避免这种情况?
除非不鼓励这种做法,否则是否有更惯用的方法来使用 Ruby 实现这一点?
perl - 如果要测试的模块不可用,我应该如何终止 perl 测试脚本?
我正在构建一个 perl 应用程序作为“模数”以使测试更容易。目录结构如下所示:
每个 .t 测试文件中的第一个测试也加载模块:
为了进行测试,我在顶级目录中运行以下命令:
到目前为止,一切都很好。当我不小心直接运行 .t 测试脚本时,我遇到了一个问题。
我的手指有一个几乎自主的习惯,即在将脚本保存在我的文本编辑器中后立即按热键运行脚本。当我使用其中一个测试文件执行此操作时,它会尽职尽责地运行并全面报告失败。这是意料之中的,因为如果从自己的目录运行它就看不到模块。我担心的是某些测试会写入文件系统。示例是用于验证的配置文件和数据文件。如果它无法加载它应该测试的模块,我的偏好是让测试脚本在它做任何事情之前发出嘶嘶声。这样一来,我就不必担心其他测试会出现任何问题。
我目前正在使用的解决方案是BEGIN { use_ok('MainScript'); }
用标准使用调用替换该行:
运行测试prove -l
仍然按预期工作。即使删除了 use_ok 测试,它显然没问题,因为文件的其余部分运行。如果由于某种原因,测试找不到模块,它会阻塞并且“证明”仍然显示测试文件失败。如果我直接从编辑器运行脚本,它会在编译时失败,并显示在@INC 中找不到请求的模块的消息。这对我来说似乎是一种可取的行为。
有没有更好的方法来做到这一点,和/或这种方法中有什么东西会咬我吗?
perl - 如何在 TextMate 中运行为证明表单而设计的测试 perl 脚本?
我正在使用 TextMate 1.5.10 (Mac OSX 10.7.2) 编写perl modulino application。为了验证该功能,我使用了旨在与prove
命令行工具一起运行的测试脚本。
我正在使用的目录结构示例如下所示:
001_load_test.t 文件如下所示:
当我运行prove
或prove -v
在“text_mate_test”目录中时,一切都按预期通过。
我希望能够在 TextMate 中设置一个热键,让我无需跳转到终端即可运行测试文件。目前,如果我使用 Cmd+R 从 TextMate 内部直接运行“001_load_test.t”,它会窒息说“无法在 @INC 中找到 MyModule.pm”。这是意料之中的,因为测试脚本并非设计为直接运行。(我对编写测试文件还是很陌生,但我相信这是设置它们的正确方法。)
假设我不想更改测试文件本身,有没有办法设置热键,以便我可以从 TextMate 内部准确运行文件?
perl - Perl -d 和模数问题
我有一些脚本已经开始使用“模数”的想法进行单元测试。我遇到了一个问题,当使用“perl -d”调用脚本时,脚本不会运行,因为 caller() 返回了一个真值。
我将脚本的主体包裹在 main() 中,并且一些子例程被慢慢地从 main() 中拉出到它们自己的子例程中。
在脚本的顶部,我有:
当在 .t 测试中调用它时,它可以按我的意愿工作,而不是运行 main() 以便我可以测试子例程。当我从 CLI 调用脚本时,调用 main() 效果很好。
当我从 CLI 调用它时会出现问题:
在这个阶段,调用者返回一个有效值(而不是 undef)并且不调用 main。
关于如何处理这个问题的建议将不胜感激。
perl - 在不知道模块名但知道文件名的情况下加载和使用 perl 模块
我一直在玩 modulino perl 模式,并且想在不知道包名称和只知道它所在的文件的情况下加载一个。我正在寻找可以像这样使用的东西:
这里something
是关键。不require
,或者use
因为我之后需要模块名称。我是否必须阅读$file
并从中解析package
名称才能使用它?我敢肯定,可能有更好的方法。perl 中总是有。
python - 相当于 Perl Modulino for Ruby, Python?
我知道 Perl 有一种称为 modulino 的设计模式,其中库模块文件可以充当库和脚本。在 Ruby / Python 中是否有任何等价物?
我认为这种设计模式对我来说非常有用;我正在编写相当短的工人,但也需要一个脚本来运行它们。我认为让所有这些都从同一个地方运行会很方便。
谢谢!
bash - 如何在 zsh 中编写模数?
我喜欢将我的脚本编写为“modulinos”,可以作为小型 CLI 程序自行调用的 shell 脚本,或者由其他程序作为库导入。
我可以在 bash 中这样做:
https://github.com/mcandre/scriptedmain/tree/master/bash
我也想在 zsh 中这样做。我怎么能这样做?
最重要的是找到一种模拟 bash 的方法:
换句话说,找到这个脚本的名字和被召唤的程序的名字(当它们相等时,运行 main(),当它们不同时,跳过,因为这个脚本是作为库导入的)。
问题是,我认为 zsh 的$0
行为类似于 bash $BASH_SOURCE
,并且我认为没有与 bash 等效的 zsh $0
(工作方式不同)来补偿。
system - 如何在 Perl6 中制作模数?
我想在 Perl6 中制作一个modulino(一个可以作为模块或脚本运行的文件)。
以下代码从命令行“处理”文件名:
保存它,因为main.pm6
我可以运行它并且它可以工作:
所以,我希望这是一个模块,这样我就可以添加功能并简化测试。但是,当我向其添加module
声明时,它不再输出任何内容:
这导致没有输出:
那么,如何在 Perl6 中构建模数?
我正在使用从2015 年 1 月发布的 Rakudo Star开始在MoarVM上运行的 Perl6 。
更新:
当我尝试将模块包装在大括号中时:
我也收到错误:
perl - 设置 perl cgi query_string 离线
我想为我的 cgi 脚本编写一些单元测试。我将我的脚本编写为 modulino(脚本可能是一个模块,具体取决于上下文),我想测试它的功能,但也要确保 query_string 中的所有参数都按应有的方式设置。
我试过做这样的事情:
但它似乎完全忽略了这一点。有没有办法在不实际执行 GET 方法的情况下设置查询字符串?