* Add tests for markdown-clj and tools.namespace
See comment for why only one markdown test could be run.
Closes #1069 and #1064
* Convert 10 test libs using add-libtest
Also improved add-libtest to only require maven artifact
and rely on clojars for getting git-url most of the time
* Convert 8 more test libs using add-libtest
Also updated table and added comment for newline test
* Fix doric test
* Disable tools.namespace test that fails on windows
* Added dozen manual test libs and converted 2 test libs
add-libtest.clj supports manually-added and test-directories options
* Converts last tests to test namespaces and write libraries.csv
* Add a number of library tests from projects.md
Also add more docs around adding test libs and tweak add script
* Use :sha for gitlib and older clojure cli
* Revert "Use :sha for gitlib and older clojure cli"
This reverts commit c663ab8368.
* Fix and disable failing tests
Disabled tests that fail consistently and fixed windows one
45 lines
1.7 KiB
Clojure
45 lines
1.7 KiB
Clojure
(ns lambdaisland.regal.re2-test
|
|
(:require [clojure.spec.alpha :as s]
|
|
[clojure.test :refer [is]]
|
|
[clojure.test.check.clojure-test :refer [defspec]]
|
|
[clojure.test.check.generators :as gen]
|
|
[com.gfredericks.test.chuck.properties :as prop']
|
|
[lambdaisland.regal :as regal]
|
|
[lambdaisland.regal.generator :as regal-gen]
|
|
[lambdaisland.regal.test-util :refer [re2-find re2-compile]]
|
|
[lambdaisland.regal.spec-alpha :as regal-spec]))
|
|
|
|
(defn gen-carefully [fgen else-gen]
|
|
(try
|
|
(let [gen (fgen)]
|
|
(gen/->Generator
|
|
(fn [rnd size]
|
|
(try
|
|
(gen/call-gen gen rnd size)
|
|
(catch Exception _
|
|
(gen/call-gen else-gen rnd size))))))
|
|
(catch Exception _
|
|
else-gen)))
|
|
|
|
(defn can-generate? [regal]
|
|
(try
|
|
(gen/sample (regal-gen/gen regal))
|
|
true
|
|
(catch Exception _
|
|
false)))
|
|
|
|
(defspec re2-matches-like-java 10
|
|
(with-redefs [regal-spec/token-gen #(s/gen (disj regal-spec/known-tokens :line-break :start :end))]
|
|
(prop'/for-all [regal (s/gen ::regal/form)
|
|
:when (can-generate? regal)
|
|
s (gen-carefully #(regal-gen/gen regal)
|
|
gen/string)
|
|
:let [java-result
|
|
(try (re-find (regal/regex regal) s)
|
|
(catch Exception _
|
|
:fail))]
|
|
:when (not= :fail java-result)]
|
|
(is (= java-result
|
|
(re2-find (regal/with-flavor :re2
|
|
(re2-compile (regal/pattern regal)))
|
|
s))))))
|