Add license check for project (#71)
* Add license check for project
Signed-off-by: xiaolong.ran <ranxiaolong716@gmail.com>
diff --git a/license_test.go b/license_test.go
new file mode 100644
index 0000000..51b7f44
--- /dev/null
+++ b/license_test.go
@@ -0,0 +1,116 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+package main
+
+import (
+ "io/ioutil"
+ "os"
+ "path/filepath"
+ "regexp"
+ "testing"
+)
+
+var goFileCheck = regexp.MustCompile(`// Licensed to the Apache Software Foundation \(ASF\) under one
+// or more contributor license agreements\. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership\. The ASF licenses this file
+// to you under the Apache License, Version 2\.0 \(the
+// "License"\); you may not use this file except in compliance
+// with the License\. You may obtain a copy of the License at
+//
+// http://www\.apache\.org/licenses/LICENSE-2\.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied\. See the License for the
+// specific language governing permissions and limitations
+// under the License\.
+
+`)
+
+var otherCheck = regexp.MustCompile(`#
+# Licensed to the Apache Software Foundation \(ASF\) under one
+# or more contributor license agreements\. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership\. The ASF licenses this file
+# to you under the Apache License, Version 2\.0 \(the
+# "License"\); you may not use this file except in compliance
+# with the License\. You may obtain a copy of the License at
+#
+# http://www\.apache\.org/licenses/LICENSE-2\.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied\. See the License for the
+# specific language governing permissions and limitations
+# under the License\.
+#
+`)
+
+var skip = map[string]bool{
+ "pkg/pb/PulsarApi.pb.go":true,
+}
+
+func TestLicense(t *testing.T) {
+ err := filepath.Walk(".", func(path string, fi os.FileInfo, err error) error {
+ if skip[path] {
+ return nil
+ }
+
+ if err != nil {
+ return err
+ }
+
+ switch filepath.Ext(path) {
+ case ".go":
+ src, err := ioutil.ReadFile(path)
+ if err != nil {
+ return nil
+ }
+
+ // Find license
+ if !goFileCheck.Match(src) {
+ t.Errorf("%v: license header not present", path)
+ return nil
+ }
+ case ".yaml":
+ fallthrough
+ case ".conf":
+ src, err := ioutil.ReadFile(path)
+ if err != nil {
+ return nil
+ }
+
+ // Find license
+ if !otherCheck.Match(src) {
+ t.Errorf("%v: license header not present", path)
+ return nil
+ }
+
+ default:
+ return nil
+ }
+
+ return nil
+ })
+ if err != nil {
+ t.Fatal(err)
+ }
+}
diff --git a/pulsar/impl_consumer.go b/pulsar/impl_consumer.go
index dcc1df8..0178943 100644
--- a/pulsar/impl_consumer.go
+++ b/pulsar/impl_consumer.go
@@ -1,4 +1,3 @@
-//
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
@@ -15,7 +14,6 @@
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
-//
package pulsar
diff --git a/run-ci.sh b/run-ci.sh
index 4398762..aec2a46 100755
--- a/run-ci.sh
+++ b/run-ci.sh
@@ -31,9 +31,7 @@
./pulsar-test-service-start.sh
-# Run tests on the directories that contains any '*_test.go' file
-DIRS=`find . -name '*_test.go' | xargs -n1 dirname | sort | uniq`
-go test -coverprofile=/tmp/coverage -timeout=1h ${DIRS}
+go test -coverprofile=/tmp/coverage -timeout=1h ./...
go tool cover -html=/tmp/coverage -o coverage.html
./pulsar-test-service-stop.sh