| // Copyright 2026 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| //go:build !plan9 |
| |
| package static |
| |
| import ( |
| "testing" |
| ) |
| |
| func TestExtractLicense(t *testing.T) { |
| testCases := []struct { |
| name string |
| input string |
| want string |
| wantErr bool |
| }{ |
| { |
| name: "standard", |
| input: "/*\nCopyright 2000 */", |
| want: "\nCopyright 2000 */", |
| wantErr: false, |
| }, |
| { |
| name: "exclamation", |
| input: "/*!\nCopyright 2021 The Go Authors. All rights reserved.\n */", |
| want: "\nCopyright 2021 The Go Authors. All rights reserved.\n */", |
| wantErr: false, |
| }, |
| { |
| name: "double asterisk", |
| input: "/**\n * Copyright 2026\n */", |
| want: "\n * Copyright 2026\n */", |
| wantErr: false, |
| }, |
| { |
| name: "leading whitespace", |
| input: " \n/*\nCopyright 2000 */", |
| want: "\nCopyright 2000 */", |
| wantErr: false, |
| }, |
| { |
| name: "error: no comment", |
| input: "var x = 1", |
| wantErr: true, |
| }, |
| { |
| name: "error: empty input", |
| input: "", |
| wantErr: true, |
| }, |
| { |
| name: "error: comment not at start", |
| input: "var x = 1 /*\nCopyright 2000 */", |
| wantErr: true, |
| }, |
| { |
| name: "error: line comment instead of block comment", |
| input: "// Copyright 2000", |
| wantErr: true, |
| }, |
| { |
| name: "error: unclosed block comment", |
| input: "/*\nCopyright 2000", |
| wantErr: true, |
| }, |
| { |
| name: "error: initial comment missing copyright", |
| input: "/* Hello World */", |
| wantErr: true, |
| }, |
| } |
| |
| for _, tc := range testCases { |
| t.Run(tc.name, func(t *testing.T) { |
| got, err := extractLicense([]byte(tc.input)) |
| if (err != nil) != tc.wantErr { |
| t.Fatalf("extractLicense(%q) error = %v, wantErr %v", tc.input, err, tc.wantErr) |
| } |
| if got != tc.want { |
| t.Errorf("extractLicense(%q) = %q, want %q", tc.input, got, tc.want) |
| } |
| }) |
| } |
| } |