about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--mk/tests.mk47
-rw-r--r--src/etc/errorck.py4
-rw-r--r--src/etc/featureck.py4
-rw-r--r--src/etc/licenseck.py5
-rw-r--r--src/etc/tidy.py204
-rwxr-xr-xsrc/grammar/check.sh2
-rw-r--r--src/test/run-make/c-dynamic-dylib/cfoo.c1
-rw-r--r--src/test/run-make/c-dynamic-rlib/cfoo.c1
-rw-r--r--src/test/run-make/c-link-to-rust-dylib/bar.c1
-rw-r--r--src/test/run-make/c-link-to-rust-staticlib/bar.c1
-rw-r--r--src/test/run-make/c-static-dylib/cfoo.c1
-rw-r--r--src/test/run-make/c-static-rlib/cfoo.c1
-rw-r--r--src/test/run-make/extern-fn-generic/test.c13
-rw-r--r--src/test/run-make/extern-fn-mangle/test.c3
-rw-r--r--src/test/run-make/extern-fn-with-packed-struct/test.c1
-rw-r--r--src/test/run-make/extern-fn-with-union/test.c1
-rw-r--r--src/test/run-make/interdependent-c-libraries/bar.c1
-rw-r--r--src/test/run-make/interdependent-c-libraries/foo.c1
-rw-r--r--src/test/run-make/issue-12446/foo.c1
-rw-r--r--src/test/run-make/issue-15460/foo.c1
-rw-r--r--src/test/run-make/link-path-order/correct.c1
-rw-r--r--src/test/run-make/link-path-order/wrong.c1
-rw-r--r--src/test/run-make/linkage-attr-on-static/foo.c1
-rw-r--r--src/test/run-make/lto-smoke-c/bar.c1
-rw-r--r--src/test/run-make/manual-link/bar.c1
-rw-r--r--src/test/run-make/manual-link/foo.c1
-rw-r--r--src/test/run-make/no-duplicate-libs/bar.c1
-rw-r--r--src/test/run-make/no-duplicate-libs/foo.c1
28 files changed, 196 insertions, 106 deletions
diff --git a/mk/tests.mk b/mk/tests.mk
index a9abc6120d8..13d12c99dc9 100644
--- a/mk/tests.mk
+++ b/mk/tests.mk
@@ -235,30 +235,10 @@ cleantestlibs:
 ######################################################################
 
 ifdef CFG_NOTIDY
+.PHONY: tidy
 tidy:
 else
 
