how to test a theme upgrade

时间:2014-01-25 作者:middlesister

有没有办法通过自动更新程序测试运行主题?

我们有一个主题,其中一个版本将引入新的功能,这可能会打破现有的主题。我想在升级时检查以前的主题版本,如果升级是在两个特定版本之间进行的,则包括一些特定于升级的代码。

我首先认为我可以after_theme_switch 钩子,但主题主要用作父主题,可能会在不是活动主题的情况下升级。我已经研究过使用upgrader_pre_installupgrader_post_install 钩子,但我如何测试这些?

最终的方法是将其作为单元测试,但任何其他模拟升级的方法都会很好。上载zip文件被视为安装,而不是升级。

这是否可能从一个主题中实现,我应该考虑编写一个模拟升级插件吗?

2 个回复
SO网友:grappler

你在问两个问题。一个是如何测试更新,另一个是如何在更新后运行代码。

您可以通过将更新推出自己并测试其是否有效来测试主题更新。您可以使用GitHub Updater.

如果只想在升级后运行代码,则没有核心解决方案。它有两种工作方式。

您可以将主题版本保存到数据库中,这样您就可以计算其版本或进行更新,然后运行更新代码after_setup_theme 应该没问题。

SO网友:middlesister

这就是我目前找到的解决方案。我的代码可以在以下要点中找到:https://gist.github.com/middlesister/8652490

获取以前的主题版本并将其存储在upgrader_pre_install. 比较上一个主题版本upgrader_post_install 并查看升级是否来自特定版本。在瞬态中设置一个标志(如果是)。

检查瞬态,如果设置了标志,请执行我需要的操作,然后删除瞬态。我试过了upgrader_process_complete钩子,但似乎不起作用,所以我在init 钩这意味着代码将在下一次页面刷新时执行,但由于瞬态设置为生存一小时,我可以接受。

单元测试正在通过,我在使用自动更新程序从旧版本升级到当前版本时,尝试将代码放入插件中,它似乎满足了我的需要。

问题是我需要以某种方式执行此代码。

结束

相关推荐

SSH Upgrade Problem

我总是犯同样的错误,有什么想法吗?我使用生成了一个没有密码的密钥ssh-keygen我将密钥权限设置为600,我已使用成功登录ssh -i /root/.ssh/id_rsa 1**.**.*8.128</我已尝试将主机名更改为localhost 和127.0.0.1服务器正在运行CentOS 5.4。