Switch dev/test infrastructure from Leiningen to CLI/deps.edn

This commit is contained in:
Sean Corfield 2020-03-08 15:17:18 -07:00
parent fdf1c39cfa
commit 6e68bb9122
12 changed files with 132 additions and 146 deletions

19
.circleci/config.yml Normal file
View file

@ -0,0 +1,19 @@
version: 2
jobs:
build:
working_directory: ~/honeysql
docker:
- image: circleci/clojure:openjdk-11-tools-deps-1.10.0.442
# environment:
# JVM_OPTS: -Xmx3200m
steps:
- checkout
- restore_cache:
key: honeysql-{{ checksum "deps.edn" }}
- run: clojure -R:test:runner -Spath
- save_cache:
paths:
- ~/.m2
- ~/.gitlibs
key: honeysql-{{ checksum "deps.edn" }}
- run: sh run-tests.sh

7
.gitignore vendored
View file

@ -6,20 +6,13 @@
/classes
/checkouts
/dist
pom.xml*
*.jar
*.class
.cpcache
.eastwood
.lein-deps-sum
.lein-failures
.lein-plugins
.lein-repl-history
.nrepl-port
.classpath
.project
.nrepl-port
bin
test/readme.clj
/cljs-test-runner-out
/node_modules

View file

@ -1,19 +0,0 @@
dist: trusty
sudo: required
language: clojure
cache:
directories:
- $HOME/.m2
- $HOME/.npm
- $HOME/.nvm
- $TRAVIS_BUILD_DIR/.cache
- $TRAVIS_BUILD_DIR/node_modules
before_install:
- npm install lumo-cljs@1.8.0 -g
install:
- jdk_switcher use openjdk8
script: lein do check, eastwood, test-all, tach lumo, test-readme

View file

@ -1,3 +1,7 @@
## 1.0.next in progress
* Switch dev/test pipeline to use CLI/`deps.edn` instead of Leiningen.
## 0.9.10
* Fix #254 #255 by adding support for `except`. (@ted-coakley-otm)

View file

