标签: elixir-mix

ExUnit - 运行存储在自定义目录(不是测试/)中的所有测试

我想在我的 Elixir 项目中拥有两组独立的单元测试,我可以使用不同的 ExUnit 配置单独运行它们。我正在开发 ExUnit 格式化程序,并尝试为其编写单元测试。为了测试它,我想我会创建另一个目录 ( example_tests),其中包含test_helper.exs一个与 中的文件类似的文件test/,但 ExUnit 配置为使用我的自定义格式化程序。我将格式化程序添加为 ExUnit 格式化程序,然后创建了一个测试模块example_tests。现在的问题是我不知道如何配置 ExUnit 以example_tests/使用 中指定的配置运行所有测试example_tests/test_helper.exs

我发现有一个test_paths配置参数无法在文件中设置mix.exs。问题是该值是在每个项目的基础上设置的,我需要它有两个不同的值(通常只是["test"]但随后用于使用格式化程序进行测试运行["example_tests"])。我假设我可以在每个任务的基础上覆盖配置值,因此我也创建了一个 example_tests 任务,但我不知道如何更改配置。

有没有办法Mix.Project.config在每个任务的基础上自定义项目配置()?或者,是否有更好的方法来创建具有不同 ExUnit 配置的两组独立的测试?

更新:

以下是 Mix 任务源代码的链接testhttps://github.com/elixir-lang/elixir/blob/master/lib/mix/lib/mix/tasks/test.ex

unit-testing elixir-mix elixir

5
推荐指数
1
解决办法
1310
查看次数

Elixir 的 `mix format` 配置选项

我正在尝试找到一个列表,将混合格式的可配置选项放入格式化程序配置文件中,但我终生找不到它。它不是混合格式的文档或我看过的其他任何地方。有谁知道我在哪里可以找到这些信息?

elixir-mix elixir

5
推荐指数
2
解决办法
2294
查看次数

如何从测试覆盖率分析中排除特定文件?

我的 Elixir 应用程序中有一些文件,我想从测试覆盖率报告中排除它们。我现在没有使用任何花哨的覆盖工具;(尽管我并不排除使用此类工具的可能性)我mix test --cover现在只是在使用。

如何告诉覆盖率分析工具给定的文件不应包含在覆盖率分析中?

elixir-mix elixir

5
推荐指数
1
解决办法
2506
查看次数

无法在Elixir项目中获取环境变量

我定义了一个与guide-started相关的环境变量,我的mix.exs

defmodule Basic.Mixfile do
  use Mix.Project

  def project do
    [app: :basic,
     version: "0.0.1",
     elixir: "~> 0.13.0-dev",
     deps: deps,
     env: [
      dev: [foo: "bar"] ] ]
  end

  # Configuration for the OTP application
  #
  # Type `mix help compile.app` for more information
  def application do
    [ applications: [],
      mod: { Basic, [] } ]
  end

  # List all dependencies in the format:
  #
  # { :foobar, git: "https://github.com/elixir-lang/foobar.git", tag: "0.1" }
  #
  # Type `mix help deps` …
Run Code Online (Sandbox Code Playgroud)

elixir-mix elixir

4
推荐指数
1
解决办法
5329
查看次数

混合在代理后面不起作用

至少在两周之前我一直在使用混合代理.但是我发现昨天混合变得无法在代理背后工作.mix版本是1.1.1.混合local.hex运行.但是混合deps.get会发生错误.

$ mix deps.get
Registry update failed (http_error)
{:failed_connect, [{:to_address, {'s3.amazonaws.com', 443}}, {:inet, [:inet], :nxdomain}]}
Running dependency resolution
Dependency resolution completed successfully
  combine: v0.5.3
  floki: v0.6.1
  hackney: v1.3.2
  httpoison: v0.7.4
  idna: v1.0.2
  mochiweb: v2.12.2
  ssl_verify_hostname: v1.0.5
  timex: v0.19.5
  tzdata: v0.5.4