-ALL_CS := $(wildcard $(S)src/rt/*.cpp \
-                     $(S)src/rt/*/*.cpp \
-                     $(S)src/rt/*/*/*.cpp \
-                     $(S)src/rustllvm/*.cpp)
-ALL_CS := $(filter-out $(S)src/rt/miniz.cpp \
-		       $(wildcard $(S)src/rt/hoedown/src/*.c) \
-		       $(wildcard $(S)src/rt/hoedown/bin/*.c) \
-	,$(ALL_CS))
-ALL_HS := $(wildcard $(S)src/rt/*.h \
-                     $(S)src/rt/*/*.h \
-                     $(S)src/rt/*/*/*.h \
-                     $(S)src/rustllvm/*.h)
-ALL_HS := $(filter-out $(S)src/rt/valgrind/valgrind.h \
-                       $(S)src/rt/valgrind/memcheck.h \
-                       $(S)src/rt/msvc/typeof.h \
-                       $(S)src/rt/msvc/stdint.h \
-                       $(S)src/rt/msvc/inttypes.h \
-		       $(wildcard $(S)src/rt/hoedown/src/*.h) \
-		       $(wildcard $(S)src/rt/hoedown/bin/*.h) \
-	,$(ALL_HS))
-
 # Run the tidy script in multiple parts to avoid huge 'echo' commands
 .PHONY: tidy
 tidy: tidy-basic tidy-binaries tidy-errors tidy-features
@@ -268,30 +248,7 @@ endif
 .PHONY: tidy-basic
 tidy-basic:
 		@$(call E, check: formatting)
-		$(Q)find $(S)src -name '*.r[sc]' \
-		    -and -not -regex '^$(S)src/jemalloc.*' \
-		    -and -not -regex '^$(S)src/libuv.*' \
-		    -and -not -regex '^$(S)src/llvm.*' \
-		    -and -not -regex '^$(S)src/gyp.*' \
-		    -and -not -regex '^$(S)src/libbacktrace.*' \
-		    -print0 \
-		| xargs -0 -n 10 $(CFG_PYTHON) $(S)src/etc/tidy.py
-		$(Q)find $(S)src/etc -name '*.py' \
-		| xargs -n 10 $(CFG_PYTHON) $(S)src/etc/tidy.py
-		$(Q)find $(S)src/doc -name '*.js' \
-		| xargs -n 10 $(CFG_PYTHON) $(S)src/etc/tidy.py
-		$(Q)find $(S)src/etc -name '*.sh' \
-		| xargs -n 10 $(CFG_PYTHON) $(S)src/etc/tidy.py
-		$(Q)find $(S)src/etc -name '*.pl' \
-		| xargs -n 10 $(CFG_PYTHON) $(S)src/etc/tidy.py
-		$(Q)find $(S)src/etc -name '*.c' \
-		| xargs -n 10 $(CFG_PYTHON) $(S)src/etc/tidy.py
-		$(Q)find $(S)src/etc -name '*.h' \
-		| xargs -n 10 $(CFG_PYTHON) $(S)src/etc/tidy.py
-		$(Q)echo $(ALL_CS) \
-		| xargs -n 10 $(CFG_PYTHON) $(S)src/etc/tidy.py
-		$(Q)echo $(ALL_HS) \
-		| xargs -n 10 $(CFG_PYTHON) $(S)src/etc/tidy.py
+		$(Q) $(CFG_PYTHON) $(S)src/etc/tidy.py $(S)src/
 
 .PHONY: tidy-binaries
 tidy-binaries:
diff --git a/src/etc/errorck.py b/src/etc/errorck.py
index 9db9ed576cb..7b11504f3cd 100644
--- a/src/etc/errorck.py
+++ b/src/etc/errorck.py
@@ -15,6 +15,10 @@ import sys
 import os
 import re
 
+if len(sys.argv) < 2:
+    print "usage: errorck.py <src-dir>"
+    sys.exit(1)
+
 src_dir = sys.argv[1]
 errcode_map = {}
 error_re = re.compile("(E\d\d\d\d)")
diff --git a/src/etc/featureck.py b/src/etc/featureck.py
index 71a145e4a6e..df4ea998fef 100644
--- a/src/etc/featureck.py
+++ b/src/etc/featureck.py
@@ -20,6 +20,10 @@
 
 import sys, os, re
 
+if len(sys.argv) < 2:
+    print "usage: featurkck.py <src-dir>"
+    sys.exit(1)
+
 src_dir = sys.argv[1]
 
 # Features that are allowed to exist in both the language and the library
diff --git a/src/etc/licenseck.py b/src/etc/licenseck.py
index f38583ee1fb..889b2c95a7e 100644
--- a/src/etc/licenseck.py
+++ b/src/etc/licenseck.py
@@ -22,11 +22,6 @@ u"""(#|//) Copyright .* The Rust Project Developers. See the COPYRIGHT
 \\1 except according to those terms.""")
 
 exceptions = [
-    "rt/rust_android_dummy.cpp", # BSD, chromium
-    "rt/rust_android_dummy.h", # BSD, chromium
-    "rt/isaac/randport.cpp", # public domain
-    "rt/isaac/rand.h", # public domain
-    "rt/isaac/standard.h", # public domain
     "libstd/sync/mpsc/mpsc_queue.rs", # BSD
     "libstd/sync/mpsc/spsc_queue.rs", # BSD
     "test/bench/shootout-binarytrees.rs", # BSD
diff --git a/src/etc/tidy.py b/src/etc/tidy.py
index f5172feb5b6..d055576f430 100644
--- a/src/etc/tidy.py
+++ b/src/etc/tidy.py
@@ -51,78 +51,184 @@ def do_license_check(name, contents):
     if not check_license(name, contents):
         report_error_name_no(name, 1, "incorrect license")
 
-
-file_names = [s for s in sys.argv[1:] if (not s.endswith("_gen.rs"))
-                                     and (not ".#" in s)]
-
 current_name = ""
 current_contents = ""
 check_tab = True
 check_cr = True
 check_linelength = True
 
+if len(sys.argv) < 2:
+    print "usage: tidy.py <src-dir>"
+    sys.exit(1)
+
+src_dir = sys.argv[1]
 
 try:
-    for line in fileinput.input(file_names,
+    count_rs = 0
+    count_py = 0
+    count_js = 0
+    count_sh = 0
+    count_pl = 0
+    count_c = 0
+    count_h = 0
+    count_other = 0
+
+    count_lines = 0
+    count_non_blank_lines = 0
+
+    def update_counts(current_name):
+        global count_rs
+        global count_py
+        global count_js
+        global count_sh
+        global count_pl
+        global count_c
+        global count_h
+        global count_other
+
+        if current_name.endswith(".rs"):
+            count_rs += 1
+        if current_name.endswith(".py"):
+            count_py += 1
+        if current_name.endswith(".js"):
+            count_js += 1
+        if current_name.endswith(".sh"):
+            count_sh += 1
+        if current_name.endswith(".pl"):
+            count_pl += 1
+        if current_name.endswith(".c"):
+            count_c += 1
+        if current_name.endswith(".h"):
+            count_h += 1
+
+    all_paths = set()
+
+    for (dirpath, dirnames, filenames) in os.walk(src_dir):
+
+        # Skip some third-party directories
+        if "src/jemalloc" in dirpath: continue
+        if "src/llvm" in dirpath: continue
+        if "src/gyp" in dirpath: continue
+        if "src/libbacktrace" in dirpath: continue
+        if "src/compiler-rt" in dirpath: continue
+        if "src/rt/hoedown" in dirpath: continue
+        if "src/rustllvm" in dirpath: continue
+        if "src/rt/valgrind" in dirpath: continue
+        if "src/rt/msvc" in dirpath: continue
+        if "src/rust-installer" in dirpath: continue
+
+        def interesting_file(f):
+            if "miniz.c" in f \
+            or "jquery" in f \
+            or "rust_android_dummy" in f:
+                return False
+
+            if f.endswith(".rs") \
+            or f.endswith(".py") \
+            or f.endswith(".js") \
+            or f.endswith(".sh") \
+            or f.endswith(".pl") \
+            or f.endswith(".c") \
+            or f.endswith(".h") :
+                return True
+            else:
+                return False
+
+        file_names = [os.path.join(dirpath, f) for f in filenames
+                      if interesting_file(f)
+                      and not f.endswith("_gen.rs")
+                      and not ".#" is f]
+
+        if not file_names:
+            continue
+
+        for line in fileinput.input(file_names,
                                 openhook=fileinput.hook_encoded("utf-8")):
 
-        if "tidy.py" not in fileinput.filename():
+            filename = fileinput.filename()
+
+            if "tidy.py" not in filename:
+                if "TODO" in line:
+                    report_err("TODO is deprecated; use FIXME")
+                match = re.match(r'^.*/(\*|/!?)\s*XXX', line)
+                if match:
+                    report_err("XXX is no longer necessary, use FIXME")
+                match = re.match(r'^.*//\s*(NOTE.*)$', line)
+                if match and "TRAVIS" not in os.environ:
+                    m = match.group(1)
+                    if "snap" in m.lower():
+                        report_warn(match.group(1))
+                match = re.match(r'^.*//\s*SNAP\s+(\w+)', line)
+                if match:
+                    hsh = match.group(1)
+                    date, rev = snapshot.curr_snapshot_rev()
+                    if not hsh.startswith(rev):
+                        report_err("snapshot out of date (" + date
+                            + "): " + line)
+                else:
+                    if "SNAP" in line:
+                        report_warn("unmatched SNAP line: " + line)
+
             if cr_flag in line:
                 check_cr = False
             if tab_flag in line:
                 check_tab = False
             if linelength_flag in line:
                 check_linelength = False
-            if "TODO" in line:
-                report_err("TODO is deprecated; use FIXME")
-            match = re.match(r'^.*/(\*|/!?)\s*XXX', line)
-            if match:
-                report_err("XXX is no longer necessary, use FIXME")
-            match = re.match(r'^.*//\s*(NOTE.*)$', line)
-            if match and "TRAVIS" not in os.environ:
-                m = match.group(1)
-                if "snap" in m.lower():
-                    report_warn(match.group(1))
-            match = re.match(r'^.*//\s*SNAP\s+(\w+)', line)
-            if match:
-                hsh = match.group(1)
-                date, rev = snapshot.curr_snapshot_rev()
-                if not hsh.startswith(rev):
-                    report_err("snapshot out of date (" + date
-                               + "): " + line)
-            else:
-                if "SNAP" in line:
-                    report_warn("unmatched SNAP line: " + line)
-
-        if check_tab and ('\t' in line and
-                          "Makefile" not in fileinput.filename()):
-            report_err("tab character")
-        if check_cr and not autocrlf and '\r' in line:
-            report_err("CR character")
-        if line.endswith(" \n") or line.endswith("\t\n"):
-            report_err("trailing whitespace")
-        line_len = len(line)-2 if autocrlf else len(line)-1
-
-        if check_linelength and line_len > cols:
-            report_err("line longer than %d chars" % cols)
-
-        if fileinput.isfirstline() and current_name != "":
-            do_license_check(current_name, current_contents)
-
-        if fileinput.isfirstline():
-            current_name = fileinput.filename()
-            current_contents = ""
-            check_cr = True
-            check_tab = True
-            check_linelength = True
 
-        current_contents += line
+            if check_tab and ('\t' in line and
+                              "Makefile" not in filename):
+                report_err("tab character")
+            if check_cr and not autocrlf and '\r' in line:
+                report_err("CR character")
+            if line.endswith(" \n") or line.endswith("\t\n"):
+                report_err("trailing whitespace")
+            line_len = len(line)-2 if autocrlf else len(line)-1
+
+            if check_linelength and line_len > cols:
+                report_err("line longer than %d chars" % cols)
+
+            if fileinput.isfirstline():
+                # This happens at the end of each file except the last.
+                if current_name != "":
+                    update_counts(current_name)
+                    assert len(current_contents) > 0
+                    do_license_check(current_name, current_contents)
+
+                current_name = filename
+                current_contents = ""
+                check_cr = True
+                check_tab = True
+                check_linelength = True
+
+            # Put a reasonable limit on the amount of header data we use for
+            # the licenseck
+            if len(current_contents) < 1000:
+                current_contents += line
+
+            count_lines += 1
+            if line.strip():
+                count_non_blank_lines += 1
 
     if current_name != "":
+        update_counts(current_name)
+        assert len(current_contents) > 0
         do_license_check(current_name, current_contents)
 
 except UnicodeDecodeError as e:
     report_err("UTF-8 decoding error " + str(e))
 
+print
+print "* linted .rs files: " + str(count_rs)
+print "* linted .py files: " + str(count_py)
+print "* linted .js files: " + str(count_js)
+print "* linted .sh files: " + str(count_sh)
+print "* linted .pl files: " + str(count_pl)
+print "* linted .c files: " + str(count_c)
+print "* linted .h files: " + str(count_h)
+print "* other linted files: " + str(count_other)
+print "* total lines of code: " + str(count_lines)
+print "* total non-blank lines of code: " + str(count_non_blank_lines)
+print
 
 sys.exit(err)
diff --git a/src/grammar/check.sh b/src/grammar/check.sh
index cb269bbdb0a..b5be3daa13e 100755
--- a/src/grammar/check.sh
+++ b/src/grammar/check.sh
@@ -1,5 +1,7 @@
 #!/bin/sh
 
+# ignore-license
+
 # Run the reference lexer against libsyntax and compare the tokens and spans.
 # If "// ignore-lexer-test" is present in the file, it will be ignored.
 
diff --git a/src/test/run-make/c-dynamic-dylib/cfoo.c b/src/test/run-make/c-dynamic-dylib/cfoo.c
index 9fe07f82f9e..113717a776a 100644
--- a/src/test/run-make/c-dynamic-dylib/cfoo.c
+++ b/src/test/run-make/c-dynamic-dylib/cfoo.c
@@ -1 +1,2 @@
+// ignore-license
 int foo() { return 0; }
diff --git a/src/test/run-make/c-dynamic-rlib/cfoo.c b/src/test/run-make/c-dynamic-rlib/cfoo.c
index 9fe07f82f9e..113717a776a 100644
--- a/src/test/run-make/c-dynamic-rlib/cfoo.c
+++ b/src/test/run-make/c-dynamic-rlib/cfoo.c
@@ -1 +1,2 @@
+// ignore-license
 int foo() { return 0; }
diff --git a/src/test/run-make/c-link-to-rust-dylib/bar.c b/src/test/run-make/c-link-to-rust-dylib/bar.c
index bb4036b06e1..5729d411c5b 100644
--- a/src/test/run-make/c-link-to-rust-dylib/bar.c
+++ b/src/test/run-make/c-link-to-rust-dylib/bar.c
@@ -1,3 +1,4 @@
+// ignore-license
 void foo();
 
 int main() {
diff --git a/src/test/run-make/c-link-to-rust-staticlib/bar.c b/src/test/run-make/c-link-to-rust-staticlib/bar.c
index bb4036b06e1..5729d411c5b 100644
--- a/src/test/run-make/c-link-to-rust-staticlib/bar.c
+++ b/src/test/run-make/c-link-to-rust-staticlib/bar.c
@@ -1,3 +1,4 @@
+// ignore-license
 void foo();
 
 int main() {
diff --git a/src/test/run-make/c-static-dylib/cfoo.c b/src/test/run-make/c-static-dylib/cfoo.c
index 9fe07f82f9e..113717a776a 100644
--- a/src/test/run-make/c-static-dylib/cfoo.c
+++ b/src/test/run-make/c-static-dylib/cfoo.c
@@ -1 +1,2 @@
+// ignore-license
 int foo() { return 0; }
diff --git a/src/test/run-make/c-static-rlib/cfoo.c b/src/test/run-make/c-static-rlib/cfoo.c
index 9fe07f82f9e..113717a776a 100644
--- a/src/test/run-make/c-static-rlib/cfoo.c
+++ b/src/test/run-make/c-static-rlib/cfoo.c
@@ -1 +1,2 @@
+// ignore-license
 int foo() { return 0; }
diff --git a/src/test/run-make/extern-fn-generic/test.c b/src/test/run-make/extern-fn-generic/test.c
index f23dd1eb146..f9faef64afc 100644
--- a/src/test/run-make/extern-fn-generic/test.c
+++ b/src/test/run-make/extern-fn-generic/test.c
@@ -1,16 +1,17 @@
+// ignore-license
 #include <stdint.h>
 
 typedef struct TestStruct {
-	uint8_t x;
-	int32_t y;
+        uint8_t x;
+        int32_t y;
 } TestStruct;
 
 typedef int callback(TestStruct s);
 
 uint32_t call(callback *c) {
-	TestStruct s;
-	s.x = 'a';
-	s.y = 3;
+        TestStruct s;
+        s.x = 'a';
+        s.y = 3;
 
-	return c(s);
+        return c(s);
 }
diff --git a/src/test/run-make/extern-fn-mangle/test.c b/src/test/run-make/extern-fn-mangle/test.c
index 8d93917ade0..1a9855dedec 100644
--- a/src/test/run-make/extern-fn-mangle/test.c
+++ b/src/test/run-make/extern-fn-mangle/test.c
@@ -1,8 +1,9 @@
+// ignore-license
 #include <stdint.h>
 
 uint32_t foo();
 uint32_t bar();
 
 uint32_t add() {
-	return foo() + bar();
+        return foo() + bar();
 }
diff --git a/src/test/run-make/extern-fn-with-packed-struct/test.c b/src/test/run-make/extern-fn-with-packed-struct/test.c
index c3456a64b9b..121e48e84e4 100644
--- a/src/test/run-make/extern-fn-with-packed-struct/test.c
+++ b/src/test/run-make/extern-fn-with-packed-struct/test.c
@@ -1,3 +1,4 @@
+// ignore-license
 // Pragma needed cause of gcc bug on windows: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52991
 #pragma pack(1)
 struct __attribute__((packed)) Foo {
diff --git a/src/test/run-make/extern-fn-with-union/test.c b/src/test/run-make/extern-fn-with-union/test.c
index 86cb6453723..8c87c230693 100644
--- a/src/test/run-make/extern-fn-with-union/test.c
+++ b/src/test/run-make/extern-fn-with-union/test.c
@@ -1,3 +1,4 @@
+// ignore-license
 #include <stdio.h>
 #include <stdint.h>
 
diff --git a/src/test/run-make/interdependent-c-libraries/bar.c b/src/test/run-make/interdependent-c-libraries/bar.c
index 812c9753528..c761f029eff 100644
--- a/src/test/run-make/interdependent-c-libraries/bar.c
+++ b/src/test/run-make/interdependent-c-libraries/bar.c
@@ -1,3 +1,4 @@
+// ignore-license
 void foo();
 
 void bar() { foo(); }
diff --git a/src/test/run-make/interdependent-c-libraries/foo.c b/src/test/run-make/interdependent-c-libraries/foo.c
index 85e6cd8c390..2895ad473bf 100644
--- a/src/test/run-make/interdependent-c-libraries/foo.c
+++ b/src/test/run-make/interdependent-c-libraries/foo.c
@@ -1 +1,2 @@
+// ignore-license
 void foo() {}
diff --git a/src/test/run-make/issue-12446/foo.c b/src/test/run-make/issue-12446/foo.c
index a58cd8bb7c9..186a0046e80 100644
--- a/src/test/run-make/issue-12446/foo.c
+++ b/src/test/run-make/issue-12446/foo.c
@@ -1 +1,2 @@
+// ignore-license
 void some_c_symbol() {}
diff --git a/src/test/run-make/issue-15460/foo.c b/src/test/run-make/issue-15460/foo.c
index 85e6cd8c390..2895ad473bf 100644
--- a/src/test/run-make/issue-15460/foo.c
+++ b/src/test/run-make/issue-15460/foo.c
@@ -1 +1,2 @@
+// ignore-license
 void foo() {}
diff --git a/src/test/run-make/link-path-order/correct.c b/src/test/run-make/link-path-order/correct.c
index 3064af952f8..a595939f92e 100644
--- a/src/test/run-make/link-path-order/correct.c
+++ b/src/test/run-make/link-path-order/correct.c
@@ -1 +1,2 @@
+// ignore-license
 int should_return_one() { return 1; }
diff --git a/src/test/run-make/link-path-order/wrong.c b/src/test/run-make/link-path-order/wrong.c
index 64275b3ad6b..c53e7e3c48c 100644
--- a/src/test/run-make/link-path-order/wrong.c
+++ b/src/test/run-make/link-path-order/wrong.c
@@ -1 +1,2 @@
+// ignore-license
 int should_return_one() { return 0; }
diff --git a/src/test/run-make/linkage-attr-on-static/foo.c b/src/test/run-make/linkage-attr-on-static/foo.c
index 78a6934f57f..d7d33ea12e8 100644
--- a/src/test/run-make/linkage-attr-on-static/foo.c
+++ b/src/test/run-make/linkage-attr-on-static/foo.c
@@ -1,3 +1,4 @@
+// ignore-license
 #include <stdint.h>
 
 extern int32_t BAZ;
diff --git a/src/test/run-make/lto-smoke-c/bar.c b/src/test/run-make/lto-smoke-c/bar.c
index bb4036b06e1..5729d411c5b 100644
--- a/src/test/run-make/lto-smoke-c/bar.c
+++ b/src/test/run-make/lto-smoke-c/bar.c
@@ -1,3 +1,4 @@
+// ignore-license
 void foo();
 
 int main() {
diff --git a/src/test/run-make/manual-link/bar.c b/src/test/run-make/manual-link/bar.c
index e4259998678..3c167b45af9 100644
--- a/src/test/run-make/manual-link/bar.c
+++ b/src/test/run-make/manual-link/bar.c
@@ -1 +1,2 @@
+// ignore-license
 void bar() {}
diff --git a/src/test/run-make/manual-link/foo.c b/src/test/run-make/manual-link/foo.c
index e4259998678..3c167b45af9 100644
--- a/src/test/run-make/manual-link/foo.c
+++ b/src/test/run-make/manual-link/foo.c
@@ -1 +1,2 @@
+// ignore-license
 void bar() {}
diff --git a/src/test/run-make/no-duplicate-libs/bar.c b/src/test/run-make/no-duplicate-libs/bar.c
index 330d914a011..a7b02a2f10b 100644
--- a/src/test/run-make/no-duplicate-libs/bar.c
+++ b/src/test/run-make/no-duplicate-libs/bar.c
@@ -1,3 +1,4 @@
+// ignore-license
 extern void foo();
 
 void bar() { foo(); }
diff --git a/src/test/run-make/no-duplicate-libs/foo.c b/src/test/run-make/no-duplicate-libs/foo.c
index 85e6cd8c390..2895ad473bf 100644
--- a/src/test/run-make/no-duplicate-libs/foo.c
+++ b/src/test/run-make/no-duplicate-libs/foo.c
@@ -1 +1,2 @@
+// ignore-license
 void foo() {}