nebius/SWE-rebench-V2-PRs huggingface dataset:
Repository: python-cmd2/cmd2
Pull request #536 (2018-09-24 20:49:34)

Prevent :param and :return type lines from showing in help summaries


Patch:
diff --git a/cmd2/cmd2.py b/cmd2/cmd2.py
index 546b03cd..c2d3eb1c 100644
--- a/cmd2/cmd2.py
+++ b/cmd2/cmd2.py
@@ -2459,13 +2459,17 @@ Usage:  Usage: unalias [-a] name [name ...]
                     doc_block = []
                     found_first = False
                     for doc_line in doc.splitlines():
-                        str(doc_line).strip()
-                        if len(doc_line.strip()) > 0:
-                            doc_block.append(doc_line.strip())
-                            found_first = True
-                        else:
+                        stripped_line = doc_line.strip()
+
+                        # Don't include :param type lines
+                        if stripped_line.startswith(':'):
                             if found_first:
                                 break
+                        elif stripped_line:
+                            doc_block.append(stripped_line)
+                            found_first = True
+                        elif found_first:
+                            break
 
                     for doc_line in doc_block:
                         self.stdout.write('{: <{col_width}}{doc}\n'.format(command,


Test patch:
diff --git a/tests/test_cmd2.py b/tests/test_cmd2.py
index 4b0687c9..7a8a52a0 100644
--- a/tests/test_cmd2.py
+++ b/tests/test_cmd2.py
@@ -46,6 +46,11 @@ def test_base_help_verbose(base_app):
     expected = normalize(BASE_HELP_VERBOSE)
     assert out == expected
 
+    # Make sure :param type lines are filtered out of help summary
+    help_doc = base_app.do_help.__func__.__doc__
+    help_doc += "\n:param fake param"
+    base_app.do_help.__func__.__doc__ = help_doc
+
     out = run_cmd(base_app, 'help --verbose')
     assert out == expected
Repository: python-cmd2/cmd2
Pull request #556 (2018-10-01 20:04:16)

Preserving quotes for do_py input


Patch:
diff --git a/cmd2/cmd2.py b/cmd2/cmd2.py
index 79d3c80a..03c71a91 100644
--- a/cmd2/cmd2.py
+++ b/cmd2/cmd2.py
@@ -2892,6 +2892,7 @@ class Cmd(cmd.Cmd):
                                       help='arguments to pass to command'),
             ACTION_ARG_CHOICES, ('path_complete',))
 
+    # Preserve quotes since we are passing these strings to the shell
     @with_argparser(shell_parser, preserve_quotes=True)
     def do_shell(self, args: argparse.Namespace) -> None:
         """Execute a command as if at the OS prompt"""
@@ -2947,7 +2948,8 @@ class Cmd(cmd.Cmd):
     py_parser.add_argument('command', help="command to run", nargs='?')
     py_parser.add_argument('remainder', help="remainder of command", nargs=argparse.REMAINDER)
 
-    @with_argparser(py_parser)
+    # Preserve quotes since we are passing these strings to Python
+    @with_argparser(py_parser, preserve_quotes=True)
     def do_py(self, args: argparse.Namespace) -> bool:
         """Invoke Python command or shell"""
         from .pyscript_bridge import PyscriptBridge, CommandResult
@@ -2987,9 +2989,9 @@ class Cmd(cmd.Cmd):
             interp.runcode('import sys, os;sys.path.insert(0, os.getcwd())')
 
             if args.command:
-                full_command = utils.quote_string_if_needed(args.command)
-                for cur_token in args.remainder:
-                    full_command += ' ' + utils.quote_string_if_needed(cur_token)
+                full_command = args.command
+                if args.remainder:
+                    full_command += ' ' + ' '.join(args.remainder)
 
                 interp.runcode(full_command)
 


Test patch:
diff --git a/tests/test_cmd2.py b/tests/test_cmd2.py
index 3ce7a11d..a382a940 100644
--- a/tests/test_cmd2.py
+++ b/tests/test_cmd2.py
@@ -219,10 +219,15 @@ def test_base_py(base_app, capsys):
     run_cmd(base_app, 'py qqq=3')
     out, err = capsys.readouterr()
     assert out == ''
