diff --git a/.github/workflows/elixir-7.yml b/.github/workflows/elixir-12.yml similarity index 66% rename from .github/workflows/elixir-7.yml rename to .github/workflows/elixir-12.yml index 846a977..ac7c10f 100644 --- a/.github/workflows/elixir-7.yml +++ b/.github/workflows/elixir-12.yml @@ -3,7 +3,7 @@ # separate terms of service, privacy policy, and support # documentation. -name: Elixir 1.7 CI +name: Elixir 1.12 CI on: push: @@ -18,15 +18,17 @@ jobs: build: name: Build and test - runs-on: ubuntu-18.04 + runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v3 + with: + fetch-depth: 0 - name: Set up Elixir uses: erlef/setup-beam@61e01a43a562a89bfc54c7f9a378ff67b03e4a21 # v1.16.0 with: - elixir-version: '1.7.4' # [Required] Define the Elixir version - otp-version: '19.x' # [Required] Define the Erlang/OTP version + elixir-version: '1.12.3' # [Required] Define the Elixir version + otp-version: '22.x' # [Required] Define the Erlang/OTP version - name: Restore dependencies cache uses: actions/cache@v3 with: @@ -37,3 +39,9 @@ jobs: run: mix deps.get - name: Run tests run: mix test + - name: Build example.exs + run: mix run example.exs + - name: Run credo + run: mix credo diff --from-git-merge-base origin/master + - name: Run Dialyzer + run: mix dialyzer diff --git a/.github/workflows/elixir-15.yml b/.github/workflows/elixir-15.yml index 589f76e..ec0eef6 100644 --- a/.github/workflows/elixir-15.yml +++ b/.github/workflows/elixir-15.yml @@ -22,6 +22,8 @@ jobs: steps: - uses: actions/checkout@v3 + with: + fetch-depth: 0 - name: Set up Elixir uses: erlef/setup-beam@61e01a43a562a89bfc54c7f9a378ff67b03e4a21 # v1.16.0 with: @@ -37,3 +39,7 @@ jobs: run: mix deps.get - name: Run tests run: mix test + - name: Build example.exs + run: mix run example.exs + - name: Run credo + run: mix credo diff --from-git-merge-base origin/master diff --git a/README.md b/README.md index 923f23e..2278fa9 100644 --- a/README.md +++ b/README.md @@ -18,16 +18,16 @@ Features: - Font and cell background color, borders - Merged cells -## Installation +## Installation -### Elixir 1.7 and above +As of version 0.6, elixlsx requires Elixir 1.12 or above. -Via Hex, in `mix.exs`: +Installation via Hex, in `mix.exs`: ```elixir defp deps do - [{:elixlsx, "~> 0.5.1"}] + [{:elixlsx, "~> 0.6.0"}] end ``` diff --git a/lib/elixlsx/xml_templates.ex b/lib/elixlsx/xml_templates.ex index 2d79c7a..e2c83e1 100644 --- a/lib/elixlsx/xml_templates.ex +++ b/lib/elixlsx/xml_templates.ex @@ -209,7 +209,7 @@ defmodule Elixlsx.XMLTemplates do :empty -> {:empty, :empty} - true -> + _ -> :error end end diff --git a/mix.exs b/mix.exs index 1ec6181..ed90d37 100644 --- a/mix.exs +++ b/mix.exs @@ -2,13 +2,13 @@ defmodule Elixlsx.Mixfile do use Mix.Project @source_url "https://github.com/xou/elixlsx" - @version "0.5.2" + @version "0.6.0" def project do [ app: :elixlsx, version: @version, - elixir: "~> 1.7", + elixir: "~> 1.12", package: package(), description: "Elixlsx is a writer for the MS Excel OpenXML format (`.xlsx`).", build_embedded: Mix.env() == :prod, @@ -19,19 +19,19 @@ defmodule Elixlsx.Mixfile do end def application do - [] + [ applications: [:xmerl, :propcheck] ] end defp deps do [ - {:excheck, "~> 0.5", only: :test}, - {:triq, "~> 1.0", only: :test}, - {:credo, "~> 0.5", only: [:dev, :test]}, + {:credo, "~> 1.6", only: [:dev, :test]}, + {:propcheck, "~> 1.4", only: [:dev, :test]}, {:ex_doc, ">= 0.0.0", only: [:dev], runtime: false}, - {:dialyxir, "~> 0.5", only: [:dev], runtime: false} + {:dialyxir, "~> 1.0", only: [:dev], runtime: false}, ] end + defp docs do [ extras: ["CHANGELOG.md", "README.md"], diff --git a/mix.lock b/mix.lock index 34c8123..8dd2ebb 100644 --- a/mix.lock +++ b/mix.lock @@ -1,13 +1,19 @@ %{ - "bunt": {:hex, :bunt, "0.1.6", "5d95a6882f73f3b9969fdfd1953798046664e6f77ec4e486e6fafc7caad97c6f", [:mix], [], "hexpm", "4fb7b2f7b04af13cf210b132f8d10db52d4a57d36cb974e8025d7fdb12ca97fc"}, - "credo": {:hex, :credo, "0.5.3", "0c405b36e7651245a8ed63c09e2d52c2e2b89b6d02b1570c4d611e0fcbecf4a2", [:mix], [{:bunt, "~> 0.1.6", [hex: :bunt, repo: "hexpm", optional: false]}], "hexpm", "90bca5180fe64c47343969ad3e32bf1edc18d929689e8c00c810655a7a391427"}, - "dialyxir": {:hex, :dialyxir, "0.5.1", "b331b091720fd93e878137add264bac4f644e1ddae07a70bf7062c7862c4b952", [:mix], [], "hexpm", "6c32a70ed5d452c6650916555b1f96c79af5fc4bf286997f8b15f213de786f73"}, + "bunt": {:hex, :bunt, "1.0.0", "081c2c665f086849e6d57900292b3a161727ab40431219529f13c4ddcf3e7a44", [:mix], [], "hexpm", "dc5f86aa08a5f6fa6b8096f0735c4e76d54ae5c9fa2c143e5a1fc7c1cd9bb6b5"}, + "credo": {:hex, :credo, "1.7.3", "05bb11eaf2f2b8db370ecaa6a6bda2ec49b2acd5e0418bc106b73b07128c0436", [:mix], [{:bunt, "~> 0.2.1 or ~> 1.0", [hex: :bunt, repo: "hexpm", optional: false]}, {:file_system, "~> 0.2 or ~> 1.0", [hex: :file_system, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "35ea675a094c934c22fb1dca3696f3c31f2728ae6ef5a53b5d648c11180a4535"}, + "dialyxir": {:hex, :dialyxir, "1.4.3", "edd0124f358f0b9e95bfe53a9fcf806d615d8f838e2202a9f430d59566b6b53b", [:mix], [{:erlex, ">= 0.2.6", [hex: :erlex, repo: "hexpm", optional: false]}], "hexpm", "bf2cfb75cd5c5006bec30141b131663299c661a864ec7fbbc72dfa557487a986"}, "earmark": {:hex, :earmark, "1.3.1", "73812f447f7a42358d3ba79283cfa3075a7580a3a2ed457616d6517ac3738cb9", [:mix], [], "hexpm", "000aaeff08919e95e7aea13e4af7b2b9734577b3e6a7c50ee31ee88cab6ec4fb"}, "earmark_parser": {:hex, :earmark_parser, "1.4.12", "b245e875ec0a311a342320da0551da407d9d2b65d98f7a9597ae078615af3449", [:mix], [], "hexpm", "711e2cc4d64abb7d566d43f54b78f7dc129308a63bc103fbd88550d2174b3160"}, + "erlex": {:hex, :erlex, "0.2.6", "c7987d15e899c7a2f34f5420d2a2ea0d659682c06ac607572df55a43753aa12e", [:mix], [], "hexpm", "2ed2e25711feb44d52b17d2780eabf998452f6efda104877a3881c2f8c0c0c75"}, "ex_doc": {:hex, :ex_doc, "0.23.0", "a069bc9b0bf8efe323ecde8c0d62afc13d308b1fa3d228b65bca5cf8703a529d", [:mix], [{:earmark_parser, "~> 1.4.0", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_elixir, "~> 0.14", [hex: :makeup_elixir, repo: "hexpm", optional: false]}], "hexpm", "f5e2c4702468b2fd11b10d39416ddadd2fcdd173ba2a0285ebd92c39827a5a16"}, - "excheck": {:hex, :excheck, "0.5.3", "7326a29cc5fdb6900e66dac205a6a70cc994e2fe037d39136817d7dab13cdabf", [:mix], [], "hexpm", "2a27ffeff9d3b2ef45c454efb13990f08bc2578f93fd6d054025da74775ca869"}, + "excheck": {:hex, :excheck, "0.6.0", "f8595a8ac2c0abc0d060c1a4fce7d26f41574543366a52d5f3c84de30a69747b", [:mix], [], "hexpm", "50a94eb60e79c886be425af6b6f09c8055556ff8ad00e474dba72172574b8d28"}, + "file_system": {:hex, :file_system, "1.0.0", "b689cc7dcee665f774de94b5a832e578bd7963c8e637ef940cd44327db7de2cd", [:mix], [], "hexpm", "6752092d66aec5a10e662aefeed8ddb9531d79db0bc145bb8c40325ca1d8536d"}, + "jason": {:hex, :jason, "1.4.1", "af1504e35f629ddcdd6addb3513c3853991f694921b1b9368b0bd32beb9f1b63", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "fbb01ecdfd565b56261302f7e1fcc27c4fb8f32d56eab74db621fc154604a7a1"}, + "libgraph": {:hex, :libgraph, "0.16.0", "3936f3eca6ef826e08880230f806bfea13193e49bf153f93edcf0239d4fd1d07", [:mix], [], "hexpm", "41ca92240e8a4138c30a7e06466acc709b0cbb795c643e9e17174a178982d6bf"}, "makeup": {:hex, :makeup, "1.0.5", "d5a830bc42c9800ce07dd97fa94669dfb93d3bf5fcf6ea7a0c67b2e0e4a7f26c", [:mix], [{:nimble_parsec, "~> 0.5 or ~> 1.0", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "cfa158c02d3f5c0c665d0af11512fed3fba0144cf1aadee0f2ce17747fba2ca9"}, "makeup_elixir": {:hex, :makeup_elixir, "0.15.1", "b5888c880d17d1cc3e598f05cdb5b5a91b7b17ac4eaf5f297cb697663a1094dd", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 1.1", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "db68c173234b07ab2a07f645a5acdc117b9f99d69ebf521821d89690ae6c6ec8"}, "nimble_parsec": {:hex, :nimble_parsec, "1.1.0", "3a6fca1550363552e54c216debb6a9e95bd8d32348938e13de5eda962c0d7f89", [:mix], [], "hexpm", "08eb32d66b706e913ff748f11694b17981c0b04a33ef470e33e11b3d3ac8f54b"}, + "propcheck": {:hex, :propcheck, "1.4.1", "c12908dbe6f572032928548089b34ff9d40672d5d70f1562e3a9e9058d226cc9", [:mix], [{:libgraph, "~> 0.13", [hex: :libgraph, repo: "hexpm", optional: false]}, {:proper, "~> 1.4", [hex: :proper, repo: "hexpm", optional: false]}], "hexpm", "e1b088f574785c3c7e864da16f39082d5599b3aaf89086d3f9be6adb54464b19"}, + "proper": {:hex, :proper, "1.4.0", "89a44b8c39d28bb9b4be8e4d715d534905b325470f2e0ec5e004d12484a79434", [:rebar3], [], "hexpm", "18285842185bd33efbda97d134a5cb5a0884384db36119fee0e3cfa488568cbb"}, "triq": {:hex, :triq, "1.3.0", "d9ed60f3cd2b6bacbb721bc9873e67e07b02e5b97c63d40db35b12670a7f1bf4", [:rebar3], [], "hexpm", "e01eb99fc53099ded985bb0c629ea0d2b0bfcf5b9a4178e0a93b08dbe51aa8cd"}, } diff --git a/test/test_helper.exs b/test/test_helper.exs index 13af10d..869559e 100644 --- a/test/test_helper.exs +++ b/test/test_helper.exs @@ -1,2 +1 @@ -ExCheck.start() ExUnit.start() diff --git a/test/util_test.exs b/test/util_test.exs index e4f3e56..f4d2cfe 100644 --- a/test/util_test.exs +++ b/test/util_test.exs @@ -1,14 +1,14 @@ -defmodule ExCheck.UtilTest do + +use PropCheck + +defmodule UtilTest do use ExUnit.Case, async: false - use ExCheck alias Elixlsx.Util - property :enc_dec do - for_all x in such_that(x in int() when x >= 0) do - implies x >= 0 do - Util.decode_col(Util.encode_col(x)) == x - end + property "Util.encode_col reverses decode_col", [:verbose] do + forall x <- non_neg_integer() do + assert Util.decode_col(Util.encode_col(x)) == x end end end