* Getting httpoison (Hex package)
Checking package (https://s3.amazonaws.com/s3.hex.pm/tarballs/httpoison-0.7.4.tar)
Request failed: {:failed_connect, [{:to_address, {'s3.amazonaws.com', 443}}, {:inet, [:inet], :nxdomain}]}
** (Mix) Package fetch failed and no cached copy available
Run Code Online (Sandbox Code Playgroud)

代理由HTTP_PROXY和HTTPS_PROXY设置.我还将.gitconfig设置为;

[http]
  proxy = http://proxy.mycompany.co.jp:10080
[https]
  proxy = http://proxy.mycompany.co.jp:10080
[url "https://"] …
Run Code Online (Sandbox Code Playgroud)

elixir-mix elixir http-proxy

4
推荐指数
1
解决办法
1842
查看次数

如何在伞形项目的根目录下创建Mix任务?

我有一个Elixir伞形项目.该项目中的每个应用程序都可以使用编译成可执行文件mix escript.build.

我试图从伞项目的根目录运行此命令,并得到以下错误

** (RuntimeError) Trying to access Mix.Project.app_path for an umbrella project but umbrellas have no app
Run Code Online (Sandbox Code Playgroud)

我理解为什么这不起作用.因此,尝试在伞形项目的根目录下创建自定义组合任务.由于根没有lib目录,我添加了一个并在其中创建了一个混合任务.但是没有列出mix help.

如何在伞形项目的根目录中定义自定义混合任务?

elixir-mix elixir

4
推荐指数
1
解决办法
1340
查看次数

如何从Laravel 5.4中正确删除Bootstrap?

我尝试在没有Bootstrap的情况下启动Laravel 5.4项目.

安装Laravel后,我编辑了以下文件:

资源/资产/ JS/app.js

require('./bootstrap');
Run Code Online (Sandbox Code Playgroud)

的package.json

...
"devDependencies": {
"axios": "^0.15.3",
"bootstrap-sass": "^3.3.7",
"jquery": "^3.1.1",
"laravel-mix": "^0.7.2",
"lodash": "^4.17.4",
"vue": "^2.1.10"
},
...
Run Code Online (Sandbox Code Playgroud)

我有以下错误:

错误./resources/assets/js/app.js中编译失败,错误1错误

语法错误:/Users /.../package.json:解析JSON时出错 - JSON.parse()中的JSON输入的意外结束@ multi ./resources/assets/js/app.js ./resources/assets/sass/ app.scss

有什么建议?

elixir-mix twitter-bootstrap laravel

4
推荐指数
2
解决办法
7816
查看次数

如何使用laravel mix和git管理前端资产?

我正在使用Mix(这也适用于Elixir)我可以管理我的前端资产.我将Mix配置为生产中的版本文件,但不是dev.因此,当我更新的资产,我得到更新app.js,并app.css在开发和文件app.{hash}.jsapp.{hash}.css文件制作.

关于如何在版本控制中利用它,您有什么建议?

  1. 将文件放在版本控制中?如果是这样,我如何在开发过程中管理不断变化?继续添加新的散列文件?我是否将app.js和app.css留在生产服务器上?
  2. .gitignore js和css文件并在生产服务器上运行npm以在本地编译资产?
  3. 其他解决方案?

你对此有何看法?

提前致谢.

git assets elixir-mix laravel

4
推荐指数
2
解决办法
1307
查看次数

何时在elixir模块名称中使用点?

我看过以这种方式命名的elixir模块:

defmodule Foo.bar.baz do
end
Run Code Online (Sandbox Code Playgroud)

但我找不到任何文件说明何时这样做.

它与子目录有关吗?使用mix,我可以将我的模块放在lib文件夹中的子目录中,并且它们在没有点的情况下工作正常.

例如:

# this is in /lib/foo/bar

defmodule Bar do
end
Run Code Online (Sandbox Code Playgroud)

惯例是什么?

elixir-mix elixir

4
推荐指数
1
解决办法
373
查看次数

混合deps.get失败,{:failed_connect,[{:to_address,{'repo.hex.pm',443}},{:inet,[:inet],{:option,:server_only,:honor_cipher_order}}}}

我正在尝试获取我的elixir项目的依赖项。我无法确定Hex是否掉线(今天早上我可以很好地获取数据)。当我跑步

$ mix deps.get
Run Code Online (Sandbox Code Playgroud)

我看到了:

    Failed to fetch record for 'hexpm/phoenix_live_reload' from registry (using cache)
{:failed_connect, [{:to_address, {'repo.hex.pm', 443}}, {:inet, [:inet], {:option, :server_only, :honor_cipher_order}}]}
    Failed to fetch record for 'hexpm/phoenix_ecto' from registry (using cache)
{:failed_connect, [{:to_address, {'repo.hex.pm', 443}}, {:inet, [:inet], {:option, :server_only, :honor_cipher_order}}]}
    Failed to fetch record for 'hexpm/phoenix' from registry (using cache)
{:failed_connect, [{:to_address, {'repo.hex.pm', 443}}, {:inet, [:inet], {:option, :server_only, :honor_cipher_order}}]}
    Failed to fetch record for 'hexpm/phoenix_pubsub' from registry (using cache)
{:failed_connect, [{:to_address, {'repo.hex.pm', 443}}, {:inet, [:inet], {:option, :server_only, …
Run Code Online (Sandbox Code Playgroud)

elixir-mix elixir hex-pm

4
推荐指数
2
解决办法
364
查看次数