+
     run_cmd(base_app, 'py print(qqq)')
     out, err = capsys.readouterr()
     assert out.rstrip() == '3'
 
+    run_cmd(base_app, 'py print("spaces" + " in this " + "command")')
+    out, err = capsys.readouterr()
+    assert out.rstrip() == 'spaces in this command'
+
 
 @pytest.mark.skipif(sys.platform == 'win32',
                     reason="Unit test doesn't work on win32, but feature does")
Repository: python-cmd2/cmd2
Pull request #662 (2019-04-05 22:14:19)

Path fix
Fixed issue when cmd2's CWD is / and relative path completion is done. Matches were being returned that began with a slash. Since these paths were relative, they should not have begun with the slash.


Patch:
diff --git a/cmd2/cmd2.py b/cmd2/cmd2.py
index a621e459..ddc3945b 100644
--- a/cmd2/cmd2.py
+++ b/cmd2/cmd2.py
@@ -1141,7 +1141,11 @@ class Cmd(cmd.Cmd):
 
         # Remove cwd if it was added to match the text readline expects
         if cwd_added:
-            matches = [cur_path.replace(cwd + os.path.sep, '', 1) for cur_path in matches]
+            if cwd == os.path.sep:
+                to_replace = cwd
+            else:
+                to_replace = cwd + os.path.sep
+            matches = [cur_path.replace(to_replace, '', 1) for cur_path in matches]
 
         # Restore the tilde string if we expanded one to match the text readline expects
         if expanded_tilde_path:


Test patch:
diff --git a/tests/test_completion.py b/tests/test_completion.py
index 0916e500..23843012 100644
--- a/tests/test_completion.py
+++ b/tests/test_completion.py
@@ -400,6 +400,25 @@ def test_path_completion_no_path(cmd2_app):
     assert completions_no_text == completions_cwd
     assert completions_cwd
 
+
+@pytest.mark.skipif(sys.platform == 'win32', reason="this only applies on systems where the root directory is a slash")
+def test_path_completion_cwd_is_root_dir(cmd2_app):
+    # Change our CWD to root dir
+    cwd = os.getcwd()
+    os.chdir(os.path.sep)
+
+    text = ''
+    line = 'shell ls {}'.format(text)
+    endidx = len(line)
+    begidx = endidx - len(text)
+    completions = cmd2_app.path_complete(text, line, begidx, endidx)
+
+    # No match should start with a slash
+    assert not any(match.startswith(os.path.sep) for match in completions)
+
+    # Restore CWD
+    os.chdir(cwd)
+
 def test_path_completion_doesnt_match_wildcards(cmd2_app, request):
     test_dir = os.path.dirname(request.module.__file__)
Repository: python-cmd2/cmd2
Pull request #755 (2019-08-07 22:54:31)

Verifying command names in __init__
Preventing things like commands that begin with a shortcut


Patch:
diff --git a/cmd2/cmd2.py b/cmd2/cmd2.py
index a7cd8fac..4a5c506d 100755
--- a/cmd2/cmd2.py
+++ b/cmd2/cmd2.py
@@ -448,6 +448,12 @@ class Cmd(cmd.Cmd):
                                                 multiline_commands=multiline_commands,
                                                 shortcuts=shortcuts)
 
+        # Verify commands don't have invalid names (like starting with a shortcut)
+        for cur_cmd in self.get_all_commands():
+            valid, errmsg = self.statement_parser.is_valid_command(cur_cmd)
+            if not valid:
+                raise ValueError("Invalid command name {!r}: {}".format(cur_cmd, errmsg))
+
         # Stores results from the last command run to enable usage of results in a Python script or interactive console
         # Built-in commands don't make use of this.  It is purely there for user-defined commands and convenience.
         self.last_result = None
diff --git a/docs/features/shortcuts_aliases_macros.rst b/docs/features/shortcuts_aliases_macros.rst
index 5628dc66..43a26ad7 100644
--- a/docs/features/shortcuts_aliases_macros.rst
+++ b/docs/features/shortcuts_aliases_macros.rst
@@ -38,6 +38,7 @@ To define more shortcuts, update the dict ``App.shortcuts`` with the
   updating the ``shortcuts`` attribute  This warning applies in general to many
   other attributes which are not settable at runtime.
 
+Note: Command, alias, and macro names cannot start with a shortcut
 
 Aliases
 -------