@ -1,12 +1,13 @@
# Honey SQL
# Honey SQL [![CircleCI](https://circleci.com/gh/jkk/honeysql/tree/master.svg?style=svg)](https://circleci.com/gh/jkk/honeysql/tree/master)
SQL as Clojure data structures. Build queries programmatically -- even at runtime -- without having to bash strings together.
## Build
[![Build Status](https://travis-ci.org/jkk/honeysql.svg?branch=master)](https://travis-ci.org/jkk/honeysql)
[![Dependencies Status](https://versions.deps.co/jkk/honeysql/status.svg)](https://versions.deps.co/jkk/honeysql)
[![project chat](https://img.shields.io/badge/zulip-join_chat-brightgreen.svg)](https://clojurians.zulipchat.com/#narrow/stream/152091-honeysql)
The latest versions on Clojars and on cljdoc:
[![Clojars Project](https://clojars.org/honeysql/latest-version.svg)](https://clojars.org/honeysql) [![cljdoc badge](https://cljdoc.org/badge/honeysql/honeysql?1.0.next)](https://cljdoc.org/d/honeysql/honeysql/CURRENT)
## Leiningen Coordinates
@ -527,7 +528,8 @@ You can also define your own clauses:
;; Takes a MapEntry of the operator & clause data, plus the entire SQL map
(defmethod fmt/format-clause :foobar [[op v] sqlmap]
(str "FOOBAR " (fmt/to-sql v)))
```
```clojure
(sql/format {:select [:a :b] :foobar :baz})
=> ["SELECT a, b FOOBAR baz"]
```
@ -537,7 +539,8 @@ You can also define your own clauses:
;; Defines a helper function, and allows 'build' to recognize your clause
(defhelper foobar [m args]
(assoc m :foobar (first args)))
```
```clojure
(-> (select :a :b) (foobar :baz) sql/format)
=> ["SELECT a, b FOOBAR baz"]
@ -551,7 +554,7 @@ When adding a new clause, you may also need to register it with a specific prior
If you do implement a clause or function handler for an ANSI SQL, consider submitting a pull request so others can use it, too. For non-standard clauses and/or functions, look for a library that extends `honeysql` for that specific database or create one, if no such library exists.
## why does my parameter get emitted as `()`?
## Why does my parameter get emitted as `()`?
If you want to use your own datatype as a parameter then the idiomatic approach of implementing `clojure.java.jdbc`'s [`ISQLValue`](https://clojure.github.io/java.jdbc/#clojure.java.jdbc/ISQLValue) protocol isn't enough as `honeysql` won't correct pass through your datatype, rather it will interpret it incorrectly.

View file

@ -7,14 +7,22 @@
:1.9 {:override-deps {org.clojure/clojure {:mvn/version "1.9.0"}}}
:1.10 {:override-deps {org.clojure/clojure {:mvn/version "1.10.1"}}}
:master {:override-deps {org.clojure/clojure {:mvn/version "1.11.0-master-SNAPSHOT"}}}
;; clj -A:test:runner
:test {:extra-paths ["test"]}
:runner {:extra-deps {com.cognitect/test-runner
{:git/url "https://github.com/cognitect-labs/test-runner"
:sha "f7ef16dc3b8332b0d77bc0274578ad5270fbfedd"}}
:main-opts ["-m" "cognitect.test-runner"
"-d" "test"]}
:runner
{:extra-deps {com.cognitect/test-runner
{:git/url "https://github.com/cognitect-labs/test-runner"
:sha "f7ef16dc3b8332b0d77bc0274578ad5270fbfedd"}}
:main-opts ["-m" "cognitect.test-runner"
"-d" "test"]}
:cljs-runner {:extra-deps {olical/cljs-test-runner {:mvn/version "3.7.0"}}
:main-opts ["-m" "cljs-test-runner.main"]}
:readme {:extra-deps {seancorfield/readme {:mvn/version "1.0.12"}}
:main-opts ["-m" "seancorfield.readme"]}}}
:readme {:extra-deps {seancorfield/readme {:mvn/version "1.0.13"}}
:main-opts ["-m" "seancorfield.readme"]}
:eastwood {:extra-deps {jonase/eastwood {:mvn/version "RELEASE"}}
:main-opts ["-m" "eastwood.lint" "{:source-paths,[\"src\"]}"]}
:jar {:extra-deps {seancorfield/depstar {:mvn/version "0.5.2"}}
:main-opts ["-m" "hf.depstar.jar" "honeysql.jar"]}
:install {:extra-deps {deps-deploy {:mvn/version "0.0.9"}}
:main-opts ["-m" "deps-deploy.deps-deploy" "install" "honeysql.jar"]}
:deploy {:extra-deps {deps-deploy {:mvn/version "0.0.9"}}
:main-opts ["-m" "deps-deploy.deps-deploy" "deploy" "honeysql.jar"]}}}

View file

@ -1,29 +0,0 @@
{
"name": "@honeysql/honeysql",
"version": "0.9.10",
"license": "EPL-1.0",
"homepage": "https://github.com/jkk/honeysql",
"repository": {
"type": "git",
"url": "https://github.com/jkk/honeysql"
},
"contributors": [
{
"name": "Michael Blume",
"email": "blume.mike@gmail.com"
},
{
"name": "Sean Corfield",
"email": "sean@corfield.org"
}
],
"files": [
"src/*"
],
"directories": {
"lib": "src"
},
"dependencies": {
"macrovich": "0.2.1-SNAPSHOT"
}
}

62
pom.xml Normal file
View file

@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>jkk</groupId>
<artifactId>honeysql</artifactId>
<version>1.0.next</version>
<name>honeysql</name>
<description>SQL as Clojure data structures.</description>
<url>https://github.com/jkk/honeysql</url>
<licenses>
<license>
<name>Eclipse Public License</name>
<url>http://www.eclipse.org/legal/epl-v10.html</url>
</license>
</licenses>
<developers>
<developer>
<name>Sean Corfield</name>
</developer>
<developer>
<name>Justin Kramer</name>
</developer>
</developers>
<scm>
<url>https://github.com/jkk/honeysql</url>
<connection>scm:git:git://github.com/jkk/honeysql.git</connection>
<developerConnection>scm:git:ssh://git@github.com/jkk/honeysql.git</developerConnection>
<tag>v1.0.next</tag>
</scm>
<dependencies>
<dependency>
<groupId>org.clojure</groupId>
<artifactId>clojure</artifactId>
<version>1.10.1</version>
</dependency>
<dependency>
<groupId>net.cgrand</groupId>
<artifactId>macrovich</artifactId>
<version>0.2.1</version>
</dependency>
</dependencies>
<build>
<sourceDirectory>src</sourceDirectory>
</build>
<repositories>
<repository>
<id>clojars</id>
<url>https://repo.clojars.org/</url>
</repository>
<repository>
<id>sonatype</id>
<url>https://oss.sonatype.org/content/repositories/snapshots/</url>
</repository>
</repositories>
<distributionManagement>
<repository>
<id>clojars</id>
<name>Clojars repository</name>
<url>https://clojars.org/repo</url>
</repository>
</distributionManagement>
</project>

View file

@ -1,48 +0,0 @@
(defproject honeysql "0.9.10"
:description "SQL as Clojure data structures"
:license {:name "Eclipse Public License"
:url "http://www.eclipse.org/legal/epl-v10.html"}
:url "https://github.com/jkk/honeysql"
:scm {:name "git"
:url "https://github.com/jkk/honeysql"}
:dependencies [[org.clojure/clojure "1.10.1"]
[net.cgrand/macrovich "0.2.1"]]
:aliases {"test-readme" ["with-profile" "midje" "midje"]
"test-all" ["with-profile"
"default:1.7,default:1.8,default:1.9,default:1.10,default:master"
"test"]}
:cljsbuild {:builds {:release {:source-paths ["src"]
:compiler {:output-to "dist/honeysql.js"
:optimizations :advanced
:output-wrapper false
:parallel-build true
:pretty-print false}}
:test {:source-paths ["src" "test" "test-lein"]
:compiler {:output-to "target/test/honeysql.js"
:output-dir "target/test"
:source-map true
:main honeysql.test
:parallel-build true
:target :nodejs}}}}
:doo {:build "test"}
:tach {:test-runner-ns 'honeysql.self-host-runner
:source-paths ["src" "test" "test-lein"]}
:profiles {:midje {:dependencies [[midje "1.9.6"]]
:plugins [[lein-midje "3.2.1"]
[midje-readme "1.0.9"]]
:midje-readme {:require "[honeysql.core :as sql]
[honeysql.helpers :refer :all :as helpers]
[honeysql.format :as fmt]
[honeysql.helpers :refer [defhelper]]"}}
:master {:repositories [["snapshots" "https://oss.sonatype.org/content/repositories/snapshots/"]]
:dependencies [[org.clojure/clojure "1.11.0-master-SNAPSHOT"]]}
:1.10 {:dependencies [[org.clojure/clojure "1.10.1"]]}
:1.9 {:dependencies [[org.clojure/clojure "1.9.0"]]}
:1.8 {:dependencies [[org.clojure/clojure "1.8.0"]]}
:1.7 {:dependencies [[org.clojure/clojure "1.7.0"]]}
:dev {:dependencies [[org.clojure/clojurescript "1.10.520"]
[cljsbuild "1.1.7"]]
:plugins [[lein-cljsbuild "1.1.7"]
[jonase/eastwood "0.3.5"]
[lein-doo "0.1.11"]
[lein-tach "1.0.0"]]}})

View file

@ -1,13 +1,24 @@
#!/bin/sh
#
# Assumes node.js/npm and lumo-cljs are installed!
# See .travis.yml for details of the test environment.
#
rm -rf test/readme.clj
if test "$1" = "all"
echo ==== Test README.md ==== && clojure -A:readme && \
echo ==== Lint Source ==== && clojure -A:eastwood && \
echo ==== Test ClojureScript ==== && clojure -A:test:cljs-runner
if test $? -eq 0
then
clj_test="test-all"
else
clj_test="test"
if test "$1" = "all"
then
for v in 1.7 1.8 1.9 1.10 master
do
echo ==== Test Clojure $v ====
clojure -A:test:runner:$v
if test $? -ne 0
then
exit 1
fi
done
else
echo ==== Test Clojure ====
clojure -A:test:runner
fi
fi
lein do clean, check, eastwood, $clj_test, tach lumo, test-readme

View file

@ -1,9 +0,0 @@
(ns honeysql.self-host-runner
(:require [cljs.test :as t :refer-macros [run-tests]]
honeysql.core-test
honeysql.format-test))
(enable-console-print!)
(run-tests 'honeysql.core-test
'honeysql.format-test)

View file

@ -1,9 +0,0 @@
(ns honeysql.test
(:require
[doo.runner :refer-macros [doo-tests]]
[cljs.test :as t :refer-macros [is are deftest testing]]
honeysql.core-test
honeysql.format-test))
(doo-tests 'honeysql.core-test
'honeysql.format-test)