Test patch:
diff --git a/tests/test_cmd2.py b/tests/test_cmd2.py
index ae02f16b..6cab69d6 100755
--- a/tests/test_cmd2.py
+++ b/tests/test_cmd2.py
@@ -87,6 +87,10 @@ def test_base_shortcuts(base_app):
     expected = normalize(SHORTCUTS_TXT)
     assert out == expected
 
+def test_command_starts_with_shortcut():
+    with pytest.raises(ValueError) as excinfo:
+        app = cmd2.Cmd(shortcuts={'help': 'fake'})
+    assert "Invalid command name 'help'" in str(excinfo.value)
 
 def test_base_show(base_app):
     # force editor to be 'vim' so test is repeatable across platforms
Repository: python-cmd2/cmd2
Pull request #756 (2019-08-08 15:26:39)

Do not print traceback warning text if debug is not a settable parameter


Patch:
diff --git a/cmd2/cmd2.py b/cmd2/cmd2.py
index c0246705..19bdc244 100755
--- a/cmd2/cmd2.py
+++ b/cmd2/cmd2.py
@@ -689,7 +689,7 @@ class Cmd(cmd.Cmd):
         if apply_style:
             final_msg = ansi.style_error(final_msg)
 
-        if not self.debug:
+        if not self.debug and 'debug' in self.settable:
             warning = "\nTo enable full traceback, run the following command: 'set debug true'"
             final_msg += ansi.style_warning(warning)
 


Test patch:
diff --git a/tests/test_cmd2.py b/tests/test_cmd2.py
index 6cab69d6..a856c1d6 100755
--- a/tests/test_cmd2.py
+++ b/tests/test_cmd2.py
@@ -670,6 +670,17 @@ now: True
     out, err = run_cmd(base_app, 'edit')
     assert err[0].startswith('Traceback (most recent call last):')
 
+def test_debug_not_settable(base_app):
+    # Set debug to False and make it unsettable
+    base_app.debug = False
+    del base_app.settable['debug']
+
+    # Cause an exception
+    out, err = run_cmd(base_app, 'bad "quote')
+
+    # Since debug is unsettable, the user will not be given the option to enable a full traceback
+    assert err == ['Invalid syntax: No closing quotation']
+
 def test_edit_file(base_app, request, monkeypatch):
     # Set a fake editor just to make sure we have one.  We aren't really going to call it due to the mock
     base_app.editor = 'fooedit'
Repository: python-cmd2/cmd2
Pull request #758 (2019-08-09 02:03:10)

No longer treating empty text scripts as an error condition


Patch:
diff --git a/CHANGELOG.md b/CHANGELOG.md
index ce18aacc..6d6a7d12 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 0.9.17 (TBD, 2019)
+* Enhancements
+    * No longer treating empty text scripts as an error condition
+
 ## 0.9.16 (August 7, 2019)
 * Bug Fixes
     * Fixed inconsistent parsing/tab completion behavior based on the value of `allow_redirection`. This flag is
diff --git a/cmd2/cmd2.py b/cmd2/cmd2.py
index a0df0b00..9d29418b 100755
--- a/cmd2/cmd2.py
+++ b/cmd2/cmd2.py
@@ -3790,9 +3790,8 @@ class Cmd(cmd.Cmd):
             self.perror("'{}' is not a file".format(expanded_path))
             return
 
-        # Make sure the file is not empty
+        # An empty file is not an error, so just return
         if os.path.getsize(expanded_path) == 0:
-            self.perror("'{}' is empty".format(expanded_path))
             return
 
         # Make sure the file is ASCII or UTF-8 encoded text


Test patch:
diff --git a/tests/test_cmd2.py b/tests/test_cmd2.py
index a856c1d6..313b4dee 100755
--- a/tests/test_cmd2.py
+++ b/tests/test_cmd2.py
@@ -318,7 +318,7 @@ def test_run_script_with_empty_file(base_app, request):
     test_dir = os.path.dirname(request.module.__file__)
     filename = os.path.join(test_dir, 'scripts', 'empty.txt')
     out, err = run_cmd(base_app, 'run_script {}'.format(filename))
-    assert "is empty" in err[0]
+    assert not out and not err
 
 def test_run_script_with_binary_file(base_app, request):
     test_dir = os.path.dirname(request.module.__file__)
Repository: python-cmd2/cmd2
Pull request #883 (2020-02-10 16:37:36)

do_set flag rename
Renamed set command's -l/--long flag to -v/--verbose for consistency with help and history commands


Patch:
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 2e7f7314..0269d287 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,8 @@
 * Bug Fixes
     * Corrected issue where the actual new value was not always being printed in do_set. This occurred in cases where
       the typed value differed from what the setter had converted it to.
+* Enhancements
+    * Renamed set command's `-l/--long` flag to `-v/--verbose` for consistency with help and history commands.
 
 ## 0.10.0 (February 7, 2020)
 * Enhancements
diff --git a/cmd2/cmd2.py b/cmd2/cmd2.py
index 4fbda57e..8f2cdca3 100644
--- a/cmd2/cmd2.py
+++ b/cmd2/cmd2.py
@@ -2851,7 +2851,7 @@ class Cmd(cmd.Cmd):
                        "Call without arguments for a list of all settable parameters with their values.\n"
                        "Call with just param to view that parameter's value.")
     set_parser_parent = DEFAULT_ARGUMENT_PARSER(description=set_description, add_help=False)
-    set_parser_parent.add_argument('-l', '--long', action='store_true',
+    set_parser_parent.add_argument('-v', '--verbose', action='store_true',
                                    help='include description of parameters when viewing')
     set_parser_parent.add_argument('param', nargs=argparse.OPTIONAL, help='parameter to set or view',
                                    choices_method=_get_settable_completion_items, descriptive_header='Description')
@@ -2916,7 +2916,7 @@ class Cmd(cmd.Cmd):
         # Display the results
         for param in sorted(results, key=self.default_sort_key):
             result_str = results[param]
-            if args.long:
+            if args.verbose:
                 self.poutput('{} # {}'.format(utils.align_left(result_str, width=max_len),
                                               self.settables[param].description))
             else:


Test patch:
diff --git a/tests/test_cmd2.py b/tests/test_cmd2.py
index e0b2ba9d..376658e5 100755
--- a/tests/test_cmd2.py
+++ b/tests/test_cmd2.py
@@ -79,7 +79,7 @@ def test_base_argparse_help(base_app):
 
 def test_base_invalid_option(base_app):
     out, err = run_cmd(base_app, 'set -z')
-    assert err[0] == 'Usage: set [-h] [-l] [param] [value]'
+    assert err[0] == 'Usage: set [-h] [-v] [param] [value]'
     assert 'Error: unrecognized arguments: -z' in err[1]
 
 def test_base_shortcuts(base_app):
@@ -103,7 +103,7 @@ def test_base_show(base_app):
 def test_base_show_long(base_app):
     # force editor to be 'vim' so test is repeatable across platforms
     base_app.editor = 'vim'
-    out, err = run_cmd(base_app, 'set -l')
+    out, err = run_cmd(base_app, 'set -v')
     expected = normalize(SHOW_LONG)
     assert out == expected
Repository: python-cmd2/cmd2
Pull request #908 (2020-03-20 16:20:44)

do_shell integration with pyscript
`do_shell()` now saves the return code of the command it runs in `self.last_result` for use in pyscripts


Patch:
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7760255d..04351333 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 1.0.2 (TBD, 2020)
+* Enhancements
+    * `do_shell()` now saves the return code of the command it runs in `self.last_result` for use in pyscripts
+
 ## 1.0.1 (March 13, 2020)
 * Bug Fixes
     * Fixed issue where postcmd hooks were running after an `argparse` exception in a command.
diff --git a/cmd2/cmd2.py b/cmd2/cmd2.py
index 44e02005..630ab9b2 100644
--- a/cmd2/cmd2.py
+++ b/cmd2/cmd2.py
@@ -3015,6 +3015,9 @@ class Cmd(cmd.Cmd):
             proc_reader = utils.ProcReader(proc, self.stdout, sys.stderr)
             proc_reader.wait()
 
+            # Save the return code of the application for use in a pyscript
+            self.last_result = proc.returncode
+
     @staticmethod
     def _reset_py_display() -> None:
         """


Test patch:
diff --git a/tests/test_cmd2.py b/tests/test_cmd2.py
index 2db52d39..66ef33de 100755
--- a/tests/test_cmd2.py
+++ b/tests/test_cmd2.py
@@ -203,6 +203,10 @@ def test_base_shell(base_app, monkeypatch):
     assert out == []
     assert m.called
 
+def test_shell_last_result(base_app):
+    base_app.last_result = None
+    run_cmd(base_app, 'shell fake')
+    assert base_app.last_result is not None
 
 def test_base_py(base_app):
     # Make sure py can't edit Cmd.py_locals. It used to be that cmd2 was passing its py_locals
Repository: python-cmd2/cmd2
Pull request #1015 (2020-11-12 18:30:16)

Setting always_show_hint to True is not working when completing Settables
Fixed bug where setting `always_show_hint=True` did not show a hint when completing `Settables`


Patch:
diff --git a/CHANGELOG.md b/CHANGELOG.md
index d20e678c..82b72ba4 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 1.4.1 (TBD, 2020)
+* Bug Fixes
+    * Fixed bug where setting `always_show_hint=True` did not show a hint when completing `Settables`
+
 ## 1.4.0 (November 11, 2020)
 * Bug Fixes
     * Fixed tab completion crash on Windows
diff --git a/cmd2/argparse_completer.py b/cmd2/argparse_completer.py
index 7484358d..117bfd50 100644
--- a/cmd2/argparse_completer.py
+++ b/cmd2/argparse_completer.py
@@ -415,7 +415,9 @@ class ArgparseCompleter:
 
             # If we have results, then return them
             if completion_results:
-                self._cmd2_app.completion_hint = _build_hint(self._parser, flag_arg_state.action)
+                # Don't overwrite an existing hint
+                if not self._cmd2_app.completion_hint:
+                    self._cmd2_app.completion_hint = _build_hint(self._parser, flag_arg_state.action)
                 return completion_results
 
             # Otherwise, print a hint if the flag isn't finished or text isn't possibly the start of a flag
@@ -437,7 +439,9 @@ class ArgparseCompleter:
 
             # If we have results, then return them
             if completion_results:
-                self._cmd2_app.completion_hint = _build_hint(self._parser, pos_arg_state.action)
+                # Don't overwrite an existing hint
+                if not self._cmd2_app.completion_hint:
+                    self._cmd2_app.completion_hint = _build_hint(self._parser, pos_arg_state.action)
                 return completion_results
 
             # Otherwise, print a hint if text isn't possibly the start of a flag


Test patch:
diff --git a/tests/test_completion.py b/tests/test_completion.py
index 48a055d0..db243f48 100755
--- a/tests/test_completion.py
+++ b/tests/test_completion.py
@@ -972,6 +972,7 @@ def test_complete_set_value(cmd2_app):
 
     first_match = complete_tester(text, line, begidx, endidx, cmd2_app)
     assert first_match == "SUCCESS "
+    assert cmd2_app.completion_hint == "Hint:\n  value  a settable param\n"
 
 def test_complete_set_value_invalid_settable(cmd2_app, capsys):
     text = ''
Repository: python-cmd2/cmd2
Pull request #1105 (2021-05-14 18:56:59)

Make _run_editor() public
It is useful for commands to be able to do the following

    with NamedTemporaryFile() as fileh:
        # convert data to text
        self._run_editor(fileh.name)
        # convert text back to data


Patch:
diff --git a/cmd2/cmd2.py b/cmd2/cmd2.py
index 77f20b71..0916c288 100644
--- a/cmd2/cmd2.py
+++ b/cmd2/cmd2.py
@@ -4389,7 +4389,7 @@ class Cmd(cmd.Cmd):
                     else:
                         fobj.write(f'{command.raw}\n')
             try:
-                self._run_editor(fname)
+                self.run_editor(fname)
                 # noinspection PyTypeChecker
                 self.do_run_script(utils.quote_string(fname))
             finally:
@@ -4632,9 +4632,9 @@ class Cmd(cmd.Cmd):
     @with_argparser(edit_parser)
     def do_edit(self, args: argparse.Namespace) -> None:
         """Run a text editor and optionally open a file with it"""
-        self._run_editor(args.file_path)
+        self.run_editor(args.file_path)
 
-    def _run_editor(self, file_path: Optional[str]) -> None:
+    def run_editor(self, file_path: Optional[str]) -> None:
         """
         Run a text editor and optionally open a file with it
 


Test patch:
diff --git a/tests/test_history.py b/tests/test_history.py
index d1285705..bb857334 100755
--- a/tests/test_history.py
+++ b/tests/test_history.py
@@ -544,9 +544,9 @@ def test_history_edit(monkeypatch):
     # going to call it due to the mock
     app.editor = 'fooedit'
 
-    # Mock out the _run_editor call so we don't actually open an editor
-    edit_mock = mock.MagicMock(name='_run_editor')
-    monkeypatch.setattr("cmd2.Cmd._run_editor", edit_mock)
+    # Mock out the run_editor call so we don't actually open an editor
+    edit_mock = mock.MagicMock(name='run_editor')
+    monkeypatch.setattr("cmd2.Cmd.run_editor", edit_mock)
 
     # Mock out the run_script call since the mocked edit won't produce a file
     run_script_mock = mock.MagicMock(name='do_run_script')
Repository: ProjectEvergreen/wcc
Pull request #103 (2022-11-12 17:14:10)

Enhancement/issue 23 fail safely on no default export
<!--
## Submitting a Pull Request
We love contributions and appreciate any help you can offer!
-->

## Related Issue
related to #23 

## Summary of Changes
1. Gracefully handle a module with no `default export`
1. Add test case


Patch:
diff --git a/src/wcc.js b/src/wcc.js
index 2419323..ae9b9aa 100644
--- a/src/wcc.js
+++ b/src/wcc.js
@@ -139,19 +139,25 @@ async function initializeCustomElement(elementURL, tagName, attrs = [], definiti
     : (await import(pathname)).default;
   const dataLoader = (await import(pathname)).getData;
   const data = dataLoader ? await dataLoader() : {};
-  const elementInstance = new element(data); // eslint-disable-line new-cap
 
-  attrs.forEach((attr) => {
-    elementInstance.setAttribute(attr.name, attr.value);
+  if (element) {
+    const elementInstance = new element(data); // eslint-disable-line new-cap
 
-    if (attr.name === 'hydrate') {
-      definitions[tagName].hydrate = attr.value;
-    }
-  });
-
-  await elementInstance.connectedCallback();
-
-  return elementInstance;
+    attrs.forEach((attr) => {
+      elementInstance.setAttribute(attr.name, attr.value);
+  
+      if (attr.name === 'hydrate') {
+        definitions[tagName].hydrate = attr.value;
+      }
+    });
+  
+    await elementInstance.connectedCallback();
+  
+    return elementInstance;
+  } else {
+    console.debug('No custom element class found for this file');
+    return new HTMLElement();
+  }
 }
 
 async function renderToString(elementURL) {


Test patch:
diff --git a/test/cases/no-export/no-export.spec.js b/test/cases/no-export/no-export.spec.js
new file mode 100644
index 0000000..bb3e153
--- /dev/null
+++ b/test/cases/no-export/no-export.spec.js
@@ -0,0 +1,34 @@
+/*
+ * Use Case
+ * Run wcc against a single custom element using with no internal definitions
+ *
+ * User Result
+ * Should run without any errors from the DOM shim.
+ *
+ * User Workspace
+ * src/
+ *   empty.js
+ */
+
+import chai from 'chai';
+import { renderToString } from '../../../src/wcc.js';
+
+const expect = chai.expect;
+
+describe('Run WCC For ', function() {
+  const LABEL = 'Single Custom Element with no default export';
+  let rawHtml;
+
+  before(async function() {
+    const { html } = await renderToString(new URL('./src/no-export.js', import.meta.url));
+
+    rawHtml = html;
+  });
+
+  describe(LABEL, function() {
+    it('should not throw an error', function() {
+      expect(rawHtml).to.equal('');
+    });
+  });
+
+});
\ No newline at end of file
diff --git a/test/cases/no-export/src/no-export.js b/test/cases/no-export/src/no-export.js
new file mode 100644
index 0000000..6a6222f
--- /dev/null
+++ b/test/cases/no-export/src/no-export.js
@@ -0,0 +1,2 @@
+// eslint-disable-next-line no-unused-vars
+class EmptyComponent extends HTMLElement { }
\ No newline at end of file